Nejumi LLMリーダーボード Neo の LLMベンチマークの使い方
この入門記事は、「Weights & Biases」のご支援により提供されています。Weights & Biases JapanのNoteでは他にも多くの有用な記事が掲載されていますので是非ご覧ください。
1. Nejumi LLMリーダーボード Neo
「Nejumi LLMリーダーボード Neo」は、日本語LLMの能力評価ランキングです。「llm-jp-eval」「MT-Bench」という2つのLLMベンチマークで評価します。
2. 評価項目
評価項目は、次のとおりです。
2-1. llm-jp-eval
「llm-jp-eval」は、一問一答形式の言語理解を評価するベンチマークです。12種類のデータセットを100問ずつ全1200問で正解・不正解 (0 or 1) を評価し、平均値を算出します。
【例】
文章:梅雨 [SEP] 梅雨(つゆ、ばいう)は、北海道と小笠原諸島を除く日本、朝鮮半島南部、中国の南部から長江流域にかけての沿海部、および台湾など、東アジアの広範囲においてみられる特有の気象現象で、5月から7月にかけて来る曇りや雨の多い期間のこと。雨季の一種である。
質問:日本で梅雨がないのは北海道とどこか。
2-2. MT-Bench
「MT-Bench」は、プロンプト対話形式でテキスト生成を評価するベンチマークです。8カテゴリを10問ずつ全80問を回答し、「GPT-4」がスコアリング (1〜10) し、平均値を算出します。
・coding (コーディング)
【例】
ディレクトリ内の全てのテキストファイルを読み込み、出現回数が最も多い上位5単語を返すPythonプログラムを開発してください。
・extraction (情報抽出)
【例】
以下の映画のレビューを1から5のスケールで評価してください。1は非常に否定的、3は中立、5は非常に肯定的とします:
1. 2019年11月18日に公開されたこの映画は素晴らしい。撮影、演技、プロット、すべてが一流でした。
2. 映画にこんなに失望したことは今までにない。ストーリーは予測可能で、キャラクターは一次元的だった。私の意見では、この映画は2022年に公開された映画の中で最悪の一つだ。
3. 映画はまあまあだった。楽しめた部分もあったが、物足りないと感じた部分もあった。これは2018年2月に公開された、かなり平凡な映画のようだ。
答えを整数のJSON配列として返してください。:
・humanities (人文科学)
【例】
経済成長率、消費者物価指数、失業率などの経済指標と日本銀行の金融政策との関係性を説明してください。その経済指標に影響を与える主な政策手段を示し、それぞれの効果について考察してください。
・math (計算問題)
【例】
三角形の頂点が点 (0, 0)、(-1, 1)、(3, 3) にあるとき、その三角形の面積は何ですか?
・resoning (推論)
【例】
あなたが人々と一緒にレースをしていると想像してみてください。あなたがちょうど2番目の人を追い越したとしたら、あなたの現在の位置は何番目でしょうか? あなたが追い越した人の位置はどこでしょうか?
・roleplay (ロールプレイ)
【例】
あなたが宮崎駿であると思い込んで、可能な限り彼のように話してみてください。なぜ私たちはアニメが必要なのでしょうか?
・stem (STEM)
【例】
量子物理学の中で、重ね合わせ状態とは何ですか?それはどのようにして量子もつれ現象と関連していますか?
・writing (テキスト生成)
【例】
京都の四季をテーマにした詩を書いてください。各季節の美しさと過ぎゆく時間の感慨を表現してください。
3. 評価コードの実行
今回は、Colabで人気のある日本語LLM「elyza/ELYZA-japanese-Llama-2-7b-fast-instruct」を評価します。「OpenAI API」の使用料金は $4ほど かかりました (生成する文章の長さに応じて変動するかと思います)。
(1) Colabのノートブックを開き、メニュー「編集 → ノートブックの設定」で「GPU」の「A100」を選択。
今回は、「Google Colab Pro/Pro+」で利用可能なA100を利用しています。
(2) パッケージのインストール。
「Nejumi LLMリーダーボード Neo」の評価コードは「wandb/llm-leaderboard」リポジトリで公開されています。
# パッケージのインストール
!git clone --recurse-submodules https://github.com/wandb/llm-leaderboard
%cd llm-leaderboard
!pip install -r requirements.txt
(3) 環境変数の準備。
左端の鍵アイコンで「OPENAI_API_KEY」に自分のOpenAI APIキーを設定してからセルを実行してください。「MT-Bench」によるLLM出力の評価は「GPT-4」が行うため必要になります。
文字コードの設定も行なっています。
# 環境変数の準備 (左端の鍵アイコンでOPENAI_API_KEYを設定)
import os
from google.colab import userdata
os.environ["OPENAI_API_KEY"] = userdata.get("OPENAI_API_KEY")
os.environ["PYTHONIOENCODING"] = "utf-8"
os.environ["LANG"] = "ja_JP.UTF-8"
(4) 「configs」フォルダ直下に、設定ファイル「config.yaml」を準備して、設定項目を編集。
今回は、「llm-leaderboard」のwandbプロジェクトで公開されている「elyza/ELYZA-japanese-Llama-2-7b-fast-instruct」の「config.yaml」(v38)をベースにします。
「wandb: entity」に自分のwandbアカウントを指定し、「model: use_wandb_artifacts:」にfalseを指定してください。
各項目について詳しくは、「5. config.yaml の設定項目」で説明します。
(5) LLMベンチマークのテスト実行。
「config.yaml」に「testmode: true」を設定して、LLMベンチマークをテスト実行します。本実行前に、テストモードで、少ないデータ数で最後まで実行できることを確認します。
# 評価コードの実行
!python scripts/run_eval.py
次のような指示がでたら「2」を入力します。wandbのアカウントが必要です。
次のような指示がでたら、「wandbのAPIキー」を入力します。
完了したら、「View run」のリンクをクリックして結果を確認します。
完了まで11分ほどかかりました。
8つのテーブルが生成されています。
(6) LLMベンチマークの実行。
「config.yaml」に「testmode: false」を設定して、LLMベンチマークをテスト実行します。完了したら、「View run」のリンクをクリックして結果を確認します。完了まで2時間ほどかかりました。
会話能力は「mtbench_radar_table」が参考になります。数学とコーディングが苦手であることがわかります。
4. 評価結果の比較
「Nejumi LLM リーダーボード Neo」のレポートを自分のwandbプロジェクトにコピーしてから、新規モデルの評価結果を追加します。
(1) 「左端のメニュー→ Rename run」でRun (評価結果) の名前を変更。
元のElyzaモデルと区別できるように、「elyza/」を「wandbのアカウント名/」に変更しています。
(2) 「Nejumi LLMリーダーボード Neo」のレポート を開き、「左上のメニュー → Make Copy」を選択。
wandbにログインしてない場合は、ログインしてから選択してください。
(3) コピー先のwandbプロジェクトを選択して「Clone repot」ボタンを押す。
(4) レポートが自分のwandbプロジェクトにコピーされてることを確認。
(5) 「総合評価」おわりのモデル一覧までスクロールし、「Model list」タブの左の「+」をクリック。
wandbプロジェクト内のRun一覧が表示される「Run set」タブが追加されます。
(6) 「Run set」タブ内からリーダーボードに追加したい「Run」を選択。
チェックと目を両方有効にします。
(7) リーダーボードに新規モデルが追加されていることを確認。
元のElyzaモデルとほぼ同じ位置にいることがわかります。
5. config.yaml の設定項目
「config.yaml」の設定項目は、次のとおりです。
5-1. 基本設定
5-2. llm-jp-eval
5-3. MT-Bench
具体的な例は、「llm-leaderboard」のwandbプロジェクトのArtifactで公開されている「config.yaml」を参照してください。
6. おわりに
「Nejumi LLMリーダーボード Neo」の「LLMベンチマーク」を使うことで、日本語LLMの能力評価を簡単に行うことができることを紹介しました。独自モデルを作成した際には、ぜひLLMベンチマークで評価してみてください。