Skip to main content

unsloth-fine-tuning

Fast LLM fine-tuning with Unsloth - 2-5x faster training, 50-80% less VRAM. Use for single-GPU LoRA/QLoRA SFT, GRPO/RL reasoning training, vision/TTS fine-tuning, and GGUF export to Ollama/vLLM/llama.cpp. Supports 300+ models including Llama, Qwen, Gemma, DeepSeek, Mistral, Phi, and gpt-oss.

ソース情報

リポジトリ
synthetic-sciences/openscience
ソースの最終更新活動
2026年9月20日 11:36
検出された SKILL.md の言語
英語
スター
4,004
フォーク
526

インストール方法

デフォルトでは、最初にソースを確認する Prompt が選択されています。直接コマンドに切り替えるか、ローカルコピーをダウンロードすることもできます。

ソースファイルを確認

インストールを決める前に、SKILL.md と SkillsMP に表示されている付属ファイルをお読みください。

ファイルエクスプローラー
41 ファイル

SKILL.md を表示中

SKILL.md
ソースの指示 · 読み取り専用プレビュー
name
unsloth-fine-tuning
description
Fast LLM fine-tuning with Unsloth - 2-5x faster training, 50-80% less VRAM. Use for single-GPU LoRA/QLoRA SFT, GRPO/RL reasoning training, vision/TTS fine-tuning, and GGUF export to Ollama/vLLM/llama.cpp. Supports 300+ models including Llama, Qwen, Gemma, DeepSeek, Mistral, Phi, and gpt-oss.
category
ml-training
version
1.0.0
author
Synthetic Sciences
license
MIT
tags
["Fine-Tuning","Unsloth","LoRA","QLoRA","GRPO","RL","Vision","TTS","GGUF","Ollama","vLLM","Fast Training","Memory-Efficient"]
dependencies
["unsloth","torch>=2.1.0","transformers>=4.45.0","trl>=0.15.0","datasets","peft","xformers"]
metadata
{"upstream":"Orchestra-Research/AI-Research-SKILLs","upstream-url":"https://github.com/Orchestra-Research/AI-Research-SKILLs","upstream-path":"unsloth","upstream-license":"MIT","upstream-relationship":"adapted and rewritten","skill-author":"Synthetic Sciences","adapted-by":"Synthetic Sciences"}
# Unsloth - Fast LLM Fine-Tuning Fine-tune LLMs 2-5x faster with 50-80% less VRAM. Supports SFT, RL (GRPO), vision, TTS, and 300+ models with zero accuracy loss. ## When to Use Unsloth **Use Unsloth when:** - Fine-tuning on a single GPU with LoRA/QLoRA (consumer or datacenter) - Training reasoning models with GRPO, Dr. GRPO, DAPO, BNPO, or GSPO - Fine-tuning vision models (Qwen3-VL, Gemma 3, Llama 3.2 Vision) - Fine-tuning TTS models (Orpheus, Sesame-CSM, Whisper) - Exporting to GGUF for Ollama, llama.cpp, or LM Studio - Need padding-free training and uncontaminated packing (automatic) - Using FP8 precision for additional memory savings on Ampere+ GPUs **Don't use Unsloth when:** - Multi-node distributed training at scale (Unsloth DDP works but is single-node) - Apple Silicon / MLX (not yet supported) - Full fine-tuning of 70B+ models (use DeepSpeed + Transformers) - Custom architectures not supported by `transformers` - Cloud-managed training without GPU access (use Tinker instead) **Unsloth vs Alternatives:** | Need | Use | |------|-----| | Fast single-GPU LoRA/QLoRA | **Unsloth** | | Managed cloud LoRA training | Tinker | | Parameter-efficient methods (IA3, Prefix, etc.) | PEFT | | Multi-node distributed training | DeepSpeed + Transformers | | YAML-config-driven training | Axolotl | | Full fine-tuning with FSDP | Transformers + Accelerate | ## Quick Reference | Topic | Documentation | |-------|---------------| | Overview & Features | [docs/overview.md](docs/overview.md) | | Installation (pip) | [docs/installation-pip.md](docs/installation-pip.md) | | Installation (Docker) | [docs/installation-docker.md](docs/installation-docker.md) | | Model Selection Guide | [docs/model-selection.md](docs/model-selection.md) | | VRAM Requirements | [docs/requirements.md](docs/requirements.md) | | Model Catalog (300+) | [docs/models.md](docs/models.md) | | Datasets & Formatting | [docs/datasets.md](docs/datasets.md) | | Chat Templates | [docs/chat-templates.md](docs/chat-templates.md) | | LoRA Hyperparameters | [docs/lora-hyperparameters.md](docs/lora-hyperparameters.md) | | GRPO RL Tutorial | [docs/tutorial-grpo.md](docs/tutorial-grpo.md) | | Advanced RL Parameters | [docs/advanced-rl.md](docs/advanced-rl.md) | | Memory-Efficient RL | [docs/memory-efficient-rl.md](docs/memory-efficient-rl.md) | | Vision Fine-Tuning | [docs/vision-fine-tuning.md](docs/vision-fine-tuning.md) | | Vision RL (VLM GRPO) | [docs/vision-rl.md](docs/vision-rl.md) | | TTS Fine-Tuning | [docs/tts-fine-tuning.md](docs/tts-fine-tuning.md) | | Saving to GGUF | [docs/saving-to-gguf.md](docs/saving-to-gguf.md) | | Saving to Ollama | [docs/saving-to-ollama.md](docs/saving-to-ollama.md) | | vLLM Deployment | [docs/vllm-guide.md](docs/vllm-guide.md) | | FP8 Training | [docs/fp8-rl.md](docs/fp8-rl.md) | | FP16 vs BF16 for RL | [docs/fp16-vs-bf16.md](docs/fp16-vs-bf16.md) | | Multi-GPU DDP | [docs/multi-gpu-ddp.md](docs/multi-gpu-ddp.md) | | Kernels & Packing | [docs/kernels-packing.md](docs/kernels-packing.md) | | Inference | [docs/inference.md](docs/inference.md) | | Troubleshooting | [docs/troubleshooting-faq.md](docs/troubleshooting-faq.md) | | Troubleshooting Inference | [docs/troubleshooting-inference.md](docs/troubleshooting-inference.md) | ## Installation ```bash # Recommended (pip) pip install unsloth # With vLLM (for GRPO fast inference) pip install uv && uv pip install unsloth vllm # Docker (all dependencies pre-installed) docker run -d -e JUPYTER_PASSWORD="mypassword" \ -p 8888:8888 --gpus all -v $(pwd)/work:/workspace/work \ unsloth/unsloth ``` **Requirements:** Linux or Windows (WSL), NVIDIA GPU with CUDA Capability 7.0+ (V100, T4, RTX 20-50, A100, H100, L40). AMD and Intel GPUs also supported. Python 3.10-3.13. --- ## Workflow 1: SFT (Supervised Fine-Tuning) Use this for standard instruction tuning, chat fine-tuning, or domain adaptation. ### Checklist - [ ] Prepare dataset in ShareGPT, ChatML, or Alpaca format - [ ] Choose base vs instruct model (see Model Selection below) - [ ] Select QLoRA (4-bit) or LoRA (16-bit) based on VRAM - [ ] Set hyperparameters (rank, alpha, LR, epochs) - [ ] Run training with SFTTrainer - [ ] Save and deploy (LoRA adapter, merged 16-bit, or GGUF) ### Implementation ```python from unsloth import FastLanguageModel from trl import SFTTrainer, SFTConfig from datasets import load_dataset # Step 1: Load model (QLoRA 4-bit) model, tokenizer = FastLanguageModel.from_pretrained( model_name="unsloth/Qwen3-8B-bnb-4bit", # or any HF model max_seq_length=2048, load_in_4bit=True, # False for LoRA 16-bit ) # Step 2: Add LoRA adapters model = FastLanguageModel.get_peft_model( model, r=16, # Rank: 8-128 (16-32 recommended) lora_alpha=16, # Alpha: equal to r or 2*r lora_dropout=0, # 0 is default, use 0.05-0.1 for regularization target_modules=["q_proj", "k_proj", "v_proj", "o_proj", "gate_proj", "up_proj", "down_proj"], use_gradient_checkpointing="unsloth", # 30% less VRAM use_rslora=False, # True for rank-stabilized LoRA ) # Step 3: Prepare dataset dataset = load_dataset("philschmid/dolly-15k-oai-style", split="train") # Step 4: Train trainer = SFTTrainer( model=model, tokenizer=tokenizer, train_dataset=dataset, args=SFTConfig( output_dir="./sft-output", per_device_train_batch_size=2, gradient_accumulation_steps=4, # Effective batch = 2*4 = 8 num_train_epochs=3, learning_rate=2e-4, fp16=True, # or bf16=True logging_steps=10, optim="adamw_8bit", max_seq_length=2048, packing=True, # Uncontaminated packing (2-5x faster) ), ) trainer.train() # Step 5: Save model.save_pretrained("lora_adapter") # LoRA only (~6MB) tokenizer.save_pretrained("lora_adapter") ``` ### Data Formats | Format | Template | Use Case | |--------|----------|----------| | ShareGPT | `{"conversations": [{"from": "human", ...}]}` | Multi-turn chat, instruct models | | ChatML / OpenAI | `{"messages": [{"role": "user", ...}]}` | OpenAI-compatible, instruct models | | Alpaca | `{"instruction": ..., "input": ..., "output": ...}` | Single-turn tasks, base models | | Raw text | Plain text corpus | Continued pretraining | Use `get_chat_template(tokenizer, chat_template="chatml")` to apply templates. Use `standardize_sharegpt(dataset)` for ShareGPT-formatted data with non-standard keys. ### Training on Completions Only Mask user inputs so loss is only computed on assistant responses: ```python from unsloth.chat_templates import train_on_responses_only trainer = train_on_responses_only( trainer, instruction_part="<|start_header_id|>user<|end_header_id|>\n\n", # Llama 3.x response_part="<|start_header_id|>assistant<|end_header_id|>\n\n", ) # For Gemma: instruction_part="<start_of_turn>user\n", response_part="<start_of_turn>model\n" ``` **Sources:** [docs/datasets.md](docs/datasets.md), [docs/chat-templates.md](docs/chat-templates.md), [docs/lora-hyperparameters.md](docs/lora-hyperparameters.md) --- ## Workflow 2: RL Training (GRPO) Use this for training reasoning models with reward functions — math, code, format compliance, verifiable tasks. ### Checklist - [ ] Define reward function(s) returning float scores - [ ] Choose model and enable vLLM fast inference - [ ] Enable Unsloth Standby for memory-efficient RL - [ ] Configure GRPOConfig with num_generations, epsilon, loss_type - [ ] Monitor reward curves and KL divergence - [ ] Save and export model ### Implementation ```python import os os.environ["UNSLOTH_VLLM_STANDBY"] = "1" # Memory-efficient RL from unsloth import FastLanguageModel import torch import re model, tokenizer = FastLanguageModel.from_pretrained( model_name="unsloth/Qwen3-8B", max_seq_length=2048, load_in_4bit=True, # False for LoRA 16-bit fast_inference=True, # Enable vLLM for fast generation max_lora_rank=32, gpu_memory_utilization=0.9, # Reduce if OOM ) model = FastLanguageModel.get_peft_model( model, r=32, lora_alpha=64, target_modules=["q_proj", "k_proj", "v_proj", "o_proj", "gate_proj", "up_proj", "down_proj"], use_gradient_checkpointing="unsloth", ) # Define reward functions def correctness_reward(completions, answer, **kwargs): scores = [] for completion in completions: match = re.search(r"<answer>(.*?)</answer>", completion, re.DOTALL) extracted = match.group(1).strip() if match else "" scores.append(1.0 if extracted == answer else 0.0) return scores def format_reward(completions, **kwargs): pattern = r"<reasoning>.*?</reasoning>\s*<answer>.*?</answer>" return [1.0 if re.search(pattern, c, re.DOTALL) else 0.0 for c in completions] # Train from trl import GRPOConfig, GRPOTrainer training_args = GRPOConfig( output_dir="./grpo-output", per_device_train_batch_size=2, gradient_accumulation_steps=4, learning_rate=5e-6, num_generations=8, # Rollouts per prompt max_completion_length=512, max_prompt_length=512, max_steps=250, temperature=1.0, # RL algorithm variants loss_type="dapo", # "grpo", "dr_grpo", "dapo", "bnpo" epsilon=0.2, epsilon_high=0.28, # DAPO upper clipping scale_rewards="none", # Dr. GRPO: no reward scaling optim="adamw_8bit", report_to="none", ) trainer = GRPOTrainer( model=model, processing_class=tokenizer, args=training_args, train_dataset=dataset, reward_funcs=[correctness_reward, format_reward], ) trainer.train() # Save model.save_lora("grpo_saved_lora") ``` ### RL Algorithm Variants | Algorithm | `loss_type` | Key Setting | Notes | |-----------|-------------|-------------|-------| | GRPO | `"grpo"` | Default | Standard group relative policy optimization | | Dr. GRPO | `"dr_grpo"` | `scale_rewards="none"` | No reward normalization, more stable | | DAPO | `"dapo"` | `epsilon_high=0.28` | Two-sided clipping, recommended default | | BNPO | `"bnpo"` | — | Bounded negative policy optimization | | GSPO | any | `importance_sampling_level="sequence"` | Sequence-level importance weighting (Qwen team) | ### Unsloth Standby (Memory-Efficient RL) Set `os.environ["UNSLOTH_VLLM_STANDBY"] = "1"` before imports. This shares vLLM's weight space with training and repurposes KV cache memory during training — saving up to 60% VRAM. On H100 80GB: 16GB shared weights + 64GB multi-purpose space. **Sources:** [docs/tutorial-grpo.md](docs/tutorial-grpo.md), [docs/advanced-rl.md](docs/advanced-rl.md), [docs/memory-efficient-rl.md](docs/memory-efficient-rl.md) --- ## Workflow 3: Vision Fine-Tuning Use this for training vision-language models on image+text tasks. ### Implementation ```python from unsloth import FastVisionModel from trl import SFTTrainer, SFTConfig from unsloth.trainer import UnslothVisionDataCollator model, tokenizer = FastVisionModel.from_pretrained(
GitHubで見る
この SKILL.md は非常に大きいため、SkillsMP では最初のセクションだけを表示しています。 GitHubで見る