项目介绍:Dolly
Databricks 的 Dolly 是一个大型语言模型,能够理解并执行人类指令。它基于 Pythia-12b 模型,通过 Databricks 的机器学习平台进行训练,并可用于商业用途。Dolly 通过约 15,000 条指令和响应的数据集,并结合了包括头脑风暴、分类、问答生成、信息提取及总结等各种能力域进行微调。尽管 Dolly 并不是最前沿的模型,但在遵循指令方面展示出较高的表现。
Databricks 致力于确保每个组织和个人都能从人工智能的变革力量中受益。Dolly 模型系列只是这一努力的初步成果,我们非常兴奋能与世界分享这项技术。
该模型已在 Hugging Face 上发布,用户可以轻松获取。
模型概述
Dolly-v2-12b 是一个拥有 120 亿参数的因果语言模型,由 Databricks 基于 EleutherAI 的 Pythia-12b 模型开发并进一步微调而成。其微调数据集来源于 Databricks 员工编写的自然语言指令,且在许可范围内公开发布。
已知的局限性
性能局限性
Dolly-v2-12b 不是最先进的生成语言模型。目前一些最新的模型架构和更大数据集的预训练模型往往能表现得更好。Dolly 在语法复杂的提示、编程问题、数学运算、日期时间、开放式问答等方面尚有挑战。此外,某些功能如格式化邮件撰写在最初模型中存在,但此版本中未能实现。
数据集局限性
像所有语言模型一样,Dolly-v2-12b 反映了其训练数据集的内容与局限性:
-
The Pile: 作为训练数据集之一,包含了大量来自互联网的公开内容,可能含有不当信息,并可能在一定程度上影响模型输出的中立性。
-
databricks-dolly-15k: 这些数据由 Databricks 员工生成,可能因其背景而不具备全球代表性,并可能包含一些小错误。
如何开始生成响应
如果您想测试模型而不进行训练,可以直接在 Hugging Face 上找到 Dolly 模型。在拥有 A100 GPU 的机器上,可以通过 transformers 库快速开始:
from transformers import pipeline
import torch
instruct_pipeline = pipeline(model="databricks/dolly-v2-12b", torch_dtype=torch.bfloat16, trust_remote_code=True, device_map="auto")
可以使用如下指令测试模型:
instruct_pipeline("Explain to me the difference between nuclear fission and fusion.")
在其他实例上生成
某些地区可能没有 A100 实例。在此情况下,可以调整模型配置,以适应如 V100 或 A10 等其他 GPU 实例。
如何开始训练
Dolly 模型的训练可以通过 Databricks 平台进行:
- 添加
dolly
仓库至 Databricks,然后启动一个合适的 GPU 集群。 - 通过运行
train_dolly
笔记本文件,完成模型训练并保存在指定路径下。
其他实例上的训练
若没有合适规格的 A100 实例,可以根据你的 GPU 类型对模型配置进行一些调整以减少内存使用。
本地运行单元测试
可通过如下步骤在本地运行单元测试:
pyenv local 3.8.13
python -m venv .venv
. .venv/bin/activate
pip install -r requirements_dev.txt
./run_pytest.sh
通过这些步骤,用户可以根据自己的需求自定义 Dolly 模型。对于有组织或个体 AI 开发需求的用户,Dolly 提供了一个强大而灵活的基础构建块。