Connect with us

人工智能

Llama 2:深入探索开源ChatGPT挑战者

mm
META LLAMA 2 LLM

大型语言模型(LLM)能够执行复杂的推理任务,在编程和创意写作等领域显示出希望。然而,LLM的世界并不是简单的插入即可使用的天堂;在可用性、安全性和计算需求方面存在挑战。在本文中,我们将深入探讨Llama 2的功能,同时提供通过Hugging Face和Google Colab上的T4 GPU设置此高性能LLM的详细步骤。

由Meta与Microsoft合作开发的这个开源大型语言模型旨在重新定义生成式AI和自然语言理解的领域。Llama 2不仅仅是一个在海量数据上训练的统计模型;它体现了一种哲学。这种哲学强调开源方法是AI开发的基础,特别是在生成式AI领域。

Llama 2及其对话优化版本Llama 2-Chat配备了多达70亿个参数。它们经过精细调整,以使其与人类偏好密切对齐,使其比许多其他公开可用的模型更安全、更有效。这种精细调整的粒度通常为闭源的“产品”LLM所保留,例如ChatGPT和BARD,这些模型通常不公开用于审查或自定义。

对Llama 2的技术深入探讨

对于训练Llama 2模型;像其前身一样,它使用自回归变换器架构,在大量自监督数据上预训练。然而,它通过使用强化学习和人类反馈(RLHF)增加了一层复杂性,以更好地与人类行为和偏好对齐。这在计算上是昂贵的,但对于提高模型的安全性和有效性至关重要。

Meta Llama 2训练架构

Meta Llama 2训练架构

预训练和数据效率

Llama 2的基础创新在于其预训练方案。该模型从其前身Llama 1中汲取经验,但引入了几个关键的增强功能,以提高其性能。值得注意的是,训练令牌总数增加了40%,上下文长度扩大了两倍。此外,该模型利用分组查询注意力(GQA)来放大推理可扩展性。

监督微调(SFT)和强化学习与人类反馈(RLHF)

Llama-2-chat经过严格的微调,使用了SFT和RLHF。在这种情况下,SFT是RLHF框架的一个重要组成部分,完善了模型的响应,以使其与人类偏好和期望密切对齐。

OpenAI提供了一个说明SFT和RLHF方法的图表,这些方法在InstructGPT中被使用。与Llama 2类似,InstructGPT也利用这些高级训练技术来优化其模型的性能。

第一步,如下图所示,专注于监督微调(SFT),而后续步骤完成了强化学习从人类反馈(RLHF)过程。

监督微调(SFT)是一种专门的过程,旨在优化预训练的大型语言模型(LLM)以执行特定的下游任务。与无监督方法不同,无监督方法不需要数据验证,SFT使用预验证和标记的数据集。

通常,制作这些数据集的成本很高,耗时很长。Llama 2采取了质量优于数量的方法。仅使用27,540个注释,Meta的团队就实现了与人类注释者具有竞争力的性能水平。这与最近的研究一致,表明即使有限但干净的数据集也可以推动高质量的结果。

在SFT过程中,预训练的LLM会暴露在标记的数据集中,监督学习算法会发挥作用。模型的内部权重会根据任务特定的损失函数计算出的梯度进行重新校准。这种损失函数量化了模型的预测输出和实际真实标签之间的差异。

这种优化使LLM能够掌握标记数据集中嵌入的复杂模式和细微差别。因此,模型不仅仅是一个通用工具,而是演变成一个专门的资产,能够以高精度执行目标任务。

强化学习是下一步,旨在使模型行为与人类偏好更密切地对齐。

微调阶段利用了强化学习和人类反馈(RLHF),采用了重要性采样和近端策略优化等技术,以引入算法噪声,从而避免局部最优。这种迭代微调不仅提高了模型的性能,还使其输出与人类期望保持一致。

Llama 2-Chat使用二元比较协议来收集人类偏好数据,这标志着一种趋势,即采用更定性的方法。这种机制告知了奖励模型,然后用于微调对话式AI模型。

幽灵注意力:多回合对话

Meta引入了一项新功能,称为幽灵注意力(GAtt),旨在增强Llama 2在多回合对话中的性能。这有效地解决了对话中持续存在的上下文丢失问题。GAtt像一个锚点一样,将初始指令链接到所有后续用户消息。结合强化学习技术,它有助于在更长的对话中产生一致、相关且与用户对齐的响应。

从Meta Git仓库使用download.sh

  1. 访问Meta网站:导航到Meta的官方Llama 2网站,然后单击“下载模型”。
  2. 填写详细信息:阅读并接受条款和条件以继续。
  3. 电子邮件确认:提交表格后,您将从Meta收到一封电子邮件,其中包含从其Git仓库下载模型的链接。
  4. 执行download.sh:克隆Git仓库并执行download.sh脚本。该脚本将提示您使用来自Meta的在24小时内过期的URL进行身份验证。您还将选择模型的大小——7B、13B或70B。

从Hugging Face

  1. 接受电子邮件:在从Meta获得访问权限后,前往Hugging Face
  2. 请求访问:选择所需的模型并提交请求以授予访问权限。
  3. 确认:在1-2天内预计会收到“已授予访问权限”的电子邮件。
  4. 生成访问令牌:导航到Hugging Face帐户中的“设置”以创建访问令牌。

