推特(又名 X)
在 X 上关注我们 | |
安装 | 不懒惰/README.md |
标杆管理 | 性能表 |
已发布型号 | 不懒惰的发布 |
博客 | 阅读我们的博客 |
所有内核均采用 OpenAI 的 Triton 语言编写。手动反向传播引擎。
精度损失为 0% - 无近似方法 - 全部精确。
没有改变硬件。自 2018 年起支持 NVIDIA GPU。最低 CUDA 能力 7.0(V100、T4、Titan V、RTX 20、30、40x、A100、H100、L40 等)检查您的 GPU! GTX 1070、1080 可以工作,但速度很慢。
通过 WSL 在Linux和Windows上工作。
通过位和字节支持 4 位和 16 位 QLoRA / LoRA 微调。
开源训练速度提高了 5 倍 - 请参阅 Unsloth Pro,训练速度提高了 30 倍!
如果您使用 ?Unsloth 训练过模型,则可以使用这个很酷的贴纸!
有关可重复基准测试表的完整列表,请访问我们的网站
1 个 A100 40GB | ?抱脸 | 闪光注意 | ?Unsloth 开源 | ?Unsloth Pro |
---|---|---|---|---|
羊驼毛 | 1x | 1.04倍 | 1.98倍 | 15.64倍 |
莱昂芯片2 | 1x | 0.92倍 | 1.61倍 | 20.73倍 |
欧亚斯特 | 1x | 1.19倍 | 2.17倍 | 14.83倍 |
苗条逆戟鲸 | 1x | 1.18倍 | 2.22倍 | 14.82倍 |
下面的基准测试表是由 ?Hugging Face 进行的。
免费Colab T4 | 数据集 | ?抱脸 | 火炬2.1.1 | ?不懒惰 | ?显存减少 |
---|---|---|---|---|---|
骆驼-2 7b | 欧亚斯特 | 1x | 1.19倍 | 1.95倍 | -43.3% |
米斯特拉尔7b | 羊驼毛 | 1x | 1.07倍 | 1.56倍 | -13.7% |
小羊驼 1.1b | 羊驼毛 | 1x | 2.06倍 | 3.87倍 | -73.8% |
DPO 与 Zephyr | 超级聊天 | 1x | 1.09倍 | 1.55倍 | -18.6% |
对于稳定版本,请使用pip install unsloth
。对于大多数安装,我们建议pip install "unsloth[colab-new] @ git+https://github.com/unslothai/unsloth.git"
。
️Only use Conda if you have it. If not, use Pip
。对于 CUDA 11.8 或 CUDA 12.1,选择pytorch-cuda=11.8,12.1
。我们支持python=3.10,3.11,3.12
。
conda 创建 --name unsloth_env 蟒蛇=3.11 pytorch-cuda=12.1 pytorch cudatoolkit xformers -c pytorch -c nvidia -c xformers -y conda 激活 unsloth_env pip install "unsloth[colab-new] @ git+https://github.com/unslothai/unsloth.git"pip install --no-deps trl peft 加速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 有点复杂,因为存在依赖性问题。 torch 2.2,2.3,2.4,2.5
和 CUDA 版本的 pip 命令有所不同。
对于其他 torch 版本,我们支持torch211
、 torch212
、 torch220
、 torch230
、 torch240
,对于 CUDA 版本,我们支持cu118
、 cu121
和cu124
。对于安培设备(A100、H100、RTX3090)及更高版本,请使用cu118-ampere
或cu121-ampere
或cu124-ampere
。
例如,如果您有torch 2.4
和CUDA 12.1
,请使用:
pip 安装 --升级 pip pip install "unsloth[cu121-torch240] @ git+https://github.com/unslothai/unsloth.git"
另一个例子,如果您有torch 2.5
和CUDA 12.4
,请使用:
pip 安装 --升级 pip pip install "unsloth[cu124-torch250] @ git+https://github.com/unslothai/unsloth.git"
以及其他例子:
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”
或者,在终端中运行以下命令以获得最佳的pip 安装命令:
wget -qO- https://raw.githubusercontent.com/unslothai/unsloth/main/unsloth/_auto_install.py | Python -
或者,在 Python REPL 中手动运行以下命令:
尝试:导入torchexcept:引发ImportError('通过'pip install torch'安装火炬')from Packaging.version import Version as Vv = V(torch.__version__)cuda = str(torch.version.cuda)is_ampere = torch.cuda。 get_device_capability()[0] >= 8if cuda != "12.1" and cuda != "11.8" and cuda != "12.4": raise RuntimeError(f"CUDA = {cuda} not support!")if v <= V ('2.1.0'): raise RuntimeError(f"Torch = {v} 太旧了!")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} 太新了!")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"')
要直接在 Windows 上运行 Unsloth:
从此 Windows 分支安装 Triton 并按照说明进行操作:https://github.com/woct0rdho/triton-windows
在 SFTTrainer 中,设置dataset_num_proc=1
以避免崩溃问题:
训练器 = SFTTrainer(dataset_num_proc=1, ... )
有关高级安装说明或如果您在安装过程中看到奇怪的错误:
安装torch
和triton
。前往 https://pytorch.org 进行安装。例如pip install torch torchvision torchaudio triton
确认CUDA是否安装正确。尝试nvcc
。如果失败,您需要安装cudatoolkit
或 CUDA 驱动程序。
手动安装xformers
。您可以尝试安装vllm
,看看vllm
是否成功。使用python -m xformers.info
检查xformers
是否成功 转到 https://github.com/facebookresearch/xformers。另一种选择是为 Ampere GPU 安装flash-attn
。
最后,安装bitsandbytes
并使用python -m bitsandbytes
检查它
请访问我们的官方文档,了解保存到 GGUF、检查点、评估等信息!
我们支持 Huggingface 的 TRL、Trainer、Seq2SeqTrainer 甚至 Pytorch 代码!
我们进入了?Hugging Face 的官方文档!查看 SFT 文档和 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 # 内部支持 RoPE Scaling,所以选择任意一个!# Get LAION dataseturl = "https://huggingface.co/datasets/laion/OIG/ solve/main/unified_chip2.jsonl"dataset = load_dataset("json", data_files = {"train" : url}, split = "train")# 4 位预量化模型,我们支持 4 倍更快的下载速度 + 无 OOMs.fourbit_models = [ "unsloth/mistral-7b-v0.3-bnb-4bit", # 新 Mistral v3 速度提高 2 倍!"unsloth/mistral-7b-instruct-v0.3-bnb-4bit","unsloth/llama-3-8b- bnb-4bit", # Llama-3 15 万亿代币模型速度提高 2 倍!"unsloth/llama-3-8b-Instruct-bnb-4bit","unsloth/llama-3-70b-bnb-4bit","unsloth/Phi -3-mini-4k-instruct", # Phi-3 快 2 倍!"unsloth/Phi-3-medium-4k-instruct","unsloth/mistral-7b-bnb-4bit","unsloth/gemma-7b- bnb-4bit", # Gemma 快 2.2 倍!] # 更多模型请访问 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, )# 进行模型修补并添加快速 LoRA 权重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, # 支持任何,但 = 0 已优化bias = "none", # 支持任何,但 = "none" 已优化# [新] “unsloth” 使用的 VRAM 减少 30%,适合 2 倍大的批量大小!use_gradient_checkpointing = "unsloth", # True 或 "unsloth" 非常长 contextrandom_state = 3407,max_seq_length = max_seq_length,use_rslora = False, # 我们支持排名稳定 LoRAloftq_config = None, # 和 LoftQ)trainer = SFTTrainer(模型=模型,train_dataset =数据集,dataset_text_field =“文本”,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 =不是is_bfloat16_supported(),bf16 = is_bfloat16_supported(),logging_steps = 1,output_dir =“输出”,optim =“adamw_8bit”,种子= 3407, ), )trainer.train()# 前往 https://github.com/unslothai/unsloth/wiki 获取高级提示,例如# (1) 保存到 GGUF / 合并到 16 位以进行 vLLM# (2) 从保存的 LoRA 适配器继续训练# (3) 添加评估循环/OOM# (4) 自定义聊天模板
DPO(直接偏好优化)、PPO、奖励建模似乎都按照 Llama-Factory 的第 3 方独立测试工作。我们有一个初步的 Google Colab 笔记本,用于在 Tesla T4 上复制 Zephyr:notebook。
我们进入了?Hugging Face 的官方文档!我们正在查看 SFT 文档和 DPO 文档!
import osos.environ["CUDA_VISIBLE_DEVICES"] = "0" # 可选设置 GPU 设备 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 /和风-sft-bnb-4bit”,max_seq_length = max_seq_length,dtype = None,load_in_4bit = True, )# 进行模型修补并添加快速 LoRA 权重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, # 支持任何,但 = 0 已优化bias = "none", # 支持任何,但 = "none" 已优化# [新] “unsloth” 使用的 VRAM 减少 30%,适合 2 倍大的批量大小!use_gradient_checkpointing = "unsloth", # True 或 "unsloth" 非常长 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_step s = 1, optim =“adamw_8bit”,种子= 42,output_dir =“输出”, ),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()
单击“代码”以获得完全可重现的示例
“Unsloth Equal”是我们 PRO 版本的预览版,其中删除了代码。所有设置和损失曲线保持相同。
有关基准测试表的完整列表,请访问我们的网站
1 个 A100 40GB | ?抱脸 | 闪光注意2 | ? 不懒惰开放 | 不懒惰平等 | 解除树懒专业版 | 不懒惰麦克斯 |
---|---|---|---|---|---|---|
羊驼毛 | 1x | 1.04倍 | 1.98倍 | 2.48倍 | 5.32倍 | 15.64倍 |
代码 | 代码 | 代码 | 代码 | 代码 | ||
秒 | 1040 | 1001 | 第525章 | 第419章 | 196 | 67 |
内存MB | 18235 | 15365 | 9631 | 8525 | ||
保存百分比 | 15.74 | 47.18 | 53.25 |
链接到性能表。 TGS:每 GPU 每秒的令牌数。型号:LLaMA2-7B。 GPU:NVIDIA A100 * 1。批量大小:4。梯度累积:2。LoRA 等级:8。最大长度:1024。
方法 | 位 | TGS | 克 | 速度 |
---|---|---|---|---|
高频 | 16 | 2392 | 18GB | 100% |
高频+FA2 | 16 | 2954 | 17GB | 123% |
不懒惰+FA2 | 16 | 4007 | 16 GB | 168% |
高频 | 4 | 2415 | 9GB | 101% |
不懒惰+FA2 | 4 | 3726 | 7GB | 160% |
1 个 A100 40GB | 抱脸 | 闪光注意2 | 不懒惰开放 | 不懒惰平等 | 解除树懒专业版 | 不懒惰麦克斯 |
---|---|---|---|---|---|---|
米斯特拉尔 7B 超薄逆戟鲸 | 1x | 1.15倍 | 2.15倍 | 2.53倍 | 4.61倍 | 13.69倍 |
代码 | 代码 | 代码 | 代码 | 代码 | ||
秒 | 1813 | 第1571章 | 第842章 | 718 | 第393章 | 132 |
内存MB | 32853 | 19385 | 12465 | 10271 | ||
保存百分比 | 40.99 | 62.06 | 68.74 |
1 个 A100 40GB | 抱脸 | 闪光注意2 | 不懒惰开放 | 不懒惰平等 | 解除树懒专业版 | 不懒惰麦克斯 |
---|---|---|---|---|---|---|
代码骆驼 34B | OOM | 0.99倍 | 1.87倍 | 2.61倍 | 4.27倍 | 12.82倍 |
代码 | 代码 | 代码 | 代码 | |||
秒 | 1953年 | 1982年 | 1043 | 第748章 | 第458章 | 152 |
内存MB | 40000 | 33217 | 27413 | 22161 | ||
保存百分比 | 16.96 | 31.47 | 44.60 |
1个T4 16GB | 抱脸 | 闪光注意 | 不懒惰开放 | Unsloth Pro 平等 | 解除树懒专业版 | 不懒惰麦克斯 |
---|---|---|---|---|---|---|
羊驼毛 | 1x | 1.09倍 | 1.69倍 | 1.79倍 | 2.93倍 | 8.3倍 |
代码 | 代码 | 代码 | 代码 | |||
秒 | 1599 | 第1468章 | 第942章 | 第894章 | 第545章 | 193 |
内存MB | 7199 | 7059 | 6459 | 5443 | ||
保存百分比 | 1.94 | 10.28 | 24.39 |
2 T4 顺铂 | 抱脸 | 闪光注意 | 不懒惰开放 | 不懒惰平等 | 解除树懒专业版 | 不懒惰麦克斯 |
---|---|---|---|---|---|---|
羊驼毛 | 1x | 0.99倍 | 4.95倍 | 4.44倍 | 7.28倍 | 20.61倍 |
代码 | 代码 | 代码 | ||||
秒 | 9882 | 9946 | 1996年 | 2227 | 第1357章 | 第480章 |
内存MB | 9176 | 9128 | 6904 | 6782 | ||
保存百分比 | 0.52 | 24.76 | 26.09 |
Google Colab 上的一辆 Tesla T4 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
系统 | 图形处理器 | 羊驼毛 (52K) | 莱昂 OIG (210K) | 打开助手 (10K) | SlimOrca (518K) |
---|---|---|---|---|---|
抱脸 | 1个T4 | 23小时15米 | 56小时28米 | 8小时38米 | 391小时41米 |
不懒惰开放 | 1个T4 | 13小时7米(1.8倍) | 31小时47米(1.8倍) | 4小时27米(1.9倍) | 240小时4米(1.6倍) |
解除树懒专业版 | 1个T4 | 3小时6米(7.5倍) | 5小时17米(10.7倍) | 1小时7米(7.7倍) | 59小时53米(6.5倍) |
不懒惰麦克斯 | 1个T4 | 2小时39m(8.8倍) | 4小时31m(12.5倍) | 0小时58m(8.9倍) | 51小时30米(7.6倍) |
内存使用峰值
系统 | 图形处理器 | 羊驼毛 (52K) | 莱昂 OIG (210K) | 打开助手 (10K) | SlimOrca (518K) |
---|---|---|---|---|---|
抱脸 | 1个T4 | 7.3GB | 5.9GB | 14.0GB | 13.3GB |
不懒惰开放 | 1个T4 | 6.8GB | 5.7GB | 7.8GB | 7.7GB |
解除树懒专业版 | 1个T4 | 6.4GB | 6.4GB | 6.4GB | 6.4GB |
不懒惰麦克斯 | 1个T4 | 11.4GB | 12.4GB | 11.9GB | 14.4GB |
Kaggle 上的两个 Tesla T4 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
系统 | 图形处理器 | 羊驼毛 (52K) | 莱昂 OIG (210K) | 打开助手 (10K) | SlimOrca (518K) * |
---|---|---|---|---|---|
抱脸 | 2 T4 | 84小时47米 | 163小时48米 | 30小时51米 | 1301小时24米* |
解除树懒专业版 | 2 T4 | 3小时20米(25.4倍) | 5小时43米(28.7倍) | 1小时12米(25.7倍) | 71小时40米(18.1倍)* |
不懒惰麦克斯 | 2 T4 | 3小时4米(27.6倍) | 5小时14米(31.3倍) | 1小时6米(28.1倍) | 54小时20米(23.9倍)* |
多 GPU 系统(2 个 GPU)上的峰值内存使用量
系统 | 图形处理器 | 羊驼毛 (52K) | 莱昂 OIG (210K) | 打开助手 (10K) | SlimOrca (518K) * |
---|---|---|---|---|---|
抱脸 | 2 T4 | 8.4GB| 6GB | 7.2GB| 5.3GB | 14.3GB | 14.3GB 6.6GB | 10.9GB | 10.9GB 5.9GB * |
解除树懒专业版 | 2 T4 | 7.7GB | 7.7GB 4.9GB | 7.5GB| 4.9GB | 8.5GB | 4.9GB | 6.2GB| 4.7GB* |
不懒惰麦克斯 | 2 T4 | 10.5GB | 10.5GB 5GB | 10.6GB | 10.6GB 5GB | 10.6GB | 10.6GB 5GB | 10.5GB | 10.5GB 5GB* |
由于bsz=2
OOM,所有基准测试的 Slim Orca bsz=1
。我们可以处理bsz=2
,但我们使用bsz=1
进行基准测试以保持一致性。
HuyNguyen-渴望将 RoPE 嵌入速度提高 28%
RandomInternetPreson 用于确认 WSL 支持
152334H 用于实验性 DPO 支持
atgctg 用于语法高亮