模型简介
模型特点
模型能力
使用案例
🚀 unsloth/Llama-3.3-70B-Instruct-GGUF
本项目可通过 Unsloth 让 Llama 3.3、Gemma 2、Mistral 2 的微调速度提升 5 倍,同时减少 70% 的内存使用!提供了免费的 Google Colab Tesla T4 笔记本,可用于 Llama 3.1 (8B) 的微调。
🚀 快速开始
- 查看我们的集合,获取包括 GGUF、4 位和原始 16 位格式在内的所有 Llama 3.3 版本。
- 我们为 Llama 3.1 (8B) 提供了一个免费的 Google Colab Tesla T4 笔记本,点击链接访问:https://colab.research.google.com/github/unslothai/notebooks/blob/main/nb/Llama3.1_(8B)-Alpaca.ipynb。
✨ 主要特性
免费微调
所有笔记本都对初学者友好!你只需添加自己的数据集,点击“全部运行”,就能得到一个速度提升 2 倍的微调模型,该模型可以导出为 GGUF、vLLM 格式,或者上传到 Hugging Face。
Unsloth 支持的模型 | 免费笔记本链接 | 性能提升 | 内存使用减少 |
---|---|---|---|
Llama-3.2 (3B) | ▶️ 在 Colab 上开始 | 2.4 倍更快 | 58% 更少 |
Llama-3.2 (11B 视觉模型) | ▶️ 在 Colab 上开始 | 2 倍更快 | 60% 更少 |
Qwen2 VL (7B) | ▶️ 在 Colab 上开始 | 1.8 倍更快 | 60% 更少 |
Qwen2.5 (7B) | ▶️ 在 Colab 上开始 | 2 倍更快 | 60% 更少 |
Llama-3.1 (8B) | ▶️ 在 Colab 上开始 | 2.4 倍更快 | 58% 更少 |
Phi-3.5 (mini) | ▶️ 在 Colab 上开始 | 2 倍更快 | 50% 更少 |
Gemma 2 (9B) | ▶️ 在 Colab 上开始 | 2.4 倍更快 | 58% 更少 |
Mistral (7B) | ▶️ 在 Colab 上开始 | 2.2 倍更快 | 62% 更少 |
- Llama 3.2 对话笔记本适用于 ShareGPT ChatML / Vicuna 模板。
- 文本完成笔记本适用于原始文本。DPO 笔记本可复现 Zephyr。
- * Kaggle 有 2 个 T4 GPU,但我们只使用 1 个。由于开销问题,1 个 T4 GPU 的速度是原来的 5 倍。
特别感谢
非常感谢 Meta 和 Llama 团队创建并发布这些模型。
📚 详细文档
模型信息
Meta Llama 3.3 多语言大语言模型(LLM)是一个经过预训练和指令微调的生成模型,参数量为 700 亿(文本输入/文本输出)。Llama 3.3 指令微调的纯文本模型针对多语言对话用例进行了优化,在常见的行业基准测试中,其性能优于许多现有的开源和闭源聊天模型。
属性 | 详情 |
---|---|
模型开发者 | Meta |
模型架构 | Llama 3.3 是一个自回归语言模型,采用了优化的 Transformer 架构。微调版本使用了监督微调(SFT)和基于人类反馈的强化学习(RLHF),以符合人类对有用性和安全性的偏好。 |
训练数据 | 新的公开在线数据混合。 |
参数数量 | 700 亿 |
输入模态 | 多语言文本 |
输出模态 | 多语言文本和代码 |
上下文长度 | 128k |
GQA | 是 |
令牌数量 | 超过 15 万亿 |
知识截止日期 | 2023 年 12 月 |
支持语言 | 英语、德语、法语、意大利语、葡萄牙语、印地语、西班牙语和泰语。 |
模型发布日期 | 70B Instruct:2024 年 12 月 6 日 |
状态 | 这是一个基于离线数据集训练的静态模型。随着我们根据社区反馈改进模型安全性,未来将发布微调模型的新版本。 |
许可证 | 自定义商业许可证,即 Llama 3.3 社区许可协议,可在此处查看。 |
有关模型的问题或评论发送方式,请参阅模型 README。有关生成参数和如何在应用程序中使用 Llama 3.3 的技术信息,请访问此处。
预期用途
预期用例:Llama 3.3 旨在用于多种语言的商业和研究用途。指令微调的纯文本模型适用于类似助手的聊天场景,而预训练模型可用于各种自然语言生成任务。Llama 3.3 模型还支持利用其模型输出改进其他模型,包括合成数据生成和蒸馏。Llama 3.3 社区许可协议允许这些用例。
超出范围的使用:以任何违反适用法律法规(包括贸易合规法律)的方式使用。以可接受使用政策和 Llama 3.3 社区许可协议禁止的任何其他方式使用。在本模型卡片中未明确提及支持的语言之外使用该模型**。
**注意:Llama 3.3 在比 8 种支持语言更广泛的语言集合上进行了训练。开发者可以对 Llama 3.3 模型进行微调,以支持 8 种支持语言之外的语言,前提是他们遵守 Llama 3.3 社区许可协议和可接受使用政策,并负责确保在额外语言中使用 Llama 3.3 的任何方式都是安全和负责任的。
如何使用
本仓库包含两个版本的 Llama-3.3-70B-Instruct,可分别与 Transformers 库和原始 llama
代码库一起使用。
💻 使用示例
基础用法(与 Transformers 库一起使用)
从 transformers >= 4.43.0
版本开始,你可以使用 Transformers 的 pipeline
抽象或通过 generate()
函数结合 Auto 类进行对话推理。
确保通过以下命令更新你的 Transformers 安装:
pip install --upgrade transformers
以下是使用 Transformers 的代码示例:
import transformers
import torch
model_id = "meta-llama/Llama-3.3-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])
高级用法(工具使用与 Transformers)
LLaMA-3.3 支持多种工具使用格式。你可以在此处查看完整的提示格式化指南。
通过 Transformers 中的聊天模板也支持工具使用。以下是一个简单工具的快速示例:
# 首先,定义一个工具
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}]})
然后调用工具并将结果以 tool
角色添加到聊天中,如下所示:
messages.append({"role": "tool", "name": "get_current_temperature", "content": "22.0"})
之后,你可以再次调用 generate()
让模型在聊天中使用工具结果。请注意,这只是对工具调用的简要介绍,更多信息请参阅 LLaMA 提示格式文档和 Transformers 工具使用文档。
使用 bitsandbytes
可以使用 bitsandbytes
和 transformers
将模型检查点以 8 位或 4 位格式加载,以进一步优化内存使用。
以下是使用示例:
import torch
from transformers import AutoModelForCausalLM, AutoTokenizer
model_id = "meta-llama/Llama-3.3-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/Llama-3.3-70B-Instruct --include "original/*" --local-dir Llama-3.3-70B-Instruct
硬件和软件
训练因素:我们使用自定义训练库、Meta 定制的 GPU 集群和生产基础设施进行预训练。微调、标注和评估也在生产基础设施上进行。
训练能源使用:训练总共使用了 3930 万 GPU 小时的 H100 - 80GB(TDP 为 700W)类型硬件计算资源,具体如下表所示。训练时间是每个模型训练所需的总 GPU 时间,功耗是每个 GPU 设备的峰值功率容量,并根据电源使用效率进行了调整。
模型 | 训练时间(GPU 小时) | 训练功耗(W) | 基于位置的训练温室气体排放量(吨 CO2eq) | 基于市场的训练温室气体排放量(吨 CO2eq) |
---|---|---|---|---|
Llama 3.3 70B | 700 万 | 700 | 2040 | 0 |
确定训练能源使用和温室气体排放量的方法可在此处找到。由于 Meta 正在公开发布这些模型,其他人不会产生训练能源使用和温室气体排放。
训练数据
概述:Llama 3.3 在来自公开来源的约 15 万亿个令牌数据上进行了预训练。微调数据包括公开可用的指令数据集,以及超过 2500 万个合成生成的示例。
数据新鲜度:预训练数据的截止日期为 2023 年 12 月。
基准测试 - 英语文本
在本节中,我们报告了 Llama 3.3 相对于我们之前模型的基准测试结果。
指令微调模型
类别 | 基准测试 | 样本数 | 指标 | Llama 3.1 8B Instruct | Llama 3.1 70B Instruct | Llama-3.3 70B Instruct | Llama 3.1 405B Instruct |
---|---|---|---|---|---|---|---|
MMLU (CoT) | 0 | macro_avg/acc | 73.0 | 86.0 | 86.0 | 88.6 | |
MMLU Pro (CoT) | 5 | macro_avg/acc | 48.3 | 66.4 | 68.9 | 73.3 | |
可控性 | IFEval | 80.4 | 87.5 | 92.1 | 88.6 | ||
推理能力 | GPQA Diamond (CoT) | 0 | acc | 31.8 | 48.0 | 50.5 | 49.0 |
代码能力 | HumanEval | 0 | pass@1 | 72.6 | 80.5 | 88.4 | 89.0 |
MBPP EvalPlus (base) | 0 | pass@1 | 72.8 | 86.0 | 87.6 | 88.6 | |
数学能力 | MATH (CoT) | 0 | sympy_intersection_score | 51.9 | 68.0 | 77.0 | 73.8 |
工具使用能力 | BFCL v2 | 0 | overall_ast_summary/macro_avg/valid | 65.4 | 77.5 | 77.3 | 81.1 |
多语言能力 | MGSM | 0 | em | 68.9 | 86.9 | 91.1 | 91.6 |
责任与安全
作为我们负责任发布方法的一部分,我们采用了三管齐下的策略来管理信任和安全风险:
- 使开发者能够为其目标受众和 Llama 支持的用例部署有用、安全和灵活的体验。
- 保护开发者免受旨在利用 Llama 功能造成潜在危害的恶意用户的攻击。
- 为社区提供保护,防止我们的模型被滥用。
负责任的部署
Llama 是一种基础技术,旨在用于各种用例。关于 Meta 的 Llama 模型如何负责任地部署的示例,可以在我们的社区故事网页上找到。我们的方法是构建最有用的模型,使世界能够受益于该技术的力量,通过调整我们的模型安全性以适应通用用例,解决一系列标准危害。开发者可以根据自己的用例定制安全性,定义自己的政策,并在其 Llama 系统中部署必要的保障措施。Llama 3.3 是根据我们的《负责任使用指南》中概述的最佳实践开发的,你可以参考《负责任使用指南》了解更多信息。
Llama 3.3 指令微调模型
我们进行安全微调的主要目标是为研究社区提供一个有价值的资源,用于研究安全微调的鲁棒性,并为开发者提供一个随时可用、安全且强大的模型,用于各种应用,以减少开发者部署安全 AI 系统的工作量。有关实施的安全缓解措施的更多详细信息,请阅读 Llama 3 论文。
微调数据:我们采用多方面的数据收集方法,将供应商提供的人工生成数据与合成数据相结合,以减轻潜在的安全风险。我们开发了许多基于大语言模型(LLM)的分类器,使我们能够精心选择高质量的提示和响应,加强数据质量控制。
拒绝和语气:在 Llama 3 的基础上,我们非常重视模型对良性提示的拒绝以及拒绝语气。我们在安全数据策略中包括了边界和对抗性提示,并修改了我们的安全数据响应,以遵循语气指南。
Llama 3.3 系统
包括 Llama 3.3 在内的大语言模型不是为单独部署而设计的,而是应作为整体 AI 系统的一部分,根据需要添加额外的安全保障措施。 开发者在构建代理系统时应部署系统保障措施。保障措施对于实现正确的有用性 - 安全性对齐以及减轻系统固有的安全和风险以及模型或系统与外部工具集成的风险至关重要。
作为我们负责任发布方法的一部分,我们为社区提供了保障措施,开发者应将其与 Llama 模型或其他 LLM 一起部署,包括 Llama Guard 3、Prompt Guard 和 Code Shield。我们所有的参考实现演示默认都包含这些保障措施,因此开发者可以立即受益于系统级安全。
新功能
请注意,此版本引入了新功能,包括更长的上下文窗口、多语言输入和输出以及开发者可能与第三方工具的集成。使用这些新功能除了适用于所有生成式 AI 用例的最佳实践外,还需要特定的考虑。
工具使用:就像在标准软件开发中一样,开发者负责将 LLM 与他们选择的工具和服务集成。他们应该为自己的用例定义明确的政策,并评估他们使用的第三方服务的完整性,以了解使用此功能时的安全和风险限制。有关安全部署第三方保障措施的最佳实践,请参考《负责任使用指南》。
多语言支持:Llama 3.3 除了英语外还支持 7 种语言:法语、德语、印地语、意大利语、葡萄牙语、西班牙语和泰语。Llama 可能能够输出超出安全和有用性性能阈值的其他语言文本。我们强烈建议开发者在使用此模型进行非支持语言的对话时,根据其政策和《负责任使用指南》中分享的最佳实践进行微调并实施系统控制。
评估
我们对 Llama 模型的常见用例以及特定功能进行了评估。常见用例评估衡量了为最常见构建的应用程序(包括聊天机器人、编码助手、工具调用)的系统安全风险。我们构建了专门的对抗性评估数据集,并评估了由 Llama 模型和 Llama Guard 3 组成的系统,以过滤输入提示和输出响应。在上下文中评估应用程序很重要,我们建议为你的用例构建专门的评估数据集。如果与应用程序相关,Prompt Guard 和 Code Shield 也可用。
能力评估衡量了 Llama 模型特定功能固有的漏洞,为此我们精心设计了专门的基准测试,包括长上下文、多语言、工具调用、编码或记忆。
红队测试:对于这两种情况,我们进行了定期的红队测试,目标是通过对抗性提示发现风险,并利用这些经验教训改进我们的基准测试和安全调整数据集。
我们早期与关键风险领域的主题专家合作,了解这些现实世界危害的性质以及此类模型如何可能对社会造成意外危害。基于这些对话,我们为红队制定了一组对抗性目标,例如提取有害信息或重新编程模型以潜在地造成危害。红队由网络安全、对抗性机器学习、负责任 AI 和完整性方面的专家以及在特定地理市场的完整性问题方面有背景的多语言内容专家组成。
关键和其他风险
我们特别致力于减轻以下关键风险领域:
- CBRNE(化学、生物、放射、核和爆炸物材料)有用性:为了评估与化学和生物武器扩散相关的风险,我们进行了提升测试,旨在评估使用 Llama 3.3 模型是否会显著增加恶意行为者计划或实施使用此类武器的攻击的能力。
- 儿童安全:我们使用专家团队进行了儿童安全风险评估,以评估模型产生可能导致儿童安全风险的输出的能力,并通过微调提供必要和适当的风险缓解措施。我们利用这些专家红队测试会话来扩展我们在 Llama 3 模型开发过程中的评估基准的覆盖范围。对于 Llama 3,我们使用基于目标的方法进行了新的深入会话,以评估模型在多个攻击向量上的风险,包括 Llama 3 训练的其他语言。我们还与内容专家合作进行红队测试,评估潜在违规内容,同时考虑市场特定的细微差别或经验。
- 网络攻击启用:我们的网络攻击提升研究调查了 LLM 是否可以在技能水平和速度方面增强人类在黑客任务中的能力。
我们的攻击自动化研究专注于评估 LLM 作为自主代理在网络攻击操作(特别是在勒索软件攻击的背景下)中的能力。此评估与之前将 LLM 视为交互式助手的研究不同。主要目标是评估这些模型是否可以有效地作为独立代理执行复杂的网络攻击而无需人工干预。
社区
生成式 AI 安全需要专业知识和工具,我们相信开放社区的力量可以加速其发展。我们是开放联盟的积极成员,包括 AI 联盟、AI 合作组织和 MLCommons,积极为安全标准化和透明度做出贡献。我们鼓励社区采用像 MLCommons 概念验证评估这样的分类法,以促进安全和内容评估的协作和透明度。我们的 Purple Llama 工具已开源供社区使用,并广泛分发给包括云服务提供商在内的生态系统合作伙伴。我们鼓励社区为我们的 Github 仓库做出贡献。
我们还设立了 Llama 影响赠款计划,以识别和支持 Meta 的 Llama 模型对社会有益的最有吸引力的应用,涵盖教育、气候和开放创新三个类别。从数百份申请中选出的 20 名决赛选手可以在此处找到。
最后,我们建立了一套资源,包括输出报告机制和漏洞赏金计划,以在社区的帮助下不断改进 Llama 技术。
伦理考虑和局限性
Llama 3.3 的核心价值观是开放性、包容性和有用性。它旨在为每个人服务,并适用于广泛的用例。因此,它旨在让不同背景、经验和观点的人都能使用。Llama 3.3 以用户的实际情况和需求为出发点,不插入不必要的判断或规范性,同时认识到即使在某些情况下可能看似有问题的内容,在其他情况下也可能有宝贵的用途。它尊重所有用户的尊严和自主权,特别是在推动创新和进步的自由思想和表达价值观方面。
但 Llama 3.3 是一项新技术,与任何新技术一样,其使用存在风险。到目前为止进行的测试尚未涵盖,也不可能涵盖所有场景。因此,与所有 LLM 一样,Llama 3.3 的潜在输出无法提前预测,模型在某些情况下可能会对用户提示产生不准确、有偏见或其他令人反感的响应。因此,在部署 Llama 3.3 模型的任何应用程序之前,开发者应针对其特定应用进行安全测试和调整。请参考可用资源,包括我们的《负责任使用指南》、信任与安全解决方案以及其他资源,以了解更多关于负责任开发的信息。
📄 许可证
自定义商业许可证,即 Llama 3.3 社区许可协议,可在此处查看。



