Hugging Face 的文本生成和大语言模型的开源生态

news2024/10/7 10:24:12

[更新于 2023 年 7 月 23 日: 添加 Llama 2。]

文本生成和对话技术已经出现多年了。早期的挑战在于通过设置参数和分辨偏差,同时控制好文本忠实性和多样性。更忠实的输出一般更缺少创造性,并且和原始训练数据更加接近,也更不像人话。最近的研究克服了这些困难,并且友好的交互页面能让每个人尝试这些模型。如 ChatGPT 的服务,已经把亮点放在强大的模型如 GPT-4,并且引发了爆发式的开源替代品变成主流如 Llama。我们认为这些技术将持续很长一段时间,并且会越来越集成到日常产品中。

这篇博客分成一下几个部分:

  1. 文本生成的简明背景

  2. 许可证

  3. Hugging Face 的生态中面向大语言模型的服务

  4. 参数高效的微调

文本生成的简明背景

文本生成模型本质上是以补全文本或者根据提示词生成文本为目的训练的。补全文本的模型被称之为条件语言模型 (Causal Language Models),有著名的例子比如 OpenAI 的 GPT-3 和 Meta AI 的 Llama。

d0ddc86d82d58fc453ba0e08c505abe8.png
Causal LM Output

下面你最好要了解型微调,这是把一个大语言模型中的知识迁移到另外的应用场景的过程,我们称之为一个 下游任务 。这些任务的形式可以是根据提示的。模型越大,就越能泛化到预训练数据中不存在,但是可以在微调中学习到的提示词上。

条件语言模型有采用基于人类反馈的强化学习 (Reinforcement Learning from Human Feedback, RLHF)。这个优化过程主要基于答复文本的自然性和忠实性,而不是答复的检验值。解释 RLHF 的工作原理超出了本博客的范围,但是你可以在 这里 了解。

举例而言,GPT-3 是一个条件 基本 语言模型,作为 ChatGPT 的后端,通过 RLHF 在对话和提示文本上做微调。最好对这些模型做区分。

在 Hugging Face Hub 上,你可以同时找到条件语言模型和在提示文本上微调过的条件语言模型 (这篇博客后面会给出链接)。Llama 是最早开源,并且能超过闭源模型的大语言模型之一。一个由 Together 领导的研究团队已经复线了 Llama 的数据集,称之为 Red Pajama,并且已经在上面训练和微调了大语言模型。你可以在 这里 了解。以及在 Hugging Face Hub 上找到 模型。截止本博客写好的时候,三个最大的开源语言模型和其许可证分别为 MosaicML 的 MPT-30B,Salesforce 的 XGen 和 TII UAE 的 Falcon,全都已经在 Hugging Face Hub 上开源了。

最近,Meta 开放了 Llama 2,其许可证允许商业用途。截止目前 Llama 2 能在各种指标上超过任何其他开源模型。Llama 2 在 Hugging Face Hub 上的 checkpoint 在 transformers 上兼容,并且最大的 checkpoint 人们都可以在 HuggingChat 上尝试。你可以通过 这篇博客 学习到如何在 Llama 2 上微调,部署和做提示词。

第二种文本生成模型通常称之为文本到文本的生成模型。这些模型在文本对的数据集上训练,这些数据集或者是问答形式,或者是提示和反馈的形式。最受欢迎的是 T5 和 BART (目前为止以及不是最新的技术了)。Google 最近发布了 FLAN-T5 系列的模型。FLAN 是最近为提示任务设计的技术,而 FLAN-T5 便是完全由 T5 用 FLAN 微调得到的模型。目前为止,FLAN-T5 系列的模型是最新的技术,并且开源,可以在 Hugging Face Hub 上看到。注意这和用条件语言模型在提示任务的微调下是不一样的,尽管其输入和输出形式类似。下面你能看到这些模型的原理。

c76565ac74676ebde66f7bf346cf9090.png
FLAN-T5 Illustration

拥有更多开源的文本生成模型能让公司保证其数据隐私,部署下游更快,并且减少购买闭源 API 的支出。Hugging Face Hub 上所有开源的条件语言模型都能在 这里 找到,并且文本到文本的生成模型都能在 这里 找到。

Hugging Face 用爱和 BigScience 与 BigCode 创造的模型 💗

Hugging Face 引领了两家科研初创 BigScience 和 BigCode。它们分别创造了两个大语言模型 BLOOM 🌸 和 StarCoder 🌟。

BLOOM 是一个以 46 种自然语言和 13 种编程语言训练的条件语言模型,是第一个比 GPT-3 有更多参数量的开源模型。你能在 BLOOM 的文档 上下载所需的所有 checkpoint。

StarCoder 是一个以 GitHub 上可访问的代码作为数据集,以 Fill-in-the-Middle 形式训练的语言模型。它不是以提示文本来微调的,所以它更适合对给定代码做补全任务,比如把 Python 翻译到 C++,解释概念 (什么是递归),或者假扮终端。你可以在 这里 找到 StarCoder 所有的 checkpoints。它也有对应的 VSCode 扩展。

本博客中提及的模型,使用代码段都或者在模型主页,或者在该类模型的文档中。

许可证

许多文本生成模型,要么是闭源的,要么是许可证限制商业使用。幸运的是,开源模型开始出现,并且受社区青睐,用于进一步开发、微调、部署到项目中。下面你能找到一些完全开源的大型条件语言模型。

  • Falcon 40B

  • XGen

  • MPT-30B

  • Pythia-12B

  • RedPajama-INCITE-7B

  • OpenAssistant (Falcon variant)

有两个代码生成模型,BigCode 的 StarCoder 和 Salesforce 的 Codegen。它们提供了不同大小的模型 checkpoint。除了 在提示文本上微调的 Codegen 之外,使用了开源或者 open RAIL 许可证。

Hugging Face Hub 也有许多为提示文本或聊天微调的模型,根据你的需求不同,可以选择不同风格和大小。

  • MPT-30B-Chat,Mosaic ML,使用 CC-BY-NC-SA 许可证,不允许商业用途。但是,MPT-30B-Instruct 使用 CC-BY-SA 3.0 许可证,允许商业使用。

  • Falcon-40B-Instruct 和 Falcon-7B-Instruct 都使用 Apache 2.0 许可证,所以允许商业使用。

  • 另外一系列受欢迎的模型是 OpenAssistant,部分是在 Meta 的 Llama 使用个性化的提示文本微调得到的。因为原本的 Llama 只允许研究用途,OpenAssistant 中使用 Llama 的部分不能完全开源。但是,也有 OpenAssistant 模型建立在完全开源的模型之上,比如 Falcon 或者 pythia。

  • StarChat Beta 是 StarCoder 通过提示文本微调的版本,使用 BigCode Open RAIL-M v1 许可证,允许商用。Salesforce 的用提示文本微调的模型, XGen model,只允许研究用途。

如果你想要用一个现成的提示文本数据集微调模型,你需要知道它是怎么来的。一些现成的提示文本数据集要么是由大量人工编写,要么是现有的模型的输出 (比如 ChatGPT 背后的模型)。Stanford 的 ALPACA 数据集由 ChatGPT 背后的数据集的输出组成。另外,不少人工编写的数据集是开源的,比如 oasst1 (由数千名志愿者输出!) 或者 databricks/databricks-dolly-15k。如果你想自己创建数据集,那你可以看 the dataset card of Dolly 来学习创建提示文本数据集。模型在数据集上微调的过程可以分布式进行。

你可以通过如下表格了解一些开源或者开放的模型。

