llm-jp / scripts

Apache License 2.0
1 stars 1 forks source link

Add scripts to automate evaluation on llm-jp-eval v1.3.1 #24

Open hkiyomaru opened 3 months ago

hkiyomaru commented 3 months ago

This PR addresses the issue #22.

hkiyomaru commented 3 months ago

叩き台です.書いていて思ったこと:

YumaTsuta commented 3 months ago

run_llm-jp-eval.sh のモデル名,W&B run name 以外の設定(W&B entity name とか)も外部から編集できると便利かも?

run_llm-jp-eval.sh は実験の一連の評価に利用することを想定しているため、評価ごとに設定の変化する run name と ターゲットモデルのみを引数に取るようにしています。 一方で、実験の一連の評価の中で変化させることがあまりない、project name や tokenizerなどは run_llm-jp-eval.sh を別ファイルで新規作成して内部の変数を書き換えてもらう運用で考えていました。 See README.md - Evaluation

実行時の環境変数として用意する方法も考えていましたが、複雑にする必要もないかと思い導入を見送りました。(以下のコードで機能するかは不明ですが) e.g., WANDB_PROJECT=test sbatch --partition {partition} run_llm-jp-eval.sh {path/to/model} {wandb.run_name}

私の方の作成方針は以上のとおりですが、不都合があるようでしたら適宜変更してもらえると

odashi commented 3 months ago

定期実行じゃないですが、v3 13b exp4は次のスクリプトを朝起きがけに叩いて、新しく上がっているckptに対する評価を全部ジョブに投げるようにしています。(今日全部やり直しましたが、スクリプト自体は同じままです) processedというディレクトリにバッチ投入したiterの名前で空ファイルを作り、それを処理済み判定に使用しています。再実行したければファイルを削除すればよい 正直これで必要十分なので、自動化いらんのでは…? と思うなどしてました。 (朝起きがけに叩く部分を自動化してもよいですが…)

#!/bin/bash

CHECKPOINTS_DIR=/home/shared/experiments/0019_v3-13b-exp4-hf/checkpoints_hf

mkdir -p processed

for d in $(ls ${CHECKPOINTS_DIR}); do
    if [[ -f processed/$d ]]; then
        echo "$d: already processed"
        continue
    fi
    echo "$d: queued"
    sbatch \
        run_llm-jp-eval.sh \
        /home/shared/experiments/0019_v3-13b-exp4-hf/checkpoints_hf/$d \
        $d \
        && touch processed/$d
done
odashi commented 3 months ago

改めて読んだら雑だなと思ったので後半を少し修正

#!/bin/bash

CHECKPOINTS_DIR=/home/shared/experiments/0019_v3-13b-exp4-hf/checkpoints_hf

mkdir -p processed

for d in $(ls ${CHECKPOINTS_DIR}); do
    if [[ -f processed/$d ]]; then
        echo "$d: already processed"
        continue
    fi
    sbatch run_llm-jp-eval.sh ${CHECKPOINTS_DIR}/$d $d \
    && touch processed/$d \
    && echo "$d: queued"
done