$ uv syncor
$ pip install -e .一部の依存関係は手動でインストールする必要があります。以下のコマンドを実行してください。
flash-attention などは環境に応じてインストール方法が異なるため、pyproject や lock ファイルでは追跡していません。
また、適宜 uv コマンドを付与してください。
$ pip install ninja$ MAX_JOBS=$(nproc) pip install flash-attention --no-build-isolationCUDA について、 pytorch のビルドバージョンが合わない旨のエラーが出たら以下の処理を実施してください。
$ pip uninstall torch
$ pip install torch --torch-backend=auto現在学習に使用するデータフォーマットとして、以下の 2 種類をサポートしています。
実行時は dataset_type で指定できます。
huggingface: HuggingFace Datasetopenai: OpenAI Tuning Format
HuggingFace Dataset については、TRL のサポートしているフォーマットであれば使用可能となっています。
OpenAI Tuning Format については、JSONL 形式で以下のようなフォーマットを想定しています。
SFT 用データ例
{"messages": [{"role": "user", "content": str}, {"role": "assistant", "content": str}]}
{"messages": [{"role": "user", "content": str}, {"role": "assistant", "content": str}]}DPO 用データ例
{"input": {"messages": [{"role": "user", "content": str}]}, "preferred_output": [{"role": "assistant", "content": str}], "non_preferred_output": [{"role": "assistant", "content": str}]}
{"input": {"messages": [{"role": "user", "content": str}]}, "preferred_output": [{"role": "assistant", "content": str}], "non_preferred_output": [{"role": "assistant", "content": str}]}OpenAI Tuning Format のデータを使用する場合、2種類の TRL データフォーマットをサポートしています。
実行時は trl_data_format で指定できます。
conversational: 会話形式のデータフォーマットstandard: 標準的なプロンプト・レスポンス形式のデータフォーマット
違いとしては、conversational は system prompt などのいわゆる chat template の部分はデータセットに含む必要がなく、Tuning したいモデルのものを使用する形になります。
standard は system prompt を含めた完全なプロンプト・レスポンス形式でデータセットを用意する必要があります。
SFT と DPO の学習が可能です。
$ uv run python scripts/train.py \
model_name_or_path=${BASE_MODEL} \
dataset_name=${DATASET_PATH} \
output_dir=${OUTPUT_DIR} \
model_args.use_peft=true \
training_args.bf16=true \
training_args.per_device_train_batch_size=32 \
training_args.gradient_accumulation_steps=1 \
training_args.num_train_epochs=3 \
model_args.lora_r=8 \
model_args.lora_alpha=16$ uv run python scripts/train.py \
--config-name config_dpo \
model_name_or_path=${BASE_MODEL} \
dataset_name=${DATASET_PATH} \
output_dir=${OUTPUT_DIR} \
model_args.use_peft=true \
training_args.bf16=true \
training_args.per_device_train_batch_size=32 \
training_args.gradient_accumulation_steps=1 \
training_args.num_train_epochs=3 \
model_args.lora_r=8 \
model_args.lora_alpha=16pre-commit を使用しています。フォーマットと静的解析が実行されます。
$ uv run pre-commit run --all-filesまた、コミット時に自動で実行されるように設定されています。
$ uv run pre-commit install開発は dev ブランチで行い、安定版リリース時に main ブランチへマージするフローを採用しています。
開発時には dev ブランチから新規ブランチを切って作業を行い、作業完了後に dev ブランチへプルリクエストを送る形でお願いします。