Llama 2 来袭 - 在 Hugging Face 上玩转它

news2024/11/24 12:02:47

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

引言

今天,Meta 发布了 Llama 2,其包含了一系列最先进的开放大语言模型,我们很高兴能够将其全面集成入 Hugging Face,并全力支持其发布。Llama 2 的社区许可证相当宽松,且可商用。其代码、预训练模型和微调模型均于今天发布了🔥。

通过与 Meta 合作,我们已经顺利地完成了对 Llama 2 的集成,你可以在 Hub 上找到 12 个开放模型 (3 个基础模型以及 3 个微调模型,每个模型都有 2 种 checkpoint: 一个是 Meta 的原始 checkpoint,一个是 transformers 格式的 checkpoint)。以下列出了 Hugging Face 支持 Llama 2 的主要工作:

  • Llama 2 已入驻 Hub: 包括模型卡及相应的许可证。

  • 支持 Llama 2 的 transformers 库

  • 使用单 GPU 微调 Llama 2 小模型的示例

  • Text Generation Inference (TGI)  已集成 Llama 2,以实现快速高效的生产化推理

  • 推理终端 (Inference Endpoints) 已集成 Llama 2

目录

  • 何以 Llama 2?

  • 演示

  • 推理

    • 使用 transformers

    • 使用 TGI 和推理终端

  • 用 PEFT 微调

  • 其他资源

  • 总结

何以 Llama 2?

Llama 2 引入了一系列预训练和微调 LLM,参数量范围从 7B 到 70B (7B、13B、70B)。其预训练模型比 Llama 1 模型有了显著改进,包括训练数据的总词元数增加了 40%、上下文长度更长 (4k 词元🤯),以及利用了分组查询注意力机制来加速 70B 模型的推理🔥!

但最令人兴奋的还是其发布的微调模型 (Llama 2-Chat),该模型已使用 基于人类反馈的强化学习 (Reinforcement Learning from Human Feedback,RLHF)  技术针对对话场景进行了优化。在相当广泛的有用性和安全性测试基准中,Llama 2-Chat 模型的表现优于大多数开放模型,且其在人类评估中表现出与 ChatGPT 相当的性能。更多详情,可参阅其 论文。

7886b4727fb90044b952e738130bb614.png

模型训练与微调工作流

图来自 Llama 2: Open Foundation and Fine-Tuned Chat Models 一文

如果你一直在等一个闭源聊天机器人的开源替代,那你算是等着了!Llama 2-Chat 将是你的最佳选择!

模型许可证可否商用?预训练词元数排行榜得分
Falcon-7BApache 2.01,500B47.01
MPT-7BApache 2.01,000B48.7
Llama-7BLlama 许可证1,000B49.71
Llama-2-7BLlama 2 许可证2,000B54.32
Llama-33BLlama 许可证1,500B*
Llama-2-13BLlama 2 许可证2,000B58.67
mpt-30BApache 2.01,000B55.7
Falcon-40BApache 2.01,000B61.5
Llama-65BLlama 许可证1,500B62.1
Llama-2-70BLlama 2 许可证2,000B*
Llama-2-70B-chat*Llama 2 许可证2,000B66.8

*目前,我们正在对 Llama 2 70B (非聊天版) 进行评测。评测结果后续将更新至此表。

演示

你可以通过 这个空间 或下面的应用轻松试用 Llama 2 大模型 (700 亿参数!):

1e026e2d3cfa113382f195c248e061bb.png

它们背后都是基于 Hugging Face 的 TGI 框架,该框架也支撑了 HuggingChat,我们会在下文分享更多相关内容。

推理

本节,我们主要介绍可用于对 Llama 2 模型进行推理的两种不同方法。在使用这些模型之前,请确保你已在 Meta Llama 2 存储库页面申请了模型访问权限。

**注意: 请务必按照页面上的指示填写 Meta 官方表格。填完两个表格数小时后,用户就可以访问模型存储库。

使用 transformers

从 transformers 4.31 版本开始,HF 生态中的所有工具和机制都可以适用于 Llama 2,如:

  • 训练、推理脚本及其示例

  • 安全文件格式 (safetensors )

  • 与 bitsandbytes (4 比特量化) 和 PEFT 等工具

  • 帮助模型进行文本生成的辅助工具

  • 导出模型以进行部署的机制

