「品質と責任について大規模な言語モデルを評価する」

「品質と責任を評価するための大規模言語モデル」

生成AIに関連するリスクはよく知られています。有害性、偏り、漏洩した個人情報、そして幻覚は、組織の評判を損ない、顧客の信頼を損ないます。 研究によると、バイアスや有害性のリスクは、事前トレーニングされた基盤モデル(FM)から特定のタスク向けの生成AIサービスに移りますが、タスクに特化したFMを増分データセットで調整することで、新たなリスクが生じる可能性があります。 ISO 42001やEU AI法などの進化するガイドラインや規制に従ってこれらのリスクを検出および管理することは困難です。顧客は、学術ツールやベンチマーキングサイトを使用するために開発環境を離れる必要があり、高度な専門知識が必要です。多数のメトリクスがあり、自分のユースケースに本当に関連するものを絞り込むことが困難です。新しいモデルがリリースされ、既存のモデルが微調整されるたびに、この面倒なプロセスが頻繁に繰り返されます。

Amazon SageMaker Clarifyは、AWSの顧客に、任意のLLMの基盤モデル(FM)の評価、品質および責任指標の比較を数分で行うための機能を提供しています。FM評価は、業界標準の科学に基づいた具体的な洞察を提供し、顧客固有のユースケースをサポートするために拡張できます。検証可能な評価スコアは、テキスト生成、要約、分類、および質問回答のタスク全体、顧客定義のプロンプトシナリオとアルゴリズムを含めて提供されます。レポートは、自然言語の説明、視覚化、および例を通じて、各評価を総合的にまとめて、注釈者やデータサイエンティストがLLMを最適化し、情報を基にした意思決定を行うための指針を提供します。また、Amazon SageMakerの機械学習およびオペレーション(MLOps)ワークフローと統合して、機械学習ライフサイクルの自動化とスケーリングを実現します。

FMEvalとは何ですか?

FM評価では、データサイエンティストや機械学習エンジニアに、特定のユースケースに適したLLMを選択または適応する際に、品質と責任に対する評価を提供するためのオープンソースのLLM評価ライブラリであるFMEvalを紹介しています。 FMEvalは、LLMモデルのエンドポイントまたは生成AIサービス全体のエンドポイントを評価する機能を提供します。 FMEvalは、正確性、頑健性、バイアス、有害性、事実の知識などの評価寸法を測定するのに役立ちます。 Amazon Bedrock、JumpstartなどのAWSホスト型LLMや、ChatGPT、HuggingFace、LangChainなどのサードパーティのモデル構築プラットフォーム上でホストされたLLMを評価するためにFMEvalを使用することもできます。このオプションにより、顧客は評価の投資を複数のプラットフォームに分散せずに、すべてのLLM評価ロジックを一つの場所に集約することができます。

では、どのように始められますか? FMEvalは、作業負荷を実行する場所で直接使用できます。Pythonパッケージまたはオープンソースのコードリポジトリとして、GitHubで透明性を持たせ、責任あるAIコミュニティへの貢献として提供されています。 FMEvalは明示的な推奨事項を行わず、代わりにAWSの顧客が意思決定をするための理解しやすいデータとレポートを提供します。 FMEvalでは、独自のプロンプトデータセットとアルゴリズムをアップロードすることができます。コアの評価関数evaluate()は拡張可能です。プロンプトデータセットをアップロードし、評価関数を選択してアップロードし、評価ジョブを実行することができます。結果は複数の形式で提供され、ハイリスクなアイテムをレビュー、分析、運用化し、利用事例に適した正しいLLMを選択するための意思決定を行うのに役立ちます。

サポートされているアルゴリズム

FMEvalは4つの異なるタスクをカバーする12つの組み込み評価を提供しています。評価数の可能性が数百に及び、評価の領域もまだ広がり続けているため、FMEvalは最新の科学の知見と最も人気のあるオープンソースの評価に基づいています。既存のオープンソースの評価フレームワークを調査し、拡張性を考慮してFMEval評価APIを設計しました。提案された評価のセットは、LLMの使用のすべての側面に触れることを目的としているのではなく、人気のある評価を準備して新しい評価を導入することを可能にすることを目的としています。

