细调Ornith-9B:用Unsloth从加载到LoRA微调的5步上手指南
【免费下载链接】Ornith-1项目地址: https://gitcode.com/gh_mirrors/or/Ornith-1
本文是一份面向新手的大模型微调教程:Ornith-9B 是开源 Agent 编程模型家族 Ornith(MIT 协议)中最轻量的一档,适合个人显卡玩。我们将用 Unsloth 微调框架,通过 5 个步骤完成从加载 Ornith-9B、配置 LoRA,到产出可部署微调检查点的完整流程,单卡即可上手。
为什么选 Ornith-9B 做本地微调
Ornith 是为 Agent 任务(工具调用、终端编程、代码仓库问答)优化的推理模型,回复默认先输出think思考链再给出答案。9B 是其中的稠密模型,官方定位为「单卡部署与微调」的最佳选择:
- 🖥️显存友好:全精度只需一张 80GB GPU;配合 Unsloth 的 4bit 量化加载,显存需求进一步降低
- 📚256K 长上下文(262,144 tokens),微调长文本任务也够用
- 🚀能力上限高:同家族的模型在 SWE-bench Verified、Terminal-Bench 等基准上表现抢眼,9B 底座本身就有很强的 Agent 编程底子
- ⚖️MIT 协议:可自由微调、商用与分发
上图来自官方 README.md 的基准对比:SWE-bench Verified、GPQA Diamond 等指标均位居前列,说明 Ornith 9B 底座有充足的细调空间。
5 步流程总览
| 步骤 | 做什么 | 关键工具 |
|---|---|---|
| 1 | 安装 Unsloth 微调框架 | pip install unsloth |
| 2 | 加载 Ornith-9B 模型 | FastLanguageModel.from_pretrained |
| 3 | 配置 LoRA 参数 | get_peft_config |
| 4 | 准备数据集并训练 | SFTTrainer |
| 5 | 保存、合并与验证 | save_pretrained_merged |
第 1 步:准备环境,安装 Unsloth 微调框架
准备一台带 NVIDIA GPU 的机器,装好 PyTorch 后执行:
pip install unsloth💡 硬件建议:全精度微调 9B 模型需要 80GB 显存的显卡;使用 4bit 量化加载则可以在显存更小的卡上完成训练,这对新手非常友好。
第 2 步:用 FastLanguageModel 加载 Ornith-9B
from unsloth import FastLanguageModel model, tokenizer = FastLanguageModel.from_pretrained( "Ornith-1.5-9B", # 也可换成 Ornith-1.0-9B max_seq_length=8192, load_in_4bit=True, )两个关键参数:
load_in_4bit=True:4bit 量化加载,官方示例的推荐配置,能显著节省显存max_seq_length:训练序列长度上限。模型本身支持 262144 tokens,但新手建议从 4096~8192 起步,确有需要再调大
第 3 步:配置 LoRA 微调参数
peft_config = FastLanguageModel.get_peft_config()这一行会基于模型结构自动推断target_modules(默认覆盖注意力与 MLP 的主要投影层),并给出一套合理的默认值(秩 r 与 lora_alpha 通常为 16)。LoRA 只训练少量低秩矩阵,所以 9B 模型用单卡即可跑动,产出的适配器也只有几十 MB 大小。
⚠️ 注意:Ornith 是推理模型,训练数据里助手回复应包含think思考块,再跟最终答案,保持与官方推理格式一致。
第 4 步:准备数据集并启动 LoRA 训练
对话数据使用 JSONL 格式,每行是一个消息列表:
{"messages": [ {"role": "user", "content": "问题内容"}, {"role": "assistant", "content": "think…思考链…最终答案"} ]}然后交给 SFTTrainer:
from unsloth import SFTTrainer import datasets dataset = datasets.load_dataset("json", data_files="my_data.jsonl")["train"] trainer = SFTTrainer( model=model, tokenizer=tokenizer, train_dataset=dataset, peft_config=peft_config, max_seq_length=8192, ) trainer.train()第 5 步:保存、合并与验证微调结果
model.save_pretrained("ornith-9b-lora") # 保存 LoRA 适配器 tokenizer.save_pretrained("ornith-9b-lora")- 只微调、要部署:把 LoRA 适配器目录交给推理框架加载即可
- 想要完整模型:调用
save_pretrained_merged将适配器合并回底座,即可用 vLLM / SGLang 部署 - 验证时的采样参数建议沿用官方推荐:
temperature=0.6、top_p=0.95、top_k=20
微调常见问题速查
| 问题 | 建议解法 |
|---|---|
| 显存不足(OOM) | 开启load_in_4bit=True,并调小max_seq_length |
| 长样本被截断 | 调大max_seq_length,或提前把超长样本切分 |
| 输出格式和官方不一致 | 检查训练数据是否保留了think思考块 |
| 推理效果不如预期 | 检查采样参数是否为官方推荐的 0.6 / 0.95 / 20 |
相关项目资料
- 官方文档与部署示例:README.md(含 vLLM / SGLang 一键部署命令与 Unsloth 加载样例)
- 开源协议:LICENSE(MIT 协议,可自由微调使用)
【免费下载链接】Ornith-1项目地址: https://gitcode.com/gh_mirrors/or/Ornith-1
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考