你只需确保使用最新的 transformers 版本并登录你的 Hugging Face 帐户。

pip install transformers
huggingface-cli login

下面是如何使用 transformers 进行推理的代码片段:

from transformers import AutoTokenizer
import transformers
import torch

model = "meta-llama/Llama-2-7b-chat-hf"

tokenizer = AutoTokenizer.from_pretrained(model)
pipeline = transformers.pipeline(
    "text-generation",
    model=model,
    torch_dtype=torch.float16,
    device_map="auto",
)

sequences = pipeline(
    'I liked "Breaking Bad" and "Band of Brothers". Do you have any recommendations of other shows I might like?\n',
    do_sample=True,
    top_k=10,
    num_return_sequences=1,
    eos_token_id=tokenizer.eos_token_id,
    max_length=200,
)
for seq in sequences:
    print(f"Result: {seq['generated_text']}")
Result: I liked "Breaking Bad" and "Band of Brothers". Do you have any recommendations of other shows I might like?
Answer:
Of course! If you enjoyed "Breaking Bad" and "Band of Brothers," here are some other TV shows you might enjoy:
1. "The Sopranos" - This HBO series is a crime drama that explores the life of a New Jersey mob boss, Tony Soprano, as he navigates the criminal underworld and deals with personal and family issues.
2. "The Wire" - This HBO series is a gritty and realistic portrayal of the drug trade in Baltimore, exploring the impact of drugs on individuals, communities, and the criminal justice system.
3. "Mad Men" - Set in the 1960s, this AMC series follows the lives of advertising executives on Madison Avenue, expl

另外,尽管模型本身的上下文长度 4k 词元,但你可以使用 transformers 支持的技术,如旋转位置嵌入缩放 (rotary position embedding scaling) ,进一步把它变长!

使用 TGI 和推理终端

Text Generation Inference (TGI) 是 Hugging Face 开发的生产级推理容器,可用于轻松部署大语言模型。它支持流式组批、流式输出、基于张量并行的多 GPU 快速推理,并支持生产级的日志记录和跟踪等功能。

你可以在自己的基础设施上部署并尝试 TGI,也可以直接使用 Hugging Face 的 推理终端。如果要用推理终端部署 Llama 2 模型,请登录 模型页面 并单击 Deploy -> Inference Endpoints 菜单。

  • 要推理 7B 模型,我们建议你选择 “GPU [medium] - 1x Nvidia A10G”。

  • 要推理 13B 模型,我们建议你选择 “GPU [xlarge] - 1x Nvidia A100”。

  • 要推理 70B 模型,我们建议你选择 “GPU [xxxlarge] - 8x Nvidia A100”。

注意: 如果你配额不够,请发送邮件至 api-enterprise@huggingface.co 申请升级配额,通过后你就可以访问 A100 了。

你还可以从我们的另一篇博文中了解更多有关 如何使用 Hugging Face 推理终端部署 LLM 的知识 , 文中包含了推理终端支持的超参以及如何使用其 Python 和 Javascript API 实现流式输出等信息。

用 PEFT 微调

训练 LLM 在技术和计算上都有一定的挑战。本节,我们将介绍 Hugging Face 生态中有哪些工具可以帮助开发者在简单的硬件上高效训练 Llama 2,我们还将展示如何在单张 NVIDIA T4 (16GB - Google Colab) 上微调 Llama 2 7B 模型。你可以通过 让 LLM 更可得 这篇博文了解更多信息。

我们构建了一个 脚本,其中使用了 QLoRA 和 trl 中的 SFTTrainer 来对 Llama 2 进行指令微调。

下面的命令给出了在 timdettmers/openassistant-guanaco 数据集上微调 Llama 2 7B 的一个示例。该脚本可以通过 merge_and_push 参数将 LoRA 权重合并到模型权重中,并将其保存为 safetensor 格式。这样,我们就能使用 TGI 和推理终端部署微调后的模型。

首先安装 trl 包并下载脚本:

pip install trl
git clone https://github.com/lvwerra/trl