FMEvalは次の4つの異なるタスクと5つの評価寸法をカバーしています。以下の表に示すとおりです。

タスク 評価次元
オープンエンド生成 プロンプトのステレオタイプ化
. 有毒性
. 事実知識
. 意味的な堅牢性
テキスト要約 正確さ
. 有毒性
. 意味的な堅牢性
質問応答(Q&A) 正確さ
. 有毒性
. 意味的な堅牢性
分類 正確さ
. 意味的な堅牢性

各評価について、FMEvalは学術およびオープンソースコミュニティーからキュレーションされたビルトインプロンプトデータセットを提供しており、モデルのベースラインと、特定の生成型AIのユースケースに特化した独自のデータセットの評価方法を学ぶために使用されます。

次のセクションでは、異なる評価について詳しく説明します。

  1. 正確さ:­異なるタスクでのモデルのパフォーマンスを評価します。各タスクに合わせた専用の評価尺度(要約、質問応答、分類など)が用意されています。
    1. 要約 -­3つの尺度で構成されています:(1)ROUGE-Nスコア(リファレンスとモデルの要約のN-グラム単語の重複を計算する再現率およびF-測定ベースの尺度クラスです。大文字小文字を区別せず、値は0(一致なし)から1(完全一致)の範囲です);(2)METEORスコア(ROUGEと似ていますが、ステミングと同義語の一致が含まれています。例:「rain」→「drizzle」);(3)BERTScore(モデルは文埋め込みを計算し、そのコサイン類似度を比較するBERTファミリーの別のMLモデルです。ROUGEおよびMETEORよりも意味的な柔軟性が考慮される可能性があります。類似した意味の文はお互いに埋め込まれることがあります)。
    2. Q&A -­ クローズドブックおよびオープンブックの両方の設定でモデルのパフォーマンスを測定します。オープンブックのQ&Aでは、モデルには回答が含まれる参照テキストが提示されます(モデルのタスクはテキストから正しい回答を抽出することです)。クローズドブックの場合、モデルには追加の情報は提示されませんが、質問に答えるために独自の世界知識を使用します。BoolQNaturalQuestions、およびTriviaQAなどのデータセットを使用します。この次元では、正確一致、準正確一致、および単語ごとのF1など、異なる方法でモデルの予測回答と与えられた正解回答を評価する主要な尺度が報告されます。すべてのスコアは

      評価のためのFMEvalライブラリの使用

      ユーザーはオープンソースのFMEvalパッケージを使用して、自分のFMsの評価を実装することができます。FMEvalパッケージには、評価ジョブを実行するために必要ないくつかのコアな構造が付属しています。これらの構造は、データセット、評価対象のモデル、そして実装している評価アルゴリズムを確立するのに役立ちます。すべての3つの構造は継承され、カスタムのユースケースに適応されるため、提供されている組み込みの機能のいずれにも制約されません。FMEvalパッケージでは、コアな構造は次のオブジェクトとして定義されます:

      • Data config:データ構成オブジェクトには、データセットの場所(ローカルまたはS3パス)を示すフィールドが含まれています。さらに、データ構成にはmodel_inputtarget_output、およびmodel_outputなどのフィールドも含まれます。使用している評価アルゴリズムに応じて、これらのフィールドは異なる場合があります。たとえば、ファクト知識の場合、評価アルゴリズムを正しく実行するためにモデル入力とターゲット出力が期待されます。オプションとして、モデル出力を事前に入力することもでき、モデルランナーオブジェクトの構成について心配する必要はありません。
      • Model runner:モデルランナーは、ホストされているFMであり、推論を行います。FMEvalパッケージでは、モデルのホスティングは特定のものではありませんが、いくつかの組み込みのモデルランナーが提供されています。たとえば、ネイティブなJumpStart、Amazon Bedrock、およびSageMaker Endpointモデルランナークラスが提供されています。ここで、このモデルホスティング情報のメタデータと、特定のモデルが期待する入力の形式/テンプレートを提供できます。データセットにすでにモデル推論がある場合は、モデルランナーを構成する必要はありません。FMEvalがネイティブに提供していない場合は、基本のモデルランナークラスを継承し、自分のカスタム論理を持つpredictメソッドをオーバーライドすることができます。
      • Evaluation algorithm:FMEvalで使用可能な評価アルゴリズムの包括的なリストについては、モデル評価について学ぶを参照してください。評価アルゴリズムには、Data ConfigとModel Runnerを提供することもできますし、データセットにモデル出力がすでに含まれている場合は、Data Configのみを提供することもできます。各評価アルゴリズムには、evaluate_sampleevaluateの2つのメソッドがあります。evaluate_sampleを使用すると、モデル出力がすでに提供されているという前提の下で、単一のデータポイントを評価することができます。評価ジョブでは、指定したData Configを反復処理することができます。モデル推論の値が提供されている場合、評価ジョブはデータセット全体を実行し、アルゴリズムを適用します。モデル出力が提供されていない場合、モデルランナーは各サンプルで推論を実行し、評価アルゴリズムが適用されます。アルゴリズムに必要なロジックに基づいて、カスタムの評価アルゴリズムを自分で作成することもできます。これは、カスタムモデルランナーと類似したカスタムの評価アルゴリズムです。

      Data config

      Data Configでは、データセットを指し示すか、FMEvalが提供するデータセットのいずれかを使用することができます。この例では、質問と目標の回答が含まれる組み込みのtinyデータセットを使用します。この場合、事前に定義されたモデル出力がないため、モデルランナーも定義してモデル入力で推論を行います。

      from fmeval.data_loaders.data_config import DataConfigconfig = DataConfig(    dataset_name="tiny_dataset",    dataset_uri="tiny_dataset.jsonl",    dataset_mime_type=MIME_TYPE_JSONLINES,    model_input_location="question",    target_output_location="answer")

      JumpStartモデルランナー

      SageMaker JumpStartを使用してFMをホストしている場合、既存のエンドポイント名やJumpStartモデルIDをオプションで指定できます。モデルIDを指定する場合、FMEvalはこのエンドポイントを作成して推論を行います。重要なのは、FMによって異なる入力フォーマットに反映されるため、このcontent_templateを適切に設定することです。さらに、FMEvalが正しく理解するために、出力の解析もJMESPath形式で構成する必要があります。

      from fmeval.model_runners.sm_jumpstart_model_runner import JumpStartModelRunnermodel_id、model_version = (   "huggingface-llm-falcon-7b-instruct-bf16",    "*")js_model_runner = JumpStartModelRunner(    endpoint_name=endpoint_name,    model_id=model_id,    model_version=model_version,    output='[0].generated_text',    content_template='{"inputs": $prompt, "parameters": {"do_sample": true, "top_p": 0.9, "temperature": 0.8, "max_new_tokens": 1024}}',)

      Bedrock model runner

      BedrockモデルランナーのセットアップはJumpStartのモデルランナーと非常に似ています。Bedrockの場合はエンドポイントがないため、モデルIDのみを提供します。

      model_id = 'anthropic.claude-v2'bedrock_model_runner = BedrockModelRunner(    model_id=model_id,    output='completion',    content_template='{"prompt": $prompt, "max_tokens_to_sample": 500}')

      カスタムモデルランナー

      特定の場合には、カスタムモデルランナーを使用する必要があるかもしれません。たとえば、HuggingFace HubやOpenAIモデルからモデルを持っている場合、基本のモデルランナークラスを継承し、独自のカスタム予測メソッドを定義することができます。この予測メソッドはモデルランナーによって実行される推論の場所であり、したがってここで独自のカスタムコードを定義します。たとえば、Open AIのGPT 3.5 Turboを使用する場合、次のコードのようにカスタムモデルランナーを作成できます:

      class ChatGPTModelRunner(ModelRunner):    url = "https://api.openai.com/v1/chat/completions"    def __init__(self, model_config: ChatGPTModelConfig):        self.config = model_config    def predict(self, prompt: str) -> Tuple[Optional[str], Optional[float]]:        payload = json.dumps({            "model": "gpt-3.5-turbo",            "messages": [                 {                     "role": "user",                     "content": prompt                 }            ],            "temperature": self.config.temperature,            "top_p": self.config.top_p,            "n": 1,            "stream": False,            "max_tokens": self.config.max_tokens,            "presence_penalty": 0,            "frequency_penalty": 0        })        headers = {             'Content-Type': 'application/json',             'Accept': 'application/json',             'Authorization': self.config.api_key        }        response = requests.request("POST", self.url, headers=headers, data=payload)        return json.loads(response.text)["choices"][0]["message"]["content"], None

      評価

      データ構成とオプションでモデルランナーオブジェクトが定義されたら、評価を構成できます。この例では、ファクト知識として必要な評価アルゴリズムを取得できます。

      from fmeval.fmeval import get_eval_algorithmfrom fmeval.eval_algorithms.factual_knowledge import FactualKnowledgeConfig# Evaluate factual_knowledgeeval_algorithm_config = FactualKnowledgeConfig("<OR>")eval_algo = get_eval_algorithm("factual_knowledge")(eval_algorithm_config)

      実行することができる評価メソッドには2つあります:evaluate_sampleevaluateです。 evaluate_sampleは、モデルの出力が既に単一のデータポイントにある場合に実行できます。次のコードのようなサンプルコードです:

      # Evaluate your custom samplemodel_output = model_runner.predict("London is the capital of?")[0]print(model_output)eval_algo.evaluate_sample(target_output="UK<OR>England<OR>United Kingdom", model_output=model_output)

      データセット全体で評価を実行する場合は、evaluateメソッドを実行できます。このメソッドでは、モデルランナー、データ構成、およびプロンプトテンプレートを渡します。プロンプトテンプレートでは、テンプレートを調整して異なるテンプレートをテストできます。このプロンプトテンプレートは、モデルランナーで定義したContent_Templateパラメータの$prompt値に挿入されます。

      eval_outputs = eval_algo.evaluate(model=model, dataset_config=dataset_config, prompt_template="$feature", save=True)

      詳細な情報やエンドツーエンドの例については、リポジトリを参照してください。

      結論

      FM評価では、顧客が選択したLLMが彼らのユースケースに適しており、責任を持ってパフォーマンスを発揮することができることを信頼できるようにします。これはAmazon SageMakerにネイティブに統合された拡張性のある責任あるAIフレームワークであり、LLMの透明性を向上させるため、MLライフサイクル全体でのリスクの評価とコミュニケーションを容易にします。これは、AWS上でのLLMの信頼性と採用の向上における重要な進歩です。

      Fm evaluationsに関する詳細情報については、製品ドキュメントを参照し、GitHubリポジトリで利用可能な追加の例のノートブックを参照してください。また、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

