Upgrade to Pro — share decks privately, control downloads, hide ads and more …

【AOAIドーナツ本出版記念】AzureでのChatGPT活用入門【基本から周辺サービスまで解説】

Taishi Miyata
February 21, 2024
1.2k

 【AOAIドーナツ本出版記念】AzureでのChatGPT活用入門【基本から周辺サービスまで解説】

StudyCo様主催の【AOAIドーナツ本出版記念】AzureでのChatGPT活用入門【基本から周辺サービスまで解説】で登壇した資料です。2024年2月12時点の情報であることをご留意ください。

Taishi Miyata

February 21, 2024
Tweet

Transcript

  1. Azure OpenAI Serviceの概要 AzureはOpenAIのモデルを展開する唯一のパブリッククラウドサービス APIでOpenAIの 推論機能を提供 エンドポイントへのリクエストを投げるだけで 推論結果が得られます。AIを動作させるインフラを新たに準 備・開発する必要はありません。API仕様やライブラリも基本 は共通。(REST

    API, Python SDKから呼び出しが可能。) SLAを既定した提供 99.9%以上の稼働率を保証するSLAを既定しています。 (他の Azure Cognitive Services と同水準) Azureのセキュリティ 機能が統合 Azure Active Directoryと連携した認証、プライベートネット ワークでの利用、データの暗号化、コンテンツフィルタリングなど、 企業がAIを使うリスクを軽減するセキュリティをカバーします。 Azure OpenAI Service データ+ リクエスト 推論結果 システム エンドポイント Responsible AIの 原則に基づく提供 MicrosoftがAIを使う上でのリスクを配慮した原則に基づき サービス展開をしており、AI活用サービスで発生するリスクを 軽減することができます。 GPT OpenAI社のAPIの非機能強化版。最新モデルの反映は遅い 4
  2. Azure OpenAI Service の詳細 項目 Azure OpenAI Service データ取り 扱い

    入力・出力 デフォルトでは悪用/誤用の監視目的で30日間保持され、承認されたマイクロソフト社員が不正 利用時にレビューする可能性がある。監視のためのログ保存プロセスはオプトアウト申請が可能 で、承認されればログ保持されない。 Fine-Tuning 提供されたトレーニングデータは、お客様のモデルのfine-tuning (微調整)にのみ使用され、マ イクロソフトのモデルをトレーニング/改善するために使用しない(参考)。また使用したデータ や学習済みモデルはAzureストレージ配置時には暗号化され学習後はユーザ判断で削除可能。 Data, privacy, and security for Azure OpenAI Service - Azure AI Services | Microsoft Learn 価格 Azure の価格体系に基づく(現時点でモデル利用価格はOpenAI社が公開しているAPIと同価格) API 共通性 OpenAI と共同開発した API で互換性がある。(OpenAI Python Libraryが使用可能) SLA ・99.9%以上の稼働率を保証 詳細(他の Azure AI Services と同じ) サポート Azure サポートプランでサポートされる セキュリティ ・Azureのセキュリティ基準に準拠、APIキーによる認証とMicrosoft Entra ID認証に対応 ・Azureのプライベートネットワークによる保護が可能 ・不正利用防止のためのコンテンツフィルタリング 監視 ログ・メトリック監視およびAzure Monitorと連携したアラート発行などが可能 リージョン モデル毎に利用可能なリージョンが異なる Azure OpenAI Service models - Azure OpenAI | Microsoft Learn 開発ツール ChatGPT用のPlaygroundなどGUIでの挙動検証やパラメータ調整が可能(Azure OpenAI Studio - Microsoft Azure) ご利用申請フォーム(サブスクリプションを指定して申請) https://aka.ms/oai/access 5
  3. Azure OpenAIで提供可能なモデル 23年11月 GPT-4 Turboモデルがプレビュー版で利用可能に モデル 概要 モデル名 最大トークン GPT-3.5

    (テキスト生成) GPTモデルをチャットに最適化したモデ ル。いわゆるChatGPT ・gpt-35-turbo (1106) 入力:16,385 出力:4,096 ・gpt-35-turbo-instruct (0914) 4,097 GPT-4 (テキスト生成) GPT-3.5モデルよりも高度なタスクを高 精度で解決可能なモデル ・gpt-4 (0613) 8,192 ・gpt-4-32k (0613) 32,768 ・gpt-4 (1106-preview) ※GPT-4 Turboモデル 入力:128,000 出力:4,096 ・gpt-4(vision-preview) ・gpt-4 (0125-preview) Embeddings (ベクトル変換) 単語や文章を数値データ(ベクトル)化す るモデル。文書同士の類似度を計算でき 検索などに利用される ・text-embedding-ada-002 入力:8,191 次元:1,536 DALL-E (画像生成) 画像を作成して編集するための画像ベー スのモデル ・dalle2 (preview) 1,000 ・dalle3 (preview) 4,000 Whisper (音声認識) 音声認識のモデル ・whisper (preview) 25MB 6
  4. ◼ プロンプトと出力、埋め込み、トレーニングデータ  他のお客様はご利用いただけません  OpenAI では使用できません  OpenAI モデルの改善には使用されません

     Microsoftのサービスの改善には使用されません  ファインチューニングされた Azure OpenAI モデルは、ユーザー 専用に使用できます  Azure OpenAI Service は Microsoft によって完全に制御されます。 Microsoft は Microsoft の Azure 環境で OpenAI モデルをホストし ており、本サービスは OpenAI が運営するサービスと相互作用し ません。 ◼ データの監視  デフォルトでは悪用/誤用の監視目的で30日間保持され、承認さ れたマイクロソフト社員が不正利用時にレビューする可能性があ ります。監視のためのログ保存プロセスはオプトアウト申請が可 能で、承認されればログは保持されません  オプトアウト申請フォーム:Azure OpenAI Limited Access Review: Modified Content Filters and Abuse Monitoring (microsoft.com) セキュリティとプライバシー 推論時のデータ処理 セキュリティとプライバシーに関する最新情報は下記URLでご確認ください Data, privacy, and security for Azure OpenAI Service - Azure AI services | Microsoft Learn 8
  5. 有害コンテンツの検出 APIの入力と出力に対して、有害コンテンツ検出のフィルタリングを設定することが可能 Azure OpenAI API コンテンツ フィルタリング AIモデル アプリ コンテンツフィルタリング

    ・ヘイト/性的/暴力/自傷 ・脱獄リスク検出(preview) ・保護されたコンテンツ検出(preview) ・カスタムリスト Azure OpenAI APIs ・Completion ・Embeddings ・Images Azure Azure OpenAI モデル ・ベースモデル ・ファインチューニングされたモデル プロンプト テキスト ベクトル 画像 入力 出力 Azure OpenAI Service のコンテンツのフィルター処理 - Azure OpenAI | Microsoft Learn 9
  6. GPT単体の弱点 GPT単体の弱点を理解し、弱点は外部ツールで補うことが重要 文脈から推定しにくい数字などのトークン 正しい答えが決まっていない、 似ているが違いが判別しづらい学習データ 学習データが少ないマイナーな事象 GPT単体の弱点 日本語 文章中の数字、例えば「昨年と比べ売上◦◦%低下」などは正確な数字と 文脈が紐づかないことがあり精度が落ちることがある。

    料理のレシピなど、人によって材料や分量が違うケースなどは正誤が安定しない。 逆に物理法則など普遍的な事象の解説では安定する。 正しい事実関係の出現確率を高めるほどの学習ができておらず間違えやすい。 「1998年の日本プロ野球の2軍について教えて」など。 注意の概要・具体例 GPT-4で多少改善はしたが、言語格差が見られる。一般的にGPTの多くは英語の 文章の方が多く学習されているため日本語より精度が高い。 最適経路計算など 言語生成で実現できないロジック 乗換案内のように、路線図情報や駅間所要時間のデータや確立された解法によって 本来は答えが導かれているものは言語モデルには推定しにくい。 最新情報やドメイン固有情報の記述 GPTには膨大なデータが学習されているが、GPTは最新モデルでも2021年9月のもの。 最新情報を聞かれると不正確な回答に。 10
  7. 弱点克服のアプローチ プロンプトエンジニアリング プロンプトを工夫することでユーザが期待する回答を引き出す技術。指示の 具体化・構造化や出力形式の指定などの手法がある Reasoning & Acting (ReAct) 内部情報からの言語的な生成だけでなく、プロンプトから必要なタスクを動 的に認識させ、検索や計算など外部APIを活用した情報を取得し、その情報

    を付加して回答を返すという考え方 Retrieval-Augmented Generation (RAG) 外部から情報を検索・取得し、プロンプトに埋め込むことでGPTが知らない 情報について回答を生成する手法。社内ドキュメント検索で利用されるケー スが多い ファインチューニング 特定のタスクの精度を向上させるために、学習データを用意し、GPTモデル を学習させる手法。Few-Shot Learningではプロンプトに収まらないような タスクで利用されることが多い 11
  8. RAG(Retrieval-Augmented Generation)とは Web検索結果や社内データ、外部リソースの計算結果などと連携し、GPT単体では得られない情報を 加味した回答生成する GPT 2023年のWBC優勝国はどこ? ユーザ Web検索 bing APIなど

    ①チャット内容 ④クエリ「WBC 2023 優勝国」 ⑤検索結果 バックエンド プログラム ⑥質問+検索結果 ⑦回答 2023年のWBC優勝国は日本でした。 ユーザへの 返答作成 ②チャット内 容 ③クエリ化結 果 13
  9. RAGの処理フロー ユーザ バックエンド GPT ナレッジベース 質問 検索 回答生成 検索結果 Azure

    OpenAIで 使えるモデルを教えて Azure OpenAIで 使えるモデルを教えて 上位3件 <プロンプト> ## 命令 以下のコンテキストに基づいて、質問に対する回答 を正確に生成してください。 ## 制約 - 質問で聞かれた内容以外を回答しないでください。 ## 質問 Azure OpenAIで使えるモデルを教えて ## コンテキスト 1. Azure OpenAIとは~ 2. クォータ制限について~ 3. 利用できるリージョンは~ ## 回答 回答 Azure OpenAIで使えるモデルは、GPT-4シリーズ、 GPT-3シリーズ、ChatGPT (gpt-35-turbo)、Codexシ リーズ、Embeddingsシリーズ、Ada、Babbage、 Curie、Cushmanのモデルが利用可能です 回答 1. Azure OpenAIとは~ 2. クォータ制限について~ 3. 利用できるリージョンは~ 入力プロンプトと出力結果の合計トークン数を制限内に 収める必要がある(gpt-3.5-turboの場合4,096) クォータを超えないようにデータベースのナレッジの大 きさをコントロールする必要がある 14
  10. RAGの参考アーキテクチャ Bing APIやAI Searchを活用し、独自のRAGアーキテクチャを実現することが可能 Frontend OpenAI用 Container App GPTの呼び出し 会話履歴の保持

    プロンプト管理 Azure API Management ナレッジ検索 Document Intelligence CosmosDB AI Search Azure OpenAI Service Azure AD RDBMSなど アプリ用 Container App 運用ログ・アプリケーションデータ API管理・制御 Storage インデックス化 (AIエンリッチメントも可) 独自データ Cognitive Service 他システムDB LLMライブラリ群 • OpenAI Python Library • langchain • Semantic Kernel • Llama index • JARVIS その他API 呼び出し 関数実行 ML実行 Web検索ほか外部API Functions Container Appsなど Azure Machine Learning Cognitive Service、Hugging GPT bing APIなど 15
  11. 高 実装工数 低 RAGの実装パターン ◼ Azure OpenAI on your data

     バックエンドの開発が不要  プロンプトのチューニングができない  検索結果が分からない ◼ Prompt flow(Azure AI Studio)  GUI(プログラミング不要)でバックエンドが構築可能  プロンプトのチューニングが可能  評価の仕組みがある  高度な処理フローは難しい ◼ フルスクラッチ  柔軟に開発可能(LangChain, Semantic Kernelなど)  高度な処理フローにも対応可能  プログラミングが必要  評価の仕組みを自作する必要あり 16 AOAI on your dataの構成 Prompt flowのGUI メリット デメリット
  12. RAGの精度改善の方針 ◼ 生成精度の改善  [What]テクノロジー  日本語のプロンプト  Few-shot-Learning 

    プロンプトの書き方  [How]ツール  LangChain/Semantic Kernel/guidance  Prompt flow(AzureML)  [Who]スキルセット  プログラミング言語(Python)/LLMの知識 ◼ 検索精度の改善(AI Search)  [What]テクノロジー  言語アナライザーを日本語に(※)  フルテキスト検索/ベクトル検索/セマンティック検索  チャンク分割  [Who]スキル  Python/AI Search全般/ベクトル検索 ユーザ AI Search バックエンド プログラム GPT Azure OpenAI 生成精度の改善 検索精度の改善 質問 回答 RAGのアーキテクチャ クエリ/回答生成 検索 結果 17
  13. AI製品・実装プロダクト Partner Solutions Power BI Power Apps Power Automate Power

    Virtual Agents Azure Machine Learning Vision Speech Language Decision OpenAI Service Document Intelligence Bot Service Video Indexer Metrics Advisor Search AI開発者& データサイエン ティスト ビジネス ユーザー 機械学習プラットフォーム カスタマイズ可能なAIモデル Azure AI アプリケーション プラットフォーム AI Builder オフィスワーカー向け アプリケーション/OS Azure Machine Learning GitHub 開発者プラットフォーム GitHub Teams Edge Bing Viva Sales GitHub Copilot 19
  14. Azure AI Searchとは フルテキスト検索機能を提供するPaaS型の検索サービス データソース Azure AI Search インデックス インデックス

    エンジン 検索 エンジン ドキュメント データベース アプリケーション インデックス化 検索 ①インデックス作成 ②検索 特徴1 ・多様なデータソースに対応 - 非構造データ(PDF/Wordなど) - データベース ・AIによる情報抽出 - OCR/キーワード抽出など 特徴2 ・フルマネージドサービス ・スケーラブル 特徴3 ・豊富な検索機能 - フルテキスト検索 - セマンティック検索 - ベクトル検索 全体の処理フロー 20
  15. 検索システムがない場合 全てのドキュメントを走査する、コストが非常に高い非効率な処理 「 Azure 」を検索 #1 Microsoft is introducing SQL

    Sever Windows Server Update Microsoft is introducing Azure Programming on Microsoft Azure #2 #3 #4 関連する文書 21
  16. 検索システムの役割り 1 ドキュメントからインデックスを作成 単語 (トークン) ドキュメント # microsoft 1, 3,

    4 introducing 1, 3 sql 1 server 1, 2 windows 2 update 2 azure 3, 4 programming 4 #1 Microsoft is introducing SQL Sever Windows Server Update Microsoft is introducing Azure Programming on Microsoft Azure #2 #3 #4 テキスト解析 インデクシング トークンからドキュメントを引き当てるデータ構造 22
  17. 検索システムの役割り 2 検索の精度を上げるための機能 単語 (トークン) ドキュメント # microsoft 1, 3,

    4 introducing 1, 3 sql 1 server 1, 2 windows 2 update 2 azure 3, 4 programming 4 「 Azure 」を検索 #1 Microsoft is introducing SQL Sever Windows Server Update Microsoft is introducing Azure Programming on Microsoft Azure #2 #3 #4 テキスト解析 インデクシング キーワードとドキュメントの適合率を上げる 仕組み 23
  18. 検索システムの役割り 3 インデックスがポインタとなり、ドキュメントを引き当て 単語 (トークン) ドキュメント # microsoft 1, 3,

    4 introducing 1, 3 sql 1 server 1, 2 windows 2 update 2 azure 3, 4 programming 4 「 Azure 」を検索 #1 Microsoft is introducing SQL Sever Windows Server Update Microsoft is introducing Azure Programming on Microsoft Azure #2 #3 #4 テキスト解析 インデクシング キーワードに対応するドキュメントを 引き当て 24
  19. 検索システムの役割り 4 関連性によってソート 「 Azure 」を検索 #1 Microsoft is introducing

    SQL Sever Windows Server Update Microsoft is introducing Azure Programming on Microsoft Azure #2 #3 #4 検索キーワードとドキュメントの関連性もとに、 結果をソート 関連する文書 Microsoft is introducing Azure Programming on Microsoft Azure #3 #4 25
  20. インデックスの作成方法 Push型とPull型の2種類 Document DB Blob Storage Microsoft Azure SQL Database

    Table Storage On-Premise Azure Search PULL (インデクサ) PUSH (API) Pull型: インデクサ-の利用 • 多様なデータソース • 定期的実行(最小5分) • 差分更新 • マスタDBとしての利用 • 全件再インデクシングはここから Push型: APIで直接更新 • アップロード 、マージ、削除など • 1度のバッチ: 最大 1,000 ドキュメント • リアルタイム に近い データ 更新 インジェスト する人 • クローラー • バッチ • カスタムツール 26
  21. 検索クエリ REST APIやSDKから検索を実行することが可能 27 { "search": "Azure OpenAIで使えるモデルを教えて", "vectorQueries": [

    { "kind": "text", "text": "Azure OpenAIで使えるモデルを教えて", "k": 5, "fields": "vector" } ], "queryType": "semantic", "semanticConfiguration": "search-demo-semantic- configuration", "captions": "extractive", "answers": "extractive|count-3", "queryLanguage": "en-US" } テキスト検索 ベクトル検索 セマンティック検索 リクエストボディ ハイブリッド クエリの使い方 - Azure AI Search | Microsoft Learn ※検索手法は単体もしくは併用することが可能
  22. フルテキスト検索 28 アナライザー クエリパーサー サーチエンジン ユーザ AI Search クエリ 「Azure

    OpenAIで使える モデルを教えて」 単語 「Azure, OpenAI, 使える,モデル」 文章 単語 単語 ドキュメ ント Microsoft 1,3,4 Azure 2,3 AI 1,2,6 Search 5,8 転置インデックス 検索アルゴリズム (BM25) 単語のレア度(レアなら高い) 検索語が全単語の中でどれだけレアか 単語の頻出度(頻出すれば高い) 検索語がどれだけドキュメントに含まれているか 単語数の多さ(少なければ高い) ドキュメントに含まれる単語数が 相対的多いか フルテキスト(文章)を単語分割し、BM25アルゴリズムによって検索スコアを算出
  23. ベクトル検索とは ベクトル間の類似度を計算することで意味の近い文章を検索する手法 29 AI Searchで利用可能な検索アルゴリズム • Hierarchical Navigable Small World

    (HNSW) • 階層グラフ構造により高速でスケーラブルな検索を実 現。検索精度と計算コストのトレー ドオフを調整可能 • Exhaustive K-nearest neighbors (KNN) • すべてのデータ点の類似度を計算。計算コストが高い ので小規模データが推奨 Azure OpenAIで使えるモデルを教えて Azure OpenAIではGPT-3.5、 GPT-4、Embeddings、DALLE、 Whisperモデルが使えます 私はパンが好きです コサイン類似度 𝑐𝑜𝑠𝜃1 = 0.93 コサイン類似度 𝑐𝑜𝑠𝜃2 = 0.77 𝜃1 𝜃2 コサイン類似度のイメージ ベクトル検索 - Azure AI Search | Microsoft Learn
  24. セマンティック検索 フルテキスト検索の結果に対して、より関連性の高いドキュメントを再ランク付け 30 1. クエリ 2. フルテキスト検索 スコア付け 4. 再ランク付け

    3. ランク付けの モデル準備 #1 #3 #4 #34 ・・・ 検索スコア 上位50件 #5 #4 #3 #25 ・・・ AIモデル Azure OpenAIで 使えるモデルは? ・Bing検索エンジンの仕組みを活用 ・文章や単語の意味を考慮した検索 セマンティックのブログ:The science behind semantic search: How AI from Bing is powering Azure Cognitive Search - Microsoft Research
  25. ハイブリッド検索の検索スコア ハイブリッド検索の場合RRFによって計算スコアが導出される 31 Azure OpenAIで 使えるモデルは? フルテキスト検索 ベクトル検索 検索スコア計算 セマンティック

    ランク付け #5 #4 #3 #25 ・・・ クエリ L1 ランク付け 検索スコア計算 L2 再ランク付け 検索結果 検索スコア = ෍ 𝑛 1 𝑟𝑎𝑛𝑘 + 𝑘 Reciprocal Rank Fusion (RRF) による検索スコア計算手順 各検索手法の逆順位 逆順位の和 検索スコアの上位50件 を並び替え ハイブリッド検索のスコアリング (RRF) - Azure AI Search | Microsoft Learn RRFに基づいて検索ス コア算出
  26. ◼ 様々な検索方法を検証する  ベクトル検索:テキストをベクトルに変換し、テキスト間の類似度を計算することで、「文章の意味」を考慮した 検索を行う。単語レベルの正確な検索は苦手  キーワード検索:ユーザの質問文に含まれるキーワードとのマッチング率で検索を行う。文章の意味を考慮した検 索は苦手  ハイブリッド検索:キーワード検索とベクトル検索の両方を使うことで、それぞれの弱点を補う検索手法

    ◼ フィルターを利用する  ドメイン分類:検索対象のドキュメントが増えてきたり、似ているドキュメントが多い場合、関連外のドキュメン トを取得する確率が増える。事前にドキュメントのドメインを分類し、フィルターをかけて検索を行うことで、よ り関連性の高い文章を検索する ◼ チャンクを工夫する  検索のSN比:取得した検索結果に対して、本当に回答に必要な情報の割合(=SN比)が高いことが重要。ノイズが多 いと回答精度が悪くなることも。チャンクサイズは大きければ良いという事ではない。ユースケースに合わせた チャンクサイズの検証が必要 ◼ ナレッジを工夫する  表や画像の取り扱い:表データはレイアウトが崩れて、間違って認識する可能性あり。HTMLタグやMarkdown形 式でテキスト化する方がベター。画像中の文字などはOCRを使ってチャンク内に埋め込むなどの方法もある。 検索精度向上のアプローチ