然后,你就可以运行脚本了:

python trl/examples/scripts/sft_trainer.py \
    --model_name meta-llama/Llama-2-7b-hf \
    --dataset_name timdettmers/openassistant-guanaco \
    --load_in_4bit \
    --use_peft \
    --batch_size 4 \
    --gradient_accumulation_steps 2

其他资源

  • 论文

  • Hub 上的模型

  • Open LLM 排行榜

  • Meta 提供的 Llama 2 模型使用大全

总结

Llama 2 的推出让我们非常兴奋!后面我们会围绕它陆陆续续推出更多内容,包括如何微调一个自己的模型,如何在设备侧运行 Llama 2 小模型等,敬请期待!

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


英文原文: https://hf.co/blog/llama2

原文作者: Philipp Schmid,Omar Sanseviero,Pedro Cuenca,Lewis Tunstall

译者: Matrix Yao (姚伟峰),英特尔深度学习工程师,工作方向为 transformer-family 模型在各模态数据上的应用及大规模模型的训练推理。

审校/排版: zhongdongy (阿东)

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

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

相关文章

Sentinel Dashboard集成Nacos

1.前言 当项目上Sentinel Dashboard做流量监控的时候,我们可以通过Sentinel控制台修改限流配置,但当我们使用Nacos作为配置中心动态配置流控规则的时候,问题就来了。 首先我们要明白,Sentinel Dashboard的配置是从机器的内存中加…

go学习 3、基础数据类型

3、基础数据类型 基础数据类型:数字、字符串、布尔型复合类型:数组、结构体引用类型:指针、切片、字典、函数、通道接口类型 3.1 整型 有符号、无符号 int8/int16/int32/int64 uint8/uint16/uint32/units 64 Unicode字符rune类型是和int32…

R语言无法调用stats.dll的问题解决方案[补充]

写在前面 在去年10月份,出过一起关于R语言无法调用stats.dll的问题解决方案,今天(你看到后是昨天)不知道为什么,安装包,一直安装不了,真的是炸裂了。后面再次把R与Rstuido升级。说实话,我是真不…

整套停车位地磁检测方案出售,主控使用stm32驱动nb-iot模块bc95数据上传远程云服务器。

地磁车辆检测器,是车辆本身含有的铁磁物质会对车辆存在区域的地磁信号产生影响,使车辆存在区域的地球磁力线发生弯曲。当车辆经过传感器附近,传感器能够灵敏感知到信号的变化,经信号分析就可以得到检测目标的相关信息。 朋友创业…

安装github中的存储库作为Python包

第一步,安装git 安装教程:https://zhuanlan.zhihu.com/p/114068278 第二步,在github上复制该库的链接 第三步,使用命令行一键下载并安装包 pip install "githttps://github.com/openai/CLIP.git"如果当pip install…

笔记本充满电后,充电器可以长期不拔,会议安全隐患吗?

笔记本充满电后,一直插着不拔 1.建议人在身边可以暂时不拔,偶尔还是要使用电池当笔记本电池充满之后,电脑会自动使用电源供电,不会使用电池供电 2.笔记本电池都带有电池保护机制,在电池充满电后会自动停止充电 3.现在…

RNN架构解析——认识RNN模型

目录 RNN模型作用分类按照输入和输出的结构进行分类按照RNN的内部构造进行分类 RNN模型 RNN单层网络结构 作用 分类 按照输入和输出的结构进行分类 按照RNN的内部构造进行分类

Ftp和UDP的区别之如何加速文件传输

FTP(文件传输协议)是一种传输大文件的老方法,它的速度慢,而且容易受到网络环境的影响。在当今这个文件越来越大,项目交付时间越来越紧,工作分布在全球各地的时代,有没有办法让 FTP 加速呢&#…

JS学习第二部分

在前面,第一章节 ,学了JS的基本语法和一些常用的用法。在第二章节, 学了DOM,就是节点信息,教我们怎么在JS里面获取HTML的标签。接着,我们学习第三章节,怎么在JS里面对HTML的css样式进行操作。 …

3ds MAX NURBS曲线绘制鼠标

