SageMaker AI トレーニング済みモデルの評価 - Amazon SageMaker AI

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

SageMaker AI トレーニング済みモデルの評価

評価プロセスの目的は、ベンチマークまたはカスタムデータセットに対してトレーニング済みモデルのパフォーマンスを評価することです。評価プロセスには、通常、トレーニングされたモデルを指す評価レシピを作成し、評価データセットとメトリクスを指定し、評価用の別のジョブを送信し、標準ベンチマークまたはカスタムデータに対して評価するステップが含まれます。評価プロセスでは、Amazon S3 バケットに保存されているパフォーマンスメトリクスが出力されます。

注記

このトピックで説明する評価プロセスはオフラインプロセスです。モデルは、リアルタイムまたはライブユーザーインタラクションを通じて評価されるのではなく、事前定義された回答を持つ固定ベンチマークに対してテストされます。リアルタイム評価では、Amazon Bedrock ランタイム APIs を呼び出して、Amazon Bedrock にデプロイされたモデルをテストできます。

前提条件

評価トレーニングジョブを開始する前に、次の点に注意してください。

  • パフォーマンスを評価する SageMaker AI でトレーニングされた Amazon Nova モデル。

  • 評価用のベース Amazon Nova レシピ。詳細については、「Amazon Nova レシピの取得」を参照してください。

使用可能なベンチマークタスク

Amazon Nova の SageMaker モデル評価機能を使用してベンチマークメトリクスを計算する方法を示すサンプルコードパッケージを利用できます。コードパッケージにアクセスするには、「sample-Nova-lighteval-custom-task」を参照してください。

サポートされている業界標準ベンチマークのリストを次に示します。eval_task パラメータで次のベンチマークを指定できます。

モデル評価に使用できるベンチマーク

ベンチマーク モダリティ 説明 メトリクス 方針 サブタスクが利用可能
mmlu

テキスト

マルチタスク言語の理解 – 57 のサブジェクトの知識をテストします。

正確性

zs_cot あり
mmlu_pro テキスト

MMLU – プロフェッショナルサブセット – 法律、医薬品、会計、エンジニアリングなどのプロフェッショナルドメインに焦点を当てています。

正確性 zs_cot なし
DBH テキスト

高度な推論タスク – 高レベルの認知スキルと問題解決スキルをテストする困難な問題のコレクション。

正確性 fs_cot あり
gpqa テキスト

一般的な物理質問への回答 — 物理概念と関連する問題解決能力の理解を評価します。

正確性 zs_cot なし
算術 テキスト

数学的問題解決 — 代数、計算、単語の問題などのトピック全体で数学的推論を測定します。

exact_match zs_cot あり
strong_reject テキスト

品質管理タスク – 不適切、有害、または誤ったコンテンツを検出して拒否するモデルの能力をテストします。

deflection zs あり
ifeval テキスト

Instruction-Following Evaluation – モデルが所定の指示にどの程度正確に従っているかを評価し、仕様に従ってタスクを完了します。

正確性 zs なし
gen_qa テキスト

カスタムデータセット評価 – モデル出力を比較して、ROUGE や BLEU などのメトリクスで回答を参照するベンチマーク用の独自のデータセットを提供できます。

すべて gen_qa なし
mmmu マルチモーダル

Massive Multidiscipline Multimodal Understanding (MMMU) – 30 の分野の複数選択の質問と自由回答形式の質問で構成される大学レベルのベンチマーク。

正確性 zs_cot あり
llm_judge テキスト

LLM-as-a-Judge プリファレンス比較 – Nova Judge モデルを使用して、プロンプトのペアレスポンス間のプリファレンス (B と A の比較) を決定し、B が A よりも優先される確率を計算します。

すべて 判断する なし

評価固有の設定

以下は、レシピの主要なコンポーネントの内訳と、ユースケースに合わせてコンポーネントを変更する方法に関するガイダンスです。

レシピの理解と変更

一般的な実行設定

