Meta教你5步学会用Llama2:我见过最简单的大模型教学

本文是 Meta 官网推出的 Llama2 应用教学博客,简单 5 步教会你如何应用 Llama2。在这篇博客中,Meta 探讨了应用 Llama 2 的五个步调,以便应用者在自己的项目中充分利用 Llama 2 的优势。同时详细介绍 Llama 2 的关键概念、配置方法、可用资源,并供应一步步配置和运转 Llama 2 的流程。Meta 开源的 Llama 2 包括模型权重和初始代码,参数范围从 7B 到 70B。Llama 2 的训练数据比 Llama 多了 40%,上下文长度也多一倍,并且 Llama 2 在

本文是 Meta 官网推出的 Llama2 应用教学博客,简单 5 步教会你如何应用 Llama2。

在这篇博客中,Meta 探讨了应用 Llama 2 的五个步调,以便应用者在自己的项目中充分利用 Llama 2 的优势。同时详细介绍 Llama 2 的关键概念、配置方法、可用资源,并供应一步步配置和运转 Llama 2 的流程。

Meta 开源的 Llama 2 包括模型权重和初始代码,参数范围从 7B 到 70B。Llama 2 的训练数据比 Llama 多了 40%,上下文长度也多一倍,并且 Llama 2 在公开的在线数据源上进行了预训练。

Meta教你5步学会用Llama2:我见过最简单的大模型教学

Llama2 参数说明图

Meta教你5步学会用Llama2:我见过最简单的大模型教学

Llama2 流程说明图

在推理、编码、熟练程度和知识测试等多项外部基准测试中,Llama 2 的表现均优于其他开放式语言模型。Llama 2 可免费用于研究和商业用途。

下一节中将介绍应用 Llama 2 的 5 个步调。在内陆配置 Llama 2 有多种方法,本文讨论其中一种方法,它能让你轻松配置并快速开始应用 Llama。

开始应用 Llama2

步调 1:前置条件和依赖项

本文将应用 Python 编写底本来配置并运转 pipeline 义务,并应用 Hugging Face 供应的 Transformer 模型和加速库。

pip install transformers
pip install accelerate

步调 2:下载模型权重

本文应用的模型可在 Meta 的 Llama 2 Github 仓库中找到。通过此 Github 仓库下载模型需要完成两步:

访问 Meta 网站,接受许可并提交表格。请求通过后才能收到在电子邮件中的预签名 URL;

克隆 Llama 2 知识库到内陆。

git clone https://github.com/facebookresearch/llama

启动 download.sh 底本(sh download.sh)。出现提醒时,输出在电子邮件中收到的预指定 URL。

选择要下载的模型版本,例如 7b-chat。然后就能下载 tokenizer.model 和包含权重的 llama-2-7b-chat 目录。

运转 ln -h ./tokenizer.model ./llama-2-7b-chat/tokenizer.model,创建在下一步的转换时需要应用的 tokenizer 的链接。

转换模型权重,以便与 Hugging Face 一起运转:

TRANSFORM=`python -c"import transformers;print ('/'.join (transformers.__file__.split ('/')[:-1])+'/models/llama/convert_llama_weights_to_hf.py')"`
pip install protobuf && python $TRANSFORM --input_dir ./llama-2-7b-chat --model_size 7B --output_dir ./llama-2-7b-chat-hf

Meta 在 Hugging Face 上供应了已转换的 Llama 2 权重。要应用 Hugging Face 上的下载,必须按照上述步调申请下载,并确保应用的电子邮件地点与 Hugging Face 账户相同。

步调 3:编写 python 底本

接下来创建一个 Python 底本,该底本将包含加载模型和应用 Transformer 运转推理所需的所有代码。

导入必要的模块

首先需要在底本中导入以下必要模块:LlamaForCausalLM 是 Llama 2 的模型类,LlamaTokenizer 为模型准备所需的 prompt,pipeline 用于生成模型的输出,torch 用于引入 PyTorch 并指定想要应用的数据类型。

import torch
import transformers
from transformers import LlamaForCausalLM, LlamaTokenizer

加载模型

接下来,用下载好并转换完成的权重(本例中存储在 ./llama-2-7b-chat-hf 中)加载 Llama 模型。

model_dir = "./llama-2-7b-chat-hf"
model = LlamaForCausalLM.from_pretrained (model_dir)

定义并实例化分词器和流水线义务

在最终应用之前确保为模型准备好输出,这可以通过加载与模型相关的 tokenizer 来实现。在底本中添加以下内容,以便从同一模型目录初始化 tokenizer:

tokenizer = LlamaTokenizer.from_pretrained (model_dir)

接下来还需要一种方法来赋予模型推理的能力。pipeline 模块能指定 pipeline 义务运转所需的义务类型(text-generation)、推理所需的模型(model)、定义应用该模型的精度(torch.float16)、pipeline 义务运转的设备(device_map)以及其他各种配置。

在底本中添加以下内容,以实例化用于运转示例的流水线义务:

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

运转 pipeline 义务

在定义了 pipeline 义务后,还需要供应一些文本提醒,作为 pipeline 义务运转时生成响应(序列)的输出。下面示例中的 pipeline 义务将 do_sample 配置为 True,这样就可以指定解码策略,从整个词汇表的概率分布中选择下一个 token。本文示例底本应用的是 top_k 采样。

通过更改 max_length 可以指定希望生成响应的长度。将 num_return_sequences 参数配置为大于 1,可以生成多个输出。在底本中添加以下内容,以供应输出以及如何运转 pipeline 义务的信息:

sequences = pipeline (
'I have tomatoes, basil and cheese at home. What can I cook for dinner?\n',
do_sample=True,
top_k=10,
num_return_sequences=1,
eos_token_id=tokenizer.eos_token_id,
max_length=400,
)
for seq in sequences:
print (f"{seq ['generated_text']}")

步调 4:运转 Llama

现在,这个底本已经可以运转了。保存底本,回到 Conda 环境,输出

python < 底本名称 >.py 

并按回车键来运转底本。

如下图所示,开始下载模型,显示 pipeline 义务的进展,以及输出的问题和运转底本后生成的答案:

Meta教你5步学会用Llama2:我见过最简单的大模型教学

内陆运转 2-7b-chat-hf

现在可以在内陆配置并运转 Llama 2。通过在字符串参数中供应不同的提醒来尝试不同的提醒。你还可以通过在加载模型时指定模型名称来加载其他 Llama 2 模型。下一节中提到的其他资源可以帮你了解更多 Llama 2 工作原理的信息,以及可用于帮助入门的各种资源。

步调 5:能力拔高

要了解有关 Llama 2 工作原理、训练方法和所用硬件的更多信息,请参阅 Meta 的论文《Llama 2: Open Foundation and Fine-Tuned Chat Models》,其中对这些方面进行了更详细的介绍。

论文地点:https://ai.meta.com/research/publications/llama-2-open-foundation-and-fine-tuned-chat-models/

从 Meta 的 Llama 2 Github repo 获取模型源代码,源代码展示了模型的工作原理以及如何加载 Llama 2 模型和运转推理的最简单示例。在这里还可以找到下载、配置模型的步调以及运转文本补全和聊天模型的示例。

repo 地点:https://github.com/facebookresearch/llama

在模型卡片(中了解模型的更多信息,包括模型架构、预期用途、硬件和软件要求、训练数据、结果和许可证。

卡片地点:https://github.com/facebookresearch/llama/blob/main/MODEL_CARD.md

在 Meta 的 llama-recipes Github repo 中供应了如何快速开始微调以及如何为微调模型运转推理的示例。

repo 地点:https://github.com/facebookresearch/llama-recipes/

查阅 Meta 最近发布的编码人工智能工具 Code Llama,这是一个建立在 Llama 2 基础上的人工智能模型,针对生成和分析代码的能力进行了微调。

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

阅读《负责任应用指南》,它供应了以负责任的方式构建由大语言模型 (LLM) 支持的产品的最佳实践和注意事项,涵盖了从开始到部署的各个开发阶段。

指南地点:https://ai.meta.com/llama/responsible-use-guide/

给TA打赏
共{{data.count}}人
人已打赏
AI

OpenAI内斗时,Karpathy在录视频:《大型语言模型初学》上线

2023-11-24 15:02:00

AI

不到1000行代码,PyTorch团队让Llama 7B提速10倍

2023-12-5 14:35:00

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
今日签到
搜索