Twitter (auch bekannt als X)
Folgen Sie uns auf X | |
Installation | unsloth/README.md |
Benchmarking | Leistungstabellen |
Freigegebene Modelle | Unsloth-Veröffentlichungen |
Blog | Lesen Sie unsere Blogs |
Alle Kernel sind in der Triton-Sprache von OpenAI geschrieben. Manueller Backprop-Motor .
0 % Genauigkeitsverlust – keine Näherungsmethoden – alles exakt.
Keine Änderung der Hardware. Unterstützt NVIDIA-GPUs seit 2018+. Mindestens CUDA-Fähigkeit 7.0 (V100, T4, Titan V, RTX 20, 30, 40x, A100, H100, L40 usw.) Überprüfen Sie Ihre GPU! GTX 1070, 1080 funktioniert, ist aber langsam.
Funktioniert unter Linux und Windows über WSL.
Unterstützt 4-Bit- und 16-Bit-QLoRA/LoRA-Feinabstimmung über Bitsandbytes.
Open Source trainiert 5x schneller – siehe Unsloth Pro für bis zu 30x schnelleres Training !
Wenn Sie ein Model mit „Unsloth“ trainiert haben, können Sie diesen coolen Aufkleber verwenden!
Die vollständige Liste der reproduzierbaren Benchmarking-Tabellen finden Sie auf unserer Website
1 A100 40 GB | ?Umarmendes Gesicht | Blitzaufmerksamkeit | ?Unsloth Open Source | ?Unsloth Pro |
---|---|---|---|---|
Alpaka | 1x | 1,04x | 1,98x | 15,64x |
LAION Chip2 | 1x | 0,92x | 1,61x | 20,73x |
OASST | 1x | 1,19x | 2,17x | 14,83x |
Schlanker Orca | 1x | 1,18x | 2,22x | 14,82x |
Die folgende Benchmarking-Tabelle wurde von „Hugging Face“ durchgeführt.
Kostenloses Colab T4 | Datensatz | ?Umarmendes Gesicht | Pytorch 2.1.1 | „Unfault | ? VRAM-Reduzierung |
---|---|---|---|---|---|
Lama-2 7b | OASST | 1x | 1,19x | 1,95x | -43,3 % |
Mistral 7b | Alpaka | 1x | 1,07x | 1,56x | -13,7 % |
Winziges Lama 1.1b | Alpaka | 1x | 2,06x | 3,87x | -73,8 % |
Datenschutzbeauftragter mit Zephyr | Ultra-Chat | 1x | 1,09x | 1,55x | -18,6 % |
Für stabile Versionen verwenden Sie pip install unsloth
. Für die meisten Installationen empfehlen wir jedoch pip install "unsloth[colab-new] @ git+https://github.com/unslothai/unsloth.git"
.
️Only use Conda if you have it. If not, use Pip
. Wählen Sie entweder pytorch-cuda=11.8,12.1
für CUDA 11.8 oder CUDA 12.1. Wir unterstützen python=3.10,3.11,3.12
.
conda create --name unsloth_env Python=3.11 pytorch-cuda=12.1 pytorch cudatoolkit xformers -c pytorch -c nvidia -c xformers -y Conda aktiviert unsloth_env pip install „unsloth[colab-new] @ git+https://github.com/unslothai/unsloth.git“pip install --no-deps trl peft beschleunigt Bits und Bytes
mkdir -p ~/miniconda3 wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh -O ~/miniconda3/miniconda.sh bash ~/miniconda3/miniconda.sh -b -u -p ~/miniconda3 rm -rf ~/miniconda3/miniconda.sh~/miniconda3/bin/conda init bash~/miniconda3/bin/conda init zsh
️Do **NOT** use this if you have Conda.
Pip ist etwas komplexer, da es Abhängigkeitsprobleme gibt. Der Befehl pip unterscheidet sich für die Versionen torch 2.2,2.3,2.4,2.5
und CUDA.
Für andere Torch-Versionen unterstützen wir torch211
, torch212
, torch220
, torch230
, torch240
und für CUDA-Versionen unterstützen wir cu118
und cu121
und cu124
. Verwenden Sie für Ampere-Geräte (A100, H100, RTX3090) und höher cu118-ampere
oder cu121-ampere
oder cu124-ampere
.
Wenn Sie beispielsweise torch 2.4
und CUDA 12.1
haben, verwenden Sie:
pip install --upgrade pip pip install „unsloth[cu121-torch240] @ git+https://github.com/unslothai/unsloth.git“
Ein weiteres Beispiel: Wenn Sie torch 2.5
und CUDA 12.4
haben, verwenden Sie:
pip install --upgrade pip pip install „unsloth[cu124-torch250] @ git+https://github.com/unslothai/unsloth.git“
Und weitere Beispiele:
pip install „unsloth[cu121-ampere-torch240] @ git+https://github.com/unslothai/unsloth.git“pip install „unsloth[cu118-ampere-torch240] @ git+https://github.com/ unslothai/unsloth.git"pip install "unsloth[cu121-torch240] @ git+https://github.com/unslothai/unsloth.git"pip install "unsloth[cu118-torch240] @ git+https://github. com/unslothai/unsloth.git"pip install "unsloth[cu121-torch230] @ git+https://github.com/unslothai/unsloth.git"pip install "unsloth[cu121-ampere-torch230] @ git+https: //github.com/unslothai/unsloth.git"pip install "unsloth[cu121-torch250] @ git+https://github.com/unslothai/unsloth.git"pip install "unsloth[cu124-ampere-torch250] @ git+https://github.com/unslothai/unsloth.git"
Oder führen Sie den folgenden Befehl in einem Terminal aus, um den optimalen Pip-Installationsbefehl zu erhalten:
wget -qO- https://raw.githubusercontent.com/unslothai/unsloth/main/unsloth/_auto_install.py | Python -
Oder führen Sie Folgendes manuell in einer Python-REPL aus:
Versuchen Sie: Torch importieren, außer: ImportError('Install Torch via `pip install Torch`') aus package.version import Version as Vv = V(torch.__version__)cuda = str(torch.version.cuda)is_ampere = Torch.cuda erhöhen. get_device_capability()[0] >= 8if cuda != "12.1" und cuda != "11.8" und cuda != "12.4": runtimeError auslösen(f"CUDA = {cuda} nicht unterstützt!")if v <= V ('2.1.0'): raise RuntimeError(f"Torch = {v} too old!")elif v <= V('2.1.1'): x = 'cu{}{}-torch211'elif v < = V('2.1.2'): x = 'cu{}{}-torch212'elif v < V('2.3.0'): x = 'cu{}{}-torch220'elif v < V(' 2.4.0'): x = 'cu{}{}-torch230'elif v < V('2.5.0'): x = 'cu{}{}-torch240'elif v < V('2.6.0') ): x = 'cu{}{}-torch250'else: raise RuntimeError(f"Torch = {v} too new!")x = x.format(cuda.replace(".", ""), "- Ampere" if is_ampere else "")print(f'pip install --upgrade pip && pip install "unsloth[{x}] @ git+https://github.com/unslothai/unsloth.git"')
So führen Sie Unsloth direkt unter Windows aus:
Installieren Sie Triton von diesem Windows-Fork und befolgen Sie die Anweisungen: https://github.com/woct0rdho/triton-windows
Legen Sie im SFTTrainer dataset_num_proc=1
fest, um ein Absturzproblem zu vermeiden:
Trainer = SFTTrainer(dataset_num_proc=1, ... )
Für erweiterte Installationsanweisungen oder wenn bei der Installation seltsame Fehler auftreten:
Installieren Sie torch
und triton
. Gehen Sie zu https://pytorch.org, um es zu installieren. Zum Beispiel pip install torch torchvision torchaudio triton
Überprüfen Sie, ob CUDA korrekt installiert ist. Versuchen Sie es mit nvcc
. Wenn dies fehlschlägt, müssen Sie cudatoolkit
oder CUDA-Treiber installieren.
Installieren Sie xformers
manuell. Sie können versuchen, vllm
zu installieren und zu sehen, ob vllm
erfolgreich ist. Überprüfen Sie, ob xformers
mit python -m xformers.info
erfolgreich war. Gehen Sie zu https://github.com/facebookresearch/xformers. Eine weitere Möglichkeit besteht darin flash-attn
für Ampere-GPUs zu installieren.
Installieren Sie abschließend bitsandbytes
und überprüfen Sie es mit python -m bitsandbytes
Besuchen Sie unsere offizielle Dokumentation zum Speichern in GGUF, zum Checkpointing, zur Auswertung und mehr!
Wir unterstützen den TRL-, Trainer-, Seq2SeqTrainer- oder sogar Pytorch-Code von Huggingface!
Wir sind in den offiziellen Dokumenten von „Hugging Face“! Schauen Sie sich die SFT-Dokumente und DPO-Dokumente an!
from unsloth import FastLanguageModel from unsloth import is_bfloat16_supportedimport Torchfrom trl import SFTTrainerfrom Transformers Import TrainingArgumentsfrom datasets import load_datasetmax_seq_length = 2048 # Unterstützt RoPE-Skalierung intern, also wählen Sie eine beliebige aus!# Get LAION dataseturl = "https://huggingface.co/datasets/laion/OIG/ Resolution/main/unified_chip2.jsonl"dataset = load_dataset("json", data_files = {"train" : url}, split = "train")# 4-Bit vorquantisierte Modelle, die wir für 4x schnelleres Herunterladen unterstützen + keine OOMs.fourbit_models = [ „unsloth/mistral-7b-v0.3-bnb-4bit“, # Neuer Mistral v3 2x schneller!“unsloth/mistral-7b-instruct-v0.3-bnb-4bit“, „unsloth/llama-3-8b- bnb-4bit“, # Llama-3 15 Billionen Tokens modellieren 2x schneller! -3-mini-4k-instruct", # Phi-3 2x schneller!"unsloth/Phi-3-medium-4k-instruct","unsloth/mistral-7b-bnb-4bit","unsloth/gemma-7b- bnb-4bit", # Gemma 2,2x schneller!] # Weitere Modelle unter https://huggingface.co/unslothmodel, tokenizer = FastLanguageModel.from_pretrained(model_name = "unsloth/llama-3-8b-bnb-4bit",max_seq_length = max_seq_length,dtype = None,load_in_4bit = True, )# Führen Sie Modell-Patches durch und fügen Sie schnelle LoRA-Gewichte hinzu. 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, # Unterstützt alle, aber = 0 ist optimiertbias = "none", # Unterstützt alle, aber = "none" ist optimiert# [NEU] "unsloth" verwendet 30 % weniger VRAM, passt für 2x größere Stapelgrößen!use_gradient_checkpointing = "unsloth", # True oder "unsloth" für sehr lange contextrandom_state = 3407,max_seq_length = max_seq_length,use_rslora = False, # Wir unterstützen rangstabilisierte LoRAloftq_config = None, # Und LoftQ)trainer = SFTTrainer( model = model,train_dataset = dataset,dataset_text_field = "text",max_seq_length = max_seq_length,tokenizer = tokenizer,args = TrainingArguments(per_device_train_batch_size = 2,gradient_accumulation_steps = 4,warmup_steps = 10,max_steps = 60,fp16 = not.is_bfloat16_supported(),bf1 6 = is_bfloat16_supported(),logging_steps = 1,output_dir = "outputs",optim = "adamw_8bit",seed = 3407, ), )trainer.train()# Gehen Sie zu https://github.com/unslothai/unsloth/wiki für erweiterte Tipps wie# (1) Speichern auf GGUF / Zusammenführen auf 16bit für vLLM# (2) Fortgesetztes Training von einem gespeicherten LoRA-Adapter # (3) Hinzufügen einer Bewertungsschleife / OOMs# (4) Benutzerdefinierte Chat-Vorlagen
DPO (Direct Preference Optimization), PPO und Reward Modeling scheinen alle zu funktionieren, wie aus unabhängigen Tests von Llama-Factory hervorgeht. Wir haben hier ein vorläufiges Google Colab-Notebook für die Wiedergabe von Zephyr auf dem Tesla T4: Notebook.
Wir sind in den offiziellen Dokumenten von „Hugging Face“! Wir sind bei den SFT-Dokumenten und den DPO-Dokumenten!
import osos.environ["CUDA_VISIBLE_DEVICES"] = "0" # Optional set GPU device IDfrom unsloth import FastLanguageModel, PatchDPOTrainerfrom unsloth import is_bfloat16_supportedPatchDPOTrainer()import Torchfrom Transformers Import TrainingArgumentsfrom trl import DPOTrainermodel, tokenizer = FastLanguageModel.from_pretrained(model_name = "unsloth/ze phyr -sft-bnb-4bit",max_seq_length = max_seq_length,dtype = None,load_in_4bit = True, )# Führen Sie Modell-Patches durch und fügen Sie schnelle LoRA-Gewichte hinzu. model = FastLanguageModel.get_peft_model(model,r = 64,target_modules = ["q_proj", "k_proj", "v_proj", "o_proj", "gate_proj", "up_proj", "down_proj ",],lora_alpha = 64,lora_dropout = 0, # Unterstützt alle, aber = 0 ist optimiertbias = "none", # Unterstützt alle, aber = "none" ist optimiert# [NEU] "unsloth" verwendet 30 % weniger VRAM, passt für 2x größere Stapelgrößen!use_gradient_checkpointing = "unsloth", # True oder "unsloth" für sehr lange contextrandom_state = 3407,max_seq_length = max_seq_length, )dpo_trainer = DPOTrainer(model = model,ref_model = None,args = TrainingArguments(per_device_train_batch_size = 4,gradient_accumulation_steps = 8,warmup_ratio = 0.1,num_train_epochs = 3,fp16 = not is_bfloat16_supported(),bf16 = is_bfloat16_supported(),logging_steps. = 1, optim = "adamw_8bit",seed = 42,output_dir = "outputs", ),beta = 0.1,train_dataset = YOUR_DATASET_HERE,# eval_dataset = YOUR_DATASET_HERE,tokenizer = tokenizer,max_length = 1024,max_prompt_length = 512, )dpo_trainer.train()
Klicken Sie auf „Code“, um vollständig reproduzierbare Beispiele zu erhalten
„Unsloth Equal“ ist eine Vorschau unserer PRO-Version, bei der der Code entfernt wurde. Alle Einstellungen und die Verlustkurve bleiben identisch.
Die vollständige Liste der Benchmarking-Tabellen finden Sie auf unserer Website
1 A100 40 GB | ?Umarmendes Gesicht | Blitzaufmerksamkeit 2 | ?Unsloth Open | Unsloth gleich | Unsloth Pro | Unfault Max |
---|---|---|---|---|---|---|
Alpaka | 1x | 1,04x | 1,98x | 2,48x | 5,32x | 15,64x |
Code | Code | Code | Code | Code | ||
Sekunden | 1040 | 1001 | 525 | 419 | 196 | 67 |
Speicher MB | 18235 | 15365 | 9631 | 8525 | ||
% gespart | 15.74 | 47.18 | 53,25 |
Link zur Leistungstabelle. TGS: Token pro GPU pro Sekunde. Modell: LLaMA2-7B. GPU: NVIDIA A100 * 1. Stapelgröße: 4. Gradientenakkumulation: 2. LoRA-Rang: 8. Maximale Länge: 1024.
Verfahren | Bits | TGS | GRAMM | Geschwindigkeit |
---|---|---|---|---|
HF | 16 | 2392 | 18 GB | 100 % |
HF+FA2 | 16 | 2954 | 17 GB | 123 % |
Unfault+FA2 | 16 | 4007 | 16 GB | 168 % |
HF | 4 | 2415 | 9 GB | 101 % |
Unfault+FA2 | 4 | 3726 | 7 GB | 160 % |
1 A100 40 GB | Umarmendes Gesicht | Blitzaufmerksamkeit 2 | Unsloth öffnen | Unsloth gleich | Unsloth Pro | Unfault Max |
---|---|---|---|---|---|---|
Mistral 7B Slim Orca | 1x | 1,15x | 2,15x | 2,53x | 4,61x | 13,69x |
Code | Code | Code | Code | Code | ||
Sekunden | 1813 | 1571 | 842 | 718 | 393 | 132 |
Speicher MB | 32853 | 19385 | 12465 | 10271 | ||
% gespart | 40,99 | 62.06 | 68,74 |
1 A100 40 GB | Umarmendes Gesicht | Blitzaufmerksamkeit 2 | Unsloth öffnen | Unsloth gleich | Unsloth Pro | Unfault Max |
---|---|---|---|---|---|---|
Code Lama 34B | OOM | 0,99x | 1,87x | 2,61x | 4,27x | 12,82x |
Code | Code | Code | Code | |||
Sekunden | 1953 | 1982 | 1043 | 748 | 458 | 152 |
Speicher MB | 40000 | 33217 | 27413 | 22161 | ||
% gespart | 16.96 | 31.47 | 44,60 |
1 T4 16 GB | Umarmendes Gesicht | Blitzaufmerksamkeit | Unsloth öffnen | Unsloth Pro gleich | Unsloth Pro | Unfault Max |
---|---|---|---|---|---|---|
Alpaka | 1x | 1,09x | 1,69x | 1,79x | 2,93x | 8,3x |
Code | Code | Code | Code | |||
Sekunden | 1599 | 1468 | 942 | 894 | 545 | 193 |
Speicher MB | 7199 | 7059 | 6459 | 5443 | ||
% gespart | 1,94 | 10.28 | 24.39 |
2 T4 DDP | Umarmendes Gesicht | Blitzaufmerksamkeit | Unsloth öffnen | Unsloth gleich | Unsloth Pro | Unfault Max |
---|---|---|---|---|---|---|
Alpaka | 1x | 0,99x | 4,95x | 4,44x | 7,28x | 20,61x |
Code | Code | Code | ||||
Sekunden | 9882 | 9946 | 1996 | 2227 | 1357 | 480 |
Speicher MB | 9176 | 9128 | 6904 | 6782 | ||
% gespart | 0,52 | 24.76 | 26.09 |
Ein Tesla T4 auf Google Colab bsz = 2, ga = 4, max_grad_norm = 0.3, num_train_epochs = 1, seed = 3047, lr = 2e-4, wd = 0.01, optim = "adamw_8bit", schedule = "linear", schedule_steps = 10
System | GPU | Alpaka (52K) | LAION OIG (210K) | Assistent öffnen (10K) | SlimOrca (518K) |
---|---|---|---|---|---|
Umarmendes Gesicht | 1 T4 | 23h 15m | 56h 28m | 8h 38m | 391h 41m |
Unsloth öffnen | 1 T4 | 13h 7m (1,8x) | 31h 47m (1,8x) | 4h 27m (1,9x) | 240h 4m (1,6x) |
Unsloth Pro | 1 T4 | 3h 6m (7,5x) | 5h 17m (10,7x) | 1h 7m (7,7x) | 59h 53m (6,5x) |
Unfault Max | 1 T4 | 2h 39m (8,8x) | 4h 31m (12,5x) | 0h 58m (8,9x) | 51h 30m (7,6x) |
Spitzenspeichernutzung
System | GPU | Alpaka (52K) | LAION OIG (210K) | Assistent öffnen (10K) | SlimOrca (518K) |
---|---|---|---|---|---|
Umarmendes Gesicht | 1 T4 | 7,3 GB | 5,9 GB | 14,0 GB | 13,3 GB |
Unsloth öffnen | 1 T4 | 6,8 GB | 5,7 GB | 7,8 GB | 7,7 GB |
Unsloth Pro | 1 T4 | 6,4 GB | 6,4 GB | 6,4 GB | 6,4 GB |
Unfault Max | 1 T4 | 11,4 GB | 12,4 GB | 11,9 GB | 14,4 GB |
Zwei Tesla T4s auf Kaggle bsz = 2, ga = 4, max_grad_norm = 0.3, num_train_epochs = 1, seed = 3047, lr = 2e-4, wd = 0.01, optim = "adamw_8bit", schedule = "linear", schedule_steps = 10
System | GPU | Alpaka (52K) | LAION OIG (210K) | Assistent öffnen (10K) | SlimOrca (518K) * |
---|---|---|---|---|---|
Umarmendes Gesicht | 2 T4 | 84h 47m | 163h 48m | 30h 51m | 1301h 24m * |
Unsloth Pro | 2 T4 | 3h 20m (25,4x) | 5h 43m (28,7x) | 1h 12m (25,7x) | 71h 40m (18,1x) * |
Unfault Max | 2 T4 | 3h 4m (27,6x) | 5h 14m (31,3x) | 1h 6m (28,1x) | 54h 20m (23,9x) * |
Spitzenspeicherauslastung auf einem Multi-GPU-System (2 GPUs)
System | GPU | Alpaka (52K) | LAION OIG (210K) | Assistent öffnen (10K) | SlimOrca (518K) * |
---|---|---|---|---|---|
Umarmendes Gesicht | 2 T4 | 8,4 GB | 6 GB | 7,2 GB | 5,3 GB | 14,3 GB | 6,6 GB | 10,9 GB | 5,9 GB * |
Unsloth Pro | 2 T4 | 7,7 GB | 4,9 GB | 7,5 GB | 4,9 GB | 8,5 GB | 4,9 GB | 6,2 GB | 4,7 GB * |
Unfault Max | 2 T4 | 10,5 GB | 5 GB | 10,6 GB | 5 GB | 10,6 GB | 5 GB | 10,5 GB | 5 GB * |
Slim Orca bsz=1
für alle Benchmarks, da bsz=2
OOMs. Wir können mit bsz=2
umgehen, vergleichen es aber aus Gründen der Konsistenz mit bsz=1
.
HuyNguyen-hust, der RoPE Embeddings um 28 % schneller gemacht hat
RandomInternetPreson für die Bestätigung der WSL-Unterstützung
152334H für experimentelle DPO-Unterstützung
atgctg für Syntaxhervorhebung