データサイエンス

「LangchainなしでPDFチャットボットを構築する方法」

はじめに Chatgptのリリース以来、AI領域では進歩のペースが減速する気配はありません。毎日新しいツールや技術が開発されて...

人工知能

2023年に使用するための10の最高のAI画像生成ツール

2023年、最高のAI画像生成ツールは非常に複雑で高度であり、ユニークなデザインを育んでいます。デザイナーは時間制約やクリ...

AI研究

このAI論文は、MITが化学研究のために深層学習モデルのスケーリングを探究しています

MITの研究者は、化学のための生成的事前トレーニングモデル(ChemGPT)とグラフニューラルネットワークフォースフィールド(G...

AIニュース

「マイクロソフト、Windows上でのCortanaの終了を発表」

マイクロソフトは重要な動きとして、WindowsでのCortanaのサポート終了を宣言しました。この発表は、Windows Centralによって...

AI研究

Google フォトのマジックエディター:写真を再構築するための新しいAI編集機能

Magic Editorは、AIを使用して写真を再構想するのを手助けする実験的な編集体験です今年後半には、選択されたPixel電話での早...

データサイエンス

「AIの新機能:ChatGPTプラグインとインターネットアクセスの最新情報」

「今日は、現在最も有名なAIの1つであるChatGPTの新しいアップデートについてお伝えします」