如果你是一个软件开发者,你可能已经使用过 ChatGPT 或 GitHub 的 Copilot 去解决一些写代码过程中遇到的问题,比如将代码从一种语言翻译到另一种语言,或者通过自然语言,诸如“写一个计算斐波那契数列第 N 个元素的 Python 程序”,来自动生成代码。尽管这些专有系统功能强大,但它们仍然有很多不足,比如对训练所使用的公共数据透明度的缺失、没有能力去让它们适配自己的使用领域或代码库。
幸运的是,现在我们有了很多高质量开源替代品!包括 SalesForce 为 Python 语言开发的 CodeGen Mono 16B,以及 Replit 开发的、在 20 种编程语言上训练过的 一个 3B 参数量的模型。
而最近新出现的一个选择则是 BigCode 开发的 StarCoder,这是一个在一万亿的 token、80 多种编程语言上训练过的 16B 参数量的模型。训练数据多来自 GitHub 上的 issues、使用 Git 提交的代码、Jupyter Notebook 等等 (相关使用都已经过许可)。得益于对企业友好的许可证、长度为 8192 的 token、借助 multi-query attention 的快速大批量推理,StarCoder 可以说是当前对代码相关的应用最合适的开源选择。
本文将介绍如何对 StarCoder 进行微调,进而创建一个可以聊天的个人编程助手。这个编程助手我们将称之为 StarChat。借助 StarChat 的开发过程,我们将探索以下几个使用大语言模型 (LLM) 创建编程助手时可能遇到的几个技术细节:
- 我们应该怎样对大语言模型进行提词,使得它成为一个对话代理
- 我们也将介绍 OpenAI 的 Chat Markup Language (简称 ChatML),它为人类用户和 AI 助手之间的对话信息传递提供了一种结构化的格式
- 怎样在一个多样性很强的语料库上,使用 🤗 Transformers 和 DeepSpeed ZeRO-3 去微调一个大语言模型
最后,为了尝试一下效果,我们还会问 StarChat 几个编程方面的问题 (参考下如果你是一个软件开发者,你可能已经使用过 ChatGPT 或 GitHub 的 Copilot 去解决一些写代码过程中遇到的问题,比如将代码从一种语言翻译到另一种语言,或者通过自然语言,诸如“写一个计算斐波那契数列第 N 个元素的 Python 程序”,来自动生成代码。尽管这些专有系统功能强大,但它们仍然有很多不足,比如对训练所使用的公共数据透明度的缺失、没有能力去让它们适配自己的使用领域或代码库。
幸运的是,现在我们有了很多高质量开源替代品!包括 SalesForce 为 Python 语言开发的 CodeGen Mono 16B,以及 Replit 开发的、在 20 种编程语言上训练过的 一个 3B 参数量的模型。
而最近新出现的一个选择则是 BigCode 开发的 StarCoder,这是一个在一万亿的 token、80 多种编程语言上训练过的 16B 参数量的模型。训练数据多来自 GitHub 上的 issues、使用 Git 提交的代码、Jupyter Notebook 等等 (相关使用都已经过许可)。得益于对企业友好的许可证、长度为 8192 的 token、借助 multi-query attention 的快速大批量推理,StarCoder 可以说是当前对代码相关的应用最合适的开源选择。
本文将介绍如何对 StarCoder 进行微调,进而创建一个可以聊天的个人编程助手。这个编程助手我们将称之为 StarChat。借助 StarChat 的开发过程,我们将探索以下几个使用大语言模型 (LLM) 创建编程助手时可能遇到的几个技术细节:
- 我们应该怎样对大语言模型进行提词,使得它成为一个对话代理
- 我们也将介绍 OpenAI 的 Chat Markup Language (简称 ChatML),它为人类用户和 AI 助手之间的对话信息传递提供了一种结构化的格式
- 怎样在一个多样性很强的语料库上,使用 🤗 Transformers 和 DeepSpeed ZeRO-3 去微调一个大语言模型
最后,为了尝试一下效果,我们还会问 StarChat 几个编程方面的问题 (参考下面的演示)。
体验地址:https://huggingfaceh4-starchat-playground.hf.space
你也可以查看生成上面演示所使用的代码、数据集和模型:
- 代码:https://github.com/bigcode-project/starcoder
- 数据集:https://hf.co/datasets/HuggingFaceH4/oasst1_en
- 模型:https://hf.co/HuggingFaceH4/starchat-alpha
接下来第一步,我们先来看看怎样把语言模型转化为一个对话代理。这里我们不是用任何微调。
面的演示)。
体验地址:https://huggingfaceh4-starchat-playground.hf.space
你也可以查看生成上面演示所使用的代码、数据集和模型:
- 代码:https://github.com/bigcode-project/starcoder
- 数据集:https://hf.co/datasets/HuggingFaceH4/oasst1_en
- 模型:https://hf.co/HuggingFaceH4/starchat-alpha
接下来第一步,我们先来看看怎样把语言模型转化为一个对话代理。这里我们不是用任何微调。