ModelDatasetLicenseUse
Falcon 40BFalcon RefinedWebApache-2.0文本生成
SalesForce XGen 7B由 C4, RedPajama 和其他数据集混合Apache-2.0文本生成
MPT-30B由 C4, RedPajama 和其他数据集混合Apache-2.0文本生成
Pythia-12BPileApache-2.0文本生成
RedPajama INCITE 7BRedPajamaApache-2.0文本生成
OpenAssistant Falcon 40Boasst1 和 DollyApache-2.0文本生成
StarCoderThe StackBigCode OpenRAIL-M代码生成
Salesforce CodeGenStarcoder DataApache-2.0代码生成
FLAN-T5-XXLgsm8k, lambada, 和 esnliApache-2.0文本到文本生成
MPT-30B ChatShareGPT-Vicuna, OpenAssistant Guanaco 和更多CC-By-NC-SA-4.0聊天
MPT-30B Instructduorc, competition_math, dolly_hhrlhfCC-By-SA-3.0提示任务
Falcon 40B InstructbaizeApache-2.0提示任务
Dolly v2DollyMIT文本生成
StarChat-βOpenAssistant GuanacoBigCode OpenRAIL-M代码提示任务
Llama 2非公开的数据集Custom Meta License (允许商用)文本生成

Hugging Face 的生态中面向大语言模型的服务

文本生成推理

使用这些大模型为多用户提供并发服务时,想要降低响应时间和延迟是一个巨大的挑战。为了解决这个问题,Hugging Face 发布了 text-generation-inference (TGI),这是一个开源的大语言模型部署解决方案,它使用了 Rust、Python 和 gRPC。TGI 被整合到了 Hugging Face 的推理解决方案中,包括 Inference Endpoints 和 Inference API,所以你能通过简单几次点击创建优化过的服务接入点,或是向 Hugging Face 的推理 API 发送请求,而不是直接将 TGI 整合到你的平台里。

7029e9fb1e0d98677413bbb9366d5e56.png
Screenshot from HuggingChat

当前 TGI 助力实现了 HuggingChat,这是 Hugging Face 的开源 LLM 聊天界面。目前这项服务背后是来自 OpenAssistant 的模型。你可以随意和 HuggingChat 聊天,并且使用网页搜索功能来检索当前网页的内容。你还可以为每次响应提供反馈,供模型的作者进行优化训练。HuggingChat 的界面同样也是 开源 的,我们正持续不断完善它,争取加入更多功能,比如在聊天过程中生成图片。

46e42eb3c49a1a54425fe37524bbf1f6.png
HuggingChat Search

最近,Hugging Face Spaces 上发布了用于 HuggingChat 的 Docker 模板。这样一来每个人都可以轻松部署和自定义自己的 HuggingChat 实例了。你可以在 这里 基于众多大语言模型 (包括 Llama 2) 创建自己的实例。

671582bdd37c35de1976e82640300b79.png
HuggingChat Space

如何寻找最佳模型?

Hugging Face 设立了一个 大语言模型排名。该排名是通过社区提交的模型在不同指标上的测试结果在 Hugging Face 的集群上的表现评估的。如果你无法找到你想要的模型或者方向,你可以在 这里 设置过滤条件。

20fb1d01ad679085dc31a02f89169bfd.png
Open LLM Leaderboard

你也能找到 大语言模型的表现排名,它评估了 Hugging Face Hub 上大语言模型输出的中间值。

参数高效的微调 (PEFT)

如果你想用你自己的数据集来微调一个模型,在客户端硬件上微调并部署基本是不可能的 (因为提示模型和原本模型的大小一样)。PEFT 是一个实现参数高效的微调技术的库。这意味着,不需要训练整个模型,你只需要训练少量参数,允许更快速的训练而只有非常小的性能损失。通过 PEFT,你可以使用 LoRA,prefix tuning, prompt tuning 和 p-tuning。

以下更多资源可以帮助你了解和文本生成有关的更多信息。

