LLMを活用したデータアノテーションシリーズのブログの第2部です。シリーズの第1部では、LLMをアノテーションエージェントとして活用する方法と、それに伴う課題や可能性について探りました。本記事では、人間の専門知識とLLMの能力を統合し、LLMアノテーションの課題に対処するための人間-LLM協調型アノテーションツールであるMEGAnno+を紹介します。
MEGAnno+とは?
人間-LLM協調型アノテーションワークフロー
MEGAnno+では、シンプルな人間-LLM協調型アノテーションワークフローを提供しています。それは、LLMによるアノテーションとその後の人間による検証です。簡単に言えば、まずLLMエージェントがデータにラベルを付け(図1、ステップ①)、必要に応じて人間がLLMのラベルを検証します。ほとんどのタスクやデータセットでは、LLMが付けたラベルをそのまま使用できますが、一部の困難または不確実なインスタンスについては(図1、ステップ②)、人間がLLMラベルを検証し、正しいものを確認し、誤りを修正します(図1、ステップ③)。この方法により、LLMによるアノテーション部分は自動化され、人間の労力を最も必要な部分に集中させて、最終的なラベルの質を向上させることができます。
図1: 人間-LLM協調型ワークフロー
次に問題となるのは、どのインスタンスを検証するべきかをどう選ぶか(図1、ステップ②)です。このためには、例えば多様性を優先するか、不確実性を最小化するかといった異なる戦略があります。たとえば、LLMの不確実性を測定するために、研究者はしばしばロジット値をモデルの信頼度の近似的な指標として使用します。または、LLMに再度自己検証や自己一貫性の手法を適用して、自分自身を検証させる方法もあります。もう1つの方法は、ユーザーが専門知識を活用して特定のデータスライスをクエリすることです(例: 特定のラベルが割り当てられたデータインスタンスや、特定のキーワードを含むインスタンスを選択)。
設計上の考慮点
LLMアノテーションワークフローで遭遇する可能性のあるさまざまな課題や不便さについて振り返りましょう(これらの一部については前回のブログで議論しました)。まず、プロンプト設計のガイダンスがない場合、試行錯誤によって最終的にタスクに適したプロンプトを見つけることになります。それでもなお、アノテーションされたラベルが事前定義されたラベルの範囲内に収まっていることを確認するために追加の検証が必要です。次に、選択したLLMモデルへのAPI呼び出しがタイムアウトやレート制限違反といったエラーを引き起こし、手動でのエラーハンドリングが必要になる場合があります。また、LLMのアノテーションを検証せずに下流のモデルをトレーニングする自信が持てないこともあるでしょう。しかし、検証対象のアノテーション候補を見直すための支援がなければ、すべてのアノテーションを確認する必要があり、多くの時間がかかります。最後に、将来の再利用のために、良好な動作を示したモデル設定を保存したいと考えるかもしれません。
このワークフローの例から、人間-LLM協調アノテーションシステムの以下の設計要件をまとめました。
- LLMアノテーションに求められる要件
- [便利さ] 前処理、API呼び出し、後処理を含むアノテーションワークフローを自動化すること。
- [カスタマイズ性] モデル設定やプロンプトテンプレートの柔軟な変更をサポートすること。
- [堅牢性] 手動または最小限の操作でエラーを解決できること。
- [再利用性] 使用したLLMエージェント(モデルとプロンプトテンプレート)を保存して再利用できること。
- [メタデータ] アノテーションメタデータとしてLLMの成果物を記録・保存すること。
- 人間による検証に求められる要件
- [選択性] 検索クエリや推奨に基づいて検証候補を選択すること。
- [探索性] ラベルや利用可能なメタデータでフィルタリング、並べ替え、プログラムまたはUI内で検索できること。
これらの要件を満たすために、私たちはJupyterノートブック環境内の探索型アノテーションツールMEGAnnoを拡張する形で本システムを実装しました。MEGAnnoは、選択的かつ探索的な検証を可能にする柔軟な検索および推奨機能を備えており、LLMアノテーションで生成されたデータ、ラベル、補助メタデータを保存する包括的なバックエンドを備えています。
次のセクションでは、MEGAnno+の機能について詳しく紹介します。
MEGAnno+のシステム
システム概要
MEGAnno+は、(1)インタラクティブなウィジェットを備えたPythonクライアントライブラリ、(2)Web APIおよびデータベースサーバーから構成されるバックエンドサービスを提供します。図2に示されているように、ユーザーはMEGAnno+クライアントがインストールされたJupyterノートブックを通じて操作できます。プログラムインターフェースやUIウィジェットを通じて、MEGAnno+クライアントはMEGAnno+サービスと連携します。
ノートブックセッション内では、LLMアノテーションを簡単に取得し、取得したラベルを選択的に検証することができます(図2)。このノートブック内ワークフローは、既存のモデルトレーニングおよびデバッグ環境にシームレスに統合することができます。
LLMアノテーションエージェントは、エージェントと呼び、人間のアノテーターと区別しています。LLMエージェントの判断は、LLMモデル、パラメータ、および使用するプロンプトによって異なります。そのため、モデル構成(例: モデル名、バージョン、ハイパーパラメータ)とプロンプトテンプレートを使用してエージェントを定義します。一度エージェントが登録されると、そのエージェントを使用して特定のデータサブセットにアノテーションジョブを実行できます。
人間による検証では、ユーザーはまずLLMアノテーションジョブからラベルのサブセットを選択(図1、ステップ②)し、それらをUIウィジェットで探索し、LLMラベルを確認または更新します(図1、ステップ③)。
では、LLMアノテーション → 人間による検証ワークフローをステップごとに見ていきましょう。
図2: MEGAnno+システムの概要*
LLMアノテーション
前回の記事で取り上げた一般的な問題に注目しながら、アノテーションワークフローの例を見てみましょう。また、MEGAnno+がどのようにより効率的で便利なプロセスを実現するのかを確認していきます。
図3: LLMアノテーションワークフローのステップ
ステップ1: 前処理
図4: プロンプトテンプレートUI。ユーザーはタスク指示をカスタマイズし、生成されたプロンプトをプレビューできます。
図5: モデル構成とプロンプトテンプレートを用いてLLMエージェントが登録されます。
次に、有効なLLMモデルを選択し、その構成を定義する必要があります。LLMアノテーションエージェントを登録する際(図5)、MEGAnno+は以下の有効性チェックを実行します:
・APIキーの検証(該当する場合)
・モデル構成がLLM APIに適合しているかの確認
・生成されたプロンプトがコンテキスト制限内に収まっているかの確認
ステップ2: LLM APIを呼び出してアノテーションジョブを実行
ステップ1で登録したLLMエージェントを使用して、MEGAnno+はLLM APIを呼び出し、選択したデータサブセットに対するアノテーションを取得します。堅牢なワークフローを確保するために、MEGAnno+はLLM API呼び出し中に発生する可能性のあるエラーも処理します。
しかし、ちょっと待ってください!LLMを呼び出す直前に、ラベルだけでなく、モデルの信頼スコアも取得したいことに気付きました。MEGAnno+では、LLMのメタデータ成果物を取得して記録することもできます。アノテーションとともに、ログイットベースの信頼スコア(”conf”)を返すようにMEGAnno+に指定することができます(図6)。
図6: 選択したサブセットに対して、指定したLLMエージェントを使用してLLMアノテーションジョブを実行。
LLMの応答が取得されたら、次のステップでアノテーションを抽出します。
ステップ3: 後処理
図7: MEGAnno+によるLLM応答と後処理結果の例
MEGAnno+では、アノテーションタスクの進捗状況を監視することも可能です(図8)。LLMを呼び出す際に発生したAPIエラーや、後処理中に発生したエラーについての情報が提供されます。さらに、アノテーションタスクの全体的な概要を確認することもできます。この概要では、各ラベルに対応する応答数や、後処理中に発生した無効なLLM応答の頻度が表示されます。このサマリーは、LLMがこのタスクにおいてデータセット上でどのように動作したかを把握するのに役立ちます。
図8: LLMアノテーションジョブのサマリー
これで、必要に応じてタスクに変更を加えることができます。たとえば、プロンプトを少し修正したり、LLM構成を変更して新しいエージェントを定義し、アノテーションタスクを実行することができます。また、データセットやタスク自体を変更し、新しいスキーマを定義することも可能です。さらに、MEGAnno+の機能を使用して、以前に保存したエージェントを取得し、それを使用して新しいデータセットにアノテーションを付けることもできます。
これらの手順を経て、UIウィジェットを使用してLLMアノテーションを検査できるようになります。
人間による検証
人間-LLM協調環境の利点について議論してきました。ここでは、LLMアノテーションプロセスに人間をどのように取り入れるかについて説明します。LLMによるアノテーションが取得された後、MEGAnno+では、人間がアノテーションを検証(つまり、ラベルを正しいと確認するか、ラベルを拒否して正しいラベルを指定する)できるようにします。
では、人間がどのインスタンスを検証すべきかをどのように選ぶのでしょうか?データセット内のすべてのアノテーションを人間が検証するのは、LLMを使った安価で迅速なアノテーションプロセスの目的に反するため、冗長に思えます。代わりに、MEGAnno+は各アノテーションの信頼スコアを計算することで、人間の検証者を支援する可能性を提供します。
もしアノテーションジョブを実行する際に信頼スコアを保存するよう指定していた場合(図6参照)、そのスコアを取得して、LLMラベルとともにUIウィジェットで視覚化することができます(図9)。信頼スコアを並べ替えたりフィルタリングしたりして、LLMが低い信頼スコアを示したアノテーションのみを抽出できます。これにより、人間の検証プロセスが簡素化され、より効率的になります。
図9: データを探索し、LLMラベルを確認または修正するための検証UI