ChatGPT平替「小羊驼」Mac可跑!2行代码单GPU,UC伯克利再发70亿参数开源模型

简介: ChatGPT平替「小羊驼」Mac可跑!2行代码单GPU,UC伯克利再发70亿参数开源模型


 新智元报道  

编辑:桃子 好困

【新智元导读】130亿参数模型权重公布不久,UC伯克利LMSys org再次发布了70亿参数「小羊驼」。同在今天,Hugging Face也发布了70亿参数模型StackLLaMA。


自从Meta发布「开源版ChatGPT」LLaMA之后,学界可谓是一片狂欢。先是斯坦福提出了70亿参数Alpaca,紧接着又是UC伯克利联手CMU、斯坦福、UCSD和MBZUAI发布的130亿参数Vicuna,在超过90%的情况下实现了与ChatGPT和Bard相匹敌的能力。今天,「卷王」UC伯克利LMSys org又发布了70亿参数的Vicuna——不仅体积小、效率高、能力强,而且只需两行命令就能在M1/M2芯片的Mac上运行,还能开启GPU加速!

项目地址:https://github.com/lm-sys/FastChat/#fine-tuning恰在今天,Hugging Face的研究人员也发布了一个70亿参数的模型——StackLLaMA。这是一个通过人类反馈强化学习在LLaMA-7B微调而来的模型。

Vicuna-7B:真·单GPU,Mac就能跑

距离模型的发布不到一周,UC伯克利LMSys org便公布了Vicuna-13B的权重其中,单GPU运行需要大约28GB的显存,而在仅用CPU的情况下需要大约60GB的内存。而这次发布的70亿参数版本,则要小巧得多——需求直接砍半。也就是说,用单个GPU运行Vicuna-7B,只需14GB+显存;而纯CPU运行的话,则只需30GB+内存。不仅如此,我们还可以通过Metal后端,在配备了苹果自研芯片或者AMD GPU的Mac上启用GPU加速。之前在13B模型发布时,有不少网友吐槽道:

我以为的单个GPU:4090 实际上的单个GPU:28GB显存及以上

现在,这个问题也有了新的解决方案——利用8位压缩直接减少一半左右的内存用量,只不过模型的质量会略有下降。13B模型28GB显存瞬间变14GB;7B模型14GB显存瞬间变7GB,有没有!(但由于activation的缘故,实际占用会比这个高)对此,LMSys org的研究人员表示,如果遇到内存或显存不够用的情况,可以通过在上述命令中加入--load-8bit来启用8位压缩。而且,无论是CPU、GPU还是Metal,是7B模型还是13B模型,通通适用。


python3 -m fastchat.serve.cli --model-name /path/to/vicuna/weights --load-8bit


StackLLaMA:超全RLHF训练教程


今天,Hugging Face研究人员发布了一篇博客StackLLaMA:用RLHF训练LLaMA的实践指南。当前大型语言模型ChatGPT、GPT-4和Claude都使用了人类反馈强化学习(RLHF)来微调模型的行为,以产生更符合用户意图的响应。在此,HF研究者通过以下方式组合使用,训练了LlaMa模型使用RLHF回答Stack Exchange上的所有步骤:· 监督微调 (SFT)· 奖励/偏好建模(RM)· 人类反馈强化学习 (RLHF)要注意了!

训练StackLLaMA的主要目标是提供一个教程和指南,介绍如何使用RLHF来训练模型,而不是主要关注模型的性能表现。

换句话说,该模型在生成答案方面非常滑稽,比如问它「我的花园里有一只骆驼,怎样才能把它赶走?」StackLLaMA最后给出的一个总括「如果以上方法都不奏效,就要召集增援了。如果有不止一个人想抓住这个奇特的小家伙,为什么不召集一个团队呢?齐心协力,集中力量,这个问题应该很快就解决了」。在进行RLHF时,最重要的是从一个强有力的模型开始。因为RLHF只是一个微调步骤,以便让模型与我们期望的互动方式和响应方式相一致。当前,Meta开源的LLaMA模型参数大小从7B到65B不等,并且在1T到1.4T的token上进行了训练,是目前开源比较强大的模型。因此,研究人员使用7B模型作为后续微调的基础。在数据集选用上,研究人员使用了StackExchange数据集,包括所有的问题和答案(还有StackOverflow和其他主题)。选用该数据集的好处是,答案伴随着点赞数和接受答案的标签一起给出。研究人员根据A General Language Assistant as a Laboratory for Alignment论文中描述的方法,给每个答案打分:


score = log2 (1 + upvotes) rounded to the nearest integer, plus 1 if the questioner accepted the answer (we assign a score of −1 if the number of upvotes is negative).

