「Amazon EUデザインと建設のためにAmazon SageMakerで動作する生成AIソリューション」

「Amazon SageMakerを活用したAmazon EUデザインと建設のための生成AIソリューション」

Amazon EU Design and Construction(Amazon D&C)チームは、ヨーロッパと中東・北アフリカ(MENA)地域全体でAmazonの倉庫を設計・建設するエンジニアリングチームです。プロジェクトの設計と展開プロセスには、Amazonとプロジェクト固有のガイドラインに関するエンジニアリング要件についての様々な情報要求(RFI)が含まれます。これらの要求は、基準設計値の単純な回収からバリューエンジニアリング提案のレビュー、レポートの分析、コンプライアンスチェックまでさまざまです。現在、これらは主題の専門家(SME)で構成される中央技術チームによって対応され、高度に専門的な質問に答えることができ、プロジェクトライフサイクル全体にわたってこのサービスを利用できます。チームは、情報を迅速に入手し、エンジニアリング設計を進めるための生成AI質問応答ソリューションを探しています。これらのユースケースは、Amazon D&Cチームだけでなく、プロジェクト展開に関与するグローバルエンジニアリングサービスの広範な範囲に適用されるものです。プロジェクトライフサイクル全体に携わる利害関係者とチームは、生成AIによる質問応答ソリューションを利用することで、重要な情報に迅速にアクセスし、エンジニアリング設計とプロジェクト管理プロセスを効率化することができます。

質問応答のための既存の生成AIソリューションは、主にリトリーバル・オーグメンテッド・ジェネレーション(RAG)に基づいています。RAGは、大規模言語モデル(LLM)の埋め込みとベクタリングを通じて文書を検索し、クラスタリングを介して検索結果から文脈を作成し、その文脈を拡張プロンプトとして基礎モデルの推論に使用して回答を取得します。この方法は、Amazon D&Cの高度に専門的な文書に対しては効率的ではありません。この種の文書には、Excelシート、テーブル、リスト、図、画像などの大量の非構造化データが含まれています。この場合、質問応答タスクは文書でLLMを微調整することでより効果的に機能します。微調整は、事前訓練されたLLMの重みを調整し適応させることで、モデルの品質と精度を向上させます。

これらの課題に対処するために、RAGと微調整LLMを備えた新しいフレームワークを提案します。このソリューションは、モデルの微調整と推論のためのコアサービスとしてAmazon SageMaker JumpStartを使用しています。この記事では、ソリューションだけでなく、実際のユースケースでの実装時の学びとベストプラクティスについても議論します。異なる手法とオープンソースのLLMが、実際のユースケースでどのように機能するかを比較し、モデルのパフォーマンスと計算リソースコストのトレードオフを見つける方法についても議論します。

ソリューション概要

次のようなコンポーネントで構成されるソリューションは、アーキテクチャダイアグラムに示されています:

  1. コンテンツリポジトリ – D&Cのコンテンツには、PDFファイル、Excelシート、ウィキページなど、さまざまな形式の人間が読めるドキュメントが含まれます。このソリューションでは、これらのコンテンツをAmazon Simple Storage Service(Amazon S3)バケットに保存し、情報の検索および推論のための知識ベースとして使用しました。将来的には、コンテンツに直接アクセスするための統合アダプタを構築します。
  2. RAGフレームワークと微調整LLM – 以下のサブコンポーネントから構成されます:
    1. RAGフレームワーク – これは、文書から関連データを取得し、リトリーブデータをコンテキストに追加してプロンプトを拡張し、それを微調整LLMに渡して出力を生成します。
    2. 微調整LLM – ドキュメントとコンテンツからトレーニングデータセットを構築し、基礎モデルで微調整を行いました。微調整後、モデルはD&Cのコンテンツから知識を学習し、したがって独立して質問に応答することができます。
    3. プロンプトの検証モジュール – ユーザーのプロンプトと微調整のためのデータセットとの意味的な一致を測定します。LLMがこの質問に答えるように微調整されていれば、微調整モデルを推論して応答できます。そうでなければ、RAGを使用して応答を生成できます。
    4. LangChainLangChainを使用して、着信質問に応答するワークフローを構築します。
  3. エンドユーザーUI – これは、ユーザーの質問と照会をキャプチャし、RAGおよびLLMの応答から回答を表示するチャットボットのUIです。
overall_architecture

次のセクションでは、RAGワークフローを作成し、ファインチューニングされたモデルを構築する方法を示します。

SageMaker JumpStartによる基礎モデルを用いたRAG

RAGは、事前学習された密な検索とシーケンスtoシーケンス(seq2seq)の基礎モデルの力を組み合わせています。Amazon D&Cドキュメントからの質問回答では、事前に以下の準備が必要です:

  • LLM埋め込みモデルを使用したドキュメントの埋め込みと索引付け – 複数のドキュメントをドキュメントの章とセクション構造に基づいて小さなチャンクに分割し、SageMaker JumpStart上のAmazon GPT-J-6Bモデルでインデックスを生成し、FAISSベクトルストアにインデックスを保存しました。
  • プロンプトから応答を生成するための事前学習済みの基礎モデル – SageMaker JumpStart上でFlan-T5 XL、Flan-T5 XXL、およびFalcon-7Bモデルでテストしました。

質問応答プロセスはLangChainによって実装されており、Language Modelsで動作するアプリケーションを開発するためのフレームワークです。チェーン内のワークフローには次のステップが含まれます:

  1. ユーザーからの質問を取得します。

  2. FAISSを介してインデックス付けされたドキュメントの意味的検索を実行し、上位K個の関連性の高いドキュメントチャンクを取得します。

  3. 以下のようなプロンプトテンプレートを定義します:

    """コンテキストに基づく回答:\n\n{context}\n\n{question}"""
  4. プロンプト内の{context}とユーザーの質問を{question}として、取得したドキュメントチャンクを拡張します。

  5. 構築されたゼロショットプロンプトで基礎モデルにプロンプトを提示します。

  6. モデルの出力をユーザーに返します。

Amazon D&Cの要件と仕様について125の質問をテストし、RAGは一部の質問に対して適切な応答を返しました。以下の例では、RAGはFlan-T5-XXLモデルとともに、ドキュメントの正しいセクションから正確な回答を提供しました。

質問 飲料水噴水や冷水器の配管要件は何ですか?(セクション22 47 00)
期待される回答 デベロッパーは、倉庫のトイレブロックごとに倉庫の入口に隣接する倉庫の壁スペースにフロアスタンディングの水分配装バーを設置し、ロッカールームのトイレブロックにも同様の場所に設置します。ユニットはAmazonの基準に従う必要があります。インストール前にAmazonと合意した最終数および配置を提供してください。各場所に冷却および室温の水を供給するユニットを2台以上設置してください。ウォータークーラーやウォーターバー – デベロッパーは施設全体でリモートウォータークーラーまたはウォーターバーのために必要な飲用水供給を提供してください。飲食店業者によって提供されるブレイクルームのためのウォーターバーには、ウォーターポイント、排水および必要な電気サービスを提供する必要があります。
RAGの回答(GPT-J-6B埋め込みとFlan-T5-XXL) デベロッパーは、倉庫のトイレブロックごとに倉庫の入口に隣接する倉庫の壁スペースにフロアスタンディングの水分配装バーを設置し、ロッカールームのトイレブロックにも同様の場所に設置します。ユニットはAmazonの基準に従う必要があります。インストール前にAmazonと合意した最終数および配置を提供してください。各場所に冷却および室温の水を供給するユニットを2台以上設置してください。ウォータークーラーやウォーターバー – デベロッパーは施設全体でリモートウォータークーラーまたはウォーターバーのために必要な飲用水供給を提供してください。飲食店業者によって提供されるブレイクルームのためのウォーターバーには、ウォーターポイント、排水および必要な電気サービスを提供する必要があります。

ただし、私たちはRAGが、ガイドラインや数字、図などより具体的で高度な技術的な質問に対して明確で鮮明な回答を提供していないことに気づきました。次の例のように、技術的な次元の出力が期待されている場合、RAGは具体的な回答を提供することができません。これは主に、埋め込みや検索プロセスが簡潔なコンテキストを返せないためです。

質問 P2の一階のコンクリートのフロアの高さの要件は何ですか?
予想される回答 7.50m AFFL
RAGの回答(GPT-J-6Bフラン- T5-XXL埋め込み) P2の一階のコンクリート

この点を改善する必要があります。このユースケースにおいては、重大な結果の臨床場合のため幻想を許容できません。

SageMakerでLLMを微調整する

この課題に対処し、応答品質を向上させるために、我々はドキュメントを使用して質問応答タスクのためにLLMモデルを新しいアプローチで微調整する方法を取ります。モデルは、ドキュメントから直接対応する知識を学習するようにトレーニングされます。RAGとは異なり、ドキュメントが適切に埋め込まれてインデックスされているかどうか、および意味的な検索アルゴリズムがベクトルデータベースから最も関連のあるコンテンツを返すのに十分効果的であるかには依存しません。

微調整のためのトレーニングデータセットを準備するために、D&Cドキュメントから情報を抽出し、次の形式でデータを構築します:

  • インストラクション – タスクを説明し、部分的なプロンプトを提供します。
  • 入力 – プロンプトにまとめるためのさらなるコンテキストを提供します。
  • 応答 – モデルの出力です。

トレーニングプロセス中、各部分にインストラクションキー、入力キー、応答キーを追加し、それらをトレーニングプロンプトに結合し、トークン化します。その後、データはSageMakerのトレーナーに供給され、微調整モデルが生成されます。

トレーニングプロセスの加速とコンピューティングリソースのコスト削減のために、Parameter Efficient Fine-Tuning(PEFT)とLow-Rank Adaptation(LoRA)技術を使用しました。PEFTは、追加の少数のモデルパラメータのみを微調整することができ、LoRAは2つの小さい行列で重みの更新を表現し、低ランク分解を介して行います。PEFTとLoRAは8ビット量子化でコストを最適化し、125の質問応答ペアのトレーニングを単一のGPUを持つg4dn.xインスタンス上で収めることができます。

微調整の効果を証明するために、SageMaker上で複数のLLMモデルをテストしました。Bloom-7B、Flan-T5-XL、GPT-J-6B、Falcon-7Bの4つの小規模モデルをSageMaker JumpStartで選択し、Hugging FaceのDolly-3BをSageMakerで使用しました。

8ビットLoRAベースのトレーニングにより、各モデルの訓練可能なパラメータをフルウェイトの5%未満に削減することができます。訓練は、以下の図に示すように10〜20エポックで収束します。各モデルに対して、微調整プロセスは単一のGPUのg4dn.xインスタンスに収まり、コンピューティングリソースのコストを最適化しました。

training_process

SageMakerに展開された微調整モデルでの推論

微調整されたモデルをRAGフレームワークと一緒にSageMakerの単一のGPU g4dn.xノードに展開し、125の質問に対する推論結果を比較しました。モデルのパフォーマンスは2つのメトリックで測定されます。一つは、ROUGE(Recall-Oriented Understudy for Gisting Evaluation)スコアで、これは参照文の単語の総数に対する一致する単語の商を計算する人気のある自然言語処理(NLP)モデルの評価方法です。もう一つは、意味的な(テキスト)類似度スコアで、これは文をエンコードして埋め込みを取得し、コサイン類似度メトリックを使用してその類似度スコアを計算するトランスフォーマーモデルを使用して、2つのテキストの意味がどれだけ近いかを測定します。実験からは、これら2つの指標が質問の回答の品質をかなり一致して示していることがわかります。

以下の表と図で、微調整されたFalcon-7Bモデルが最高の回答品質を提供していることがわかります。さらに、Flan-T5-XLおよびDolly-3Bモデルも正確な回答を生成しています。

. RAG_GPT-J-6B_Flan-T5-XL RAG_GPT-J-6B_Flan-T5-XXL 微調整されたBloom-7B1 微調整されたFlan-T5-XL 微調整されたGPT-J-6B 微調整されたDolly-3B 微調整されたFalcon-7B
ROUGEスコア 0.1938 0.2747 0.3914 0.4977 0.3740 0.6991 0.9459
意味的な類似性スコア 0.4121 0.4786 0.5666 0.7205 0.5414 0.8147 0.9774
training_results

以下はモデルからの回答の例です。Flan-T5-XLモデルのRAGは非常に幻想的な回答を提供しましたが、より大きなFlan-T5-XXLモデルのRAGからの回答はより関連性がありましたが、まだ期待されるメッセージを完全にカバーすることはできませんでした。比較的、すべての微調整されたモデル(Flan-T5-XL、Dolly-3B、Falcon-7B)は、期待される回答として最も正確な回答を提供することができました。

質問 Post Grinding Sealer/Hardenerにはどのような要件がありますか?(TS0004 – セクション2.8)
期待される回答 ARフロアの研削/研磨手順の後には、リチウムベースのシーラー/ハードナーが使用されます。TGC/0007 ARフロアSCA手順を参照してください。代替案は検討されますが、Amazonとフローリングコンサルタントによって承認される必要があります。
RAGからの回答(GPT-J-6BをFlan-T5-XLで埋め込み) 浸透性コンクリートハードナーは、予めの打ち合わせで話し合われ、フローリングコンサルタントおよびAmazonによって承認される必要があります。
RAGからの回答(GPT-J-6BをFlan-T5-XXLで埋め込み) 提案された化合物は、予めの打ち合わせで話し合われ、フローリングコンサルタントおよびAmazonによって承認される必要があります。代替案は検討されますが、Amazonとフローリングコンサルタントによって承認される必要があります。
微調整されたFlan-T5-XLからの回答 ARフロアの研削/研磨手順の後には、リチウムベースのシーラー/ハードナーが使用されます。TGC/0007 ARフロアSCA手順を参照してください。代替案は検討されますが、Amazonとフローリングコンサルタントによって承認される必要があります。
微調整されたDolly-3Bからの回答 ARフロアの研削/研磨手順の後には、リチウムベースのシーラー/ハードナーが使用されます。TGC/0007 ARフロアSCA手順を参照してください。代替案は検討されますが、Amazonとフローリングコンサルタントによって承認される必要があります。
微調整されたFalcon-7Bからの回答 ARフロアの研削/研磨手順の後には、リチウムベースのシーラー/ハードナーが使用されます。TGC/0007 ARフロアSCA手順を参照してください。代替案は検討されますが、Amazonとフローリングコンサルタントによって承認される必要があります。

ソリューションのプロトタイプと結果

私たちは、提示されたアーキテクチャに基づいてプロトタイプを開発し、結果を示すために概念の証明を行いました。 RAGフレームワークとファインチューニングされたLLMの両方の利点を活用し、ハラシネーションを減らすために、まず入力される質問の意味を検証します。 質問がファインチューニングのトレーニングデータの中にある場合(ファインチューニングされたモデルはすでに高品質な回答を提供するための知識を持っています)、その質問をプロンプトとしてファインチューニングされたモデルに推論させます。 そうでない場合、質問はLangChainを通過してRAGからの応答を取得します。 以下の図は、このワークフローを示しています。

RAG_LLM_validate

私たちは、166個の質問から成るテストデータセットを使用してアーキテクチャをテストしました。 このデータセットには、モデルのファインチューニングに使用された125個の質問と、ファインチューニングされたモデルでトレーニングされていない追加の41個の質問が含まれています。 埋め込みモデルとファインチューニングされたFalcon-7Bモデルを使用したRAGフレームワークは、ROUGEスコアが0.7898、意味的類似性スコアが0.8781の高品質な結果を提供しました。 次の例に示すように、このフレームワークは、ユーザーの質問に対してD&Cドキュメントとよく一致する回答を生成する能力を持っています。

次の画像は、私たちの最初の例のドキュメントです。

bot1

次のスクリーンショットは、ボットの出力を示しています。

bot2

ボットは、テーブルやリストからのデータを使用して応答し、対応する質問の図を表示することもできます。 例えば、次のドキュメントを使用します。

bot3

次のスクリーンショットは、ボットの出力を示しています。

bot4

次の例のように、図を含むドキュメントも使用できます。

bot5

次のスクリーンショットは、テキストと図を含むボットの出力を示しています。

bot6-1

次のスクリーンショットは、図だけを含むボットの出力を示しています。

bot7-1

学んだ教訓と最善の手法

ソリューションの設計と複数のLLMでの実験により、生成型AIソリューションにおける質問応答タスクの品質と性能を確保する方法を学びました。以下のベストプラクティスをお勧めします。

  • RAGはエンジニアリングの質問に対して適切な応答を提供します。パフォーマンスは文書の埋め込みやインデックス作成に大きく依存します。非常に非構造化な文書には、LLMの埋め込みとインデックス作成前に文書を適切に分割し、増強するための手作業が必要になる場合があります。
  • インデックス検索はRAGの最終的な出力を決定する重要な要素です。適切に検索アルゴリズムを調整して、高い精度を達成し、RAGがより関連性の高い応答を生成するようにしてください。
  • ファインチューニングされたLLMは、高度に技術的で非構造化な文書から追加の知識を学習し、訓練後の文書に依存せずにモデル内に知識を持っています。これは、幻覚が許容されないユースケースに特に役立ちます。
  • モデルの応答の品質を確保するために、ファインチューニング用のトレーニングデータセットの形式は、適切に定義されたタスク固有のプロンプトテンプレートを利用する必要があります。推論パイプラインは同じテンプレートに従って人間らしい応答を生成するために使用されるべきです。
  • LLMはしばしば高額な価格と多くのリソース、途方もないコストを要求します。計算パワーの需要を減らし、高いトレーニングおよび推論コストを回避するために、PEFTやLoRA、量子化技術を使用することができます。
  • SageMaker JumpStartは、ファインチューニング、推論、展開に簡単にアクセスできる事前学習済みLLMを提供します。これにより、生成型AIソリューションの設計と実装を大幅に加速することができます。

結論

RAGフレームワークとSageMaker上のファインチューニングされたLLMを使用することで、ユーザーの質問とプロンプトに人間らしい応答を提供し、大量の非構造化で整理されていない文書から正確な情報を効率的に取得することができます。我々は引き続き、前の相互作用からより高度な文脈応答を提供するなど、ソリューションの開発を進めていきます。

ご意見や質問は常に歓迎しますので、コメントセクションにお書きください。

We will continue to update VoAGI; if you have any questions or suggestions, please contact us!

Share:

Was this article helpful?

93 out of 132 found this helpful

Discover more

機械学習

「PyTorchモデルのパフォーマンス分析と最適化 - パート3」

これは、PyTorch ProfilerとTensorBoardを使用してPyTorchモデルの分析と最適化を行うトピックに関するシリーズ投稿の3部目で...

AIニュース

Android 14:より多様なカスタマイズ、制御、アクセシビリティ機能

「Android 14は個人的で保護的な機能を備え、ユーザーを最優先し、彼らの個性を祝福するためのものです」

機械学習

「生成AIプロジェクトライフサイクル」

「Generative AI プロジェクトの詳細なライフサイクルを発見してくださいこのブログでは、このエキサイティングな AI の世界...

機械学習

「生成AIをめぐる旅」

私の豊富な経験に深く踏み込んで、全力でGenerative AIを受け入れ、あなたが利益を得るために活用できる貴重な洞察と知識を得...

機械学習

「AIとのプログラミング」

ジェネレーティブプログラミングはどのようにプログラミング言語を変革するのでしょうか?早い段階で既に見られる問題は、ど...

人工知能

「ChatGPT Meme Creator Pluginを使ってミームを作成する(ビジネスを成長させるために)」

この記事では、ChatGPT Meme Creatorプラグインを使用して、実際に面白いミームを作成する方法を詳しく説明します