Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Draft
wants to merge 2 commits into
base: main
Choose a base branch
from

Conversation

hkiyomaru
Copy link
Member

This PR addresses the issue #22.

@hkiyomaru hkiyomaru requested review from odashi and YumaTsuta August 23, 2024 04:51
@hkiyomaru
Copy link
Member Author

hkiyomaru commented Aug 23, 2024

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

  • run_llm-jp-eval.sh のモデル名,W&B run name 以外の設定(W&B entity name とか)も外部から編集できると便利かも?
  • run_llm-jp-eval.sh の終了コードを見て評価済みモデルのリストに追記するかどうか判定すべきかも?
    • ノード不良等で頻繁にジョブが落ちるなら実装したいが,今のところ一旦そこまでしなくて良いかも?
  • チェックポイントの保存中にジョブが起動すると中途半端なチェックポイントを読み込もうとしてエラーになるかも?
    • Lock ファイルを作成・参照するのが正攻法.評価前に sleep(t) (t: チェックポイントの保存にかかる時間) しておくという workaround もありそう.

@YumaTsuta
Copy link
Collaborator

YumaTsuta commented Aug 23, 2024

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
Copy link
Member

odashi commented Aug 24, 2024

定期実行じゃないですが、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
Copy link
Member

odashi commented Aug 24, 2024

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

#!/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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants