---
title: "Hugging Face：开源机器学习 - 从预训练模型到生产环境运行最先进的开源LLMs"
id: "20231123A07CXZ00"
publicationAccount: "非凡产研"
originalPublishedAt: "2023-11-23T18:00:00+08:00"
canonical: "https://ffcap.cn/research/20231123a07cxz00"
source: "https://view.inews.qq.com/a/20231123A07CXZ00"
sourceAccount: "https://news.qq.com/omn/author/21759984"
language: "zh-CN"
tags: ["开源与本地部署","融资与投资","全球化出海","OpenAI","AI 编程","模型与基础设施","营销增长","商业化"]
---

# Hugging Face：开源机器学习 - 从预训练模型到生产环境运行最先进的开源LLMs

文章中的“非凡产研”是原始发布账号署名，不代表已核实个人执笔作者。引用访谈或圆桌观点时，应按正文标明具体发言人及当时身份；无法确认时不要推断。日期为原始发表日期，历史信息以发布时点为准。

   **背景介绍**

**亚马逊云科技**近日联合**非凡资本**在上海举办了「**AI全球化专项加速计划**」线下活动，多家国内、外一线AI头部创业公司到现场与超百位AI创业者进行交流。

本期内容整理自活动圆桌讨论。

活动系列内容回顾：  

