Header Image

如何使用Databricks、Hugging Face和MosaicML训练大型语言模型(LLMs)

介绍

大型语言模型(如OpenAI的GPT-4或Google的PaLM)已经席卷了人工智能领域。然而,大多数公司目前都没有能力训练这些模型,并且完全依赖于只有少数大型科技公司提供的技术。

在Replit,我们投入了大量的基础设施来从头开始训练自己的大型语言模型。在本文中,我们将概述如何训练LLMs,从原始数据到在用户面向生产环境中的部署。我们将讨论我们在此过程中面临的工程挑战,以及我们如何利用我们认为构成现代LLM堆栈的供应商:Databricks、Hugging Face和MosaicML。

虽然我们的模型主要是用于代码生成的用例,但所讨论的技术和经验教训适用于所有类型的LLMs,包括通用语言模型。在未来的几周和几个月中,我们计划深入探讨我们的流程的细节。

为什么要训练自己的LLMs?

Replit的AI团队最常见的问题之一是“为什么要训练自己的模型?”公司决定训练自己的LLMs的原因有很多,从数据隐私和安全到对更新和改进的更多控制。

在Replit,我们主要关心的是定制化、减少依赖和成本效益。

  • 个性化定制。训练自定义模型允许我们根据特定的需求和要求进行定制,包括平台特定的功能、术语和上下文,这些在通用模型如 GPT-4 或仅限代码的模型如 Codex 中都无法很好地覆盖。例如,我们的模型经过训练,可以更好地处理在 Replit 上流行的特定基于Web的语言,包括 Javascript React (JSX) 和 Typescript React (TSX)。
  • 降低依赖性。虽然我们始终会根据需要使用适当的模型,但我们认为减少对少数人工智能供应商的依赖是有好处的。这不仅适用于 Replit,也适用于更广泛的开发者社区。这就是为什么我们计划开源一些我们的模型,这是在没有训练它们的手段的情况下无法实现的。
  • 成本效益。虽然成本将继续下降,但 LLMs 对于全球开发者社区来说仍然成本过高。在 Replit,我们的使命是将下一个亿的软件创作者带上线。我们认为,印度手机上编写代码的学生应该能够访问与硅谷专业开发人员相同的人工智能。为了实现这一目标,我们训练定制的模型,这些模型更小、更高效,并可以以大大降低的成本进行托管。

数据管道

LLM模型需要大量的数据进行训练。为了训练它们,需要构建强大的数据管道,这些管道高度优化,同时又足够灵活,能够轻松包含新的公共和专有数据来源。

数据来源

我们首先以“数据来源”作为我们的主要数据来源,该数据源可在Hugging Face上获得。Hugging Face是一个极好的数据集和预训练模型资源。他们还提供了许多有用的工具,包括用于分词、模型推断和代码评估的工具,这些工具作为Transformers库的一部分提供。

“数据来源”是由BigCode项目提供的。有关数据集构建的详细信息可参考Kocetkov et al. (2022)。在去重之后,版本1.2的数据集包含大约2.7TB的可许可证源代码,涵盖了超过350种编程语言。

Transformers库在抽象出许多与模型训练相关的挑战方面做得非常好,包括处理大规模数据。但是,我们发现它对我们的过程来说不够充分,因为我们需要对数据进行额外的控制,并能够以分布式方式处理数据。

llm-training