先引用一段大佬的话,解释为什么除了样条线还有这种曲线 NURBS是有理B-splines曲线https://www.zhihu.com/search?q%E6%9C%89%E7%90%86B-splines%E6%9B%B2%E7%BA%BF&search_sourceEntity&hybrid_search_sourceEntity&hybrid_search_extra%7B%22sourceT…

<Postman>Postman接口测试以及使用案例

说明:现在所有的系统都有登录token设置; 所以需要先进行登录,获取两个token; 关于token和refresh token 传统的认证方式一般采用cookie/session来实现,这是我们的出发点。 1.为什么选用token而不选用cookie/session…

OSI模型简介及socket,tcp,http三者之间的区别和原理

1.OSI模型简介(七层网络模型) OSI 模型(Open System Interconnection model):一个由国际标准化组织提出的概念模型,试图提供一个使各种不同的计算机和网络在世界范围内实现互联的标准框架。 它将计算机网络体系结构划分为七层,每…

spring 存储对象 + 获取对象

前言 本篇在spring中如何使用五大类注释与方法注释将对象加入IOC容器中,了解如何使用注释来获取容器中的Bean对象,如有错误,请在评论区指正,让我们一起交流,共同进步! 文章目录 前言1.通过注释将类加入IoC…

【C++ 重要知识点总结】自定义类型-类和结构体

类 类的基本特性 数据抽象和封装继承多态 1 类的构成——抽象 概念 数据抽象是一种依赖于接口和实现的分离的编程技术。类的接口包括用户所能执行的操作;类的实现包括类的数据成员、负责接口实现的函数体以及定义类所需要的的各种私有函数。封装实现了类的接口和实…

645. 错误的集合

645. 错误的集合 class Solution { public static int[] findErrorNums(int[] nums) {Arrays.sort(nums);int dup-1;int miss1;for (int i 1; i < nums.length; i) {if(nums[i]nums[i-1]){dupnums[i];}if(nums[i]-nums[i-1]>1){missnums[i]-1;}}return new int[]{dup,…

Vmware vSphere 5.0系列

Vmware vSphere 5.0 我们都用过 vmware workstation 这款产品&#xff0c;可以使我们安装很多虚拟机&#xff0c;但是 vmware 的核心产品远非局限于 workstation。 vSphere 是 VMware 推出的基于云的新一代数据中心虚拟化套件&#xff0c;提供了虚拟化基础架构、高可用性、集…

Tesseract开源的OCR工具及python pytesseract安装使用

一 、介绍 Tesseract是一款由Google赞助的开源OCR。 pytesseract是python包装器&#xff0c;它为可执行文件提供了pythonic API。 Tesseract 已经有 30 年历史&#xff0c;开始它是惠普实验室的一款专利软件&#xff0c;在2005年后由Google接手并进一步开发和完善。Tesseract支…

【Unity 实用插件篇】| 可视化图表插件XCharts (折线图、柱状图、饼图等)详细教学

前言 【Unity 实用插件篇】| 可视化图表插件XCharts (折线图、柱状图、饼图等)详细教学一、XCharts介绍1.1 特性1.2 相关网站链接1.3 效果展示 二、XCharts导入三、XCharts快速使用3.1 添加一个简单图表3.2 添加多个Seire3.3 给图表添加其他组件3.4 添加Serie组件&#xff0c;如…

什么是Maven,Maven的概述及基本使用

MAVEN 一、Maven简介1.1、Maven概述1.2、Maven仓库1.3项目获取jar包过程 二、Maven使用2.1Maven安装配置2.1.1配置环境变量2.1.2配置本地仓库2.1.3配置阿里云私服 2.2Maven基本使用2.2.1Maven常用指令2.2.2Maven生命周期 总结 一、Maven简介 Apache Maven是一个项目管理和构建…

自动驾驶数据标注有哪些?

自动驾驶汽车&#xff1a;人工智能(AI)的焦点 人工智能驱动汽车解决方案的市场规模预计到 2025年将增长十倍以上&#xff0c;提升车内体验的商机领域以及 AI 模型的无偏见训练数据的重要性。在本篇中&#xff0c;我们将介绍车外体验的关键组成部分&#xff0c;以及自动驾驶数据…