Twitter (alias X)
Ikuti kami di X | |
Instalasi | tidak malas/README.md |
Pembandingan | Tabel Kinerja |
Model yang Dirilis | Rilis yang Tidak Kemalasan |
blog | Baca Blog kami |
Semua kernel ditulis dalam bahasa Triton OpenAI. Mesin backprop manual .
Kehilangan akurasi 0% - tidak ada metode perkiraan - semuanya tepat.
Tidak ada perubahan perangkat keras. Mendukung GPU NVIDIA sejak 2018+. Kemampuan CUDA Minimum 7.0 (V100, T4, Titan V, RTX 20, 30, 40x, A100, H100, L40 dll) Periksa GPU Anda! GTX 1070, 1080 berfungsi, tetapi lambat.
Bekerja di Linux dan Windows melalui WSL.
Mendukung penyempurnaan QLoRA / LoRA 4bit dan 16bit melalui bitsandbytes.
Latihan sumber terbuka 5x lebih cepat - lihat Unsloth Pro untuk pelatihan hingga 30x lebih cepat !
Jika Anda melatih model dengan ?Unsloth, Anda dapat menggunakan stiker keren ini!
Untuk daftar lengkap tabel pembandingan yang dapat direproduksi , kunjungi situs web kami
1 A100 40GB | ?Memeluk Wajah | Perhatian Kilat | ?Sumber Terbuka yang Tidak Kemalasan | Pro yang Tidak Kemalasan |
---|---|---|---|---|
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 |
Orca Langsing | 1x | 1,18x | 2,22x | 14,82x |
Tabel benchmarking di bawah ini dilakukan oleh ?Hugging Face.
Colab T4 Gratis | Kumpulan data | ?Memeluk Wajah | Pytorch 2.1.1 | ?Tidak malas | ? Pengurangan VRAM |
---|---|---|---|---|---|
Llama-2 7b | OASST | 1x | 1,19x | 1,95x | -43,3% |
Mistral 7b | alpaka | 1x | 1,07x | 1,56x | -13,7% |
Llama Kecil 1.1b | alpaka | 1x | 2,06x | 3,87x | -73,8% |
DPO dengan Zephyr | Obrolan Ultra | 1x | 1,09x | 1,55x | -18,6% |
Untuk rilis stabil, gunakan pip install unsloth
. Kami merekomendasikan pip install "unsloth[colab-new] @ git+https://github.com/unslothai/unsloth.git"
untuk sebagian besar instalasi.
️Only use Conda if you have it. If not, use Pip
. Pilih pytorch-cuda=11.8,12.1
untuk CUDA 11.8 atau CUDA 12.1. Kami mendukung python=3.10,3.11,3.12
.
conda buat --nama unsloth_env ular piton=3.11 pytorch-cuda=12.1 pytorch cudatoolkit xformers -c pytorch -c nvidia -c xformers -y conda aktifkan unsloth_env pip install "unsloth[colab-new] @ git+https://github.com/unslothai/unsloth.git"pip install --no-deps trl peft mempercepat bitsandbytes
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 sedikit lebih rumit karena ada masalah ketergantungan. Perintah pip berbeda untuk versi torch 2.2,2.3,2.4,2.5
dan CUDA.
Untuk versi torch lainnya, kami mendukung torch211
, torch212
, torch220
, torch230
, torch240
dan untuk versi CUDA, kami mendukung cu118
dan cu121
dan cu124
. Untuk perangkat Ampere (A100, H100, RTX3090) dan yang lebih baru, gunakan cu118-ampere
atau cu121-ampere
atau cu124-ampere
.
Misalnya, jika Anda memiliki torch 2.4
dan CUDA 12.1
, gunakan:
instalasi pip --upgrade pip instalasi pip "unsloth[cu121-torch240] @ git+https://github.com/unslothai/unsloth.git"
Contoh lain, jika Anda memiliki torch 2.5
dan CUDA 12.4
, gunakan:
instalasi pip --upgrade pip instalasi pip "unsloth[cu124-torch250] @ git+https://github.com/unslothai/unsloth.git"
Dan contoh lainnya:
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"
Atau, jalankan perintah di bawah ini di terminal untuk mendapatkan perintah instalasi pip yang optimal :
wget -qO- https://raw.githubusercontent.com/unslothai/unsloth/main/unsloth/_auto_install.py | ular piton -
Atau, jalankan perintah di bawah ini secara manual dengan Python REPL:
coba: impor torchkecuali: naikkan ImportError('Instal obor melalui `pip install torch`')dari kemasan.versi impor Versi sebagai Vv = V(torch.__version__)cuda = str(torch.version.cuda)is_ampere = torch.cuda. get_device_capability()[0] >= 8if cuda != "12.1" dan cuda != "11.8" dan cuda != "12.4": naikkan RuntimeError(f"CUDA = {cuda} tidak didukung!")if v <= V ('2.1.0'): naikkan RuntimeError(f"Torch = {v} terlalu tua!")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: naikkan RuntimeError(f"Torch = {v} terlalu baru!")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"')
Untuk menjalankan Unsloth langsung di Windows:
Instal Triton dari fork Windows ini dan ikuti petunjuknya: https://github.com/woct0rdho/triton-windows
Di SFTTrainer, setel dataset_num_proc=1
untuk menghindari masalah error:
pelatih = SFTTrainer(dataset_num_proc=1, ... )
Untuk petunjuk instalasi lanjutan atau jika Anda melihat kesalahan aneh selama instalasi:
Pasang torch
dan triton
. Kunjungi https://pytorch.org untuk menginstalnya. Misalnya pip install torch torchvision torchaudio triton
Konfirmasikan apakah CUDA diinstal dengan benar. Coba nvcc
. Jika gagal, Anda perlu menginstal driver cudatoolkit
atau CUDA.
Instal xformers
secara manual. Anda dapat mencoba menginstal vllm
dan melihat apakah vllm
berhasil. Periksa apakah xformers
berhasil dengan python -m xformers.info
Buka https://github.com/facebookresearch/xformers. Pilihan lainnya adalah menginstal flash-attn
untuk GPU Ampere.
Terakhir, instal bitsandbytes
dan periksa dengan python -m bitsandbytes
Buka Dokumentasi resmi kami untuk menyimpan ke GGUF, pos pemeriksaan, evaluasi, dan banyak lagi!
Kami mendukung kode TRL, Trainer, Seq2SeqTrainer, atau bahkan Pytorch Huggingface!
Kami ada di dokumen resmi Hugging Face! Lihat dokumen SFT dan dokumen DPO!
from unsloth import FastLanguageModel from unsloth import is_bfloat16_supportedimport torchfrom trl import SFTTrainerfrom transformers import TrainingArgumentsfrom datasets import load_datasetmax_seq_length = 2048 # Mendukung Penskalaan Tali secara interal, jadi pilih mana saja!# Dapatkan LAION dataseturl = "https://huggingface.co/datasets/laion/OIG/ resolve/main/unified_chip2.jsonl"dataset = load_dataset("json", data_files = {"train" : url}, split = "train")# Model pra-kuantisasi 4bit yang kami dukung untuk pengunduhan 4x lebih cepat + tanpa OOMs.fourbit_models = [ "unsloth/mistral-7b-v0.3-bnb-4bit", # Mistral v3 baru 2x lebih cepat!"unsloth/mistral-7b-instruct-v0.3-bnb-4bit",,"unsloth/llama-3-8b- bnb-4bit", # Llama-3 15 triliun token model 2x lebih cepat!"unsloth/llama-3-8b-Instruct-bnb-4bit","unsloth/llama-3-70b-bnb-4bit","unsloth/Phi -3-mini-4k-instruct", # Phi-3 2x lebih cepat!"unsloth/Phi-3-medium-4k-instruct","unsloth/mistral-7b-bnb-4bit","unsloth/gemma-7b- bnb-4bit", # Gemma 2,2x lebih cepat!] # Model lainnya di https://huggingface.co/unslothmodel, tokenizer = FastLanguageModel.from_pretrained(model_name = "unsloth/llama-3-8b-bnb-4bit",max_seq_length = max_seq_length,dtype = Tidak ada,load_in_4bit = Benar, )# Lakukan patching model dan tambahkan bobot LoRA cepat 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, # Mendukung apa pun, tetapi = 0 dioptimalkanbias = "tidak ada", # Mendukung apa pun, tetapi = "tidak ada" dioptimalkan# [BARU] "unsloth" menggunakan VRAM 30% lebih sedikit, muat 2x ukuran batch lebih besar!use_gradient_checkpointing = "unsloth", # True atau "unsloth" untuk konteks yang sangat panjangrandom_state = 3407,max_seq_length = max_seq_length,use_rslora = False, # Kami mendukung stabilisasi peringkat LoRAloftq_config = Tidak Ada, # Dan LoftQ)trainer = SFTTrainer( model = model,train_dataset = kumpulan data,dataset_text_field = "teks",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 = bukan is_bfloat16_supported(),bf16 = is_bfloat16_supported(),logging_steps = 1,output_dir = "output",optim = "adamw_8bit",seed = 3407, ), )trainer.train()# Kunjungi https://github.com/unslothai/unsloth/wiki untuk tips lanjutan seperti# (1) Menyimpan ke GGUF / menggabungkan ke 16bit untuk vLLM# (2) Melanjutkan pelatihan dari adaptor LoRA yang disimpan # (3) Menambahkan loop evaluasi / OOM# (4) Templat obrolan yang disesuaikan
DPO (Optimasi Preferensi Langsung), PPO, Pemodelan Hadiah semuanya tampaknya berfungsi sesuai pengujian independen pihak ketiga dari Llama-Factory. Kami memiliki notebook Google Colab awal untuk mereproduksi Zephyr di Tesla T4 di sini: notebook.
Kami ada di dokumen resmi Hugging Face! Kami ada di dokumen SFT dan dokumen DPO!
import osos.environ["CUDA_VISIBLE_DEVICES"] = "0" # Opsional set ID perangkat GPUdari unsloth import FastLanguageModel, PatchDPOTrainerfrom unsloth import is_bfloat16_supportedPatchDPOTrainer()import torchfrom transformers import TrainingArgumentsfrom trl import DPOTrainermodel, tokenizer = FastLanguageModel.from_pretrained(model_name = "unslo th/zephyr -sft-bnb-4bit",max_seq_length = max_seq_length,dtype = Tidak ada,load_in_4bit = Benar, )# Lakukan patching model dan tambahkan bobot LoRA cepat = 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, # Mendukung apa pun, tetapi = 0 dioptimalkanbias = "tidak ada", # Mendukung apa pun, tetapi = "tidak ada" dioptimalkan# [BARU] "unsloth" menggunakan VRAM 30% lebih sedikit, cocok untuk 2x ukuran batch lebih besar!use_gradient_checkpointing = "unsloth", # True atau "unsloth" untuk konteks_acak_state = 3407,max_seq_length = max_seq_length yang sangat panjang, )dpo_trainer = DPOTrainer(model = model,ref_model = Tidak ada,args = TrainingArguments(per_device_train_batch_size = 4,gradient_accumulation_steps = 8,warmup_ratio = 0,1,num_train_epochs = 3,fp16 = bukan is_bfloat16_supported(),bf16 = is_bfloat16_supported(),logging_steps = 1, optim = "adamw_8bit",seed = 42,output_dir = "output", ),beta = 0,1,train_dataset = YOUR_DATASET_HERE,# eval_dataset = YOUR_DATASET_HERE,tokenizer = tokenizer,max_length = 1024,max_prompt_length = 512, )dpo_trainer.kereta()
Klik "Kode" untuk contoh yang dapat direproduksi sepenuhnya
"Unsloth Equal" adalah pratinjau versi PRO kami, dengan kode dihapus. Semua pengaturan dan kurva kerugian tetap sama.
Untuk daftar lengkap tabel pembandingan, kunjungi situs web kami
1 A100 40GB | ?Memeluk Wajah | Perhatian Kilat 2 | ?Tidak Terbuka | Tidak Setara | Pro yang tidak malas | Maks yang tidak malas |
---|---|---|---|---|---|---|
alpaka | 1x | 1,04x | 1,98x | 2,48x | 5,32x | 15,64x |
kode | Kode | Kode | Kode | Kode | ||
detik | 1040 | 1001 | 525 | 419 | 196 | 67 |
memori MB | 18235 | 15365 | 9631 | 8525 | ||
% disimpan | 15.74 | 47.18 | 53.25 |
Tautan ke tabel kinerja. TGS: token per GPU per detik. Model: LLaMA2-7B. GPU: NVIDIA A100 * 1. Ukuran batch: 4. Akumulasi gradien: 2. Peringkat LoRA: 8. Panjang maksimal: 1024.
Metode | sedikit | TGS | GRAM | Kecepatan |
---|---|---|---|---|
HF | 16 | 2392 | 18GB | 100% |
HF+FA2 | 16 | 2954 | 17GB | 123% |
Tidak malas+FA2 | 16 | 4007 | 16GB | 168% |
HF | 4 | 2415 | 9GB | 101% |
Tidak malas+FA2 | 4 | 3726 | 7GB | 160% |
1 A100 40GB | Memeluk Wajah | Perhatian Kilat 2 | Terbuka Tidak Kemalasan | Tidak Setara | Pro yang tidak malas | Maks yang tidak malas |
---|---|---|---|---|---|---|
Orca Ramping Mistral 7B | 1x | 1,15x | 2,15x | 2,53x | 4,61x | 13,69x |
kode | Kode | Kode | Kode | Kode | ||
detik | 1813 | 1571 | 842 | 718 | 393 | 132 |
memori MB | 32853 | 19385 | 12465 | 10271 | ||
% disimpan | 40,99 | 62.06 | 68.74 |
1 A100 40GB | Memeluk Wajah | Perhatian Kilat 2 | Terbuka Tidak Kemalasan | Tidak Setara | Pro yang tidak malas | Maks yang tidak malas |
---|---|---|---|---|---|---|
Kode Llama 34B | OOM | 0,99x | 1,87x | 2,61x | 4,27x | 12,82x |
kode | Kode | Kode | Kode | |||
detik | 1953 | 1982 | 1043 | 748 | 458 | 152 |
memori MB | 40000 | 33217 | 27413 | 22161 | ||
% disimpan | 16.96 | 31.47 | 44.60 |
1 T4 16GB | Memeluk Wajah | Perhatian Kilat | Terbuka Tidak Kemalasan | Tidak Kemalasan Pro Setara | Pro yang tidak malas | Maks yang tidak malas |
---|---|---|---|---|---|---|
alpaka | 1x | 1,09x | 1,69x | 1,79x | 2,93x | 8,3x |
kode | Kode | Kode | Kode | |||
detik | 1599 | 1468 | 942 | 894 | 545 | 193 |
memori MB | 7199 | 7059 | 6459 | 5443 | ||
% disimpan | 1.94 | 10.28 | 24.39 |
2 T4 DDP | Memeluk Wajah | Perhatian Kilat | Terbuka Tidak Kemalasan | Tidak Setara | Pro yang tidak malas | Maks yang tidak malas |
---|---|---|---|---|---|---|
alpaka | 1x | 0,99x | 4,95x | 4,44x | 7,28x | 20,61x |
kode | Kode | Kode | ||||
detik | 9882 | 9946 | 1996 | 2227 | 1357 | 480 |
memori MB | 9176 | 9128 | 6904 | 6782 | ||
% disimpan | 0,52 | 24.76 | 26.09 |
Satu Tesla T4 di 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
Sistem | GPU | Alpaka (52K) | LAION OIG (210K) | Buka Asisten (10K) | SlimOrca (518K) |
---|---|---|---|---|---|
wajah berpelukan | 1 T4 | 23 jam 15 menit | 56 jam 28 menit | 8 jam 38 menit | 391 jam 41 menit |
Terbuka Tidak Kemalasan | 1 T4 | 13 jam 7 menit (1,8x) | 31 jam 47 menit (1,8x) | 4 jam 27 menit (1,9x) | 240 jam 4 menit (1,6x) |
Pro yang tidak malas | 1 T4 | 3 jam 6 menit (7,5x) | 5 jam 17 menit (10,7x) | 1 jam 7 menit (7,7x) | 59 jam 53 menit (6,5x) |
Maks yang tidak malas | 1 T4 | 2 jam 39 menit (8,8x) | 4 jam 31 menit (12,5x) | 0 jam 58 menit (8,9x) | 51 jam 30 menit (7,6x) |
Penggunaan Memori Puncak
Sistem | GPU | Alpaka (52K) | LAION OIG (210K) | Buka Asisten (10K) | SlimOrca (518K) |
---|---|---|---|---|---|
wajah berpelukan | 1 T4 | 7.3GB | 5,9GB | 14.0GB | 13,3GB |
Terbuka Tidak Kemalasan | 1 T4 | 6.8GB | 5,7GB | 7.8GB | 7,7GB |
Pro yang tidak malas | 1 T4 | 6.4GB | 6.4GB | 6.4GB | 6.4GB |
Maks yang tidak malas | 1 T4 | 11.4GB | 12,4GB | 11,9GB | 14,4GB |
Dua Tesla T4 di 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
Sistem | GPU | Alpaka (52K) | LAION OIG (210K) | Buka Asisten (10K) | SlimOrca (518K) * |
---|---|---|---|---|---|
wajah berpelukan | 2 T4 | 84 jam 47 menit | 163 jam 48 menit | 30 jam 51 menit | 1301 jam 24 menit * |
Pro yang tidak malas | 2 T4 | 3 jam 20 menit (25,4x) | 5 jam 43 menit (28,7x) | 1 jam 12 menit (25,7x) | 71 jam 40 menit (18,1x) * |
Maks yang tidak malas | 2 T4 | 3 jam 4 menit (27,6x) | 5 jam 14 menit (31,3x) | 1 jam 6 menit (28,1x) | 54 jam 20 menit (23,9x) * |
Penggunaan Memori Puncak pada Sistem Multi GPU (2 GPU)
Sistem | GPU | Alpaka (52K) | LAION OIG (210K) | Buka Asisten (10K) | SlimOrca (518K) * |
---|---|---|---|---|---|
wajah berpelukan | 2 T4 | 8.4GB | 6GB | 7.2GB | 5.3GB | 14,3GB | 6.6GB | 10,9GB | 5,9 GB * |
Pro yang tidak malas | 2 T4 | 7,7GB | 4,9GB | 7,5GB | 4,9GB | 8,5 GB | 4,9GB | 6.2GB | 4,7 GB * |
Maks yang tidak malas | 2 T4 | 10,5GB | 5GB | 10,6GB | 5GB | 10,6GB | 5GB | 10,5GB | 5GB* |
Slim Orca bsz=1
untuk semua benchmark sejak bsz=2
OOM. Kami dapat menangani bsz=2
, tetapi kami membandingkannya dengan bsz=1
untuk konsistensi.
HuyNguyen-bersemangat untuk membuat RoPE Embeddings 28% lebih cepat
RandomInternetPreson untuk mengonfirmasi dukungan WSL
152334H untuk dukungan DPO eksperimental
atgctg untuk penyorotan sintaksis