Transformers 4.31版本与Llama 2完全兼容,并在Hugging Face生态系统中提供了许多工具和功能。从训练和推理脚本到使用bitsandbytes的4位量化和参数高效微调(PEFT),工具包是广泛的。要开始使用,请确保您使用的是最新的Transformers版本并登录到Hugging Face帐户。

以下是运行Llama 2模型推理的简化指南,在Google Colab环境中使用GPU运行时:

Google Colab模型 - T4 GPU

Google Colab模型 – T4 GPU

 

 

 

 

 

 

包安装


!pip install transformers
!huggingface-cli login

导入必要的Python库。

from transformers import AutoTokenizer
import transformers
import torch

初始化模型和分词器

在此步骤中,指定要使用的Llama 2模型。对于本指南,我们使用meta-llama/Llama-2-7b-chat-hf。

model = "meta-llama/Llama-2-7b-chat-hf"
tokenizer = AutoTokenizer.from_pretrained(model)

设置管道

利用Hugging Face管道进行文本生成,具有特定的设置:

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

生成文本序列

最后,运行管道并根据输入生成文本序列:

sequences = pipeline(
'谁是人工智能领域的主要贡献者?\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"结果:{seq['generated_text']}")

A16Z的Llama 2 UI

Andreessen Horowitz(A16Z)最近推出了一个基于Streamlit的聊天机器人界面,专门为Llama 2设计。该界面托管在GitHub上,保留会话聊天记录,并提供从Replicate上托管的多个Llama 2 API端点中选择的灵活性。这种面向用户的设计旨在简化与Llama 2的交互,使其成为开发人员和最终用户的理想工具。对于感兴趣的人来说,Llama2.ai上有一个演示。

Llama 2:它与GPT模型和其前身Llama 1有什么不同之处

规模的多样性

与许多仅提供有限可扩展性的语言模型不同,Llama 2为您提供了多种具有不同参数的模型选项。该模型的参数范围从7亿到70亿,因此提供了一系列配置以满足不同的计算需求。

增强的上下文长度

该模型的上下文长度比Llama 1增加了4K个令牌。这使其能够保留更多信息,从而增强其理解和生成更复杂、更广泛内容的能力。

分组查询注意力(GQA)

该架构使用分组查询注意力(GQA)的概念,旨在通过缓存以前的令牌对来加快注意力计算过程。这有效地提高了模型的推理可扩展性,从而提高了可访问性。

性能基准

Llama 2-Chat模型与ChatGPT和其他竞争对手的比较性能分析

Llama 2-Chat模型与ChatGPT和其他竞争对手的比较性能分析

Llama 2在性能指标方面设立了新的标准。它不仅超越了其前身Llama 1,还为其他模型(如Falcon和GPT-3.5)提供了显著的竞争。

Llama 2-Chat的最大模型(70B)在36%的实例中超越了ChatGPT,并在另外31.5%的实例中达到性能匹配。来源:论文

开源:社区的力量

Meta和Microsoft希望Llama 2不仅仅是一个产品;他们希望它成为一个社区驱动的工具。Llama 2对于研究和非商业目的都是免费访问的。他们旨在使AI能力民主化,使其对初创企业、研究人员和企业开放。开源范式允许对模型进行“众包故障排除”。开发人员和AI伦理学家可以加速识别漏洞并提供解决方案。

虽然Llama 2的许可条款通常是宽松的,但存在例外。拥有超过7亿月度用户的大型企业(如Google)需要从Meta获得明确的授权才能使用它。此外,许可证禁止将Llama 2用于改进其他语言模型。

当前与Llama 2相关的挑战

  1. 数据泛化:Llama 2和GPT-4有时在不同任务中表现出一致的高性能。数据质量和多样性与数据量一样重要。
  2. 模型透明度:鉴于AI之前产生误导性输出的挫折,探索这些复杂模型背后的决策推理至关重要。

代码Llama – Meta最新发布

Meta最近宣布了代码Llama,它是一种专门用于编程的大型语言模型,参数规模从7B到34B不等。与ChatGPT代码解释器类似,代码Llama可以简化开发人员的工作流程,使编程更加便捷。它支持各种编程语言,并提供专门的版本,例如Code Llama-Python,用于Python特定的任务。该模型还提供不同的性能级别,以满足不同的延迟要求。开源的代码Llama邀请社区为持续改进做出贡献。

https://about.fb.com/news/2023/08/code-llama-ai-for-coding/

结论

本文已指导您如何在Google Colab上使用Hugging Face支持设置Llama 2模型进行文本生成。Llama 2的性能由一系列高级技术驱动,从自回归变换器架构到强化学习和人类反馈(RLHF)。具有多达70亿个参数和幽灵注意力等功能,该模型在某些领域超越了当前的行业标准,并且由于其开源性质,它为自然语言理解和生成式AI开辟了新的时代。

我过去五年一直沉浸在令人着迷的机器学习和深度学习世界中。我的热情和专业知识使我能够为超过50个不同的软件工程项目做出贡献,特别注重人工智能/机器学习。我的持续好奇心也使我对自然语言处理产生了兴趣,这是一个我渴望进一步探索的领域。