对于奖励模型,始终需要每个问题两个答案来进行比较。而有些问题有几十个答案,导致可能存在许多的可选对。因此,研究者对每个问题最多采样十个答案对,以限制每个问题的数据点数。最后,通过将HTML转换为Markdown来清除格式,使模型输出更可读。

训练策略

即使训练最小的LLaMA模型也需要大量的内存。通过计算7B 参数模型将使用(2+8)*7B=70GB 内存空间。当计算注意力分数等中间值时,可能需要更多。因此,即使在单个80GB的A100上也无法训练该模型。一种方法是使用更高效的优化器和半精度训练,将更多信息压缩到内存中,但内存仍旧不够用。另一种选择是使用参数高效微调(PEFT)技术,例如PEFT库,它可以在8位模型上执行低秩适应(LoRA)。线性层的低秩适应: 在冻结层(蓝色)旁边添加额外参数(橙色),并将结果编码的隐藏状态与冻结层的隐藏状态相加。以8位加载模型大大减少了内存占用,因为每个参数只需要一个字节的权重。比如,7B LLaMA在内存中是7 GB。LoRA不直接训练原始权重,而是在一些特定的层 (通常是注意力层) 上添加小的适配器层,因此可训练参数的数量大大减少。在这种情况下,一个经验法则是为每十亿参数分配约1.2-1.4GB的内存(取决于批次大小和序列长度),以适应整个微调设置。这可以以较低成本微调更大的模型(在NVIDIA A100 80GB上训练高达50-60B规模的模型)。这些技术已经能够在消费级设备,比如树莓派、手机,和GoogleColab上对大型模型进行微调。研究人员发现尽管现在可以把非常大的模型放入当个GPU中,但是训练可能仍然非常缓慢。在此,研究人员使用了数据并行策略:将相同的训练设置复制到单个GPU中,并将不同的批次传递给每个GPU。

监督微调

在开始训练奖励模型并使用RL调整模型之前,若要模型在任何情况下遵循指令,便需要指令调优。实现这一点最简单的方法是,使用来自领域或任务的文本继续训练语言模型。为了有效地使用数据,研究者使用一种称为「packing」的技术:在文本之间使用一个EOS标记连接许多文本,并切割上下文大小的块以填充批次,而无需任何填充。通过这种方法,训练效率更高,因为通过模型的每个token也进行了训练。

奖励建模和人类偏好

原则上,研究人员可以使用RLHF直接通过人工标注对模型进行微调。然而,这需要在每次优化迭代之后将一些样本发送给人类进行评级。由于需要大量的训练样本来实现收敛,人类阅读和标注速度固有的延迟,不仅昂贵,还非常缓慢。因此,研究人员在RL调整模型之前,在收集的人工标注上训练一个奖励模型。奖励建模的目的是模仿人类对文本的评价,这一方法比直接反馈更有效。在实践中,最好的方法是预测两个示例的排名,奖励模型会根据提示X提供两个候选项,并且必须预测哪一个会被人类标注员评价更高。通过StackExchange 数据集,研究人员根据分数推断出用户更喜欢这两个答案中的哪一个。有了这些信息和上面定义的损失,就可以修改transformers.Trainer 。通过添加一个自定义的损失函数进行训练。








class RewardTrainer(Trainer):def compute_loss(self, model, inputs, return_outputs=False):        rewards_j = model(input_ids=inputs["input_ids_j"],  attention_mask=inputs["attention_mask_j"])[0]        rewards_k = model(input_ids=inputs["input_ids_k"], attention_mask=inputs["attention_mask_k"])[0]        loss = -nn.functional.logsigmoid(rewards_j - rewards_k).mean()        if return_outputs:            return loss, {"rewards_j": rewards_j, "rewards_k": rewards_k}        return loss


研究人员利用100,000对候选子集,并在50,000对候选的支持集上进行评估。

训练通过Weights & Biases进行记录,在8-A100 GPU上花费了几个小时,模型最终的准确率为67%。虽然这听起来分数不高,但是这个任务对于人类标注员来说也非常困难。

人类反馈强化学习

有了经过微调的语言模型和奖励模型,现在可以运行RL循环,大致分为以下三个步骤:· 根据提示生成响应· 根据奖励模型对回答进行评分· 对评级进行强化学习策略优化在对查询和响应提示进行标记并传递给模型之前,模板如下。同样的模版也适用于SFT,RM 和RLHF阶段。



Question: <Query>Answer: <Response>

使用RL训练语言模型的一个常见问题是,模型可以通过生成完全胡言乱语来学习利用奖励模型,从而导致奖励模型得到不合实际的奖励。为了平衡这一点,研究人员在奖励中增加了一个惩罚:保留一个没有训练的模型进行参考,并通过计算 KL散度将新模型的生成与参考模型的生成进行比较。在训练期间对每个步骤进行批次奖励,模型的性能在大约1000个步骤后趋于稳定。参考资料:https://twitter.com/lmsysorg/status/1644060638472470528?s=20https://huggingface.co/blog/stackllama

