Skip to content

Latest commit

 

History

History
230 lines (176 loc) · 9.54 KB

README.ja.md

File metadata and controls

230 lines (176 loc) · 9.54 KB

Shin Rakuda

English | 日本語

License: MIT Python 3.9+

目次

概要

Shin Rakudaは、様々な言語モデル(LLM)の性能を指定されたデータセットでベンチマークするための強力かつ柔軟なツールです。研究者や開発者に、データセットの読み込み、モデルの選択、ベンチマークプロセスの実行、結果の可視化を行うための使いやすいインターフェースを提供します。

主な機能

  • 複数の推論ライブラリ(HuggingfaceとVLLM)のサポート
  • モデル、データセット、評価パラメータの柔軟な設定
  • 使いやすいコマンドラインインターフェース
  • ベンチマーク結果の可視化
  • APIベースのモデルとローカルモデルの両方をサポート

前提条件

  • Python 3.9以上
  • 依存関係管理用のpipまたはPoetry
  • 必要なモデルAPIへのアクセス(APIベースのモデルを使用する場合)
  • ローカルモデルを実行するための十分な計算リソース(該当する場合)

設定

  1. .env.exampleファイルを.envにコピーし、必要に応じてモデルのAPIキーを設定します:

    cp .env.example .env
  2. config.yamlファイルを編集してプロジェクトを設定します。設定ファイルは以下のセクションに分かれています:

    • Models: ベンチマークするLLMを定義
    • Evaluation Datasets: 評価用のデータセットを指定
    • Judge Model: 応答を判断するモデルを設定
    • Evaluation Configurations: ディレクトリやその他の評価パラメータを設定

    各設定オプションの詳細な説明については、config_template.yamlファイルのコメントを参照してください。

モデル

# APIモデル
models:
  - model_name: string
    api: boolean # モデルがAPI経由で推論を行うかどうか、APIモデルの場合はデフォルトでTrue
    provider: string # モデルのプロバイダ
# ローカルモデル
  - model_name: string # 任意の名前を指定可能
    api: boolean # モデルがAPI経由で推論を行うかどうか、ローカルモデルの場合はデフォルトでFalse
    provider: string # モデルのホスティングプロバイダ、デフォルトはhuggingface
    system_prompt: string 
    do_sample: boolean
    vllm_config: # vllm設定セクション
      model: string # モデルのフルネームまたはモデルID
      max_model_len: int # 最大モデル長
    vllm_sampling_params: # vllmサンプリングパラメータセクション
      temperature: float # 温度
      top_p: float # top p
      max_tokens: int # 最大トークン数
      repetition_penalty: float # 繰り返しペナルティ
    hf_pipeline: # huggingfaceパイプラインセクション
      task: string
      model: string # モデルのフルネームまたはモデルID
      torch_dtype: string 
      max_new_tokens: int
      device_map: string
      trust_remote_code: boolean
      return_full_text: boolean
    hf_chat_template: # huggingfaceチャットテンプレートセクション
      chat_template: string # 完全なチャットテンプレートまたは`ChatML`などのチャットテンプレートフォーマット
      tokenize: boolean # チャットテンプレートをトークン化するかどうか
      add_generation_prompt: boolean # 生成プロンプトを追加するかどうか

参考文献:

HFまたはVLLMの設定パラメータを必要に応じて追加してください。Rakudaはそれに応じて処理を行います。どちらの推論ライブラリでもサポートされていないパラメータがある場合、Rakudaは正常に動作しません。

評価データセット

eval_datasets:
  - dataset_name: string # データセット名
    judge_prompt_template: string # 判断プロンプトテンプレート
    num_questions: int # オプション、評価する質問の数
    random_questions: boolean # オプション、num_questionsが指定されている場合に質問をランダムに選択するかどうか
    use_jinja: boolean # 判断プロンプトにJinjaテンプレートを使用するかどうか
    score_keyword: string # モデル出力からスコアを抽出するためのキーワード、形式については config_template.yaml ファイルを参照

判断モデル

judge_models:
  - model_name: string # モデルのrepo_id
    api: boolean # モデルがAPI経由で推論を行うかどうか
    provider: string # モデルのプロバイダ

評価設定

eval_datasets_dir: string # 評価データセットを含むディレクトリ
log_dir: string # ログを保存するディレクトリ
result_dir: string # 評価結果を保存するディレクトリ
existing_eval_dir: string  # オプション、既存の結果を比較するためのディレクトリ(一部のモデルの評価を再実行しない)
inference_library: string  # 使用する推論ライブラリ、huggingfaceの場合は"hf"または"huggingface"、vllmの場合は"vllm"

インストール

# 仮想環境を作成
python3 -m venv .venv
# 仮想環境を有効化
source .venv/bin/activate
# 依存関係をインストール
pip install -r requirements.txt
# バグを解決するためにfilelockをアップグレード
pip install --upgrade filelock

代替の依存関係管理

このプロジェクトは依存関係管理にpyproject.tomlを使用しています。追加の依存関係をインストールするには:

  1. pyproject.tomlファイルに依存関係を追加します。
poetry add <dependency>
  1. poetry installを実行して環境を更新します。

使用方法

エンドツーエンドの評価スクリプトを実行します:

python3 scripts/evaluate_llm.py --config-name config_xxx

config_xxxconfigsディレクトリにある設定ファイルの名前(.yamlを除く)に置き換えてください。

出力例:

Start Shin Rakuda evaluation...
Processing datasets: 100%|██████████| 2/2 [00:00<00:00,  5.01it/s]
Evaluating japanese_mt_bench...
Processing models: 100%|██████████| 3/3 [00:00<00:00, 15.08it/s]
...

評価が完了すると、設定ファイルで指定したresult_dirに結果と可視化が保存されます。

今後の課題

  • Llama 3.1モデルのサポートを追加
  • Huggingfaceパイプラインのサポートを改善
  • VLLMを更新(適切なGPUメモリ解放をサポートする最新バージョンまで)

貢献方法

Shin Rakudaへの貢献を歓迎します!以下の手順で貢献できます:

  1. リポジトリをフォーク
  2. 機能ブランチを作成(git checkout -b feature/amazing_features
  3. 変更をコミット(git commit -m '素晴らしい機能を追加'
  4. ブランチにプッシュ(git push origin feature/amazing_features
  5. プルリクエストを作成

テストを適切に更新し、プロジェクトのコーディング基準を遵守してください。

トラブルシューティング

  • CUDA out of memoryエラーが発生した場合は、モデル設定のmax_model_lenまたはmax_tokensパラメータを減らしてみてください。
  • 特定のモデルやデータセットに問題がある場合は、モデルプロバイダのドキュメントやデータセットのソースで既知の制限や要件を確認してください。
  • 依存関係に問題がある場合は、正しいバージョンのPythonを使用し、必要なパッケージがすべてインストールされていることを確認してください。

さらなるヘルプが必要な場合は、GitHubリポジトリでIssueを作成してください。

ライセンス

MIT

引用

研究でShin Rakudaを使用する場合は、以下のように引用してください:

@software{shin_rakuda,
  author = {YuzuAI},
  title = {Shin Rakuda: 柔軟なLLMベンチマーキングツール},
  year = {2024},
  url = {https://github.com/yourusername/shin-rakuda}
}

参考文献