はじめに
こんにちは、朝日新聞社メディア研究開発センターの杉野です。
新機能や使用可能なLLMモデルが次々と更新され、目が離せないAmazon Bedrockですが、今回は、先日公開された新機能「モデル評価」について書いてみたいと思います。3種類の評価方法があり、中でも「人間ベースの評価」が気になったので、一体どんなものか試してみました。
人間ベースの評価とは
Amazon Bedrockメニューの「評価と導入」の中の「モデル評価」ページに進むと、「自動評価」「人間ベースの評価」「AWSマネージド評価」の3種類の評価方法が提示されます。そのうちの真ん中の機能です。
「人間ベースの評価」は、以下の作業を一気通貫で簡単に行える機能です。
- Bedrockが提供する基盤モデルを使ったLLMタスクについて、評価メトリクスを設定
- 任意の作業チームに評価を依頼(作業ポータルへの案内がメール送信される)
- 用意されたUIで評価作業
- レポート作成
また「自動評価」は、推奨される3つのメトリクス、精度(Acuracy)、頑健性(Robustness)、毒性 (Toxicity)について自動評価が行えます。
「AWSマネージド評価」はAWSチームに直接評価作業を委託できるもので、用意されたフォームから要望を伝えてサポートが始まるようです。
「自動評価」についてはすでにこちらの記事で詳しく紹介されています。
想定用途
人間ベースの評価については、例えば下記のような用途に役立つのではと思います。
- 自動評価にあるメトリクスでは評価できない観点や独自タスクの評価
- プロンプトのブラッシュアップ
- 固定のプロンプトで複数の基盤モデルの性能比較
- ゆくゆくは自前モデルの評価も可能?(個人的期待。2024.5.9時点では未対応です)
料金とリージョン
人間ベースの評価は、AWSニュースブログによれば、推論の料金と完了タスクごとに0.21ドルがかかるとのことです。
価格– モデルの評価中に実行される推論に対して料金を支払います。アルゴリズムによって生成されたスコアには追加料金はかかりません。独自のチームで人間ベースの評価を使用する場合は、推論の料金と、完了したタスクごとに 0.21 ドルを支払います。つまり、人間の作業者が人間の評価ユーザー インターフェイスで 1 つのプロンプトとそれに関連する推論応答の評価を送信します。 AWS 管理の作業チームによって実行される評価の価格は、評価に重要なデータセット、タスク タイプ、メトリクスに基づいています。詳細については、Amazon Bedrock の料金ページを参照してください。
リージョン– モデルの評価は、米国東部 (バージニア北部) と米国西部 (オレゴン) の AWS リージョンで利用できます。
タスク設定
今回はお試し用として「くだけた文を、LLMを使って丁寧でフォーマルな文に書き換える」というタスク設定でこの機能の挙動を一通り見てみたいと思います。
このサンプル文さ、もっと丁寧なやつにしたいんだよね。
このサンプル文を、より丁寧なものにしたいと思います。
下記の簡単なプロンプトで試してみます。モデルはAnthropicのClaudeを使用してみます。公式ドキュメントによるとClaudeはXMLタグを使ったプロンプトがおすすめとのことなので、入出力は<input></input>
のようなタグで囲んだ形式で指示しています。
"<input></input>に囲まれたくだけた文章を、より丁寧さのあるフォーマルな文章に書き換えてください。\n<input> このサンプル文さ、もっと丁寧なやつにしたいんだよね。</input>"
人間ベースの評価を作成
では早速、評価の設計をしていきたいと思います。
ボタンを押して作成に進む
ジョブ詳細を記入
モデルを選択
モデルアクセスが付与されている基盤モデルから、比較したいモデルを2つまで選択できます。Temperatureやtop_p等、ハイパーパラメータの設定も可能です。
本当はClaude3のSonnetやHaikuなどを評価したかったのですが、現時点(2024.5.9)ではClaude2.1まで対応のようです。最新モデルへの対応が待たれるところです。
タスクタイプを選択し、評価メトリクスを設定
今回のタスクは選択肢にある規定タスクタイプのどれにも当てはまらないので、カスタムを選択しました。すると評価メトリクスの定義項目が表示されますので、適宜指定していきます。Rating method
としては以下の2つの選択肢があります。
Thumbs up/down
→ いいね👍 とよくない👎の2択
Likert scale - Individual
→ リッカート尺度、5段階評価
いずれかのUIを選び、後ほど出てくる「指示の入力」画面で判定基準に関する指示を定義すると、それらがUI上に表示され、独自のメトリクスで評価ができるということのようです。
プロンプトデータセット、評価結果出力先を指定
プロンプトデータセットをS3にアップロードしておき、指定します。S3バケットは、CORSの設定も必要です。設定がない場合はエラーメッセージに従って設定します。
プロンプトデータセットとは
プロンプトデータセットのフォーマットは以下のページに定義されているので、それに従ってjsonlファイルで作成しました。
"prompt"
は必須キーで、"referenceResponse"
はオプションです。評価用UIにリファレンスとして表示できるので、書き換え後の正解テキストをセットし、評価時に参照できるようにしました。
{
"prompt": "<input></input>に囲まれたくだけた文章を、より丁寧さのあるフォーマルな文章に書き換えてください。結果は<output></output>で囲んで返してください。\n<input> このサンプル文さ、もっと丁寧なやつにしたいんだよね。</input>",
"referenceResponse": "このサンプル文を、より丁寧なものにしたいと思います。"
}
Amazon Bedrock IAMロールを作成
S3への入出力や選択したモデルへのアクセス等をAmazon Bedrockに許可するロールを作成します。一番下の「ロールを作成」ボタンを押します。
既存のロールを使用したい場合は、以下のページでモデル評価ジョブのための要件を満たしているか確認すると良さそうです。
作業チームを設定
必要事項を記入していきます。メールアドレスの欄には最大40名までアドレスを入力できるようで、大人数に評価作業を割り当てることもできそうです。ただし、1タスク(=1データセット?)を評価できるワーカーは最大3名までのようです。
ヒューマンワークフロー IAMロールを作成
先ほどのAmazon Bedrock用に加えて、人間のワークフロー用のIAMロールも必要となります。ここが自動評価とは異なる点です。要件を満たした既存ロールが特になければ、一番下の「ロールを作成」を押して新しいロールを作成します。
指示を入力
評価するワーカーへのタスク指示をマークダウン記法で記入します(下記は最初から入力されているサンプル文です)。ここにタスクや評価基準等の詳細を記入し、右上のボタンで評価UIをプレビューできます。
左側はタスクや判定基準の指示、右側はプロンプトとそれに対するレスポンス、そしてリファレンス(プロンプトデータセットに"referenceResponse"
キーでセットしたもの)が表示され、その下には今回選択したLikert scale - Individual
の5段階評価のラジオボタンがあります。
ちなみに先ほどS3で私が設定したプロンプトデータは日本語なのですが、プレビューにはそれは表示されず、もともと用意されている英文サンプルが表示されるようです。
最終確認
設定したモデル評価ジョブの内容を確認し、「作成」を押してワーカーに評価を依頼します。
画面は最初に戻り、モデル評価ジョブの一覧にここまで設定してきた評価ジョブが追記されます。
ワーカーをポータルサイトへ招待する
登録したワーカーのメールアドレスに招待が届きます。ワーカーポータルサイトにログインすると、以下のように依頼された評価ジョブがリストされています(モデル評価ジョブが一覧に追記されてから、ワーカーポータルサイトにそのジョブが表示されるようになるまで、少し時間がかかるようです)。ワーカーは取り組むジョブを選択し、右の「Start Working」を押して評価を開始します。
モデル評価レポート
完了された評価ジョブは、先ほどのモデル評価ジョブ一覧で完了済みステータスとなり、しばらくすると評価ジョブ名がリンクに変わってレポートページに進めます。
ワーカーがつけた評価数が集計されています(サンプルなので3件ですが、実際はもっと多くのデータで評価を行うかと思います)。
おわりに
ちょうど、Amazon BedrockのClaude3を使ったタスクで、モデルをSonnetにするかHaikuにするか、コストと性能のバランスなどを検証していたところでしたので、このBedrock上で完結できる評価機能にとても興味を持ちました。自前の検証では、LLMの推論結果からデータセットを作り、別のアノテーションツールで評価用画面を準備し、作業者にアナウンスして、結果をまとめて...と結構手間がかかっていたので、推論〜作業者への評価依頼〜分析、レポート作成までが一気にやれるのは便利!だと思いました。肝心の、評価したいモデルへの対応がまだというところが残念ですが、おそらく今の勢いなら少し待てば対応されるのではと思っています。
また、自前モデルの評価が可能になれば(Imported modelsの料金体系がどんな感じか気になりますが)さらに便利では、と期待が高まっています。