更多资源

  • 我们和 AWS 一起发布了基于 TGI 的 LLM 开发的深度学习容器,称之为 LLM Inference Containers。戳 这里 了解。

  • 文本生成任务页面。

  • PEFT 发布的 博客。

  • 阅读了解 Inference Endpoints 如何使用 TGI。

  • 阅读 如何用 Transformers,PEFT 和提示词微调 Llama 2。

🤗 宝子们可以戳 阅读原文 查看文中所有的外部链接哟!


英文原文: https://hf.co/blog/os-llms

原文作者: Merve Noyan

译者: Vermillion-de

审校/排版: zhongdongy (阿东)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/856903.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

论文研读-SIMD系列-基于分区的SIMD处理及在列存数据库系统中的应用

基于分区的SIMD处理及在列存数据库系统中的应用 单指令多数据(SIMD)范式称为列存数据库系统中优化查询处理的核心原则。到目前为止,只有LOAD/STORE指令被认为足够高效,可以实现预期的加速,并且认为需要尽可能避免GATHE…

Sentieon | 每周文献-Benchmark and Method Study(基准与方法研究)-第八期

基准与方法研究系列文章-1 标题(英文): Standardized Comparison of Different DNA Sequencing Platforms 标题(中文): 不同 DNA 测序平台的标准化比较 发表期刊: Clinical Chemistry 作者单…

leetCode刷题记录1

文章目录 hot100题200. 岛屿数量206. 反转链表207. 课程表208. 实现 Trie (前缀树)★ Student[] strArr new Student[26];//真的只是创建了引用数组 只是new了数组存放引用的内存 并没有真的new对象内存 215. 数组中的第K个最大元素221. 最大正方形226. 翻转二叉树234. 回文链表…

Java定时算法实现与应用(最小堆、时间轮)

文章目录 一、定时算法 概述二、最小堆算法1、概述2、Java实现最小堆算法(1)Timer使用(2)源码分析 3、应用 三、 时间轮算法1、概述2、Java实现时间轮算法 一、定时算法 概述 系统或者项目中难免会遇到各种需要自动去执行的任务&…

免费小程序商城搭建之b2b2c o2o 多商家入驻商城 直播带货商城 电子商务b2b2c o2o 多商家入驻商城 直播带货商城 电子商务 bbc

