LLM評価を簡単に設定する方法(チュートリアル)

AIベンチマーク
この記事は約15分で読めます。

この動画は、Amazon Bedrockを使用してLLM(大規模言語モデル)の評価システムを簡単に構築する方法を詳細に解説したチュートリアルである。特にRAG(Retrieval-Augmented Generation)評価に焦点を当て、ホテルの規約文書を例として、チャットボットの精度を測定するための完全なワークフローを実演している。測定できないものは改善できないという基本原則のもと、AWS S3バケットの設定からナレッジベースの構築、評価メトリクスの選択、結果の分析まで、本格的な AI システム評価に必要な全工程を網羅的に説明している。

はじめに:評価の重要性

測定できないものは改善することはできません。今日は、モデル評価、特にRAG評価の実行方法をお見せします。

例えば、あなたがビジネスを運営していて、顧客とコミュニケーションを取るチャットボットを持っている場合、そのチャットボットが顧客に提供する情報が正確であることを確認したいはずです。もしそうでなければ大きな問題を引き起こす可能性があります。

また、AIスタックを改良していく際に、正しい方向に向かっていることを確認したいでしょう。実際に改善していることを確認したいのです。そして再び、これらのベンチマークを設置し、改良を重ねる際にメトリクスでの改善を実際に確認できることが重要です。

これらすべてを、Amazon Bedrockで段階的にお見せします。Amazon Bedrockは、Amazonのものだけでなく、Meta、Anthropic、その他からの市場最高のモデルから選択できる完全管理型サービスです。

本格的なAI実装を構築する際に特に有用な、非常に便利な機能がたくさん付属しています。エージェント、安全性のためのガードレール、プロンプトルーティング、RAGナレッジベース、プロンプト管理など、さらに多くの機能があります。

ユースケース:ホテル規約チャットボット

Amazonがこの動画でパートナーシップを組んでおり、高度なモデルおよびRAG評価を行う方法について段階的なチュートリアルをお見せしたいということでした。

今日行うユースケースについてお話しします。私たちはホテルのオーナーで、このホテル規約文書を持っています。ホテルへの潜在的な訪問者であるユーザーが質問をしたり、詳しく学んだりできるチャットボットを作成するつもりです。

これは非常に複雑な物件文書で、法的な内容、利用規約、様々な規約など、26ページにわたるものです。つまり、非常に複雑です。

私たちがやりたいことは、この情報をすべてチャットボットに渡して、それに関するユーザーの質問に答えてもらうことです。そのためにまず最初に必要なことは、このナレッジベースをモデルの一つに渡せるようにすることです。

AWS環境のセットアップ

もしまだAWSアカウントをお持ちでなければ、サインアップしてください。とても簡単です。

AWSに初めてサインアップすると、ルートユーザーとしてサインインしますが、これらの評価を完全に実行するためにIAMユーザーと呼ばれるものを作成する必要があります。

ちなみに、すでにAWSが設定済みで、すべてのユーザーが設定済みの場合は、これを完全にスキップできます。

検索バーでIAMと入力し、そこをクリックします。それを行ったら、左側に移動してユーザーをクリックします。私はすでにMattという名前のものを作成しましたが、そのプロセスを見ていただけるよう、2つ目を作成します。

オレンジ色のボタン「ユーザーを作成」をクリックします。ユーザー名はAlexとしましょう。そして次へをクリックします。

「ユーザーをグループに追加」を選択したままにします。より高度な設定をしたい場合は、権限をコピーしたり、ポリシーを直接アタッチしたりもできますが、今はシンプルに保ちましょう。次に「次へ」をクリックしてユーザーを作成します。

新しいユーザーができました。設定が完了するまで少し時間がかかります。

完了したら、新しいユーザーをクリックして、新しいグループを追加する必要があります。「ユーザーをグループに追加」をクリックし、私には管理者グループがありますが、何もない場合は「グループを追加」をクリックして、管理者アクセスまたはお望みのグループポリシーを選択し、ユーザーグループを作成します。管理者を選択し、ユーザーをグループに追加します。

次に行うことは、「セキュリティ認証情報」をクリックして、コンソールアクセスを有効にすることです。カスタムパスワードまたは自動生成パスワードを設定でき、有効にするをクリックします。

パスワードはここにあり、コピーするだけです。コンソールサインインURLがあり、完了したらこのURLに移動し、ユーザー名とパスワードを入力して、そのユーザーとしてログインします。

S3バケットの設定

全体のプロセスには3つの主要コンポーネントが必要です。

コンテキストが必要で、私たちの場合は前述したようにホテルで、利用規約について話しているので、その文書と保存場所が必要です。

また、プロンプトが必要です。テストセット、実際にテストするためのベンチマークが必要です。プロンプトは質問と回答例で、グラウンドトゥルースとも呼ばれ、異なるモデルに対してテストするものです。

最後に、評価が完了した後に評価を保存する場所が必要です。評価をどこかに置き、読めるようにしたいのです。

今からS3でこれら3つすべてをセットアップします。お見せしましょう。

まず最初に必要なことは、そのホテル規約文書を取得してS3バケットにアップロードすることです。それにより、他のサービスで使用できるようになります。

上の検索でS3を検索し、そこのS3をクリックします。

私にはすでにいくつかありますが、何をしたかお見せしましょう。別のものを作成します。「バケットを作成」をクリックします。汎用バケットで、hotel policyと名前を付けます。オブジェクトの所有権は同じままにし、デフォルト設定を維持し、これらの設定をすべて同じままにして、一番下で「バケットを作成」をクリックします。

新しく作成されたバケットをクリックして、そのホテル規約文書を単純にドラッグオーバーすると、この小さなアップロードフォームが表示され、アップロードをクリックします。非常に小さな文書なので、とても迅速です。

まだ完了していません。バケットはデフォルトで閉じられており、他のサービスや確実にパブリックウェブには公開されていませんが、もちろんこれらの設定を変更できます。お見せしましょう。

ここで完了したら、「閉じる」をクリックして権限に移動します。このバケットの権限タブから、クロスオリジンリソース共有(CORS)という部分まで下にスクロールし、編集をクリックしてこれを貼り付けます。

これはありませんが、説明欄にgistをドロップしますので、これをコピーペーストするだけです。私たちがやっているのは、他のサービスに公開することを許可することです。設定したら、「変更を保存」をクリックします。

バケットが公開されたので、作成する他のバケットにもこれを行う必要があります。

ホテル規約を作成したので、すべてのプロンプトを保持するバケットを作成しましょう。「バケットを作成」を再度クリックし、hotel promptsとします。すでにその名前のものがあると思うので、YTと名前を付けます。一番下までスクロールして「バケットを作成」をクリックします。

最後に、評価を保存する場所が必要です。そのバケットを作成しましょう。「バケットを作成」をクリックし、eval storeとします。すでに一つあるので、eval store YTと呼びます。一番下までスクロールして「バケットを作成」をクリックします。

先ほどと同様に、これら他の2つのバケットにもCORSを設定する必要があります。hotel prompts YTに移動し、権限、一番下までスクロール、編集、同じ設定を貼り付けて、変更を保存します。

バケットに戻り、もう一度eval store YTに移動し、権限、前と同様に編集をクリック、そこに貼り付けて、変更を保存します。

eval store YTバケットを作成したら、それをクリックして、フォルダを作成する必要があります。これは評価が保存されるフォルダです。「フォルダを作成」をクリックし、eval-storeと名前を付けることができます。ただし、お好みで何でも名前を付けられます。「フォルダを作成」をクリックします。

プロンプトとグラウンドトゥルースの準備

実際のプロンプトをお見せしましょう。これらはモデルに対してテストするプロンプトであり、正しい答えの例も含まれています。グラウンドトゥルースとも呼ばれます。

フォーマットはこちらです。説明欄にドロップしますので、必要に応じてフォーマットできます。

例をいくつか示します。「明日の夜遅く、午後11時頃に到着予定です。チェックインプロセスはどのようになっていますか?デスクに手伝ってくれる人がまだいるでしょうか?」

これらは、ホテルチャットボットが潜在的な訪問者から受ける可能性のある非常に一般的な質問です。

参照回答の下には「はい、フロントデスクは到着時間に関係なく、チェックインを支援するため24時間スタッフが配置されています」とあります。これらすべては、お見せした利用規約文書から引用されています。

S3バケットに戻り、hotel prompts YTをクリックし、JSONL形式のその文書を単純にドロップして、アップロードをクリックすれば完了です。

これで3つの新しいバケットができました。1つにはプロンプト、1つにはナレッジソース、もう1つは評価を受け取るために待機しています。

ナレッジベースの作成

楽しい部分に入りましょう。実際のナレッジベースを作成しましょう。

「ベクターストアでナレッジベースを作成」をクリックします。すべてデフォルトのままにしておけます。「次へ」をクリックします。

S3ソースと表示されている部分で、「S3を参照」をクリックし、作成したばかりのバケットを探します。hotel policyをクリックし、ホテル規約文書があるので、ここをクリックして選択し、選択をクリックします。

他のすべてはそのままでかまいませんが、必要に応じてチャンキング戦略などの設定を行うことができます。「次へ」をクリックします。

埋め込みモデルを選択します。「モデルを選択」をクリックし、Amazon独自のTitan text embeddings v2を使用します。オンデマンドでそれをクリックし、適用します。他のすべてはそのままで、「次へ」をクリックし、レビューし、一番下までスクロールして「ナレッジベースを作成」をクリックします。

これには少し時間がかかる場合があります。この時点で起こっているのは、生のPDF、私たちがモデルに読み取ってほしいナレッジやコンテキストを取得して、ベクターストアに変換していることです。その後、大規模言語モデルを使用してより簡単にクエリできるようになります。

ナレッジベースの準備ができました。

ナレッジベースの同期と評価作成

非常に重要なことをお話しします。ナレッジベースが作成されたら、同期する必要があります。そうしないと評価が機能しません。必ず同期してください。

同期により、ベクター形式で準備され、モデルがクエリできるように準備されます。それをクリックして、データソースをハイライトし、「同期」をクリックします。

必要に応じて、同期が完了したら、この「ナレッジベースをテスト」ボタンをクリックして、ここから直接ナレッジベースに質問することができます。

評価を作成する準備ができました。検索バーで評価と入力し始め、機能の下にあるAmazon Bedrock機能評価をクリックします。

RAG評価をテストしているので、ここでRAGタブを選択したいと思います。モデルに対してもテストできますが、この外部コンテキストがあるので、それに対してテストしたいのです。RAGをクリックし、ここから「作成」をクリックします。

RAG評価を選択したら、名前を付けて、説明を付けることができます。デフォルトの名前のままにして、説明はありませんが、特にこれをスケールアップして多くの評価を行う場合は、説明を書くべきでしょう。検索やフィルタリングが簡単になります。

評価者モデルで「選択」をクリックし、Sonnet 3.7v1を評価者モデルとして選択します。

選択するモデルが大きければ大きいほど、遅くなることを覚えておいてください。これらの評価にはより長い時間がかかります。与える各プロンプトは、実行している各メトリクスに対して一度実行する必要があるので、3.7 sonnetと3 haikuのように、一方が他方よりもはるかに高速になることを覚えておいてください。「適用」をクリックしてスクロールダウンします。

2つのオプションがあります。Bedrockナレッジベースを使用するか、独自の推論応答を持参するかです。Bedrockモデルとbedrockナレッジの使用をお見せしますが、独自のものを持参することもできます。AWSで利用できないモデルを使用してプラグインしたり、AWSで利用できない外部データソースを使用してそのままプラグインしたりできます。すでに慣れ親しんでいるAIの使用を簡単にします。

ナレッジベースを選択しましょう。ドロップダウンをクリックし、そこにあるはずの唯一のものを選択します。2つあるのは、これを確実に理解してからお見せするために、数回実行したためです。

取得と応答生成に対してテストしたいと思います。デフォルトの選択は取得のみで、利用規約文書から正しいデータを引き出す能力のみをテストしますが、それだけでなく、そのコンテキスト、そのナレッジを取得して、ユーザーに答えを提供するモデルの能力もテストしたいのです。そこをクリックします。

したがって、モデルを選択する必要があります。「モデルを選択」をクリックすると、Amazon、Anthropic、Metaなどの主要なAIモデルプロバイダーのリストがあります。ニーズに基づいて好みのものを選択できます。今日はNova Premiere 1.0を使用します。これはAmazonの真新しい100万トークンコンテキストモデルです。それを選択して適用します。

評価メトリクスの選択

ここからが楽しくなります。ベンチマークするメトリクスを選択できます。

有用性、正確性、忠実性、プロフェッショナルスタイル、一貫性、完全性、関連性があります。責任あるAIメトリクスとして、有害性、拒否、ステレオタイピングがあり、これらのいずれか、またはそれらの組み合わせを選択できます。

非常にクールな部分がここにあり、今日は軽く触れるだけで、詳しくは掘り下げませんが、実際にカスタムメトリクスを持つことができます。独自のメトリクスを定義できます。

「カスタムメトリクスを追加」をクリックすると、テストしたい内容を記述できます。例えば、モデルに常に海賊のように話してもらい、「アール」などと言ってもらいたい場合、それを実際にベンチマークのメトリクスとして記述できるので、海賊らしさメトリクスを持ち、実際にモデルが海賊のように話す能力に関連するスコアを持つことができます。

