Databricks的dolly-v2-7b是一种遵循指令的大型语言模型,使用的训练平台是Databricks的机器学习平台,专为商业用途而许可。基于pythia-6.9b训练,Dolly在InstructGPT论文中的能力领域中,包括头脑风暴、分类、封闭式问答、生成、信息提取、开放式问答和摘要等方面,利用由Databricks员工生成的约15,000条指令/响应微调记录进行训练。dolly-v2-7b不是一种最先进的模型,但展示了与其基于的基础模型不同的出乎意料的高质量指令跟踪行为。
dolly-v2还提供这些其他模型规模:
请参考 dolly GitHub repo 以获取有关在各种GPU配置上运行推理的提示。
所有者:Databricks,Inc.
该存储库托管的是将Python中的AutoGluon加载为ONNX模型时的模型文件。或者,可以将ONNX模型组合到任何支持ONNX Runtime和DirectML的语言中的自定义管道中。如果选择在Python之外使用ONNX Runtime和DirectML,则需要提供自己的tokenizer实现。
Model | Impl |
---|---|
dolly-v2-7b decoder merged with past | ONNX Model |
Tokenizer | AutoTokenizer (? Transformers) |
上述ONNX模型是使用 Olive 工具链使用的 Olive + Dolly V2 with DirectML Sample 进行处理的。Olive示例执行以下步骤:
dolly-v2-7b是由 Databricks 创建的69亿参数因果语言模型,它源自 EleutherAI’s Pythia-6.9b ,并在由Databricks员工生成的用于指令微调的 ~15K record instruction corpus 下进行了微调,根据宽松许可证(CC-BY-SA)发布。
dolly-v2-7b-olive-optimized是由 Olive 生成的dolly-v2-7b的优化ONNX模型,用于与ONNX Runtime和DirectML一起使用。
要在装有ONNX Runtime和DirectML的机器上使用transformers库使用模型,首先确保已安装transformers、accelerate、optimum、onnxruntime-directml和onnx库:
pip install "accelerate>=0.16.0,<1" "transformers[torch]>=4.28.1,<5" "torch>=1.13.1,<2" "optimum>=1.8.8,<2" "onnxruntime-directml>=1.15.1,<2" "onnx>=1.14.0<2"
然后,您可以下载 instruct_pipeline.py 并根据加载的模型和tokenizer构建pipeline:
from transformers import AutoTokenizer, TextStreamer from optimum.onnxruntime import ORTModelForCausalLM from instruct_pipeline import InstructionTextGenerationPipeline tokenizer = AutoTokenizer.from_pretrained("microsoft/dolly-v2-7b-olive-optimized", padding_side="left") model = ORTModelForCausalLM.from_pretrained("microsoft/dolly-v2-7b-olive-optimized", provider="DmlExecutionProvider", use_cache=True, use_merged=True, use_io_binding=False) streamer = TextStreamer(tokenizer, skip_prompt=True) generate_text = InstructionTextGenerationPipeline(model=model, streamer=streamer, tokenizer=tokenizer, max_new_tokens=128) generate_text("Explain to me the difference between nuclear fission and fusion.")
dolly-v2-7b不是最先进的生成语言模型,并且尽管定量基准测试正在进行中,但它不适用于与更现代的模型架构或规模更大的预训练语料库相竞争的性能。
Dolly模型系列正在积极开发,并且因此,任何缺陷列表都不太可能是详尽无遗的,但我们在此包括已知的限制和错误,以便记录和与社区分享我们的初步研究结果。特别是,dolly-v2-7b在以下方面存在问题:句法复杂的提示、编程问题、数学运算、事实错误、日期和时间、开放式问答、幻觉、列举特定长度的列表、模仿风格、幽默感等。此外,我们发现dolly-v2-7b没有像原始模型中那样具有良好格式的信函写作等功能。
与所有语言模型一样,dolly-v2-7b反映了其训练语料库的内容和限制。
The Pile:GPT-J的预训练语料库主要包含从公共互联网收集的内容,与大多数网络规模的数据集一样,它包含许多用户认为不可接受的内容。因此,该模型很可能反映了这些缺点,可能是明显的(例如在明确要求其生成不可接受的内容时)或隐晦的(例如产生有偏见或有害的隐含关联)。
databricks-dolly-15k:用于dolly-v2-7b进行指令微调的训练数据涵盖了数据周期从2023年3月到4月的期间,其中包括维基百科的段落作为封闭QA和摘要等指令类别的参考段落。据我们所知,它不包含亵渎语言、知识产权或有关非公众人物的个人身份信息,但可能包含拼写错误和事实错误。数据集还可能反映维基百科中存在的偏见。最后,该数据集很可能反映了Databricks员工的兴趣和语义选择,而这一人群并不代表全球人口。
Databricks致力于进行持续的研究和开发工作,以开发有益、诚实和无害的人工智能技术,最大限度地发挥所有个体和组织的潜力。
以下是各种模型在 EleutherAI LLM Evaluation Harness 上的基准性能;模型结果按几何平均值排序以产生可理解的排序。如上所述,这些结果表明,dolly-v2-7b不是最先进的,并且实际上在某些评估基准中表现不如dolly-v1-6b。我们认为这归因于底层微调数据集的组成和规模,但要对这些变化的来源做出有力声明,需要进一步研究。
model | openbookqa | arc_easy | winogrande | hellaswag | arc_challenge | piqa | boolq | gmean |
---|---|---|---|---|---|---|---|---|
EleutherAI/pythia-2.8b | 0.348 | 0.585859 | 0.589582 | 0.591217 | 0.323379 | 0.73395 | 0.638226 | 0.523431 |
EleutherAI/pythia-6.9b | 0.368 | 0.604798 | 0.608524 | 0.631548 | 0.343857 | 0.761153 | 0.6263 | 0.543567 |
databricks/dolly-v2-3b | 0.384 | 0.611532 | 0.589582 | 0.650767 | 0.370307 | 0.742655 | 0.575535 | 0.544886 |
EleutherAI/pythia-12b | 0.364 | 0.627104 | 0.636148 | 0.668094 | 0.346416 | 0.760065 | 0.673394 | 0.559676 |
EleutherAI/gpt-j-6B | 0.382 | 0.621633 | 0.651144 | 0.662617 | 0.363481 | 0.761153 | 0.655963 | 0.565936 |
databricks/dolly-v2-12b | 0.408 | 0.63931 | 0.616417 | 0.707927 | 0.388225 | 0.757889 | 0.568196 | 0.56781 |
databricks/dolly-v2-7b | 0.392 | 0.633838 | 0.607735 | 0.686517 | 0.406997 | 0.750816 | 0.644037 | 0.573487 |
databricks/dolly-v1-6b | 0.41 | 0.62963 | 0.643252 | 0.676758 | 0.384812 | 0.773667 | 0.687768 | 0.583431 |
EleutherAI/gpt-neox-20b | 0.402 | 0.683923 | 0.656669 | 0.7142 | 0.408703 | 0.784004 | 0.695413 | 0.602236 |
该模型是Databricks, Inc.的优化版本。