[《Babel CEO 张海龙：构建复杂LLM应用应注意的误区和要点》](https://view.inews.qq.com/a/20231116A06K5400)  

[《中美AI企业商业化落地生态对比》](https://view.inews.qq.com/a/20231120A086O600)  
  
[《AI应用出海的机遇和挑战》](https://view.inews.qq.com/a/20231122A08I3N00)  
  

   ******嘉宾************介绍******

****王铁震  Hugging Face工程师  
****

![Hugging Face：开源机器学习 - 从预训练模型到生产环境运行最先进的开源LLMs · 原文图片 1](https://inews.gtimg.com/om_bt/OyoRBQY03jEyNotw8Ps9b7K6IFZ_T66ESdlX1ME7Ds6o4AA/1000)

**Hugging Face是当今全球最领先的大模型开源社区之一，**也是全球最具影响力的AI公司之一，目前估值超45亿美元是除OpenAI之外估值最高的AI独角兽。包括谷歌、亚马逊英伟达、英特尔、Salesforce等多家科技巨头纷纷参与投资。

* * *

大部分人谈到大模型时，往往只看到表面，模型训练的具体过程并未受到广泛关注。我希望通过具体场景的介绍，重新审视整个完整链路，尽管这是一个复杂而重要的任务。这里，我以一个代码生成模型为例，希望能为大家业务开发提供帮助。  

Hugging Face主要提供模型数据集和大型Demo的托管服务。去年Hugging Face经历了快速增长，模型数量翻了一番多。在众多模型中，我将以代码组成模型为例，分享统计训练和整个链路的故事。以及解释我们做出一些决策背后的思考，借此给大家一些启示。  

代码生成是一个很好的例子，比如，我们写一个workspace，只要上面写一个函数的名字，然后给它写一个修饰，它就可以帮你把这个函数实现，这可以很大程度上极提高生产力。  

从商业场景的角度来看，ChatGPT等产品在商业上的转化一直备受关注，代码生成对于工程师的价值也得到了验证。**有研究报告指出，使用代码生成功能后，工程师的创造价值增加了20%，这对企业来说是一笔可观的投资。**

我们的产品设计注重用户友好性，使企业更容易愿意付费。通过提高工程师的创造力，我们的产品改善了工程师编写代码的体验。工程师可能会更愿意去写代码，比如我用了一些Code AI 之后，觉得写代码变成了一件非常愉快的事情。随着代码生成模型技术的发展，我们对整个思考和工作范式的看法也将发生变化。

从整个行业的角度来看，我认为更关键的是用户如何使用这些工具。未来，随着代码生成模型变得更强大、更智能，我们可能会看到用户更加主导工具的发展，用代码生成工具开发符合他们需求的自定义工具，从而解决服务上遇到的问题。我们将不再担心代码的重复，也不再担心代码难以维护。每次需要做某事时，只需清晰地说明需求，系统就会生成相应的代码，让整个过程变得简单直接。

代码生成不论是在当下还是在未来的商业环境，都是一个非常值得投入的点，同时我并不建议大家只追随市场趋势，而是鼓励大家从创造者的角度出发，思考这些技术如何为自己的团队带来帮助。

在我们着手打造代码生成模型时，首先进行了一场关于是选择开源还是闭源的灵魂探讨，考虑到不同的场景，每种选择都有其独特的优势和劣势。特别是在代码生成领域，我们对根本需求进行了思考。对于软件公司来说，代码敏感且重要，安全性和竞争对手是值得关注的问题。开源环境提供了一些好处，可以在受控的环境中运行，减轻了安全和竞争方面的顾虑。此外，对于不同公司的模型可能需要一些调整，而开源代码提供了灵活性，可以根据自己的需求进行调整和定制。  

![Hugging Face：开源机器学习 - 从预训练模型到生产环境运行最先进的开源LLMs · 原文图片 2](https://inews.gtimg.com/om_bt/OF1LjjtLcjsLglxjx9lbgUuhRbxndTu12TEFR5mmvwwtIAA/1000)

另一个优势是在开源模型中，公司可以更好地掌控逻辑，应对内部流程和定制需求。相比之下，封闭的API可能受到限制，无法满足企业的特殊需求。我们认为，对于解决公司问题，开源模型提供了更灵活的解决方案。

接下来，我简单介绍一下我们的模型背景以及具体的应用场景。**我们将整个流程划分为四个部分：数据集（Dataset）、模型训练体验（Training）、模型评估（Evaluation）和部署上线（Deployment）。**

**首先**，我们**构建**了一个包含6.4TB数据的**公开数据集**，并且大部分数据是在平台内部生成的。这里要强调了数据集的重要性，因为即使是生成的代码，也有可能在交互中互相传染。另外还包含 358 种编程语言和数据检查工具和退出机制，让用户可以自主选择是否允许他们的代码被用于训练数据集。

我们一开始在GitHub上拿到了220 million repo的名字，分别对他们做了补充了，最终得到了102TB级别的数据，根据文件后缀进行了筛选，剩下69TB基础数据。然后，我们根据一些标准化步骤，去除了没有许可证或帮助不大的数据，最终保留了6.4TB的数据。

之后我们发现，如果代码不能通过训练系统使用，会存在大量重复的账号，将严重影响性能，因此对数据做了deduplication。通过去重之后，我们得到了2.9TB的宝贵数据。数据在整个流程中非常关键，而我们实际应用的数据可能只有其中一小部分。数据清洗流程是开源协作的重要过程，每个人都需要投入到清洗和抓取的过程中。  

另外，我们还进行了一些额外的工作，包括进行数据迭代。我们考虑到模型评测中可能存在的问题，特别是为了保护用户的个人隐私，自己训练了一个code model，名为StarEncoder，用于标注并替换所有涉及到人的名字、邮件、Passport、IP等敏感信息。那这种方式比传统的 rejects 正则表达式，效果会好很多。

除此以外，Hugging Face还建立了 Opt-out机制，如果用户不希望自己的代码被用来做训练，就可以进行Opt-out申请，下一个迭代中就会把相关代码从代码库里拿掉。

拿到数据之后，Hugging Face就用 tokenizers文本数据转换成机器可以理解的二进制数字，并且很多代码是用 rust 实现，比纯 Python 快很多。

准备好数据后，就开始进行**模型训练**。考虑到代码生成场景，我们选择了延迟较低、能力较强的15B代码优化参数模型。并使用Multi-Query Attention提高效率，降低成本。然后也支撑Long context，最多可以扩展到8,192 tokens context。最后我们用了Fill-in-the-middle 技术，（一般我们训练大语言模型，其实都是预测下一个词，意味着不会去考虑远处的词，比如我们要改一个文件的中间，不会去理解文件光标后面这些字符的影响），Fill-in-the-middle 技术可以整个理解文件在中间做什么样的股权逻辑。

在选定模型架构后，我们进行了模型训练，在512个GPU花费了大约24天的时间，虽然成本很昂贵，但为了训练基础能力是值得的。大家如果想要在自己具体的场景上训练，不用这么大的成本，大家可以用 PEFT（Parameter Efficient Fine-Tuning) 技术训练一个defer，可以用 千分之一甚至 1% 的成本，训练一个在自己领域上可以用，能够理解公司内部代码库的模型。

拥有了模型之后，我们需要进行**评测**，评测的规则是根据给定的输入，包括函数定义等进行测试。如果代码生成模型和补全代码能通过Unit tests，意味着模型生成case至少有一次通过评测。

当我们已经拥有了模型，Hugging Face希望能把它**部署**在生产环境去解决现实中的问题。Hugging Face提供了Inference endpoints功能，选中模型之后可以直接将它移动部署在 AWS 上，无需用户进行复杂的操作。我们也提供类似如此的非常多面向生产环境的功能，可以让模型在多个GPU上面更好地支持。

如果企业希望在自己的环境下去部署，可以使用Text-generation-inference （TGI ）库，TGI提供了非常多面向生产环境的功能，包括：

-   **张量并行（Tensor Parallelism）**：用于在多个GPU上加速推理，将张量切片分配给不同的GPU处理
    
-   **令牌流（Token streaming）**：用于降低延迟，不需要等待完整的生成，服务器可以开始回答，提供快速的用户体验
    
-   **量化（Quantization）**：用了我们之前提到的bitsandbytes等工具，将数据压缩为更小的位数，减少内存占用和计算时间
    
-   **优化（Optimizations）**：用于加速推理，如闪电注意力（flash attention），一种快速的注意力机制
    

最后我想说，大模型训练不仅仅是有卡就行，还需要做很多数据训练和infra 相关的工作，最终才能打造出一个产品。

**\- END -**

---

原始发布版本：https://view.inews.qq.com/a/20231123A07CXZ00

本站阅读页：https://ffcap.cn/research/20231123a07cxz00
