综合介绍
Unsloth 是一个开源项目,旨在提供高效的微调和训练大语言模型(LLMs)的工具。该项目支持多种知名模型,包括 Llama、Mistral、Phi 和 Gemma 等。Unsloth 的主要特点是能够显著减少内存使用和加快训练速度,使得用户可以在更短的时间内完成模型的微调和训练。此外,Unsloth 提供了丰富的文档和教程,帮助用户快速上手并充分利用其功能。
功能列表
- 高效微调:支持 Llama、Mistral、Phi 和 Gemma 等多种模型,微调速度提高 2-5 倍,内存使用减少 50-80%。
- 免费使用:提供免费使用的笔记本,用户只需添加数据集并运行所有代码,即可获得微调后的模型。
- 多种导出格式:支持将微调后的模型导出为 GGUF、Ollama、vLLM 或上传到 Hugging Face。
- 动态量化:支持动态 4-bit 量化,提高模型精度,同时仅增加不到 10% 的显存使用。
- 长上下文支持:支持 Llama 3.3 (70B) 模型的 89K 上下文窗口,以及 Llama 3.1 (8B) 模型的 342K 上下文窗口。
- 视觉模型支持:支持 Llama 3.2 Vision (11B)、Qwen 2.5 VL (7B) 和 Pixtral (12B) 等视觉模型。
- 推理优化:提供多种推理优化选项,显著提高推理速度。
使用帮助
安装流程
- 安装依赖:确保已安装 Python 3.8 及以上版本,并安装以下依赖:
bash
pip install torch transformers datasets
- 克隆仓库:使用 Git 克隆 Unsloth 仓库:
bash
git clone https://github.com/unslothai/unsloth.git
cd unsloth
- 安装 Unsloth:运行以下命令安装 Unsloth:
bash
pip install -e .
使用教程
- 加载模型:在 Python 脚本中加载预训练模型:
from transformers import AutoModelForCausalLM, AutoTokenizer model_name = "unslothai/llama-3.3" model = AutoModelForCausalLM.from_pretrained(model_name) tokenizer = AutoTokenizer.from_pretrained(model_name)
- 微调模型:使用 Unsloth 提供的笔记本进行模型微调。以下是一个简单的示例:
from unsloth import Trainer, TrainingArguments training_args = TrainingArguments( output_dir="./results", num_train_epochs=3, per_device_train_batch_size=4, save_steps=10_000, save_total_limit=2, ) trainer = Trainer( model=model, args=training_args, train_dataset=train_dataset, eval_dataset=eval_dataset, ) trainer.train()
- 导出模型:微调完成后,可以将模型导出为多种格式:
python
model.save_pretrained("./finetuned_model")
tokenizer.save_pretrained("./finetuned_model")
详细功能操作
- 动态量化:在微调过程中,Unsloth 支持动态 4-bit 量化,这可以显著提高模型的精度,同时仅增加不到 10% 的显存使用。用户可以在训练参数中启用此功能:
training_args = TrainingArguments( output_dir="./results", num_train_epochs=3, per_device_train_batch_size=4, save_steps=10_000, save_total_limit=2, quantization="dynamic_4bit" )
- 长上下文支持:Unsloth 支持 Llama 3.3 (70B) 模型的 89K 上下文窗口,以及 Llama 3.1 (8B) 模型的 342K 上下文窗口。这使得模型在处理长文本时表现更加出色。用户可以在加载模型时指定上下文窗口大小:
model = AutoModelForCausalLM.from_pretrained(model_name, context_window=89000)
- 视觉模型支持:Unsloth 还支持多种视觉模型,如 Llama 3.2 Vision (11B)、Qwen 2.5 VL (7B) 和 Pixtral (12B)。用户可以使用这些模型进行图像生成和处理任务:
python
model_name = "unslothai/llama-3.2-vision"
model = AutoModelForImageGeneration.from_pretrained(model_name)