Slide 1

Slide 1 text

1 GPT開発の悩みの種 「速度」「精度」「評価」の壁をどう超えるか ※解釈しやすいよう抽象度の高い表現をしている箇所や個人的な見解を含みます。Microsoftサービスについての正確な情報は公式ドキュメントをご参照ください。 Hirosato Gamo

Slide 2

Slide 2 text

2 @hiro_gamo Azure OpenAI Champ。大手システムインテグレータにてキャリアをスタート。自動車業界の DMSデータ活用基盤のコンサルティングおよび開発や、エンタープライズブロックチェーンを活用 した異業種間データ流通プラットフォームの立ち上げなどを担当。数年間、データサイエンティス トとして社会インフラ関連企業を対象にしたデータ分析および機械学習システムの開発を経て、 現在MicrosoftにてChatGPTなどAzure AI導入の技術支援や、SNSや外部セミナー でのGPT開発のEvangelist活動に従事。 著書に「Azure OpenAI ServiceではじめるChatGPT/LLMシステム構築入門」 SpeakerDeckにおいて「ChatGPT - Azure OpenAI大全」などの資料が 「2023 年に最も閲覧されたデッキ 25 選」にランクイン。 HIROSATO GAMO Microsoft Japan Co., Ltd. Cloud Solution Architect (Data & AI) About me 2023 - Most Viewed Decks (speakerdeck.com)

Slide 3

Slide 3 text

3 速度性能

Slide 4

Slide 4 text

4 LLMのAPI利用時に時間が掛かる要因 APIの従量課金環境では多くのユーザとコンピュートリソースを共有するため、 GPTなどの人気モデルは使用状況により推論速度に影響が出るケースがある。 キューイング LLM処理 通信 リクエスト実行 エンドポイント へ到着 入力より出力トークンの数に依存(出力の影響>>>入力の影響) Azure OpenAIは数十~数百トークンの出力ごとにコンテンツフィルタ処理が入る。 また、やはり混んでいると影響を受ける。 Microsoftの Azureって何? 混んでいると発生。 人気のAPIほど影響を受ける。 (GPTは特に大きい)

Slide 5

Slide 5 text

5 対策1: 出力をなるべく減らす・並列化させる 出力を減らすことで全体の推論時間はセーブできる。推論を実行するときはサブタスクへの分解をしたり、 依存関係の無い出力は並列で実行することが有効。(ただし、入力のプロンプトは重複が出るため注意) { “response”: “2023年のMVPは大谷翔平選手。”, “category”: “野球", “sentiment":1, “end_determination”: True } 出力例 GPTなど カテゴリ分類 並列推論で 高速化 2023年のMVPは大谷翔平選手。 野球 1 True 44トークン 15トークンの時間で返答可

Slide 6

Slide 6 text

6 対策2: Provisioned throughput units (PTU)の利用 キューイングの遅延影響を最小限に抑えることでPayGoのAPI利用に比べてレイテンシが安定する。 キューイング LLM処理 通信 入力より出力トークンの数に依存(出力の影響>>>入力の影響) Azure OpenAIは数十~数百トークンの出力ごとにコンテンツフィルタ処理が入る。 また、やはり混んでいると影響を受ける。 Microsoftの Azureって何? 混んでいると発生。 人気のAPIほど影響を受ける。 (GPTは特に大きい) Azure OpenAI Service provisioned throughput - Azure AI services | Microsoft Learn キューイングの影響を極小化 Provisioned throughput units とは 事前にスループットを指定して購入が可能。 レイテンシが安定するだけでなく、購入分を効率的に使えばコスト的にも割安になる。

Slide 7

Slide 7 text

7 対策3: gpt-3.5-turbo Function Calling への Fine tuning ※ データやタスクにも依存するのであくまで目安です。また、GPTのAPIに限った比較であり、LLM全般に当てはまるものではありません。 コスト ①GPU学習時間に応じたコスト ②専用エンドポイントの稼働時間に応じたコスト Fine tuning (API経由) リソース調達 GPUが必要となるため限られたリージョンでのみ利用可能 技術 一定のニューラルネットワークの学習方法の知見、 トレーニングデータの作成や品質確保のための手間や技術が必要 推奨用途 ①出力形式・トーンの調整 ②タスク精度の強化 ③トークンの節約 生成速度への影響 入力トークン処理量が減少するため生成速度への影響は無し データ取り込み時間 データセットのサイズに依存し数分~数時間の学習時間が必要 Fine tuningはやや敷居が高いが、入力トークンを抑えたり特定のタスクの精度を向上する効果が見込め、 軽いモデルを使って難易度の高い問題を解くのに有効。(逆に自由度の高い会話には向かない)

Slide 8

Slide 8 text

8 【参考】Function Callingの確認 Function CallingはFunctionを呼ぶ以外にも分類問題を解いたりテキストの抽出→JSON化にも優秀。 項目 概要 型 name 関数の名前 string description どのような役割の関数か。 この記載によりGPTは関数の呼び出すか判別する。 string required 必須パラメータのリスト array parameters 関数を実行するのに必要なInputパラメータの詳細(下記) object Function定義のJSON API Reference - OpenAI API "parameters": { "type": "object", “search_query": { "location": { "type": "string", "description": "Space-delimited keywords properly extracted from the user's input text", } } } マイクロソフトのAzureって何ですか? GPT

Slide 9

Slide 9 text

9 【参考】Function Callingの確認 Function CallingはFunctionを呼ぶ以外にも分類問題を解いたりテキストの抽出→JSON化にも優秀。 項目 概要 型 name 関数の名前 string description どのような役割の関数か。 この記載によりGPTは関数の呼び出すか判別する。 string required 必須パラメータのリスト array parameters 関数を実行するのに必要なInputパラメータの詳細(下記) object Function定義のJSON API Reference - OpenAI API "parameters": { "type": "object", “search_query": { "location": { "type": "string", "description": "Space-delimited keywords properly extracted from the user's input text", } } } マイクロソフトのAzureって何ですか? GPT {'role': 'assistant', 'content': None, 'tool_calls': [ {'id': 'call_o7uyztQLeVIoRdjcDkDJY3ni', 'type': 'function', 'function': { 'name’: ‘Web_Search', ‘arguments’: ‘{¥n “search_query”: “Microsoft Azure”¥n}’} } ] } 関数呼び出し - OpenAI API

Slide 10

Slide 10 text

10 対策3: gpt-3.5-turbo Function Calling への Fine tuning Function Callingの元の性能が高く、Fine tuningを活用すればより高い精度でかつ判断を速く出来る。 Azure OpenAI Service を使用した関数呼び出しの微調整 - Azure AI services |Microsoft Learn Fine Tuning with Function Calling on Azure OpenAI Service - Microsoft Community Hub 【蒸留GPT】GPT3.5でGPT4を超える方法~超実践的ファインチューニング~|伊志嶺(GPTで業務改善する人) (note.com) Fine tuned GPT3.5 Microsoftの Azureって何? Func0 聞き返し Func2 商品情報取得 Func1 Search ~~~ ~~~~ 選択 Params GPT-4 ここをFine tuningで高精度化し 計量モデルとすることで高速化する

Slide 11

Slide 11 text

11 推論精度(Prompting編)

Slide 12

Slide 12 text

12 LLMの推論精度に影響を及ぼす要素 モデル Prompt RAG GPT-4相当のモデルが各社出そろってきた状態。 Fine tuningによるモデル更新も特定タスクに特化させることで中間タスクの精度が向上。 現在最も検討が活発な領域。 Embeddingモデルの向上やLLM自体のコンテキスト長の拡大でトレンドが変動。 単発推論で汎用的に使えるテクニックとしては知見が成熟してきた。 多重推論によって出力を安定させる技術は様々な手法が考案されている。 (が、時間が掛かるので注意) 本日ピックアップ

Slide 13

Slide 13 text

13 Prompt Engineering のTips # Tips 説明 1 入力の明確化 5W1Hや出力文字数の目安を指定し、曖昧さを排除する 2 ロールの付与 GPTに役割および熟練度を設定する。 3 入力想定の教示 想定されるユーザからの入力内容を教える。 4 出力形式指定 得たい出力形式を指定する。 5 質問回答例示 想定質問、およびその回答の例示を与える。 6 段階的推論 結論を書かずに段階的に記載するように指示する。 7 目的の記載 手段だけでなく達成したい最終目的を書く。 8 知識・解法の提供 解決に必要な知識や論理展開の情報を与えたり、生成させる。 9 記号・MD記法活用 プログラムに使われる記号や記法を取り入れる。 (マークダウン記法など) 10 プログラミング活用 複雑だが順序の決まってる厳密な指示はプログラミング言語で記載する。 11 構造化 構造化された形式で指示を書く。JSONやマークダウン記法など。 12 再帰的修正 一度出力した内容を、観点別にGPTに修正させる。 13 英語化 英語で指示を書き日本語で答えさせる。 14 重要情報の後置 重要な情報はプロンプトの最後の方に記載する。 15 直接表現の利用 否定語は使わず指示語を使うなど、婉曲表現を避ける。 16 テンプレート活用 タスクに応じてテンプレートを用意しておく。 ※ プロンプトの効果は普遍的なものではなく、モデルやバージョンや文脈によっても変わります。あくまで参考情報です。

Slide 14

Slide 14 text

14 開発サイドで意識する Prompt Engineering の概念 (UIの裏で与える) Prompt Processing※ プロンプト自体の情報が足りない場合や、AIに解釈しづらい場合に プロンプトの与え方を変えるなどの加工処理。 ※独自名称 Few-shot Learning プロンプトに問いに対する回答例をいくつか提示し、 回答形式や振る舞いをプロンプトで学ばせる手法。 数個レベルの例示でも精度向上が見られることがある。 ReAct 内部情報からの言語的な生成だけでなく、プロンプトから必要なタスクを動的に認識させ、 検索や計算など外部APIを活用した情報を取得(Grounding)し、その情報を付加して回 答を返し問題を解決するための主にAI Agentに与えるPrompt。 Chain of Thought (CoT) 大規模言語モデルにおいては、段階的に考える工程を与えることで 難しい問題でも解決ができるようになる性質。 ReActやSelf ConsistencyもCoTの考え方を継承している。 Recursively Criticizes and Improves (RCI) GPTの出力をGPT自身に吟味させて、修正させる考え方。 繰り返し実行することで出力がブラッシュアップされる。 特にプログラミングコードなどが動作するように用いられることが多い。

Slide 15

Slide 15 text

15 Prompt Engineering は基本概念をベースに発展中 ReAct Chain of Thought (CoT) Recursively Criticizes and Improves (RCI) CoT を並列化させてアンサンブルすることで精度を高める CoT-SC CoT を並列化したあとにどの思考プロセスが適切か自己評価させる ToT 問題解決をアルゴリズム指定することで効率化させる AoT CoT-SC, ToT, AoTなどの発展形が登場 一旦回答を生成しつつ、その検証方法をGPTに検討させ、その問いに対して再度回答 を生成し、結果を加味して最終回答を出す Chain-of-Verification が Meta から発 表。再帰的修正という意味合いもあれば CoT のような側面もある。 CoVe など RCI+CoT で高性能 Agentの実装はReActが主流であるが、 Semantic Kernel の Planner では最初に実行計画を作成した上で、それに基づいた 行動選択をする。 Agent 実行計画を立てる Planner も登場 [2309.11495] Chain-of-Verification Reduces Hallucination in Large Language Models (arxiv.org) ChatGPTで戦略的な深読みができるTree of Thoughts (ToT)プロンプト実演|VERSAROC (note.com) AoTとは、少ないトークン数で高い精度の回答を得るプロンプトエンジニアリング|VERSAROC (note.com) LLMの出力から誤り(ハルシネーション)を減らす新手法『CoVe(Chain-of-Verification)』と実行プロンプト | AIDB (aiboom.net) Python版 Semantic Kernelのプランナーを理解しよう。~実装を通して学んだことの備忘録~ - Qiita

Slide 16

Slide 16 text

16 Step Back Prompt いきなり問題を解かせるのではなく、一般的な背景知識や解き方を提示してから、本来の問題を解決するprompting。 [2310.06117] Take a Step Back: Evoking Reasoning via Abstraction in Large Language Models (arxiv.org) # Role あなたは計算問題を解く優秀なassistantです。 # Input ユーザから計算問題が入力されます。 # Instruction 次の手順に従って問題に回答してください。 ## Step1 まずは問題が一般的にどのように解かれるか、簡単な類題を作り手順を確立してください。 ## Step2 Step1で確立した解き方を使ってユーザー入力の問題を実際に解いてください。 # Output format ◆Step1 考察: <与えられた問題の一般的な解法に関する考え方、関連する知識や情報を記述する。> Q: <簡単な類題> A: <解法> ◆Step2 Q: A: <解法> --- Prompt例 一旦問題を抽象化・知識強化することで モデル内部の情報を上手く活用する

Slide 17

Slide 17 text

17 推論精度(RAG編)

Slide 18

Slide 18 text

18 ステップごとのRAGの精度影響因子 入力情報の加工 ➢ 一般情報+聞き返し指示 ➢ 検索実行条件プロセス定義 ➢ クエリ拡張 対 策 AI技術の強みを教えて。 精度向上施策を打つ前に、原因を特定することが極めて重要 検索するための情報が 足りない ユーザ入力に検索のための 情報が足りない、整理されていない 原 因 ドキュメント・クエリマッチング 検索実行 コンテキストベース回答

Slide 19

Slide 19 text

19 ステップごとのRAGの精度影響因子 入力情報の加工 ドキュメント・クエリマッチング ➢ 一般情報+聞き返し指示 ➢ 検索実行条件プロセス定義 ➢ クエリ拡張 ➢ ドキュメント加工 ➢ 類似度チューニング 対 策 AI技術の強みを教えて。 初心者用バットがほしい 初心者用バット、ほしいですよね! 子供が初心者バットを欲しがってる 壊れてしまった初心者用バット 類似度ヒットしたドキュメント 類似はしているが 意図が拾えてない 精度向上施策を打つ前に、原因を特定することが極めて重要 検索するための情報が 足りない ユーザ入力に検索のための 情報が足りない、整理されていない 入力された内容と検索対象が 意図した類似になっていない 原 因 検索実行 コンテキストベース回答

Slide 20

Slide 20 text

20 ステップごとのRAGの精度影響因子 入力情報の加工 ドキュメント・クエリマッチング 検索実行 ➢ 一般情報+聞き返し指示 ➢ 検索実行条件プロセス定義 ➢ クエリ拡張 ➢ ドキュメント加工 ➢ 類似度チューニング ➢ ハイブリッド検索 ➢ フィルタリング ➢ リランク 対 策 AI技術の強みを教えて。 初心者用バットがほしい 初心者用バット、ほしいですよね! 子供が初心者バットを欲しがってる 壊れてしまった初心者用バット 類似度ヒットしたドキュメント 類似はしているが 意図が拾えてない 精度向上施策を打つ前に、原因を特定することが極めて重要 検索するための情報が 足りない 初心者でも扱いやすいように、特 別に軽量化されています。 かなり振りやすいので初めてでも 扱いやすいバットといえます。 クリケットの初心者は、バットと 同じ要領でスイングしてしまいます。 検索対象ドキュメント 1 2 3 スコア 0.702 0.401 0.780 ユーザ入力に検索のための 情報が足りない、整理されていない 入力された内容と検索対象が 意図した類似になっていない 検索エンジンの精度が悪い。 原 因 コンテキストベース回答

Slide 21

Slide 21 text

21 ステップごとのRAGの精度影響因子 入力情報の加工 ドキュメント・クエリマッチング 検索実行 コンテキストベース回答 ➢ 一般情報+聞き返し指示 ➢ 検索実行条件プロセス定義 ➢ クエリ拡張 ➢ ドキュメント加工 ➢ 類似度チューニング ➢ ハイブリッド検索 ➢ フィルタリング ➢ リランク ➢ チャンクチューニング ➢ データの構造化 ➢ コンテキストの要約 対 策 AI技術の強みを教えて。 初心者用バットがほしい 初心者用バット、ほしいですよね! 子供が初心者バットを欲しがってる 壊れてしまった初心者用バット 類似度ヒットしたドキュメント 類似はしているが 意図が拾えてない User Questionに回答せよ。 # User Question たまごはコレステロールが多く健康に悪いで すよね? # Context 表1のように卵の摂取は長年健康への悪 影響が懸念されていた。しかし、 プロンプト 途中で文章が切れている。 図表が取り込めていない 精度向上施策を打つ前に、原因を特定することが極めて重要 検索するための情報が 足りない 初心者でも扱いやすいように、特 別に軽量化されています。 かなり振りやすいので初めてでも 扱いやすいバットといえます。 クリケットの初心者は、バットと 同じ要領でスイングしてしまいます。 検索対象ドキュメント 1 2 3 スコア 0.702 0.401 0.780 ユーザ入力に検索のための 情報が足りない、整理されていない 入力された内容と検索対象が 意図した類似になっていない 検索エンジンの精度が悪い。 検索結果を 正しく解釈できていない 原 因

Slide 22

Slide 22 text

22 クエリ拡張・加工 質問分解 HyDE Hypothetical Document Embeddings クエリ修正 問いに対する仮想的な応答をLLMで生成。(関連用語の生成がされることを期待) その応答をEmbeddingでベクトル化して文書を検索。 LangChain でより高い vector 検索精度が期待できる HyDE 仮説をやってみる タイポの修正による精度向上が報告されている。またはクエリは質問文で投げられる ため、インデックス情報に近い形式に変換することで精度向上が見込める。 Dealing with Typos for BERT-based Passage Retrieval and Ranking - ACL Anthology 単一の質問だけでは解決できない問いに対して、質問を複数に分割し、順に対応する。 Semantic Kernel の Planner に近い。 Measuring and Narrowing the Compositionality Gap in Language Models | OpenReview 抽象化 詳細な質問に対して、そのままクエリを投げるのではなく、上位概念に一度変換するクエリを発行する。 例えば「大谷翔平の2023/4/28の第3打席の結果」を直接検索するのではなく、「大谷翔平の2023 年の全打席結果」などと検索する。 [2310.06117] Take a Step Back: Evoking Reasoning via Abstraction in Large Language Models (arxiv.org) 文脈追加 質問に関連する知識生成やFAQ(Shot)の付与。 Fusion 複数の検索を実行し、得られた回答を基に最終回答をまとめる。 検索を並走させるので回答時間を圧迫しない。 langchain/cookbook/rag_fusion.ipynb at master · langchain-ai/langchain (github.com) Retrieval-based LM (RAG system) ざっくり理解する - Speaker Deck クエリ拡張や加工は精度面での効果が見込めるが、LLM処理に時間が掛かるためユーザ返答までに時間を要する点は注意。 入力情報の加工 ドキュメント・ クエリマッチング 検索実行 コンテキスト ベース回答

Slide 23

Slide 23 text

23 Embedding モデルの調整 openai-cookbook/examples/Customizing_embeddings.ipynb at main · openai/openai-cookbook (github.com) Jina AI Launches World's First Open-Source 8K Text Embedding, Rivaling OpenAI 日本語Embeddingベンチマーク(github.com) MTEB Leaderboard - a Hugging Face Space by mteb 類似度の学習による調整 OSSモデルの利用 [0.34, -0.22, …. 0.27] [-0.72, 0.45, …. 0.98] Embedding結果1 1 Embedding結果2 類似 [0.14, 0.56, …. -0.95] [-0.09, 0.54, …. 0.84] 1 [0.19, -0.36, …. 0.35] [0.95, -0.33, …. 0.21] -1 𝑎11 ⋯ 𝑎1𝑛 ⋮ ⋱ ⋮ 𝑎𝑘1 ⋯ 𝑎𝑘𝑛 𝑎11 ⋯ 𝑎1𝑛 ⋮ ⋱ ⋮ 𝑎𝑘1 ⋯ 𝑎𝑘𝑛 Cosine類似度計算 積を計算 積を計算 誤差計算し 行列を学習 1 類似 … … … 入力情報の加工 ドキュメント・ クエリマッチング 検索実行 コンテキスト ベース回答

Slide 24

Slide 24 text

24 ドキュメントのQA化などの加工 入力情報の加工 ドキュメント・ クエリマッチング 検索実行 コンテキスト ベース回答 [System] # Task User入力のドキュメントから余計な文言は排除して知識だけを 纏めたFAQリストを作ろうと思います。 抜け漏れが無いように質問と回答のペアをOutput_formatの 出力形式で作成してください。 # Output ## Format jsonl形式で出力をします。各JSONオブジェクトは下記の形式 とします。 {"question":<ドキュメントを基に作成した質問>, "answer":} ## Policy - question, answerの出力はUserの入力に基づいたものとす ること FAQやナレッジグラフへの変換 {"question": "Azure OpenAI Serviceで利用可能なモデルは何ですか?", "answer": "GPT-4 シリーズ (GPT-4 Turbo with Vision を含む)、GPT-3.5-Turbo シリーズ、埋め込みシリーズが利用可能です。"} {"question": "Azure OpenAI Serviceで新しく一般提供されたモデルは何ですか?", "answer": "新しい GPT-4 と GPT-3.5-Turbo モデルシリーズが一般提供になりました。"} {"question": "Azure OpenAI Serviceの機能は何ですか?", "answer": "コンテンツの生成、要約、画 像の解釈、セマンティック検索、自然言語からコードへの翻訳などが可能です。"} {"question": "Azure OpenAI Serviceにアクセスする方法は何ですか?", "answer": "REST API、 Python SDK、または Azure OpenAI Studio の Web ベースのインターフェイスを介してアクセスできます。"} {"question": "Azure OpenAI Serviceの価格情報はどこで確認できますか?", "answer": "価格情報は 、公式ウェブサイトで入手可能です。"} {"question": "Azure OpenAI Serviceは仮想ネットワークとプライベートリンクをサポートしていますか?", "answer": "はい、サポートしています。"} {"question": "Azure OpenAI ServiceのUIエクスペリエンスはどのようなものですか?", "answer": "Azure portal でアカウントとリソースの管理ができ、モデルの探索と微調整には Azure OpenAI Service Studio を使用します。"} {"question": "Azure OpenAI Serviceでのコンテンツフィルタリングはどのように行われますか?", "answer": "プロンプトと入力候補は、自動システムを使ってコンテンツ ポリシーに対して評価され、重大度 の高いコンテンツはフィルターで除外されます。"} {"question": "Azure OpenAI Serviceへのアクセスは制限されていますか?", "answer": "はい、高い需 要とMicrosoftの責任あるAIへのコミットメントを考慮し、制限されています。"} {"question": "Azure OpenAI ServiceとOpenAIの違いは何ですか?", "answer": "Azure OpenAI Serviceは、OpenAIのモデルをAzureのセキュリティとエンタープライズの約束と共に提供し、プライベートネッ トワークやリージョンの可用性、責任あるAIコンテンツのフィルタリングを提供します。"} Systemプロンプト 生の文章ではなく検索時に応えやすい形式としてドキュメントを加工することで、ユーザ問い合わせに回答しやすくなることも

Slide 25

Slide 25 text

25 Azure AI Search は ベクトル+キーワードのハイブリッド検索およびセマンティックリランクに対応 インデックスフィールドにベクトル型が新たに追加 ➢ ベクトル次元数、距離関数、アルゴリズム、アルゴリズム固有のパラメータをユーザーが指定 純粋なベクトル検索とハイブリッド検索 ➢ フィルターやファセットなどがすべてベクトルで動作 ➢ 既存の検索インデックスとの統合 ➢ 既存のデータ取り込みを拡張して利用可能 Bing モデルを搭載した L2 リランカーの組み込み ➢ ハイブリッド検索シナリオのランキングを改善 ➢ L1: キーワード + ベクトル検索 ➢ L2: GPT により強化されたBing ランカー ハイブリッド検索 - Azure AI Search | Microsoft Learn 入力情報の加工 ドキュメント・ クエリマッチング 検索実行 コンテキスト ベース回答

Slide 26

Slide 26 text

26 検索後のリランクによる改善 Azure AI Search: Outperforming vector search with hybrid retrieval and ranking capabilities - Microsoft Community Hub Azure AI Searchでは組み込み機能として検索後のセマンティックリランクが可能。手軽に精度向上が見込める。 入力情報の加工 ドキュメント・ クエリマッチング 検索実行 コンテキスト ベース回答

Slide 27

Slide 27 text

27 Classification ステップ + フィルター GPTなど カテゴリ分類 MLBの歴史を 知りたい カテゴリ: 野球 {“id”: “12345”, “text”: “2023年のMVPは大谷翔平選手。", "text_vectorization_result": [0.1, 0.2, 0.3, 0.4], “category”: “野球“} {“id”: “E2923”, “text”: “2020年にフェデラーが活躍", "vector": [-0.43, 0.12, 0.87, -0.31], “category”: “テニス“} {“id”: “F3765”, “text”: “2023年はダイヤモンドバックスが躍進しワールドシリーズへ", "vector": [0.68, -0.14, 0.32, 0.76], “category”: “野球“} {“id”: “D4421”, “text”: “FIFAワールドカップ2022では日本代表がベスト16”, "vector": [0.32, -0.27, 0.46, 0.78], “category”: “サッカー“} {“id”: “H5362”, “text”: “2022年にアーロンジャッジ選手が新記録を樹立", vector": [0.56, -0.31, 0.72, -0.18], “category”: “野球“} … Search エンジンインデックス カテゴリをフィルタした上で検索 入力情報の加工 ドキュメント・ クエリマッチング 検索実行 コンテキスト ベース回答 Azure AI Searchなどは検索情報にメタ情報を付与できるため、一旦質問のカテゴリ分類をさせフィルタすることで検索範囲を限定できる。

Slide 28

Slide 28 text

28 GPT-4などの高精度かつコンテキスト長の大きいモデルによるリランク コンテキスト長が大きくそれを高精度に把握できるモデルであれば、検索結果の順序が多少悪くても全てコンテキストに詰めれば 回答に必要な部分だけを抽出できる可能性がある。 入力情報の加工 ドキュメント・ クエリマッチング 検索実行 コンテキスト ベース回答 許容コンテキスト長が小さく精度の低いモデル 許容コンテキスト長が大きく精度の高いモデル 初心者でも扱いやすいように、このバットは特別に軽量化されています。 かなり振りやすいので初めてでも扱いやすいバットといえます。 この軽量のバットは初心者にも振りやすく設計されています。 初心者向けのクリニックでは、バットの正しい握り方から教えます。 初心者はしばしば、バットを振る速度を誤ってしまうことがあります。 1 2 3 4 5 バットの選び方を間違えると、初心者はさらに打つのが難しくなる。 野球教室の初日、初心者たちはバットの基本的な使い方を学んだ。 6 7 初心者でも、バットのグリップの感触にはすぐに慣れるものです。 初心者がバットでボールを打つ練習をする際は、安全が最優先です。 8 9 リランクを施し上位のものだけ コンテキストとして付与 初心者でも扱いやすいように、このバットは特別に軽量化されています。 かなり振りやすいので初めてでも扱いやすいバットといえます。 この軽量のバットは初心者にも振りやすく設計されています。 初心者向けのクリニックでは、バットの正しい握り方から教えます。 初心者はしばしば、バットを振る速度を誤ってしまうことがあります。 1 2 3 4 5 バットの選び方を間違えると、初心者はさらに打つのが難しくなる。 野球教室の初日、初心者たちはバットの基本的な使い方を学んだ。 6 7 初心者でも、バットのグリップの感触にはすぐに慣れるものです。 初心者がバットでボールを打つ練習をする際は、安全が最優先です。 8 9

Slide 29

Slide 29 text

29 GPT-4などの高精度かつコンテキスト長の大きいモデルによるリランク コンテキスト長が大きくそれを高精度に把握できるモデルであれば、検索結果の順序が多少悪くても全てコンテキストに詰めれば 回答に必要な部分だけを抽出できる可能性がある。 入力情報の加工 ドキュメント・ クエリマッチング 検索実行 コンテキスト ベース回答 許容コンテキスト長が小さく精度の低いモデル 許容コンテキスト長が大きく精度の高いモデル 初心者でも扱いやすいように、このバットは特別に軽量化されています。 かなり振りやすいので初めてでも扱いやすいバットといえます。 この軽量のバットは初心者にも振りやすく設計されています。 初心者向けのクリニックでは、バットの正しい握り方から教えます。 初心者はしばしば、バットを振る速度を誤ってしまうことがあります。 1 2 3 4 5 バットの選び方を間違えると、初心者はさらに打つのが難しくなる。 野球教室の初日、初心者たちはバットの基本的な使い方を学んだ。 6 7 初心者でも、バットのグリップの感触にはすぐに慣れるものです。 初心者がバットでボールを打つ練習をする際は、安全が最優先です。 8 9 初心者でも扱いやすいように、このバットは特別に軽量化されています。 かなり振りやすいので初めてでも扱いやすいバットといえます。 この軽量のバットは初心者にも振りやすく設計されています。 初心者向けのクリニックでは、バットの正しい握り方から教えます。 初心者はしばしば、バットを振る速度を誤ってしまうことがあります。 1 2 3 4 5 バットの選び方を間違えると、初心者はさらに打つのが難しくなる。 野球教室の初日、初心者たちはバットの基本的な使い方を学んだ。 6 7 初心者でも、バットのグリップの感触にはすぐに慣れるものです。 初心者がバットでボールを打つ練習をする際は、安全が最優先です。 8 9 多めにドキュメントを丸ごと与え GPTに関連性のあるもののみ 着目して回答させることが可能

Slide 30

Slide 30 text

30 コンテキスト量が増えると解釈性は悪化する点は注意 GPT-4 Turbo 1106 Competitor コンテキストの長さ ドキュメントの深さ コンテキストの長さ ドキュメントの深さ LLMはプロンプトが増えると序盤の方は忘れてしまうという性質は押さえておいた方が良い。コンテキストの順序も重要で、「最後>最初>後 半>前半」の順番で解釈性が高いという性質がある。コンテキストの挿入順序においても重要な性質になる。 Source: https://github.com/gkamradt/LLMTest_NeedleInAHaystack Source: https://bito.ai/blog/claude-2-1-200k-context-window-benchmarks/ 同じタスク、より多くのトークン:入力長が大規模言語モデルの推論性能に与える影響 (arxiv.org) 入力情報の加工 ドキュメント・ クエリマッチング 検索実行 コンテキスト ベース回答

Slide 31

Slide 31 text

31 検索結果の要約・抽出 検索結果の取得 検索結果の加工(もしくはチャンクで調整) 三苫の1mmってなに? 三苫薫.txt 神奈川県川崎市宮前区出身のプロサッカー選手。 プレミアリーグ・ブライトン・アンド・ホーヴ・アルビオンFC所属。 ~~~~ 田中碧.txt 神奈川県川崎市宮前区出身のプロサッカー選手 ブンデスリーガ・フォルトゥナ・デュッセルドルフ所属。 ~~~~ FIFA World Cup 2022.txt カタールで実施されたサッカーの世界大会。 ~~~~ 検索結果 第3戦目のスペイン戦では、後半6分に堂安 律が右サイドからグラウンダーのクロスを上げ、 そのボールが逆サイドに流れてボールがラインを 割る寸前で三笘が折り返し、そのボールを田 中碧が押し込んだ。 グループリーグでは2試合に出場し、12月2日に 行われたGL3戦目のスペイン戦では幼なじみ の三笘薫からの折り返し(後に三笘の1mmと 語り継がれるパス)に合わせて逆転ゴールを決 め、マン・オブ・ザ・マッチに選ばれた 日本対スペイン戦では後半6分にVAR判定で 厳密な審査が実施され数ミリ単位の精密な 判定が話題となり、「三苫の1mm」としてマス メディアで大きく話題となった。 GPT 回答生成 GPT 要約・抽出 入力情報の加工 ドキュメント・ クエリマッチング 検索実行 コンテキスト ベース回答 検索後の情報を一度要約を挟むことでノイズが減少し精度向上が見込める。

Slide 32

Slide 32 text

32 【参考】ドキュメントと質問の関連性や有益さを繰り返し吟味するSelf-RAG 入力情報の加工 ドキュメント・ クエリマッチング 検索実行 コンテキスト ベース回答 LangGraphによる自己反射型RAG (langchain.dev) Azure OpenAIで 使えるモデルは? 検索判断 クエリ・ ベクトル化 そのまま回答 否 要 検索ヒット N件Doc 1件ずつ Qとの関連性 判断 Q 次のDocへ 関連なし 関連あり Qに有益か? Docに基づいた回答か? 回答作成 回答作成 ※やや簡略化しています クエリと回答のプロセスを繰り返すことでより質の良い回答を求めていく手法。 反復的な推論を繰り返すためになるため、回答に時間が掛かる点には注意。 両方クリアすれば 確定 両方クリアすれば 確定

Slide 33

Slide 33 text

33 LLMシステムにおける評価

Slide 34

Slide 34 text

34 LLMシステムにおけるチェック観点の例 基本挙動 基本挙動のチェック ➢ 動作に関わるルールや手順、制約事項が守られているかどうか ➢ Function Callingが呼ばれた際に、関数が実行出来ているか ➢ RAGが機能した際に取得コンテキストを基に回答が出来ているか ➢ メッセージ表示やSTTなどとの連携時に情報が欠落したり致命的な誤解釈などが無いか ➢ 問題解決割合 Tool精度 Function Calling ➢ 実行パラメータの抽出の精度 ➢ Functionを呼ぶタイミング ➢ Functionの選択精度 ➢ その他Toolルールの遵守 RAG ➢ クエリ化精度 ➢ 検索精度 ➢ リランク精度 ➢ 最終回答の完成度 ほか 非機能面 会話の長さ(ターン数) ➢ どれくらいのターン数で問題が解決されたか Time To First Token (TTFT) ➢ 最初のトークンが出力されるまでの時間 Time Per Output Token (TPOT) ➢ トークン1つが出力されるごとに掛かる時間 各LLM Latency ➢ 各LLMでの TTFT + TPOT * (生成トークン数) スループット ➢ 多重実行時に掛かるトークン量 検索・DBアクセス時間 ➢ RAGが実行された際の検索速度やDBアクセス時間 セキュリティ jailbreakチェック ➢ 入力に関するメタプロンプトからの脱獄行為 故意の多量トークン ➢ LLMのDDoSのような過負荷を狙った機械的な実行 稼働前に確認すべき項目を挙げる。これに加え、稼働後のPost Analytics工程では実データでの分析や ユーザの心象など新しい指標の分析も必要。

Slide 35

Slide 35 text

35 LLMシステムの評価大まかな手順 (RAG評価の例) RAGの評価は意外にもシンプルだが、精度が悪いときにどこに原因があるかを突き止めるためログを保管しておくことは必須。 RAGシステムからの出力収集 正解となるデータセットの準備 「質問」、「理想の回答」、「検索されるべきドキュメント」のペアを多量に用意する。 件数の目安は特に無いが、バリエーションや数が多いほど評価の信頼性が高まる。 1で用意した質問をRAGシステムへ入力し、 「RAGシステムの最終回答」、「検索された ドキュメント(群)」を取集する。LLMは確率的な生成をするため同じ質問でも聞き方を 変えるなどして、複数生成させておくのが望ましい。 出力と正解の突合せ 1と2を比較し、適切なドキュメント抽出が出来ているか、回答の正確性を評価する。 ドキュメントについてはIDを突き合せれば評価できるが、回答についてはLLMを用いて 評価する必要がある。 1 2 3 Azure OpenAIで 使えるモデルは? 2で出力された結果 1で用意した正解 検索されたドキュメント 正解のドキュメントが 含まれているか判定 正解のドキュメント RAGシステム gpt-4, gpt-35-turbo, …が利用 可能です。 検索結果をコンテキストとして 与えた際の最終回答 採点 正解の回答 現在使えるモデルはgpt-4, gpt-35-turbo, …です。 LLM or 人

Slide 36

Slide 36 text

36 Prompt flowによる完成済み評価フローの利用 評価は手組でも可能ではあるが、GUIベース+組み込みの評価フローが定義されているツールを使うと楽。 Evaluation Method Metrics Description question answer grounded truth context other Score Value QnA GPT Similarity Evaluation GPT Similarity ユーザーが指定したGrounded truth(正解)の回答と、GPT モデ ルを使用してモデルの回答の類似性を測定します。 ○ ○ ○ 1 to 5 QnA Ada Similarity Evaluation Ada Similarity Grounded truth(正解)とモデルの回答の両方について、Ada embeddings API を使用してドキュメントのEmbeddingを計算し、 コサイン類似度を計算します。 ○ ○ ○ [0, 1] QnA Groundedness Evaluation Groundedness モデルの回答が取得したコンテキストにどの程度基づいているかを 測定します。(LLMの応答が真であっても、回答根拠がコンテキス トに基づいていないとRAGが機能していないことになる。) ○ ○ ○ 1 to 5 QnA Relevance Evaluation Relevance モデルの回答が、尋ねられた質問にどの程度関連しているかを LLMで測定します。 ○ ○ ○ 1 to 5 QnA Coherence Evaluation Coherence モデルの回答に含まれるすべての文の品質と、それらが自然にどの ように組み合わされているかをLLMで測定します。 ○ ○ 1 to 5 QnA Fluency Evaluation Fluency モデルの回答が文法的および言語的にどの程度正しいかをLLM で測定します。 ○ ○ 1 to 5 QnA RAG Evaluation Retrieval score Groundedness Relevance LLM を活用して Q&A RAG システムを評価し、回答の品質と安 全性を測定します。GPTモデルを利用して測定を支援することで、 従来の数学的測定と比較して、人間の評価との高い一致を達 成することを目的としています。 ○ ○ ○ ○ metrics 1 to 5 Classification Accuracy Evaluation Accuracy 分類システムの出力をGrounded truth(正解)と比較することで、 分類システムのパフォーマンスを測定します。 ○ ○ prediction [0, 1] QnA F1 scores Evaluation F1 score モデルの回答とGrounded truth(正解)の間で共有される単語 数の比率を測定します。 ○ ○ ○ [0, 1]

Slide 37

Slide 37 text

37 データセット作成におけるGPT-4の利用 質問パターンの水増しや、過去ログやドキュメントからの質問生成などにGPT-4が利用できる。 Copilot (bing.com)

Slide 38

Slide 38 text

38 「ちょっと待て」 ~評価役へのLLM活用~ GPTに出力を評価させる場合、その評価が妥当なものであるかどうかを確認する必要がある。 Azure OpenAIで 使えるモデルは? 2で出力された結果 1で用意した正解 検索されたドキュメント 正解のドキュメントが 含まれているか判定 正解のドキュメント RAGシステム gpt-4, gpt-35-turbo, …が利用 可能です。 検索結果をコンテキストとして 与えた際の最終回答 採点 正解の回答 現在使えるモデルはgpt-4, gpt-35-turbo, …です。 LLM このLLMによる採点は 信頼してもいいのか

Slide 39

Slide 39 text

39 評価役LLMの採点能力の検証 評価役が人である場合は業務や領域の熟練者などを連れてくることで解決するが、 LLMには実際に評価をさせてみて、その評価が適切かどうか最初に検証しておく必要がある。 対話履歴データ 評価役LLMによる採点 人間によるチェック (人間のスコアとの比較) 5 Score 4 Score 4 Score 5 Score 5 Score 2 Score 3 Score 4 Score 比較 比較 比較 比較

Slide 40

Slide 40 text

40 各ステップにおける注意点 各ステップでは準備に注意点がある。特に対話履歴データをどう用意するかはポイントとなる。 対話履歴データ 評価役LLMによる採点 人間によるチェック (人間のスコアとの比較) ① 実際の対話データを使って検証する →手軽だが、良いデータと悪いデータを満遍なく集めにくい。稼働前はデータが無いなどの欠点がある。 (稼働後のPost Analyticsでは実際の対話データをユーザ分析のために活用することはアリ) ② シミュレーションした対話データを使って検証する →正例、負例をコントロールしやすいが、リアルな対話とは乖離がある。シミュレーションシステムの構築が手間。 全てのチェックは不可能なのでサンプリングした結果で判断することになる。 統計学的に判断が必要になる。対話履歴データが実際の対話データになる分布に偏りが発生しうるため、 特に判断に注意。品質保証部門やデータサイエンティストなど専門家と相談し、 通常のソフトウェアテストと同じく、Go/No Goの判定基準を事前に設けておく。 実運用に比べるとトークン消費は抑えられる傾向にあるため、精度が良いモデルが使える。 多くは速度性能を求められることは少ないため、多段推論を含めプロンプトもリッチに実装できる。

Slide 41

Slide 41 text

41 対話履歴データのシミュレータの例 ➢ ユーザ・アシスタントの会話履歴をLLM同士の会話で作成 →両方のロールのGPTを準備 ➢ 特定の観点における正例、負例を作る →評価したい観点に応じてassistant側のSystem Promptを書き換えて恣意的に負の例を作る。 例えば「長くしゃべり過ぎない」という観点の負の例を作るため、敢えて「回答は長く詳細に」とPromptを書き換えるなど。 User役 GPT アシスタント GPT 対話 評価対象の内容が なるべく出てくるような 質問を投げる 対話履歴 基本方針

Slide 42

Slide 42 text

42 Prompt の変更や差し替えに対応できるコーディング基準やフレームワークが必要 なるべくどこに何を書くべきかを明確にする。それをLLMが解釈しやすいように記載する。 下記はMarkdown形式で記載する際の各セクション(#)に何を書くかの一例。