相关实践学习
在云上部署ChatGLM2-6B大模型(GPU版)
ChatGLM2-6B是由智谱AI及清华KEG实验室于2023年6月发布的中英双语对话开源大模型。通过本实验,可以学习如何配置AIGC开发环境,如何部署ChatGLM2-6B大模型。
相关文章
|
人工智能 Linux iOS开发
exo:22.1K Star!一个能让任何人利用日常设备构建AI集群的强大工具,组成一个虚拟GPU在多台设备上并行运行模型
exo 是一款由 exo labs 维护的开源项目,能够让你利用家中的日常设备(如 iPhone、iPad、Android、Mac 和 Linux)构建强大的 AI 集群,支持多种大模型和分布式推理。
3171 101
|
存储 测试技术 对象存储
容器计算服务ACS单张GPU即可快速搭建QwQ-32B推理模型
阿里云最新发布的QwQ-32B模型拥有320亿参数,通过强化学习大幅度提升了模型推理能力,其性能与DeepSeek-R1 671B媲美,本文介绍如何使用ACS算力部署生产可用的QwQ-32B模型推理服务。
|
人工智能 自然语言处理 API
Proxy Lite:仅3B参数的开源视觉模型!快速实现网页自动化,支持在消费级GPU上运行
Proxy Lite 是一款开源的轻量级视觉语言模型,支持自动化网页任务,能够像人类一样操作浏览器,完成网页交互、数据抓取、表单填写等重复性工作,显著降低自动化成本。
892 11
Proxy Lite:仅3B参数的开源视觉模型!快速实现网页自动化,支持在消费级GPU上运行
|
存储 人工智能 关系型数据库
HiveChat:告别模型选择困难!开源ChatGPT聚合神器上线:一键切换10+模型,权限管控全免费
HiveChat 是一款专为中小团队设计的开源 AI 聊天应用,支持多种主流 AI 模型,提供高效的团队沟通和智能辅助功能。
562 9
HiveChat:告别模型选择困难!开源ChatGPT聚合神器上线:一键切换10+模型,权限管控全免费
|
12月前
|
存储 人工智能 固态存储
轻量级AI革命:无需GPU就能运算的DeepSeek-R1-1.5B模型及其低配部署指南
随着AI技术发展,大语言模型成为产业智能化的关键工具。DeepSeek系列模型以其创新架构和高效性能备受关注,其中R1-1.5B作为参数量最小的版本,适合资源受限场景。其部署仅需4核CPU、8GB RAM及15GB SSD,适用于移动对话、智能助手等任务。相比参数更大的R1-35B与R1-67B+,R1-1.5B成本低、效率高,支持数学计算、代码生成等多领域应用,是个人开发者和初创企业的理想选择。未来,DeepSeek有望推出更多小型化模型,拓展低资源设备的AI生态。
2543 8
|
存储 人工智能 算法
Magic 1-For-1:北大联合英伟达推出的高质量视频生成量化模型,支持在消费级GPU上快速生成
北京大学、Hedra Inc. 和 Nvidia 联合推出的 Magic 1-For-1 模型,优化内存消耗和推理延迟,快速生成高质量视频片段。
665 3
Magic 1-For-1:北大联合英伟达推出的高质量视频生成量化模型,支持在消费级GPU上快速生成
|
人工智能 自动驾驶 数据可视化
D1net阅闻 | ChatGPT支持所有用户使用搜索功能之时,谷歌也开放了最强模型
D1net阅闻 | ChatGPT支持所有用户使用搜索功能之时,谷歌也开放了最强模型
|
存储 文件存储 对象存储
AI 场景下,函数计算 GPU 实例模型存储最佳实践
当前,函数计算 FC 已被广泛应用在各种 AI 场景下,函数计算支持通过使用容器镜像部署 AI 推理应用,并且提供多种选项来访问训练好的模型。为了帮助开发者高效地在函数计算上部署 AI 推理应用,并快速解决不同场景下的模型存储选型问题,本文将对函数计算的 GPU 模型存储的优缺点及适用场景进行对比分析,以期为您的模型存储决策提供帮助。
|
存储 文件存储 对象存储
AI 场景下,函数计算 GPU 实例模型存储最佳实践
AI 场景下,函数计算 GPU 实例模型存储最佳实践
289 0
|
人工智能 自然语言处理 机器人
OpenAI推出具有图像上传和分析功能的完整o1模型,并首次推出ChatGPT Pro
OpenAI推出具有图像上传和分析功能的完整o1模型,并首次推出ChatGPT Pro

热门文章

最新文章