Llama 2 是一系列预训练和微调的生成式文本模型,参数规模从 70 亿到 700 亿不等。本仓库为 130 亿参数的微调模型,针对对话场景进行了优化,并已转换为 Hugging Face Transformers 格式。其他模型的链接可在底部索引中找到。
注:本模型的使用受 Meta 许可协议约束。如需下载模型权重和分词器,请访问网站并接受我们的许可协议,然后在此处申请访问权限。
Meta 开发并公开发布了 Llama 2 系列大型语言模型(LLMs),这是一系列预训练和微调的生成式文本模型,参数规模从 70 亿到 700 亿不等。我们的微调 LLM 称为 Llama-2-Chat,针对对话场景进行了优化。在我们测试的大多数基准上,Llama-2-Chat 模型的性能优于开源聊天模型,并且在我们对有用性和安全性的人工评估中,其表现与 ChatGPT 和 PaLM 等一些流行的闭源模型相当。
模型开发者 Meta
模型变体 Llama 2 有多种参数规模——70 亿、130 亿和 700 亿——以及预训练和微调的不同版本。
输入 模型仅输入文本。
输出 模型仅生成文本。
模型架构 Llama 2 是一种自回归语言模型,采用优化的 transformer 架构。微调版本使用监督微调(SFT)和人类反馈强化学习(RLHF)来对齐人类对有用性和安全性的偏好。
| 训练数据 | 参数数量 | 内容长度 | GQA | 标记数 | 学习率 | |
|---|---|---|---|---|---|---|
| Llama 2 | 全新的公开可用在线数据混合 | 70 亿 | 4k | ✗ | 2.0T | 3.0 x 10-4 |
| Llama 2 | 全新的公开可用在线数据混合 | 130 亿 | 4k | ✗ | 2.0T | 3.0 x 10-4 |
| Llama 2 | 全新的公开可用在线数据混合 | 700 亿 | 4k | ✓ | 2.0T | 1.5 x 10-4 |
Llama 2 模型系列。 标记数仅指预训练数据。所有模型均以 400 万标记的全局批处理大小进行训练。更大的模型(700 亿参数)使用分组查询注意力(GQA)以提高推理的可扩展性。
模型日期 Llama 2 的训练时间为 2023 年 1 月至 2023 年 7 月。
状态 这是一个在离线数据集上训练的静态模型。随着我们利用社区反馈改进模型安全性,未来将发布微调模型的更新版本。
许可协议 自定义商业许可协议可在以下网址获取:https://ai.meta.com/resources/models-and-libraries/llama-downloads/
预期使用场景 Llama 2 旨在用于英语的商业和研究用途。调优模型适用于类助手聊天场景,而预训练模型可适配多种自然语言生成任务。
为使聊天版本达到预期功能和性能,需遵循特定格式,包括 INST 和 <<SYS>> 标签、BOS 和 EOS 标记,以及其间的空格和换行(建议对输入调用 strip() 以避免双空格)。详情请参见 GitHub 上的参考代码:chat_completion。
超出范围的用途 以任何违反适用法律法规(包括贸易合规法律)的方式使用。在英语以外的语言中使用。以任何其他被 Llama 2 的可接受使用政策和许可协议禁止的方式使用。
推理代码
import torch
import torch_npu
from transformers import AutoModelForCausalLM, AutoTokenizer
from openmind_hub import snapshot_download
model_name_or_path = snapshot_download(repo_id="HangZhou_Ascend/Llama-2-13b-chat-ms")
device = "npu:0" # the device to load the model onto
model = AutoModelForCausalLM.from_pretrained(
model_name_or_path, torch_dtype="auto", device_map="auto"
)
tokenizer = AutoTokenizer.from_pretrained(model_name_or_path, revision="v1.0.2")
prompt = "import socket\n\ndef ping_exponential_backoff(host: str):"
inputs = tokenizer(prompt, padding=False, add_special_tokens=False, return_tensors="pt")
# Generate
generate_ids = model.generate(
inputs.input_ids.to(model.device),
attention_mask=inputs["attention_mask"].to(model.device),
do_sample=True,
top_k=10,
temperature=0.1,
top_p=0.95,
num_return_sequences=1,
eos_token_id=tokenizer.eos_token_id,
max_length=200,
)
print(
tokenizer.batch_decode(
generate_ids, skip_special_tokens=True, clean_up_tokenization_spaces=False
)[0]
)
训练要素 我们使用了自定义训练库、Meta的Research Super Cluster以及生产集群进行预训练。微调、标注和评估也在第三方云服务器上完成。
碳足迹 预训练在A100-80GB类型的硬件(TDP为350-400W)上累计使用了330万GPU小时的计算资源。估计总排放量为539吨二氧化碳当量,其中100%通过Meta的可持续发展计划进行了抵消。
| 时间(GPU小时) | 功耗(W) | 碳排放(吨CO2当量) | |
|---|---|---|---|
| Llama 2 7B | 184320 | 400 | 31.22 |
| Llama 2 13B | 368640 | 400 | 62.44 |
| Llama 2 70B | 1720320 | 400 | 291.42 |
| 总计 | 3311616 | 539.00 |
预训练期间的CO2排放量。 时间:训练每个模型所需的总GPU时间。功耗:所用GPU设备的峰值功率容量,并已根据电源使用效率进行调整。100%的排放量通过Meta的可持续发展计划直接抵消,并且由于我们公开发布了这些模型,其他人无需再承担预训练成本。
概述 Llama 2在2万亿个来自公开可用来源的token上进行了预训练。微调数据包括公开可用的指令数据集,以及超过一百万条新的人工标注示例。预训练和微调数据集均不包含Meta用户数据。
数据时效性 预训练数据的截止日期为2022年9月,但部分微调数据更新,最晚至2023年7月。
在本节中,我们报告了Llama 1和Llama 2模型在标准学术基准上的结果。所有评估均使用我们的内部评估库进行。
| 模型 | 规模 | 代码 | 常识推理 | 世界知识 | 阅读理解 | 数学 | MMLU | BBH | AGI Eval |
|---|---|---|---|---|---|---|---|---|---|
| Llama 1 | 7B | 14.1 | 60.8 | 46.2 | 58.5 | 6.95 | 35.1 | 30.3 | 23.9 |
| Llama 1 | 13B | 18.9 | 66.1 | 52.6 | 62.3 | 10.9 | 46.9 | 37.0 | 33.9 |
| Llama 1 | 33B | 26.0 | 70.0 | 58.4 | 67.6 | 21.4 | 57.8 | 39.8 | 41.7 |
| Llama 1 | 65B | 30.7 | 70.7 | 60.5 | 68.6 | 30.8 | 63.4 | 43.5 | 47.6 |
| Llama 2 | 7B | 16.8 | 63.9 | 48.9 | 61.3 | 14.6 | 45.3 | 32.6 | 29.3 |
| Llama 2 | 13B | 24.5 | 66.9 | 55.4 | 65.8 | 28.7 | 54.8 | 39.4 | 39.1 |
| Llama 2 | 70B | 37.5 | 71.9 | 63.6 | 69.4 | 35.2 | 68.9 | 51.2 | 54.2 |
在分组学术基准上的整体表现。 代码: 我们报告了模型在HumanEval和MBPP上的平均pass@1分数。常识推理: 我们报告了PIQA、SIQA、HellaSwag、WinoGrande、ARC easy与challenge、OpenBookQA以及CommonsenseQA的平均值。对于CommonsenseQA,我们报告7-shot结果;对于所有其他基准,报告0-shot结果。世界知识: 我们评估了在NaturalQuestions和TriviaQA上的5-shot表现,并报告其平均值。阅读理解: 对于阅读理解,我们报告了在SQuAD、QuAC和BoolQ上的0-shot平均值。数学: 我们报告了GSM8K(8-shot)和MATH(4-shot)基准的top 1平均值。
| TruthfulQA | Toxigen | ||
|---|---|---|---|
| Llama 1 | 7B | 27.42 | 23.00 |
| Llama 1 | 13B | 41.74 | 23.08 |
| Llama 1 | 33B | 44.19 | 22.57 |
| Llama 1 | 65B | 48.71 | 21.77 |
| Llama 2 | 7B | 33.29 | 21.25 |
| Llama 2 | 13B | 41.86 | 26.10 |
| Llama 2 | 70B | 50.18 | 24.60 |
预训练LLM在自动安全基准上的评估。 对于TruthfulQA,我们展示了既真实又信息丰富的生成内容的百分比(越高越好)。对于Toxigen,我们展示了有毒生成内容的百分比(越低越好)。
| TruthfulQA | Toxigen | ||
|---|---|---|---|
| Llama-2-Chat | 7B | 57.04 | 0.00 |
| Llama-2-Chat | 13B | 62.18 | 0.00 |
| Llama-2-Chat | 70B | 64.14 | 0.01 |
微调LLM在不同安全数据集上的评估。 指标定义同上。
Llama 2 是一项新技术,其使用过程中存在风险。迄今为止,相关测试均以英语进行,且尚未覆盖、也无法覆盖所有场景。基于这些原因,与所有大型语言模型(LLM)一样,Llama 2 的潜在输出无法提前预测,在某些情况下,该模型可能会对用户提示产生不准确、有偏见或其他令人反感的响应。因此,在部署任何基于 Llama 2 的应用程序之前,开发人员应针对其特定的模型应用场景,进行安全测试和优化调整。
详情请参阅《负责任使用指南》,网址为:https://ai.meta.com/llama/responsible-use-guide/
如发现任何软件“漏洞”或模型存在其他问题,请通过以下方式之一进行报告: