大規模言語モデル (LLM) を微調整すると、ブランドの独自の声に合わせたカスタマイズされた顧客体験が生まれます。Amazon SageMaker Canvas と Amazon SageMaker JumpStart は、このプロセスを民主化し、企業が深い技術的専門知識がなくても LLM を微調整できるようにするコード不要のソリューションと事前トレーニング済みのモデルを提供し、組織がより少ない技術リソースでより迅速に行動できるようにします。
SageMaker Canvas は、ビジネス ユーザーがコードを記述せずに LLM を微調整できる直感的なポイント アンド クリック インターフェイスを提供します。SageMaker JumpStart モデルと Amazon Bedrock モデルの両方で動作し、ニーズに合わせて基盤モデル (FM) を柔軟に選択できます。
この記事では、SageMaker Canvas を使用して LLM を微調整およびデプロイする方法を説明します。Amazon SageMaker エコシステムに投資している企業の場合、SageMaker Canvas を SageMaker JumpStart モデルと組み合わせて使用すると、SageMaker の幅広いインスタンスタイプと構成を通じて、運用の継続性とデプロイオプションのきめ細かな制御が実現します。SageMaker Canvas を Amazon Bedrock モデルと共に使用する方法については、「Amazon SageMaker Canvas と Amazon Bedrock を使用して言語モデルを微調整およびデプロイする」を参照してください。
企業固有のデータに基づいて LLM を微調整すると、顧客との接点全体で一貫したメッセージングが可能になります。SageMaker Canvas を使用すると、パーソナライズされた顧客体験を作成し、高度な技術的専門知識がなくても成長を促進できます。さらに、データはベースモデルの改善には使用されず、サードパーティのモデルプロバイダーと共有されることもなく、完全に安全な AWS 環境内に留まります。
次の図はこのアーキテクチャを示しています。
次のセクションでは、データセットの準備、新しいモデルの作成、データセットのインポート、FM の選択によってモデルを微調整する方法を説明します。また、モデルを分析およびテストし、SageMaker 経由でモデルをデプロイする方法も示します。微調整プロセスによって、モデルの応答を会社の希望するトーンやスタイルに合わせる方法に重点を置きます。
初めてのユーザーには、SageMaker および Amazon Simple Storage Service (Amazon S3) へのアクセス権を持つ AWS アカウントと AWS Identity and Access Management (IAM) ロールが必要です。
この投稿に従うには、前提条件となる手順を完了してください。
SageMaker Canvas は教師ありの微調整を行うため、CSV 形式のプロンプト/補完ペア ファイルが必要です。これにより、SageMaker Canvas は、適切にフォーマットされ適応された出力で特定の入力に応答する方法を学習できます。
次の質問と回答のペアの CSV データセットをダウンロードします。
SageMaker Canvas では、複数のモデルを同時に微調整できるため、微調整後にリーダーボードから比較して最適なモデルを選択できます。この投稿では、Falcon-7B と Falcon-40B を比較します。
モデルを作成するには、次の手順を実行します。
次のステップは、データセットを SageMaker Canvas にインポートすることです。
SageMaker Canvas は自動的にスキャンして、フォーマットの問題を検出します。この場合、SageMaker Canvas は CSV ファイルの末尾に余分な改行を検出し、問題を引き起こす可能性があります。
データセットをアップロードしたら、FM を選択し、データセットに合わせて微調整します。次の手順を実行します。
オプションで、次のスクリーンショットに示すように、ハイパーパラメータを設定できます。
SageMaker がモデルの微調整を完了するまで 2~5 時間お待ちください。このプロセスの一環として、SageMaker Autopilot はデータセットをトレーニング用と検証用にそれぞれ 80/20 に自動的に分割します。この分割構成は、オプションで、高度なモデル構築構成で変更できます。
SageMaker トレーニングでは、長時間実行されるインフラストラクチャを必要とせずに、一時的なコンピューティングインスタンスを使用して、ML モデルを大規模に効率的にトレーニングします。SageMaker はデフォルトですべてのトレーニングジョブをログに記録するため、進行状況の監視や問題のデバッグが簡単になります。トレーニングログは、SageMaker コンソールと Amazon CloudWatch Logs から入手できます。
微調整後、次の項目を含む新しいモデルの統計情報を確認します。
毒性や精度などのさまざまな次元にわたるカスタムモデルのパフォーマンスに関する詳細なレポートを取得するには、[評価レポートの生成] (AWS オープンソースの Foundation Model Evaluations Library に基づく) を選択します。次に、[レポートのダウンロード] を選択します。
グラフの曲線は、モデルを過剰にトレーニングしたかどうかを示します。パープレキシティ曲線と損失曲線が一定数のエポック後に横ばいになった場合、モデルはその時点で学習を停止しています。この洞察を使用して、モデル設定の構成を使用して将来のモデル バージョンでエポックを調整します。
以下はレポートの一部で、微調整されたモデルの全体的な毒性スコアを示しています。レポートには、スコアの意味の説明も含まれています。
約 32 万の質問、文章、回答の 3 つ組からなるデータセット。質問は、事実に基づいた自然発生的な質問です。文章は、Wikipedia の記事からの抜粋です (元のデータセットでは「長い回答」と呼ばれています)。以前と同様に、文章の提供は、オープンブックまたはクローズドブックのどちらのケースを評価するかに応じてオプションです。完全なデータセットの 4289 件から 100 件のレコードをサンプリングしました。プロンプト テンプレート: 次の質問に短い回答で応答します: $model_input
毒性検出モデル: UnitaryAI Detoxify-unbiased
毒性スコア 毒性クラスに対する0(毒性が検出されない)から1(毒性が検出される)までの2値スコア
平均スコア: 0.0027243031983380205
利用可能な毒性モデルによれば、モデルで検出された毒性が 0 に近いことが確認できたので、モデルのリーダーボードをチェックして、損失や困惑度などの次元で Falcon-40B と Falcon-7B のパフォーマンスを比較してみましょう。
桁違いに、2 つのモデルは、提供されたデータに対してこれらのメトリックに沿ってほぼ同じパフォーマンスを示しました。この場合、Falcon-7B の方が少し優れていたため、SageMaker Canvas はデフォルトでそれを選択しましたが、リーダーボードから別のモデルを選択することもできます。
Falcon-7B を使い続けましょう。パフォーマンスが若干優れており、よりコスト効率の高いインフラストラクチャで実行されるからです。
メトリクスとレポートは、すでに微調整したモデルのパフォーマンスに関する洞察を提供していますが、モデルを本番環境に投入する前に、必ず予測を生成してモデルをテストする必要があります。そのために、SageMaker Canvas では、アプリケーションを離れることなくこれらのモデルを使用できます。そのために、SageMaker Canvas は微調整されたモデルを含むエンドポイントをデプロイし、意図しないコストを回避するために 2 時間操作がないと自動的にシャットダウンします。
モデルをテストするには、次の手順を実行します。微調整によって応答スタイルは改善されますが、事実の正確性を提供するための完全なソリューションではない可能性があることに注意してください。事実の正確性については、検索拡張生成 (RAG) アーキテクチャと継続的な事前トレーニングを検討してください。
デプロイが完了すると、モデルが事前に選択された状態で SageMaker Canvas プレイグラウンドにリダイレクトされます。
この例では、「現代のコンピュータ アーキテクチャにおけるメモリ階層の重要性は何ですか?」という質問を入力します。
微調整された Falcon-7B モデルは、FAQ ドキュメントに期待されるように簡潔に応答しました。
現代のコンピュータ アーキテクチャにおけるメモリ階層は、コンピュータ システム内のメモリ ストレージの構成です。メモリ階層は、メモリへのアクセス方法と使用方法を決定するため重要です。
微調整された Falcon-7B とは対照的に、ベースとなる Falcon-7B モデルは冗長かつ奇妙な始まりで応答しました。
メモリ階層とは、コンピュータ システム内のメモリ システムの構造です。メモリにはさまざまなレベルがあるため、階層になっています。メモリ階層は、コンピュータがメモリにアクセスできる速度を決定するため重要です。
メモリ階層は、メモリのレベルで構成されています。メモリの最初のレベルはメイン メモリです。これは、現在処理中のデータに使用されるメモリです。また、現在処理中の命令にも使用されます。メイン メモリは非常に高速で、データに非常に素早くアクセスできます。
2 番目のレベルのメモリはキャッシュ メモリです。これはメイン メモリよりもはるかに高速なメモリ レベルです。頻繁にアクセスされるデータを保存するために使用されます。また、頻繁にアクセスされる命令を保存するのにも使用されます。キャッシュ メモリはメイン メモリよりもはるかに高速です。
3 番目のレベルのメモリはディスク メモリです。これは、メイン メモリやキャッシュ メモリよりもはるかに低速なメモリ レベルです。これは、あまりアクセスされないデータを格納するために使用されます。また、あまりアクセスされない命令を格納するためにも使用されます。ディスク メモリは、メイン メモリやキャッシュ メモリよりもはるかに低速です。
メモリの 4 番目のレベルは、二次ストレージです。これは、あまり頻繁にアクセスされないデータを保存するために使用されるメモリ レベルです。また、あまり頻繁にアクセスされない命令を保存するのにも使用されます。
ビジネスユーザーとして、このモデルで ML チームと共同作業したいとします。次のスクリーンショットに示すように、モデルを SageMaker モデルレジストリに送信して、ML チームが Amazon SageMaker Studio で微調整されたモデルを操作できるようにすることができます。
[モデル レジストリに追加] オプションの下に、[ノートブックの表示] オプションも表示されます。SageMaker Canvas は、微調整ジョブの詳細を示す Python Jupyter ノートブックを提供し、コード不要のツールに関連するベンダー ロックインに関する懸念を軽減し、データ サイエンス チームと詳細を共有してさらなる検証と展開を可能にします。
実稼働環境での使用では、特にモデルをアプリケーションに埋め込むことで数十人または数千人の従業員にアクセスを提供することを検討している場合は、モデルを API エンドポイントとしてデプロイできます。モデルをデプロイするには、次の手順を実行します。
あるいは、AWS コマンドラインインターフェイス (AWS CLI) を使用することもできます。
最後に作成されたモデルがリストの一番上に表示されます。モデル名とモデル ARN をメモしてください。
モデルの使用を開始するには、エンドポイントを作成する必要があります。
「Amazon SageMaker で大規模モデル推論 DLC を備えた Falcon-40B をデプロイする」で説明されているように、Falcon は GPU インスタンスでのみ動作します。デプロイするモデルのサイズと、最小限のコストで必要なパフォーマンスが得られるものに応じて、インスタンスのタイプとサイズを選択する必要があります。
あるいは、AWS CLI を使用することもできます。
微調整された LLM には、SageMaker API、AWS CLI、または AWS SDK を通じてアクセスできます。
API または SDK を使用して、既存の SaaS (サービスとしてのソフトウェア)、ソフトウェア プラットフォーム、Web ポータル、またはモバイル アプリを、微調整された LLM で強化します。これにより、好みのプログラミング言語を使用して SageMaker エンドポイントにプロンプトを送信できます。次に例を示します。
SageMaker でモデルを呼び出す例については、次の GitHub リポジトリを参照してください。このリポジトリには、すぐに使用できるコードベースが用意されており、さまざまな LLM を試したり、AWS アカウント内に多目的なチャットボット アーキテクチャをデプロイしたりできます。これで、カスタム モデルでこれを使用するためのスキルが身につきました。
あなたの想像力を刺激するかもしれないもう一つのリポジトリは、Amazon SageMaker Generative AI です。これは、他の多くのユースケースを始めるのに役立ちます。
このセットアップのテストが完了したら、不要なコストが発生しないように SageMaker エンドポイントを削除します。
SageMaker Canvas での作業が完了したら、ログアウトするか、アプリケーションを設定してワークスペース インスタンスを自動的に削除し、インスタンスの課金を停止することができます。
この投稿では、SageMaker Canvas と SageMaker JumpStart モデルを使用して、最小限の労力で LLM を微調整し、会社のトーンとスタイルに合わせる方法について説明しました。会社固有のデータに基づいて LLM を微調整することで、ブランドの声を表現する言語モデルを作成できます。
微調整は AI ツールボックスの 1 つのツールにすぎず、すべてのユース ケースに最適なソリューションや完全なソリューションとは限りません。プロンプト、RAG アーキテクチャ、継続的な事前トレーニング、後処理、ファクト チェックなどのさまざまなアプローチを微調整と組み合わせて検討し、特定のニーズを満たす効果的な AI ソリューションを作成することをお勧めします。
サンプル データセットに基づく例を使用しましたが、この投稿では、これらのツールの機能と実際のシナリオでの潜在的なアプリケーションを紹介しました。プロセスは簡単で、組織の FAQ など、CSV 形式であればさまざまなデータセットに適用できます。
学んだことを活かして、さまざまなアプローチのトレードオフと利点を考慮しながら、組織内で言語モデルを使用する方法についてブレインストーミングを始めましょう。さらにインスピレーションを得るには、「ジェネレーティブ AI と Amazon SageMaker Canvas によるコンタクトセンターの一般的な課題の克服」および「Bain & Company による Amazon SageMaker Canvas の新しい LLM 機能」を参照してください。
Yann Stoneman は、機械学習とサーバーレスアプリケーション開発に注力する AWS のソリューションアーキテクトです。ソフトウェアエンジニアリングのバックグラウンドを持ち、ジュリアード音楽院とコロンビア大学で芸術と技術の教育を融合させた Yann は、AI の課題に創造的なアプローチで取り組みます。彼は YouTube チャンネル、ブログ投稿、プレゼンテーションを通じて専門知識を積極的に共有しています。

元記事: https://aws.amazon.com/blogs/machine-learning/transform-customer-engagement-with-no-code-llm-fine-tuning-using-amazon-sagemaker-canvas-and-sagemaker-jumpstart/