run: name: eval_job_name model_type: amazon.nova-micro-v1:0:128k model_name_or_path: nova-micro/prod replicas: 1 data_s3_path: ""
  • name: 評価ジョブのわかりやすい名前。

  • model_type: 使用する Nova モデルバリアントを指定します。このフィールドは手動で変更しないでください。オプションには以下が含まれます。

    • amazon.nova-micro-v1:0:128k

    • amazon.nova-lite-v1:0:300k

    • amazon.nova-pro-v1:0:300k

  • model_name_or_path: トレーニング後のチェックポイントのベースモデルまたは s3 パスへのパス。オプションには以下が含まれます。

    • nova-micro/prod

    • nova-lite/prod

    • nova-pro/prod

    • トレーニング後のチェックポイントパスの S3 パス (s3:customer-escrow-111122223333-smtj-<unique_id>/<training_run_name>

      注記

      トレーニング後のモデルを評価する

      Nova SFT トレーニングジョブの後にトレーニング後のモデルを評価するには、トレーニングジョブを正常に実行した後、以下の手順に従います。トレーニングログの最後に、「トレーニングが完了しました」というログメッセージが表示されます。また、チェックポイントの場所を含むmanifest.jsonファイルが出力バケットにあります。このファイルは、出力 S3 の場所にある output.tar.gz ファイル内にあります。評価を続行するには、レシピ設定run.model_name_or_pathで の値として設定して、このチェックポイントを使用します。

  • replica: 分散トレーニングに使用するコンピューティングインスタンスの数。マルチノードはサポートされていないため、 を 1 に設定します。

  • data_s3_path: 入力データセットの Amazon S3 パス。このフィールドは必須ですが、常に空のままにする必要があります。

評価設定

evaluation: task: mmlu strategy: zs_cot subtask: abstract_algebra metric: accuracy
  • task: 使用する評価ベンチマークまたはタスクを指定します。サポートされているタスクは次のとおりです。

    • mmlu

    • mmlu_pro

    • bbh

    • gpqa

    • math

    • strong_reject

    • gen_qa

    • ifeval

    • mmmu

    • llm_judge

  • strategy: 評価アプローチを定義します。

    • zs_cot: ゼロショットの思考連鎖 - 明示的な例を必要とせずにstep-by-stepの推論を奨励する大規模言語モデルをプロンプトするアプローチ。

    • fs_cot: Few-shot Chain of Thought - モデルに新しい問題を解決するよう依頼する前にstep-by-stepの推論の例を提供するアプローチ。

    • zs: ゼロショット - 以前のトレーニング例なしで問題を解決するためのアプローチ。

    • gen_qa: 独自のデータセットを取り込むための戦略。

    • judge: 審査員としての Nova LLM に固有の戦略。

  • subtask: オプション。評価タスクの特定のコンポーネント。使用可能なサブタスクの完全なリストについては、「」を参照してください使用可能なサブタスク

    • 使用可能なベンチマークタスクでサポートされているサブタスクを確認します。

    • サブタスクベンチマークがない場合は、このフィールドを削除する必要があります。

  • metric: 使用する評価メトリクス。

    • accuracy: 正しい回答の割合。

    • exact_match: 数学ベンチマークの場合、 は入力予測文字列が参照と正確に一致するレートを返します。

    • deflection: 強力な拒否ベンチマークの場合、 はベースモデルと差の有意性メトリクスへの相対的なたわみを返します。

    • all:

      ではgen_qa、独自のデータセットベンチマークを取り込んで、次のメトリクスを返します。

      • rouge1: 生成されたテキストと参照テキストの間のユニグラム (単一単語) の重複を測定します。

      • rouge2: 生成されたテキストと参照テキスト間のビッグラム (2 つの連続した単語) の重複を測定します。

      • rougeL: テキスト間の最長の共通サブシーケンスを測定し、一致のギャップを許容します。

      • exact_match: 生成されたテキストが参照テキストと正確に一致するかどうかを示すバイナリスコア (0 または 1)。文字単位。

      • quasi_exact_match: 完全一致に似ていますが、より寛大で、通常は大文字と小文字、句読点、空白の違いを無視します。

      • f1_score: 予測回答と参照回答の単語の重複を測定する、精度と再現率の調和平均。

      • f1_score_quasi: f1_score に似ていますが、より寛容なマッチングでは、わずかな違いを無視する正規化されたテキスト比較を使用します。

      • bleu: 翻訳評価で一般的に使用される、生成されたテキストと参照テキストの間の n グラム一致の精度を測定します。

      ではllm_judge、独自のデータセットベンチマークを取り込んで、次のメトリクスを返します。

      • a_scores: 前方評価パスと後方評価パスresponse_A間の の勝ち数。

      • a_scores_stderr: ペアごとの判断response_A_scoresにおける の標準エラー。

      • b_scores: 前方評価パスと後方評価パスresponse_B間での のウィン数を測定します。

      • a_scores_stderr: ペアごとの判断response_B_scoresにおける の標準エラー。

      • ties: response_Aと が等しいと評価response_Bされる判断の数。

      • ties_stderr: ペアごとの判断tiesにおける の標準エラー。

      • inference_error: 適切に評価できなかった判断の数。

      • score: のフォワードパスとバックワードパスの両方からの成功に基づいてスコアを集計しますresponse_B

      • score_stderr: のフォワードパスとバックワードパスの両方からの成功に基づいてスコアを集計しますresponse_B

      • inference_error_stderr: ペアワイズの判断における集計スコアの標準エラー。

      • winrate: "-Terry probability を使用してresponse_A計算された確率よりも優先response_Bされる確率。

      • lower_rate: ブートストラップサンプリングからの推定ウィンレートの下限 (2.5 パーセンタイル)。

      • upper_rate: ブートストラップサンプリングからの推定獲得率の上限 (97.5 パーセンタイル)。

推論設定 (オプション)

inference: max_new_tokens: 2048 top_k: -1 top_p: 1.0 temperature: 0
  • max_new_tokens: 生成するトークンの最大数。整数を指定する必要があります。(LLM 判事には使用できません)

  • top_k: 考慮する最も高い確率のトークンの数。整数を指定する必要があります。

  • top_p: トークンサンプリングの累積確率しきい値。1.0~0.0 の浮動小数点数である必要があります。

  • temperature: トークン選択のランダム性 (高 = よりランダム)。結果が確定的になるように 0 のままにします。浮動小数点タイプ、最小値は 0 です。

評価レシピの例

Amazon Nova には、4 種類の評価レシピが用意されています。すべてのレシピは、Amazon SageMaker HyperPod レシピ GitHub リポジトリで利用できます。

評価レシピ

    これらのレシピを使用すると、Amazon Nova モデルの基本的な機能をテキストのみのベンチマークの包括的なスイートで評価できます。

    レシピ形式: xxx_ general_text_benchmark_eval.yaml

    これらのレシピを使用すると、マルチモダリティベンチマークの包括的なスイート全体で Amazon Nova モデルの基本的な機能を評価できます。

    レシピ形式: xxx_general_multi_modal_benchmark_eval.yaml

    マルチモーダルベンチマークの要件

    • モデルサポート - nova-lite および nova-pro ベースモデルとそのトレーニング後のバリアントのみをサポートします。

    これらのレシピを使用すると、ベンチマーク用の独自のデータセットを取り込んでモデル出力を比較し、さまざまなタイプのメトリクスを使用して回答を参照できます。

    レシピ形式: xxx_ bring_your_own_dataset_eval.yaml

    独自のデータセット要件を導入する

    ファイル形式:

    • 評価例を含む 1 つのgen_qa.jsonlファイル。ファイル名は正確な である必要がありますgen_qa.jsonl

    • は、SageMaker トレーニングジョブがアクセスできる S3 の場所にデータセットをアップロードする必要があります。

    • ファイルは、一般的な Q&Q データセットに必要なスキーマ形式に従う必要があります。

    スキーマ形式 - .jsonl ファイル内の各行は、次のフィールドを持つ JSON オブジェクトである必要があります。

    • 必須フィールド。

      query: 回答が必要な質問または指示を含む文字列。

      response: 予想されるモデル出力を含む文字列。

    • オプションのフィールド。

      system: クエリを処理する前に AI モデルの動作、ロール、またはパーソナリティを設定するシステムプロンプトを含む文字列。

    エントリ例

    { "system":"You are an English major with top marks in class who likes to give minimal word responses: ", "query":"What is the symbol that ends the sentence as a question", "response":"?" }{ "system":"You are a pattern analysis specialist who provides succinct answers: ", "query":"What is the next number in this series? 1, 2, 4, 8, 16, ?", "response":"32" }{ "system":"You have great attention to detail and follow instructions accurately: ", "query":"Repeat only the last two words of the following: I ate a hamburger today and it was kind of dry", "response":"of dry" }

    カスタムデータセットを使用するには、以下の必須フィールドを使用して評価レシピを変更し、いずれのコンテンツも変更しないでください。

    evaluation: task: gen_qa strategy: gen_qa metric: all

    制約事項

    • 評価ごとに許可される.jsonlファイルは 1 つだけです。

    • ファイルは、定義されたスキーマに厳密に従う必要があります。

    Nova LLM Judge は、1 つのモデルからのレスポンスの品質を、カスタムデータセットを使用してベースラインモデルのレスポンスと比較できるモデル評価機能です。プロンプト、ベースラインレスポンス、チャレンジャーレスポンスを含むデータセットを受け入れ、Nova Judge モデルを使用して、ペアワイズ比較を通じて "-Terry 確率に基づくウィンレートメトリクスを提供します。レシピ形式: xxx_llm_judge _eval.yaml

    Nova LLM データセットの要件

    ファイル形式:

    • 評価例を含む 1 つのllm_judge.jsonlファイル。ファイル名は正確な である必要がありますllm_judge.jsonl

    • は、SageMaker トレーニングジョブがアクセスできる S3 の場所にデータセットをアップロードする必要があります。

    • ファイルは、llm_judgeデータセットに必要なスキーマ形式に従う必要があります。

    • 入力データセットは、すべてのレコードが 12 k コンテキスト長未満であることを確認する必要があります。

    スキーマ形式 - .jsonl ファイル内の各行は、次のフィールドを持つ JSON オブジェクトである必要があります。

    • 必須フィールド。

      prompt: 生成されたレスポンスのプロンプトを含む文字列。

      response_A: ベースラインレスポンスを含む文字列。

      response_B: 代替レスポンスを含む文字列は、ベースラインレスポンスと比較されます。

    エントリ例

    { "prompt": "What is the most effective way to combat climate change?", "response_A": "The most effective way to combat climate change is through a combination of transitioning to renewable energy sources and implementing strict carbon pricing policies. This creates economic incentives for businesses to reduce emissions while promoting clean energy adoption.", "response_B": "We should focus on renewable energy. Solar and wind power are good. People should drive electric cars. Companies need to pollute less." } { "prompt": "Explain how a computer's CPU works", "response_A": "CPU is like brain of computer. It does math and makes computer work fast. Has lots of tiny parts inside.", "response_B": "A CPU (Central Processing Unit) functions through a fetch-execute cycle, where instructions are retrieved from memory, decoded, and executed through its arithmetic logic unit (ALU). It coordinates with cache memory and registers to process data efficiently using binary operations." } { "prompt": "How does photosynthesis work?", "response_A": "Plants do photosynthesis to make food. They use sunlight and water. It happens in leaves.", "response_B": "Photosynthesis is a complex biochemical process where plants convert light energy into chemical energy. They utilize chlorophyll to absorb sunlight, combining CO2 and water to produce glucose and oxygen through a series of chemical reactions in chloroplasts." }

    カスタムデータセットを使用するには、以下の必須フィールドを使用して評価レシピを変更し、いずれのコンテンツも変更しないでください。

    evaluation: task: llm_judge strategy: judge metric: all

    制約事項

    • 評価ごとに許可される.jsonlファイルは 1 つだけです。

    • ファイルは、定義されたスキーマに厳密に従う必要があります。

    • Nova Judge モデルは、マイクロ/ライト/プロ仕様で同じです。

    • カスタム判事モデルは現在サポートされていません。

    評価トレーニングジョブの実行

    次のサンプル Jupyter Notebook を使用してトレーニングジョブを開始します。詳細については、SageMaker AI 推定器を使用してトレーニングジョブを実行する」を参照してください。

    リファレンステーブル

    ノートブックを実行する前に、次のリファレンステーブルを参照して、イメージ URI とインスタンスの設定を選択します。

    イメージ URI の選択

    レシピ イメージ URI

    評価イメージ URI

    708977205387.dkr.ecr.us-east-1.amazonaws.com/nova-evaluation-repo:SM-TJ-Eval-latest

    インスタンスタイプと数の選択

    モデル ジョブタイプ インスタンスタイプ 推奨されるインスタンス数 許可されたインスタンス数
    Amazon Nova Micro 評価 (SFT/DPO)

    g5.12xlarge

    1 1
    Amazon Nova Lite 評価 (SFT/DPO)

    g5.12xlarge

    1 1
    Amazon Nova Pro 評価 (SFT/DPO)

    p5.48xlarge

    1 1

    サンプルノートブック

    次のサンプルノートブックは、評価トレーニングジョブを実行する方法を示しています。

    # install python SDK !pip install sagemaker import os import sagemaker,boto3 from sagemaker.inputs import TrainingInput from sagemaker.pytorch import PyTorch sagemaker_session = sagemaker.Session() role = sagemaker.get_execution_role() # Download recipe from https://github.com/aws/sagemaker-hyperpod-recipes/tree/main/recipes_collection/recipes/evaluation/nova to local # Assume the file name be `recipe.yaml` # Populate parameters # input_s3_uri = "s3://<path>/input/" # (Optional) Only used for multi-modal dataset or bring your own dataset s3 location output_s3_uri= "s3://<path>/output/" # Output data s3 location, a zip containing metrics json and tensorboard metrics files will be stored to this location instance_type = "instace_type" # ml.g5.16xlarge as example job_name = "your job name" recipe_path = "recipe path" # ./recipe.yaml as example image_uri = "708977205387.dkr.ecr.us-east-1.amazonaws.com/nova-evaluation-repo:SM-TJ-Eval-latest" # Do not change # (Optional) To bring your own dataset and LLM judge for evaluation # evalInput = TrainingInput( # s3_data=input_s3_uri, # distribution='FullyReplicated', # s3_data_type='S3Prefix' #) estimator = PyTorch( output_path=output_s3_uri, base_job_name=job_name, role=role, instance_type=instance_type, training_recipe=recipe_path, sagemaker_session=sagemaker_session, image_uri = image_uri ) estimator.fit() # If input dataset exist, pass in inputs # estimator.fit(inputs={"train": evalInput})

    評価結果の評価と分析

    評価ジョブが正常に完了したら、次のステップを使用して結果を評価および分析できます。

    次のステップに従って、結果を評価および分析します。
    1. 出力場所の構造を理解します。結果は、指定された Amazon S3 出力場所に圧縮ファイルとして保存されます。

      s3://your-bucket/output/benchmark-name/ └── job_name/ └── output/ └── output.tar.gz
    2. バケットから output.tar.gz ファイルをダウンロードします。コンテンツを展開して表示します。を除くすべてのベンチマークに存在しますstrong_reject

      run_name/ ├── eval_results/ │ └── results_[timestamp].json | └── details/ | └── model/ | └── <execution-date-time>/ | └──details_<task_name>_#_<datetime>.parquet └── tensorboard_results/ └── eval/ └── events.out.tfevents.[timestamp]
      • results_[timestamp].json - 出力メトリクス JSON ファイル

      • details_<task_name>_#_<datetime>.parquet - 推論出力ファイル

      • events.out.tfevents.[timestamp] - TensorBoard 出力ファイル

    3. TensorBoard で結果を表示します。評価メトリクスを視覚化するには:

      1. 抽出したフォルダを S3 バケットにアップロードする

      2. SageMaker TensorBoard に移動する

      3. 「S3 フォルダ」を選択します。

      4. S3 フォルダパスを追加する

      5. 同期が完了するまで待機する

    4. 推論出力を分析します。llm_judge を除くすべての評価タスクには、推論出力の分析用に次のフィールドがあります。

      • full_prompt - 評価タスクに使用されるモデルに送信された完全なユーザープロンプト。

      • gold - データセットで指定された正しい回答を含むフィールド (複数可)。

      • metrics - 個々の推論で評価されたメトリクスを含むフィールド。集計が必要な値は、個々の推論出力に値を持ちません。

      • predictions - 指定されたプロンプトのモデルの出力のリストを含むフィールド。

      これらのフィールドを確認することで、メトリクスの違いの原因を特定し、カスタマイズされたモデルの動作を理解できます。

      の場合llm_judge、推論出力ファイルには、評価のペアごとにメトリクスフィールドの下に次のフィールドが含まれます。

      • forward_output - 順番に評価する際の審査員の raw 設定 (response_A、response_B)。

      • backward_output - 逆順 (response_B、response_A) で評価するときの審査員の raw 設定。

      • Pairwise metrics - 、a_scoresb_scoresinference-score などties、前方評価と後方評価のペアごとに計算されるメトリクスscore

        注記

        のような集計メトリクスwinrateは、個々の判断ではなく、概要結果ファイルでのみ使用できます。

    評価のベストプラクティスとトラブルシューティング

    ベストプラクティス

    以下に、評価プロセスのいくつかのベストプラクティスを示します。

    • モデルとベンチマークタイプ別に出力パスを整理しておきます。

    • 追跡を容易にするために、一貫した命名規則を維持します。

    • 抽出した結果を安全な場所に保存します。

    • TensorBoard 同期ステータスをモニタリングして、データのロードが成功することを確認します。

    トラブルシューティング

    CloudWatch ロググループは、トレーニングジョブのエラーログ/aws/sagemaker/TrainingJobsに使用できます。

    CUDA メモリ不足エラー

    問題:

    モデル評価を実行すると、次のエラーが表示されます。

    torch.cuda.OutOfMemoryError: CUDA out of memory. Tried to allocate X MiB. GPU 0 has a total capacity of Y GiB of which Z MiB is free.

    原因:

    このエラーは、現在のインスタンスタイプで使用可能な GPU メモリよりも多くの GPU メモリを必要とするモデルをロードしようとすると発生します。

    解決策:

    GPU メモリが多いインスタンスタイプを選択します。例えば、G5.12xlarge (96 GiB GPU メモリ) を使用している場合は、G5.48xlarge (192 GiB GPU メモリ) にアップグレードします。

    防止

    モデル評価を実行する前に、以下を実行します。

    • モデルのメモリ要件を見積もる

    • 選択したインスタンスタイプに十分な GPU メモリがあることを確認します。

    • モデルのロードと推論に必要なメモリオーバーヘッドを考慮する

    使用可能なサブタスク

    以下に、MMLU (Massive Multitask Understanding)、BBH (Big Bench Hard)、数学、MMMU (Massive Multi-discipline Multimodal Understanding) など、複数のドメインでモデル評価に使用できるサブタスクを示します。これらのサブタスクを使用すると、特定の機能や知識領域におけるモデルのパフォーマンスを評価できます。

    MMLU

    MMLU_SUBTASKS = [ "abstract_algebra", "anatomy", "astronomy", "business_ethics", "clinical_knowledge", "college_biology", "college_chemistry", "college_computer_science", "college_mathematics", "college_medicine", "college_physics", "computer_security", "conceptual_physics", "econometrics", "electrical_engineering", "elementary_mathematics", "formal_logic", "global_facts", "high_school_biology", "high_school_chemistry", "high_school_computer_science", "high_school_european_history", "high_school_geography", "high_school_government_and_politics", "high_school_macroeconomics", "high_school_mathematics", "high_school_microeconomics", "high_school_physics", "high_school_psychology", "high_school_statistics", "high_school_us_history", "high_school_world_history", "human_aging", "human_sexuality", "international_law", "jurisprudence", "logical_fallacies", "machine_learning", "management", "marketing", "medical_genetics", "miscellaneous", "moral_disputes", "moral_scenarios", "nutrition", "philosophy", "prehistory", "professional_accounting", "professional_law", "professional_medicine", "professional_psychology", "public_relations", "security_studies", "sociology", "us_foreign_policy", "virology", "world_religions" ]

    BBH

    BBH_SUBTASKS = [ "boolean_expressions", "causal_judgement", "date_understanding", "disambiguation_qa", "dyck_languages", "formal_fallacies", "geometric_shapes", "hyperbaton", "logical_deduction_five_objects", "logical_deduction_seven_objects", "logical_deduction_three_objects", "movie_recommendation", "multistep_arithmetic_two", "navigate", "object_counting", "penguins_in_a_table", "reasoning_about_colored_objects", "ruin_names", "salient_translation_error_detection", "snarks", "sports_understanding", "temporal_sequences", "tracking_shuffled_objects_five_objects", "tracking_shuffled_objects_seven_objects", "tracking_shuffled_objects_three_objects", "web_of_lies", "word_sorting" ]

    数値演算

    MATH_SUBTASKS = [ "algebra", "counting_and_probability", "geometry", "intermediate_algebra", "number_theory", "prealgebra", "precalculus", ]

    MMMU

    MATH_SUBTASKS = [ "Accounting", "Agriculture", "Architecture_and_Engineering", "Art", "Art_Theory", "Basic_Medical_Science", "Biology", "Chemistry", "Clinical_Medicine", "Computer_Science", "Design", "Diagnostics_and_Laboratory_Medicine", "Economics", "Electronics", "Energy_and_Power", "Finance", "Geography", "History", "Literature", "Manage", "Marketing", "Materials", "Math", "Mechanical_Engineering", "Music", "Pharmacy", "Physics", "Psychology", "Public_Health", "Sociology", ]