dolly
databrickslabs/dolly加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
2023 年 3 月,Databricks 的工程师们做了一个令人瞠目结舌的实验:他们花不到 30 美元,用一台 8 块 A100 GPU 的机器,在 30 分钟内微调了一个 60 亿参数的旧模型,意外地让这个"老古董"具备了类似 ChatGPT 的指令遵循能力。
这个模型被命名为 Dolly,取自世界上第一只克隆羊多莉——因为它的本质,就是对 ChatGPT/LLaMA 技术路线的一次"开源克隆"。
更疯狂的是 2023 年 4 月的 Dolly 2.0:Databricks 将整个训练流程、15K 条高质量指令数据集 databricks-dolly-15k(由 5000 多名员工人工撰写)、以及 12B 参数的模型权重全部开源,允许商业免费使用。这是业界首个完全开源、可商用的指令微调 LLM。
Dolly 的意义在于:它用实际行动证明,高质量的指令数据集比模型规模更重要。不是越大越好,不是越新越好——精挑细选的数据,可以让"旧模型"焕发新生。
Dolly 2.0 基于 EleutherAI Pythia-12B 因果语言模型:
databricks-dolly-15k,15,000 条由 Databricks 员工手工编写的指令-响应对,覆盖 7 类能力:头脑风暴、分类、封闭式问答、生成、信息抽取、开放式问答、摘要用户通过 HuggingFace transformers pipeline 直接加载模型:
from transformers import pipeline, torch
instruct_pipeline = pipeline(
model="databricks/dolly-v2-12b",
torch_dtype=torch.bfloat16,
trust_remote_code=True,
device_map="auto"
)
result = instruct_pipeline("解释一下核裂变和核聚变的区别")
Dolly 支持 trust_remote_code=True 自定义的 InstructionTextGenerationPipeline,确保输出格式符合指令遵循任务需求。Dolly 也可集成至 LangChain 作为 LLM 后端。
| GPU 类型 | 配置要求 | 说明 |
|---|---|---|
| A100 80GB | 推荐,8 卡 | 可全精度 bf16 训练,推理流畅 |
| A10 24GB | 需量化,4+ 卡 | 12B 模型需 load_in_8bit=True |
| V100 16GB | 勉强,8 卡 | 需 torch_dtype=torch.float16,可能不稳定 |
| V100 32GB | 尚可,4+ 卡 | 比 16GB 版本稍好 |
推理至少需要 24GB 显存(A10 单卡可通过量化勉强运行)。
train_dolly.py,支持 A100 / A10 / V100 等多种 GPU 配置切换最简单的方式是通过 HuggingFace Hub 加载模型,无需任何训练代码:
pip install transformers torch accelerate
只需 3 行代码即可完成推理。Databricks 官方建议直接使用 HuggingFace pipeline,这样门槛最低。
克隆本仓库,在 Databricks GPU 集群上运行 train_dolly.py notebook。训练代码核心依赖:
transformers[torch]、deepspeed、accelerate、datasets、langchainLangChain 集成:Dolly 可作为 LangChain 的 LLM 后端,配合 PromptTemplate 实现有/无上下文的指令推理,仓库自带 examples/langchain.py 示例代码。
Dolly 2.0 官方坦诚列出了它的不足:
Dolly 的历史地位在于它打破了"LLM 必须超大超贵"的迷信。在 2023 年初,整个行业都在追逐 GPT-3(175B)、Chinchilla(70B)等超大模型,Dolly 用 12B 参数 + 15K 精炼数据证明了一条"小而美"的路线。
Databricks 率先开源可商用指令数据集的举动,推动了后来 databricks-dolly-15k 被广泛应用于各类开源模型的微调实验。 Dolly 的技术思路——用高质量人工指令数据微调旧模型——至今仍是 LoRA、QLoRA 等高效微调方法的重要思想基础。
Dolly 模型仓库:https://github.com/databrickslabs/dolly | HuggingFace:databricks/dolly-v2-12b