SuperAPI AI 工具集

unsloth

智能体与模型

查看项目

更新于 10-16 00:05

技能介绍

用途:Unsloth 用于在单卡或双卡上高效微调开放 LLM、嵌入/重排模型、视觉语言模型与 TTS 模型。它包装 transformers、peft、TRL 的训练器而非替换,现有 HF 代码容易迁移。多 GPU 训练仍在成熟中,有该需求时资料建议改用 Axolotl 或 torchtune。

三条关键规则:必须最先 import unsloth,早于 transformers、peft、trl 或 sentence_transformers;use_gradient_checkpointing 要传字符串 "unsloth" 而非布尔值,可获得约 30% 显存节省与约 2 倍更大 batch;嵌入模型重新加载做推理时须用 FastSentenceTransformer.from_pretrained(path, for_inference=True),否则会静默输出未转换的错误向量,解码 LM 则单独调用 FastLanguageModel.for_inference(model)。

安装:uv pip install unsloth --torch-backend=auto;做 RL 或快速推理时 uv pip install unsloth vllm --torch-backend=auto;也可 pip install unsloth。要求 NVIDIA GPU(CUDA 算力≥7.0)、CUDA 12.4+(Blackwell 需 12.8+)、Python 3.11-3.13;AMD/Intel 见 Unsloth Core 安装页,macOS/MLX 标注即将推出。需固定 transformers 与 trl 版本。

四个 API:FastLanguageModel 用于标准解码 LLM;FastSentenceTransformer 用于编码器嵌入与重排模型;FastVisionModel 用于多模态 VLM;FastModel 用于分类头、TTS/STT 及需要 trust_remote_code=True 的模型。四者共享 from_pretrained、get_peft_model 与 save/push 助手。

主要流程:嵌入微调走 SentenceTransformerTrainer,损失可选 MultipleNegativesRankingLoss、CachedMultipleNegativesRankingLoss 或 TripletLoss,训练后可用纯 SentenceTransformer 加载,无需下游依赖 Unsloth。因果 LLM 的 LoRA/QLoRA SFT 走 TRL 的 SFTTrainer,可用 train_on_responses_only 只训练 assistant token(约提升 1% 准确率,但字符串写错会静默导致全部标签为 -100、loss 为 0)。RL 以 GRPO 为主,支持 DPO/ORPO/KTO/SimPO,PPO 支持但文档较少;GRPO 前提为模型≥1.5B 参数、数据集≥500 行、训练≥300 步。

保存与部署:可只存 LoRA 适配器(约 100MB)、合并权重 save_pretrained_merged,或导出 GGUF 供 llama.cpp/Ollama 使用(推荐 q4_k_m、q8_0、f16),也可 push_to_hub 系列推送。

限制与风险:官方未在资料中说明收费或价格,暂未提供。多 GPU 支持仍在成熟,Modal 部署需在镜像内安装并固定精确版本以保证可复现。