TRL documentation

Unsloth統合

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v1.17.1).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

Unsloth統合

Unslothは、LLM(Llama、OpenAI gpt-oss、Mistral、Gemma、DeepSeekなど)のファインチューニングと強化学習のためのオープンソースフレームワークです。VRAMを最大80%削減しながら、最大2倍の速度で学習できます。Unslothを使用すると、学習、評価、実行、およびllama.cpp、Ollama、vLLMなどの他の推論エンジンでのデプロイを行うことができます。

このライブラリは、学習、評価、推論、デプロイのための、Hugging Face 互換の簡素化されたワークフローを提供し、SFTTrainer と完全に互換性があります。

主な機能

  • すべてのTransformer互換モデルのトレーニングサポート: テキストから音声への変換 (TTS)、マルチモーダル、BERT、強化学習など
  • フルファインチューニング、事前学習、LoRA、QLoRA、8ビット学習などをサポート
  • Linux、Windows、Colab、Kaggleで動作します。NVIDIA GPUに対応し、近々AMDおよびIntelの環境にも対応予定です。
  • TRLがサポートするほとんどの機能、RLHF(GSPO、GRPO、DPOなど)を含む
  • 手書きのTritonカーネルと手動のバックプロパゲーションエンジンにより、精度の劣化(近似誤差0%)がないことを保証します

インストール

pip install

ローカルインストール(Linux 推奨):

pip install unsloth

unslothは、公式ドキュメントに従ってインストールすることもできます。インストールが完了すると、非常にシンプルな方法でワークフローにunslothを組み込むことができます。AutoModelForCausalLMを読み込む代わりに、次のようにFastLanguageModelを読み込むだけです。

import torch
from trl import SFTConfig, SFTTrainer
from unsloth import FastLanguageModel

max_length = 2048 # Supports automatic RoPE Scaling, so choose any number

# Load model
model, tokenizer = FastLanguageModel.from_pretrained(
    model_name="unsloth/mistral-7b",
    max_seq_length=max_length,
    dtype="auto",  # For auto-detection. Float16 for Tesla T4, V100, Bfloat16 for Ampere+
    load_in_4bit=True,  # Use 4bit quantization to reduce memory usage. Can be False
)

# Do model patching and add fast LoRA weights
model = FastLanguageModel.get_peft_model(
    model,
    r=16,
    target_modules=[
        "q_proj",
        "k_proj",
        "v_proj",
        "o_proj",
        "gate_proj",
        "up_proj",
        "down_proj",
    ],
    lora_alpha=16,
    lora_dropout=0,  # Dropout = 0 is currently optimized
    bias="none",  # Bias = "none" is currently optimized
    use_gradient_checkpointing=True,
    random_state=3407,
)

training_args = SFTConfig(output_dir="./output", max_length=max_length)

trainer = SFTTrainer(
    model=model,
    args=training_args,
    train_dataset=dataset,
)
trainer.train()

保存されたモデルは、Hugging Faceのtransformersライブラリと完全に互換性があります。unslothの詳細については、公式リポジトリをご覧ください。

Dockerでのインストール

docker run -d -e JUPYTER_PASSWORD="mypassword" \
  -p 8888:8888 -p 2222:22 \
  -v $(pwd)/work:/workspace/work \
  --gpus all \
  unsloth/unsloth

http://localhost:8888 で Jupyter Lab にアクセスし、ファインチューニングを開始してください!

トレーニング

これは、学習前に切り替え可能な一部の主要な設定です:

  • max_seq_length = 2048 – コンテキスト長を制御します。Llama-3 は 8192 をサポートしていますが、テストには 2048 を推奨します。Unsloth を使用すると、4 倍の長いコンテキストでのファインチューニングが可能になります。
  • dtype = "auto" – 自動検出に使用します。新しい GPU では torch.float16 または torch.bfloat16 を使用してください。
  • load_in_4bit = True – 4ビット量子化を有効にし、ファインチューニング時のメモリ使用量を4分の1に削減します。無効にすると、LoRA 16ビットファインチューニングを有効にできます。
  • フルファインチューニング(FFT)を有効にするには、full_finetuning = Trueを設定します。8ビットファインチューニングを行うには、load_in_8bit = Trueを設定します。注意: 一度にTrueに設定できる学習方法は1つのみです。

Unslothのハイパーパラメータや機能の設定に関する詳細については、こちらのドキュメントガイドをご覧ください。

モデルの保存

Unslothを使用すると、ファインチューニングしたモデルをLoRAアダプターと呼ばれる小さなファイルとして直接保存できます。モデルをアップロードしたい場合は、Hugging Faceハブにプッシュすることもできます。Hugging Faceトークンを取得し、トークンを追加することを忘れないでください。

GGUF形式での保存

GGUF形式で保存するには、Unslothはllama.cppを使用します。ローカルに保存するには:

model.save_pretrained_gguf("directory", tokenizer, quantization_method = "q4_k_m")
model.save_pretrained_gguf("directory", tokenizer, quantization_method = "q8_0")
model.save_pretrained_gguf("directory", tokenizer, quantization_method = "f16")

ハブにプッシュするには:

model.push_to_hub_gguf("hf_username/directory", tokenizer, quantization_method = "q4_k_m")
model.push_to_hub_gguf("hf_username/directory", tokenizer, quantization_method = "q8_0")

vLLM への保存

vLLM用に16ビットで保存するには、以下を使用します:

model.save_pretrained_merged("model", tokenizer, save_method = "merged_16bit",)
model.push_to_hub_merged("hf/model", tokenizer, save_method = "merged_16bit", token = "")
Update on GitHub