模型简介
模型特点
模型能力
使用案例
🚀 Meta Llama 3.1 多语言大语言模型
Meta Llama 3.1 是一系列多语言大语言模型,提供 8B、70B 和 405B 三种不同规模的预训练和指令微调生成模型。这些模型在多语言对话场景中表现出色,在常见的行业基准测试中超越了许多开源和闭源的聊天模型。
🚀 快速开始
本仓库包含两个版本的 Meta-Llama-3.1-70B-Instruct,可分别与 transformers
库和原始的 llama
代码库配合使用。
使用 transformers 库
从 transformers >= 4.43.0
版本开始,你可以使用 transformers
的 pipeline
抽象方法或借助 Auto
类和 generate()
函数进行对话推理。
请确保通过以下命令更新你的 transformers
库:
pip install --upgrade transformers
以下是使用 transformers
库的示例代码:
import transformers
import torch
model_id = "meta-llama/Meta-Llama-3.1-70B-Instruct"
pipeline = transformers.pipeline(
"text-generation",
model=model_id,
model_kwargs={"torch_dtype": torch.bfloat16},
device_map="auto",
)
messages = [
{"role": "system", "content": "You are a pirate chatbot who always responds in pirate speak!"},
{"role": "user", "content": "Who are you?"},
]
outputs = pipeline(
messages,
max_new_tokens=256,
)
print(outputs[0]["generated_text"][-1])
使用 bitsandbytes 库
可以结合 bitsandbytes
和 transformers
库,以 8 位或 4 位量化的方式加载模型,进一步优化内存使用。
以下是使用示例:
import torch
from transformers import AutoModelForCausalLM, AutoTokenizer
model_id = "meta-llama/Meta-Llama-3.1-70B-Instruct"
quantization_config = BitsAndBytesConfig(load_in_8bit=True)
quantized_model = AutoModelForCausalLM.from_pretrained(
model_id, device_map="auto", torch_dtype=torch.bfloat16, quantization_config=quantization_config)
tokenizer = AutoTokenizer.from_pretrained(model_id)
input_text = "What are we having for dinner?"
input_ids = tokenizer(input_text, return_tensors="pt").to("cuda")
output = quantized_model.generate(**input_ids, max_new_tokens=10)
print(tokenizer.decode(output[0], skip_special_tokens=True))
若要以 4 位量化方式加载模型,只需将 load_in_4bit=True
传入即可。
使用原始 llama 代码库
请遵循 仓库 中的说明进行操作。
可以使用以下示例命令,借助 huggingface-cli
下载原始模型检查点:
huggingface-cli download meta-llama/Meta-Llama-3.1-70B-Instruct --include "original/*" --local-dir Meta-Llama-3.1-70B-Instruct
✨ 主要特性
- 多语言支持:支持英语、德语、法语、意大利语、葡萄牙语、印地语、西班牙语和泰语等多种语言。
- 高性能表现:在多个标准自动基准测试中取得了优异的成绩,如 MMLU、AGIEval、CommonSenseQA 等。
- 灵活的使用方式:提供预训练模型和指令微调模型,适用于多种自然语言生成任务,如聊天、文本生成等。
- 安全可靠:采用了多种安全措施,包括安全微调、拒绝恶意提示、提供安全防护工具等,以确保模型的安全使用。
📦 安装指南
使用前请确保更新 transformers
库到最新版本:
pip install --upgrade transformers
💻 使用示例
基础用法
import transformers
import torch
model_id = "meta-llama/Meta-Llama-3.1-70B-Instruct"
pipeline = transformers.pipeline(
"text-generation",
model=model_id,
model_kwargs={"torch_dtype": torch.bfloat16},
device_map="auto",
)
messages = [
{"role": "system", "content": "You are a pirate chatbot who always responds in pirate speak!"},
{"role": "user", "content": "Who are you?"},
]
outputs = pipeline(
messages,
max_new_tokens=256,
)
print(outputs[0]["generated_text"][-1])
高级用法
# 定义一个工具函数
def get_current_temperature(location: str) -> float:
"""
Get the current temperature at a location.
Args:
location: The location to get the temperature for, in the format "City, Country"
Returns:
The current temperature at the specified location in the specified units, as a float.
"""
return 22. # A real function should probably actually get the temperature!
# 创建聊天消息并应用聊天模板
messages = [
{"role": "system", "content": "You are a bot that responds to weather queries."},
{"role": "user", "content": "Hey, what's the temperature in Paris right now?"}
]
inputs = tokenizer.apply_chat_template(messages, tools=[get_current_temperature], add_generation_prompt=True)
# 生成工具调用
tool_call = {"name": "get_current_temperature", "arguments": {"location": "Paris, France"}}
messages.append({"role": "assistant", "tool_calls": [{"type": "function", "function": tool_call}]})
# 添加工具调用结果
messages.append({"role": "tool", "name": "get_current_temperature", "content": "22.0"})
# 再次生成文本
output = quantized_model.generate(**input_ids, max_new_tokens=10)
print(tokenizer.decode(output[0], skip_special_tokens=True))
📚 详细文档
模型信息
属性 | 详情 |
---|---|
模型开发者 | Meta |
模型架构 | Llama 3.1 是一个自回归语言模型,采用了优化的 Transformer 架构。微调版本使用了监督微调(SFT)和基于人类反馈的强化学习(RLHF)来与人类的偏好对齐。 |
支持语言 | 英语、德语、法语、意大利语、葡萄牙语、印地语、西班牙语和泰语 |
模型发布日期 | 2024 年 7 月 23 日 |
状态 | 这是一个基于离线数据集训练的静态模型。未来,我们将根据社区反馈不断改进模型的安全性,并发布微调模型的新版本。 |
许可证 | 自定义商业许可证,Llama 3.1 社区许可证,可在 此处 获取。 |
预期用途
- 预期用例:Llama 3.1 适用于多种语言的商业和研究用途。指令微调的纯文本模型适用于类似助手的聊天场景,而预训练模型可用于各种自然语言生成任务。此外,Llama 3.1 模型集合还支持利用其模型输出来改进其他模型,如合成数据生成和蒸馏。
- 超出范围的使用:禁止以任何违反适用法律法规(包括贸易合规法律)的方式使用该模型。同时,也不得违反《可接受使用政策》和《Llama 3.1 社区许可证》的规定。此外,不得在本模型卡片中未明确支持的语言中使用该模型。
硬件和软件
- 训练因素:我们使用了自定义的训练库、Meta 定制的 GPU 集群和生产基础设施进行预训练。微调、标注和评估也在生产基础设施上进行。
- 训练计算资源:训练总共使用了 3930 万 GPU 小时的计算资源,硬件类型为 H100-80GB(TDP 为 700W)。训练时间是每个模型训练所需的总 GPU 时间,功耗是每个 GPU 设备的峰值功率容量,并根据功率使用效率进行了调整。
- 训练温室气体排放:训练过程中估计的基于位置的温室气体排放总量为 11390 吨 CO2 当量。自 2020 年以来,Meta 在全球运营中保持了净零温室气体排放,并使用可再生能源满足了 100% 的电力需求,因此基于市场的温室气体排放总量为 0 吨 CO2 当量。
训练数据
- 概述:Llama 3.1 在约 15 万亿个公开可用数据源的标记上进行了预训练。微调数据包括公开可用的指令数据集以及超过 2500 万个合成生成的示例。
- 数据新鲜度:预训练数据的截止日期为 2023 年 12 月。
基准测试分数
在标准自动基准测试中,Llama 3.1 模型取得了优异的成绩。具体结果请参考文档中的表格。
责任与安全
- 负责任的部署:Llama 是一种基础技术,旨在用于各种用例。Meta 的 Llama 模型已在多个场景中得到了负责任的部署,具体示例可在 社区故事网页 中查看。我们的目标是构建最有用的模型,使世界能够从技术力量中受益,并通过调整模型安全性来应对一系列标准危害。开发者可以根据自己的用例定制安全性,定义自己的政策,并在 Llama 系统中部署必要的安全措施。Llama 3.1 是按照我们的《负责任使用指南》中的最佳实践开发的,你可以参考 负责任使用指南 了解更多信息。
- 评估:我们对 Llama 模型进行了常见用例和特定能力的评估。常见用例评估衡量了系统在最常见应用(如聊天机器人、编码助手、工具调用)中的安全风险。我们构建了专门的对抗性评估数据集,并评估了由 Llama 模型和 Llama Guard 3 组成的系统,以过滤输入提示和输出响应。建议为你的用例构建专门的评估数据集。此外,根据应用情况,还可以使用 Prompt Guard 和 Code Shield。
- 关键和其他风险:我们特别关注减轻以下关键风险领域:CBRNE(化学、生物、放射、核和爆炸材料)帮助、儿童安全和网络攻击启用。
社区
我们鼓励社区采用 MLCommons 概念验证评估等分类法,以促进安全和内容评估的协作和透明度。我们的 Purple Llama 工具已开源,供社区使用,并广泛分布在包括云服务提供商在内的生态系统合作伙伴中。我们鼓励社区为我们的 Github 仓库 做出贡献。此外,我们还设立了 Llama 影响赠款 计划,以支持对社会有益的 Meta Llama 模型应用。
伦理考虑和局限性
Llama 3.1 的核心价值观是开放、包容和有用。它旨在为所有人服务,并适用于广泛的用例。然而,作为一种新技术,Llama 3.1 的使用也存在风险。目前的测试无法覆盖所有场景,因此模型可能会产生不准确、有偏见或其他令人反感的响应。在部署 Llama 3.1 模型的任何应用之前,开发者应根据具体应用进行安全测试和调整。请参考 负责任使用指南、信任与安全 解决方案和其他 资源 了解更多关于负责任开发的信息。
🔧 技术细节
模型架构
Llama 3.1 是一个自回归语言模型,采用了优化的 Transformer 架构。微调版本使用了监督微调(SFT)和基于人类反馈的强化学习(RLHF)来与人类的偏好对齐。
训练数据
Llama 3.1 在约 15 万亿个公开可用数据源的标记上进行了预训练。微调数据包括公开可用的指令数据集以及超过 2500 万个合成生成的示例。
训练计算资源
训练总共使用了 3930 万 GPU 小时的计算资源,硬件类型为 H100-80GB(TDP 为 700W)。训练时间是每个模型训练所需的总 GPU 时间,功耗是每个 GPU 设备的峰值功率容量,并根据功率使用效率进行了调整。
安全措施
- 安全微调:采用多方面的数据收集方法,结合人类生成的数据和合成数据,以减轻潜在的安全风险。
- 拒绝恶意提示:强调模型对良性提示的拒绝以及拒绝语气的控制。
- 提供安全防护工具:提供 Llama Guard 3、Prompt Guard 和 Code Shield 等安全防护工具,帮助开发者构建安全的 AI 系统。
📄 许可证
Llama 3.1 采用自定义商业许可证,即 Llama 3.1 社区许可证,可在 此处 获取。
⚠️ 重要提示
使用 Llama 3.1 时,请遵守适用的法律法规和《可接受使用政策》。不得将其用于任何违法或有害的目的。
💡 使用建议
在部署 Llama 3.1 模型的任何应用之前,建议进行充分的安全测试和调整,以确保模型的输出符合你的预期和安全要求。同时,建议参考我们的《负责任使用指南》和其他相关资源,以了解如何安全、负责任地使用该模型。



