Lokasi ngalangkungan proxy:   [ UP ]  
[Ngawartoskeun bug]   [Panyetelan cookie]                
Skip to content

retrieva/llm-tuning

Repository files navigation

LLM Tuning Toolkit

Install

$ uv sync

or

$ pip install -e .

flash-attention など

一部の依存関係は手動でインストールする必要があります。以下のコマンドを実行してください。

flash-attention などは環境に応じてインストール方法が異なるため、pyproject や lock ファイルでは追跡していません。

また、適宜 uv コマンドを付与してください。

$ pip install ninja
$ MAX_JOBS=$(nproc) pip install flash-attention --no-build-isolation

CUDA について、 pytorch のビルドバージョンが合わない旨のエラーが出たら以下の処理を実施してください。

$ pip uninstall torch
$ pip install torch --torch-backend=auto

Usage

Data Format

現在学習に使用するデータフォーマットとして、以下の 2 種類をサポートしています。 実行時は dataset_type で指定できます。

  1. huggingface: HuggingFace Dataset
  2. openai: 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 Data Type

OpenAI Tuning Format のデータを使用する場合、2種類の TRL データフォーマットをサポートしています。 実行時は trl_data_format で指定できます。

  1. conversational: 会話形式のデータフォーマット
  2. standard: 標準的なプロンプト・レスポンス形式のデータフォーマット

違いとしては、conversational は system prompt などのいわゆる chat template の部分はデータセットに含む必要がなく、Tuning したいモデルのものを使用する形になります。 standard は system prompt を含めた完全なプロンプト・レスポンス形式でデータセットを用意する必要があります。

Training

SFT と DPO の学習が可能です。

SFT

$ 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

DPO

$ 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=16

How to Contribute

コードフォーマットと静的解析

pre-commit を使用しています。フォーマットと静的解析が実行されます。

$ uv run pre-commit run --all-files

また、コミット時に自動で実行されるように設定されています。

$ uv run pre-commit install

開発ブランチについて

開発は dev ブランチで行い、安定版リリース時に main ブランチへマージするフローを採用しています。

開発時には dev ブランチから新規ブランチを切って作業を行い、作業完了後に dev ブランチへプルリクエストを送る形でお願いします。

About

ローカル LLM をチューニングするライブラリです

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages