Transformers documentation
Unsloth
はじめに
ベースクラス
モデル
プリプロセッサ
推論
Pipeline API
Generate API
最適化
モデルとチャットする
サービング
トレーニング
ハードウェア
量子化
エコシステム統合
リソース
API
You are viewing main version, which requires installation from source. If you'd like
regular pip install, checkout the latest stable version (v5.22.1).
Unsloth
Unsloth は、大規模言語モデルの学習を高速化し、メモリ使用量を削減するファインチューニングおよび強化学習フレームワークです。カスタム RoPE および Triton カーネルを用いた 4 ビット、8 ビット、16 ビットの精度での学習に対応しています。Unsloth は Llama、Mistral、Gemma、Qwen など、さまざまなモデルファミリーと互換性があります。
from datasets import load_dataset
from transformers import TrainingArguments
from unsloth import FastLanguageModel
from unsloth.trainer import UnslothTrainer
model, tokenizer = FastLanguageModel.from_pretrained(
model_name="unsloth/Llama-3.2-1B-Instruct",
max_seq_length=2048,
load_in_4bit=True,
)
model = FastLanguageModel.get_peft_model(
model,
r=16,
lora_alpha=16,
target_modules=["q_proj", "k_proj", "v_proj", "o_proj", "gate_proj", "up_proj", "down_proj"],
)
dataset = load_dataset("trl-lib/Capybara", split="train[:500]")
dataset = dataset.map(lambda x: {"text": x["conversations"][0]["value"]})
trainer = UnslothTrainer(
model=model,
tokenizer=tokenizer,
train_dataset=dataset,
dataset_text_field="text",
max_seq_length=2048,
args=TrainingArguments(
output_dir="outputs",
per_device_train_batch_size=2,
num_train_epochs=1,
),
)
trainer.train()Transformers の統合
Unsloth は Transformers の API をラップし、内部メソッドをパッチすることで高速化を実現しています。
FastLanguageModel.from_pretrainedloads config with AutoConfig.from_pretrained(). It then loads a base model with AutoModelForCausalLM.from_pretrained(). Before loading, Unsloth patches attention, decoder layer, and rotary embedding classes inside a Transformers model.UnslothTrainerは TRL の SFTTrainer を拡張しています。Unsloth は compute_loss() と training_step() をパッチ適用し、旧バージョンの Transformers における勾配蓄積の問題を修正します。
リソース
- Unsloth ドキュメント
- Unsloth と TRL で LLM のファインチューニングを 2 倍速にする ブログ記事