1. 涉及平台 平台管理、商家端(PC端、手机端)、买家平台(H5/公众号、小程序、APP端(IOS/Android)、微服务平台(业务服务) 2. 核心架构 Spring Cloud、Spring Boot、Mybatis、Redis 3. 前端…

视频音频怎么提取成MP3?教你几种简单提取方法

提取视频音频并将其转换为MP3格式有很多好处。首先,MP3格式是一种广泛支持的音频格式,可以在几乎所有设备上播放,包括计算机、手机和音乐播放器。这意味着您可以在任何设备上随时随地享受音频内容,而不必担心格式兼容性问题。那么…

Win11中使用pip或者Cython报错 —— error: Microsoft Visual C++ 14.0 is required.

第一步:下载Visual Studio 2019 下载地址: https://learn.microsoft.com/zh-cn/visualstudio/releases/2019/release-notes 第二步:安装组件 选择单个组件,勾选以下两个组件 其他错误: 无法打开文件“python37.li…

触控触感方案原厂18按键触摸芯片电路图

VK3618I具有18个触摸按键,可用来检测外部触摸按键上人手的触摸动作。该芯片具有较 高的集成度,仅需极少的外部组件便可实现触摸按键的检测。 提供了2组I2C输出功能,1个INT中断输出脚,2组I2C脚和INT可并联,每组单键输出…

【腾讯云 Cloud Studio 实战训练营】快速构建React完成点餐H5页面

一,前言 1.1 相关链接 官网地址:Cloud Studio 官方文档地址:Cloud Studio(云端 IDE)简介 | Cloud Studio 1.2 Cloud Studio(云端 IDE)简介 Cloud Studio 是基于浏览器的集成式开发环境&#…

山景DSP芯片可烧录AP8224C2音频处理器方案

AP8224C2高性能32位音频应用处理器AP82系列音频处理器是面向音频应用领域设计的新一代SoC平台产品,适用于传统音响系统、新兴的蓝牙或Wifi 无线音频产品、Sound Bar 和调音台等市场。该处理器在总体架构和系统组成上,充分考虑了音频领域的特点&#xff0…

一个月学通Python(三十四):使用Selenium模拟人工操作及获取网页内容

专栏介绍 结合自身经验和内部资料总结的Python教程,每天3-5章,最短1个月就能全方位的完成Python的学习并进行实战开发,学完了定能成为大佬!加油吧!卷起来! 全部文章请访问专栏:《Python全栈教…

【cs61b】学习笔记day2

历史文章目录 【cs61b】学习笔记day1 文章目录 历史文章目录List两个小问题bits声明一个变量引用类型方框和指针表示法数组的实例化链表 SLList List 两个小问题 思考下面两个代码分别输出什么 Walrus a new Walrus(1000, 8.3); Walrus b; b a; b.weight 5; System.out.…

并发编程面试题1

并发编程面试题1 一、原子性高频问题: 1.1 Java中如何实现线程安全? 多线程操作共享数据出现的问题。 锁: 悲观锁:synchronized,lock乐观锁:CAS 可以根据业务情况,选择ThreadLocal,让每个…

2023最新版Anaconda下载安装教程(非常详细)从零基础入门到精通,看完这一篇就够了

1. 前言 小编的电脑是win10系统的,这里以win10系统安装Anaconda为例,其他的系统安装过程类似,可以照猫画虎,下面请看具体的安装过程。 2. 下载软件 1、首先去官网上进行下载软件,下载地址: https://docs…

php获取随机订单号(封装函数)

作为一个开发人员,生成订单时常常需要获取一段随机码来表示订单号,并且订单号一般包含的特定的时间日期等信息,临时现写一个比较浪费时间,这里有一个封装好的生成随机订单号的函数,需要时直接调用即可。 代码如下&…

【腾讯云 Cloud Studio 实战训练营】一个新的趋势已来

写在前面:博主是一只经过实战开发历练后投身培训事业的“小山猪”,昵称取自动画片《狮子王》中的“彭彭”,总是以乐观、积极的心态对待周边的事物。本人的技术路线从Java全栈工程师一路奔向大数据开发、数据挖掘领域,如今终有小成…

Datahub稳定版本0.10.4安装指南(独孤风版本)

大家好,我是独孤风,大数据流动的作者。 曾几何时,我在第一次安装JDK环境的时候也遇到了不小的麻烦,当时还有朋友就因为这个环境问题觉得自己根本不是编程的料,选择了放弃。当时有个段子说,“如果不是JDK环境…

生物学家呼吁:基因组测序是从大流行病中快速获得信息的最重要方法之一

生物学家Jason Ladner和Jason Sahl于2023年8月1日发表在《PLOS Biology》(IF20229.8)的一篇文章中主张,持续发展基因组测序是能从大流行病中快速获得信息的最重要方法之一。基因组测序对全球应对COVID-19产生了巨大影响,随着更多研…

与这个夏天的快乐与不快乐,都挥手告别吧!

点击文末“阅读原文”即可参与节目互动 剪辑、音频 / 伊姐 运营 / SandLiu 卷圈 监制 / 姝琦 封面 / 姝琦Midjourney 产品统筹 / bobo 场地支持 / 声湃轩天津录音间 2023这个夏天, 地震、暴热、洪水……呼的一下, 密集发生的天灾让人揪心&#xff0c…

Unity-Shader-高亮Highlight

常用Shader-高亮,可动态调整高亮颜色、高亮强度范围/等级、高亮闪烁速度、高亮状态 Shader "CustomShader/Highlight" {Properties{_Color("Color", Color) (0.9044118,0.6640914,0.03325041,0)_Albedo("Albedo", 2D) "white…