LlaMA 2 入门 | Meta 的新一代生成式人工智能

LlaMA 2 入门 | Meta AI 的新一代生成式人工智能

介绍

随着OpenAI发布了GPT,许多公司开始竞相创建自己的强大的生成式大型语言模型。从零开始创建一个生成式人工智能可能会涉及繁琐的过程,因为它需要在生成式人工智能领域进行深入研究,并进行多次试验和错误。它还需要精心策划一个高质量的数据集,因为大型语言模型的效果在很大程度上取决于它们所训练的数据。最后,它需要庞大的计算能力来训练这些模型,而许多公司无法获得这些计算能力。所以目前只有少数几家公司可以创建这些LLM,包括OpenAI和Google,现在终于Meta也加入了这场竞赛,推出了LlaMA。

学习目标

  • 了解LlaMA的新版本
  • 理解模型的版本、参数和模型基准
  • 获取Llama 2系列模型的访问权限
  • 尝试使用不同的提示来观察LlaMA 2的输出

本文是作为数据科学博客马拉松的一部分发表的。

什么是Llama?

LlaMA(Large Language Model Meta AI)是一个生成式人工智能模型,特别是由Meta AI开发的一组基础大型语言模型,Meta AI是Meta(前Facebook)公司旗下的一家公司。Meta在2023年2月宣布了Llama。Meta发布了不同规模(基于参数)的Llama模型,即70亿、130亿、330亿和650亿参数,并且具有2k个标记的上下文长度。这个模型旨在帮助研究人员在人工智能领域推进他们的知识。小型的70亿模型使得计算能力较低的研究人员可以研究这些模型。

随着LlaMa的推出,Meta进入了LLM领域,现在正在与OpenAI的GPT和Google的PaLM模型竞争。Meta认为,使用有限的计算资源重新训练或微调小型模型可以达到与其各自领域最先进模型相媲美的结果。Meta AI的LlaMa与OpenAI和Google的LLM不同之处在于,LlaMA模型系列完全开源,任何人都可以免费使用,甚至为研究人员提供了非商业用途的LlaMA权重。

迈出一步

LlaMA 2超越了之前的版本LlaMA 1,Meta在2023年7月发布的版本。它分为70亿、130亿和700亿参数模型。LlaMA 2发布后,在Hugging Face上获得了最高分。即使在所有领域(70亿、130亿和700亿),在Hugging Face上表现最好的模型也来自LlaMA 2,经过了微调或重新训练。

Llama 2训练了2万亿个预训练标记。所有Llama 2模型的上下文长度为4k(Llama 1的两倍)。Llama 2在各种基准测试中表现优于开源模型,如Falcon和MPT,包括MMLU、TriviaQA、自然问答、人工评估等(您可以在Meta AI的网站上找到全面的基准测试分数)。此外,Llama 2还经过了与聊天相关的用例的微调,包括使用超过100万个人工注释进行训练。这些聊天模型可以在Hugging Face网站上直接使用。

访问LlaMA 2

Llama 2的源代码可以在GitHub上获得。如果您想使用原始权重进行工作,也可以获得这些权重,但需要在Meta AI的网站上提供您的姓名和电子邮件。因此,请点击此处进入Meta AI网站,然后输入您的姓名、电子邮件地址和组织(如果您不是在工作,则为学生)。然后向下滚动并点击接受并继续。现在您将收到一封邮件,说明您可以下载模型权重。表单将如下所示。

现在有两种方法可以使用您的模型。一种是通过电子邮件中提供的说明和链接直接下载模型(较困难的方式,仅适用于拥有良好GPU的情况),另一种是使用Hugging Face和Google Colab。在本文中,我将介绍任何人都可以尝试的简单方法。在进入Google Colab之前,我们需要设置一个Hugging Face帐户并创建一个推理API。然后,我们需要进入Hugging Face中的llama 2模型(可以通过点击此处进行),然后提供您在Meta AI网站上提供的电子邮件。然后您将通过身份验证,并将显示类似于下面的内容。

现在,我们可以通过Hugging Face下载任何Llama 2模型并开始使用它。

使用Hugging Face和Colab的LlaMA

在上一节中,我们已经了解了测试Llama 2模型之前的先决条件。我们将从在Google Colab中导入必要的库开始,可以使用pip命令完成。

!pip install -q transformers einops accelerate langchain bitsandbytes

我们需要安装这些必要的软件包才能开始使用Llama 2。此外,还需要从Hugging Face下载模型的transformers库。einops函数在模型中执行简单的矩阵乘法(它使用Einstein运算/求和符号),accelerate加速位和字节以加快推理速度,langchain集成了我们的llama。

接下来,为了通过Hugging Face API密钥登录到Hugging Face,我们可以下载llama模型;为此,我们按照以下步骤进行操作。

!huggingface-cli login

现在我们提供之前创建的Hugging Face推理API密钥。然后,如果它提示“Add token as git credential?(Y / n)”,您可以回复n。现在我们已经登录到Hugging Face API密钥并准备下载模型。

Hugging Face API密钥

现在要下载我们的模型,我们将编写以下代码。

from langchain import HuggingFacePipeline
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,
    tokenizer=tokenizer,
    torch_dtype=torch.bfloat16,
    trust_remote_code=True,
    device_map="auto",
    max_length=1000,
    eos_token_id=tokenizer.eos_token_id
)
  • 在这里,我们将Hugging Face中的Llama 2 7B版本的路径指定为model变量,该版本可以在Google Colab的免费GPU上完美运行。超过这个版本将需要额外的VRAM,而Colab的免费版本不可能提供。
  • 然后,我们通过将模型名称指定给AutoTokenizer.from_pretrained()函数来下载Llama 2 7B模型的tokenizer。
  • 然后,我们使用transformer pipeline函数,并将所有参数传递给它,比如我们将要使用的模型。device_map = auto tokenizer将允许模型在colab中使用GPU(如果有的话)。
  • 我们还将最大输出标记设置为1000,并将torch数据类型设置为float16。最后,我们传递eos_token_id,模型将使用它来确定何时停止写入答案。
  • 运行此代码后,模型将下载到Colab中,这需要一些时间,因为它大约有10GB。现在,我们将通过以下代码创建一个HuggingFacePipeline。
llm = HuggingFacePipeline(pipeline = pipeline, model_kwargs = {'temperature':0})

在这里,我们设置模型的温度,并将我们创建的pipeline传递给pipeline变量。现在,这个HuggingFacePipeline将允许我们使用我们下载的模型。

提示模板

我们将为我们的模型创建一个提示模板,然后进行测试。

from langchain import PromptTemplate,  LLMChain

template = """
              您是一个智能聊天机器人,向人类提供有用的信息。
              您将响应以每个句子开头的箭头形式返回
              {query}
           """

prompt = PromptTemplate(template=template, input_variables=["query"])

llm_chain = LLMChain(prompt=prompt, llm=llm)
  • 在这里,模板很简单。我们希望Llama模型回答用户的查询并以编号的形式返回。
  • 然后,我们将此模板传递给PrompTemplate函数,并分配template和input_variable参数。
  • 最后,我们将我们的Llama LLM和Prompt链接起来,开始推理模型。现在让我们问一个关于我们的模型的问题。
print(llm_chain.run('冰川融化的三个原因是什么?'))

所以我们要求模型列出冰川融化的三个可能原因,模型返回了以下结果:

我们可以看到模型的表现非常出色。最棒的一点是它使用了表情符号编号来表示这些点,并且准确地返回了3个输出点。它甚至使用了水涨潮的表情符号来代表冰川。这样,您就可以开始使用Hugging Face和Colab中的Llama 2进行工作了。

结论

在本文中,我们简要介绍了由Meta AI创建和发布的LlaMA(Large Language Model Meta AI)模型。我们了解了其不同模型大小,并看到版本2,即Llama 2,在不同基准测试中明显超过了最先进的开源LLM。最后,我们通过了解如何获取Llama 2模型训练权重的过程。最后,我们通过Hugging Face和LangChain库在Google Colab中演示了Llama-2 7B聊天版本。

主要观点

本文的一些主要观点包括:

  • Meta开发了llama模型,以帮助研究人员更多地了解人工智能。
  • llama模型,特别是较小的7B版本,可以高效训练并表现出色。
  • 通过不同的基准测试,证明了Llama 2在与其他最先进的开源LLM相比时处于领先地位。
  • Meta的Llama 2与OpenAI的GPT和Google的PaLM的主要区别是它是开源的,任何人都可以将其用于商业应用。

常见问题

本文中显示的媒体不归Analytics Vidhya所有,仅供作者自行决定使用。