しかし、カスタムメトリクスについては今日はこれだけです。より高度なビデオでそれを詳しく説明するかもしれません。

データセットと結果保存の設定

データセットと評価完了後の評価保存場所を選択する必要があります。そのために先ほどバケットを設定しました。

評価用データセットで「S3を参照」をクリックします。データセットはプロンプトなので、hotel prompts YTを選択し、そのJSONLファイルを選択して、選択をクリックします。

評価結果の保存先で「S3を参照」をクリックし、eval store YTに移動し、そのeval storeフォルダを選択して、選択をクリックします。

一番下の権限で、既存の権限がある場合はお好みのものを選択できますが、「新しいサービスロールを作成して使用」をクリックして、作成をクリックします。

完了すると、評価ジョブの作成を開始します。ステータスは進行中と表示されています。時には数分かかることもありますが、最大1時間かかることもあるので、待つつもりはありません。すでにこれを行っているので、結果をお見せしましょう。

評価結果の分析

評価が完了したので、それをクリックしてすべてのデータを取得します。

正確性と有用性という2つのメトリクスを実行しました。まず有用性を見てみましょう。有用性スコアによる分布があり、2つが67から77の平均スコア範囲に落ち、残りは77から83の間に落ちました。非常に良好です。

スクロールダウンすると、正確性もあります。5つの例が0.5から0.6の範囲に落ち、26の例が0.9から1の範囲に落ちています。1が完璧です。

そこから、この小さな展開ボタンをクリックすると、評価結果の詳細をすべて実際に見ることができます。

質問は「明日の夜遅く、午後11時頃に到着予定です。チェックインプロセスはどのようになっていますか?デスクに手伝ってくれる人がまだいるでしょうか?」

生成出力は「チェックインは必須で、ホテルのレセプションデスクで完了する必要があります」となっています。これは選択した推論モデルによって完了された生成です。

また、参照も提供されるので、参照をクリックすると、ホテル規約文書からこの回答を生成するために使用された特定の言語を実際に見ることができます。とてもクールです。

ここにグラウンドトゥルースがあります。これは潜在的な正しい答えとして与えたもので、83のスコアです。83をクリックすると、なぜこのスコアになったかの説明が表示されます。

「候補回答は賢明で、一貫性があり、明確で、必要な文書と情報を含むチェックインプロセスの詳細な説明を提供します。また、ホテルに直接確認を勧めることで、深夜チェックインに関するユーザーの懸念にも対処しています」

モデル比較と今後の活用

これですべてです。コンテキストでモデルを完全にテストし、ベンチマークができました。変更を加え、再度ベンチマークして、改善しているかどうかを確認できます。

同じ設定をすべて使用して、異なる推論モデルに対してテストし、どの推論モデルがナレッジベースに最適かを確認することもできます。異なるモデルを互いにテストできます。ここでテストすることがたくさんあるので、本当に強力なツールです。

評価は一般的に、AIをスケールに持っていく場合に重要です。複数の評価が完了したら、評価しているモデル間で非常にクールな比較を行うことができます。

これを確認してください。これらの評価のうち2つを選択し、ここの比較ボタンをクリックします。これら2つの評価で、Nova ProとNova Premiereをテストしており、Nova Proが正確性スコアでわずかに高いスコアを記録したことがわかります。0.92対0.94です。

有用性スコアにカーソルを置くと、Nova Premiereがわずかに高いスコアを記録しました。0.82対0.81です。

ここでさらに詳しい比較詳細を見ることができます。正確性についてはNova Proで、分布を見ることができます。ここはNova Premiereで、分布があります。Nova Proでは1.7%の改善がありました。

有用性については、Nova Proで1.3%のパフォーマンス低下を見ることができます。

以上が今日のすべてです。この動画でパートナーシップを組んでくれたAmazonに感謝したいと思います。このような重要で、本格的な使用例に使用されるためによく見落とされがちな主題について、詳細なチュートリアルを行うことができて非常に興奮しました。

これらすべてにアクセスする方法を含む、必要なリンクをすべて説明欄にドロップします。使用したサンプルデータ、コア設定、すべてを説明欄に記載します。

コメントをドロップして、このチュートリアルを楽しんでいただけたかどうかお知らせください。いいねと購読を検討していただき、次回またお会いしましょう。

コメント

タイトルとURLをコピーしました