模型简介
模型特点
模型能力
使用案例
🚀 Llama 3.2-Vision 多模态大语言模型
Llama 3.2-Vision 是一系列预训练和指令微调的图像推理生成模型,支持文本和图像输入,文本输出。该模型在视觉识别、图像推理、图像描述和图像问答等任务上表现出色,在行业基准测试中超越了许多开源和闭源的多模态模型。
🚀 快速开始
使用 transformers 库
从 transformers >= 4.45.0 版本开始,你可以使用包含图像的对话消息进行推理。
首先,确保通过以下命令更新你的 transformers 库:
pip install --upgrade transformers
以下是一个使用示例:
import requests
import torch
from PIL import Image
from transformers import MllamaForConditionalGeneration, AutoProcessor
model_id = "meta-llama/Llama-3.2-11B-Vision-Instruct"
model = MllamaForConditionalGeneration.from_pretrained(
model_id,
torch_dtype=torch.bfloat16,
device_map="auto",
)
processor = AutoProcessor.from_pretrained(model_id)
url = "https://huggingface.co/datasets/huggingface/documentation-images/resolve/0052a70beed5bf71b92610a43a52df6d286cd5f3/diffusers/rabbit.jpg"
image = Image.open(requests.get(url, stream=True).raw)
messages = [
{"role": "user", "content": [
{"type": "image"},
{"type": "text", "text": "If I had to write a haiku for this one, it would be: "}
]}
]
input_text = processor.apply_chat_template(messages, add_generation_prompt=True)
inputs = processor(image, input_text, return_tensors="pt").to(model.device)
output = model.generate(**inputs, max_new_tokens=30)
print(processor.decode(output[0]))
使用原始 llama
代码库
请遵循 仓库 中的说明进行操作。
你可以使用 huggingface-cli
下载原始检查点:
huggingface-cli download meta-llama/Llama-3.2-11B-Vision-Instruct --include "original/*" --local-dir Llama-3.2-11B-Vision-Instruct
✨ 主要特性
- 多模态处理能力:支持文本和图像输入,能够处理视觉识别、图像推理、图像描述和图像问答等任务。
- 高性能表现:在行业基准测试中超越了许多开源和闭源的多模态模型。
- 广泛的语言支持:对于纯文本任务,官方支持英语、德语、法语、意大利语、葡萄牙语、印地语、西班牙语和泰语。
- 灵活的使用场景:可用于商业和研究用途,支持多种图像推理任务,还能利用模型输出来改进其他模型。
📦 安装指南
使用 transformers 库
确保通过以下命令更新你的 transformers 库:
pip install --upgrade transformers
使用原始 llama
代码库
请遵循 仓库 中的说明进行操作。
💻 使用示例
基础用法
import requests
import torch
from PIL import Image
from transformers import MllamaForConditionalGeneration, AutoProcessor
model_id = "meta-llama/Llama-3.2-11B-Vision-Instruct"
model = MllamaForConditionalGeneration.from_pretrained(
model_id,
torch_dtype=torch.bfloat16,
device_map="auto",
)
processor = AutoProcessor.from_pretrained(model_id)
url = "https://huggingface.co/datasets/huggingface/documentation-images/resolve/0052a70beed5bf71b92610a43a52df6d286cd5f3/diffusers/rabbit.jpg"
image = Image.open(requests.get(url, stream=True).raw)
messages = [
{"role": "user", "content": [
{"type": "image"},
{"type": "text", "text": "If I had to write a haiku for this one, it would be: "}
]}
]
input_text = processor.apply_chat_template(messages, add_generation_prompt=True)
inputs = processor(image, input_text, return_tensors="pt").to(model.device)
output = model.generate(**inputs, max_new_tokens=30)
print(processor.decode(output[0]))
高级用法
你可以根据具体需求调整模型的参数,例如 max_new_tokens
等,以实现更复杂的任务。
📚 详细文档
模型信息
- 模型开发者:Meta
- 模型架构:Llama 3.2-Vision 基于 Llama 3.1 纯文本模型构建,采用优化的变压器架构。微调版本使用监督微调(SFT)和基于人类反馈的强化学习(RLHF)来符合人类对有用性和安全性的偏好。为支持图像识别任务,模型使用了一个单独训练的视觉适配器,该适配器由一系列交叉注意力层组成,将图像编码器的表示输入到核心大语言模型中。
属性 | 详情 |
---|---|
模型类型 | Llama 3.2-Vision 是一系列多模态大语言模型,有 11B 和 90B 两种规模。 |
训练数据 | 预训练数据为 60 亿个图像和文本对,指令微调数据包括公开可用的视觉指令数据集以及超过 300 万个合成生成的示例。 |
支持语言 | 对于纯文本任务,官方支持英语、德语、法语、意大利语、葡萄牙语、印地语、西班牙语和泰语。对于图像 + 文本应用,仅支持英语。 |
模型发布日期 | 2024 年 9 月 25 日 |
状态 | 这是一个基于离线数据集训练的静态模型,未来可能会发布改进模型能力和安全性的版本。 |
许可证 | 使用 Llama 3.2 受 Llama 3.2 社区许可证(自定义商业许可协议)的约束。 |
反馈 | 有关模型的问题或评论可参考模型 README。有关生成参数和如何在应用中使用 Llama 3.2-Vision 的更多技术信息,请参考 此处。 |
预期用途
预期用例
- 视觉问答(VQA)和视觉推理:能够理解图像并回答相关问题。
- 文档视觉问答(DocVQA):理解文档的文本和布局,并直接从图像中回答问题。
- 图像描述:提取图像细节,理解场景,并生成描述性文本。
- 图像 - 文本检索:类似于搜索引擎,能够理解图像和文本,并进行匹配。
- 视觉定位:根据自然语言描述,在图像中定位特定对象或区域。
此外,Llama 3.2 模型系列还支持利用其模型输出来改进其他模型,包括合成数据生成和蒸馏。
超出范围
禁止以任何违反适用法律法规(包括贸易合规法律)的方式使用,以及违反可接受使用政策和 Llama 3.2 社区许可证的其他方式使用。同时,禁止在本模型卡未明确支持的语言中使用。
硬件和软件
训练因素
使用自定义训练库、Meta 定制的 GPU 集群和生产基础设施进行预训练。微调、标注和评估也在生产基础设施上进行。
训练能源使用
训练总共使用了 202 万个 H100-80GB(TDP 为 700W)类型硬件的 GPU 小时计算量。训练时间是每个模型训练所需的总 GPU 时间,功耗是每个 GPU 设备的峰值功率容量,并根据功率使用效率进行了调整。
训练温室气体排放
估计基于位置的总温室气体排放量为 584 吨 CO2eq。自 2020 年以来,Meta 在全球运营中保持净零温室气体排放,并以可再生能源匹配 100% 的电力使用,因此基于市场的总温室气体排放量为 0 吨 CO2eq。
模型 | 训练时间(GPU 小时) | 训练功耗(W) | 基于位置的训练温室气体排放(吨 CO2eq) | 基于市场的训练温室气体排放(吨 CO2eq) |
---|---|---|---|---|
Llama 3.2-vision 11B | 阶段 1 预训练:14.7 万个 H100 小时;阶段 2 退火:9.8 万个 H100 小时;SFT:896 个 H100 小时;RLHF:224 个 H100 小时 | 700 | 71 | 0 |
Llama 3.2-vision 90B | 阶段 1 预训练:88.5 万个 H100 小时;阶段 2 退火:88.5 万个 H100 小时;SFT:3072 个 H100 小时;RLHF:2048 个 H100 小时 | 700 | 513 | 0 |
总计 | 202 万 | - | 584 | 0 |
确定训练能源使用和温室气体排放的方法可参考 此处。由于 Meta 公开发布了这些模型,其他人不会产生训练能源使用和温室气体排放。
基准测试 - 图像推理
基础预训练模型
类别 | 基准测试 | 样本数 | 指标 | Llama 3.2 11B | Llama 3.2 90B |
---|---|---|---|---|---|
图像理解 | VQAv2(验证集) | 0 | 准确率 | 66.8 | 73.6 |
文本 VQA(验证集) | 0 | 宽松准确率 | 73.1 | 73.5 | |
DocVQA(验证集,未见数据) | 0 | ANLS | 62.3 | 70.7 | |
视觉推理 | MMMU(验证集,零样本) | 0 | 微观平均准确率 | 41.7 | 49.3 |
ChartQA(测试集) | 0 | 准确率 | 39.4 | 54.2 | |
InfographicsQA(验证集,未见数据) | 0 | ANLS | 43.2 | 56.8 | |
AI2 Diagram(测试集) | 0 | 准确率 | 62.4 | 75.3 |
指令微调模型
模态 | 能力 | 基准测试 | 样本数 | 指标 | Llama 3.2 11B | Llama 3.2 90B |
---|---|---|---|---|---|---|
图像 | 大学水平问题和数学推理 | MMMU(验证集,思维链) | 0 | 微观平均准确率 | 50.7 | 60.3 |
MMMU-Pro,标准(10 选项,测试集) | 0 | 准确率 | 33.0 | 45.2 | ||
MMMU-Pro,视觉(测试集) | 0 | 准确率 | 23.7 | 33.8 | ||
MathVista(测试迷你集) | 0 | 准确率 | 51.5 | 57.3 | ||
图表和图表理解 | ChartQA(测试集,思维链) | 0 | 宽松准确率 | 83.4 | 85.5 | |
AI2 Diagram(测试集) | 0 | 准确率 | 91.1 | 92.3 | ||
DocVQA(测试集) | 0 | ANLS | 88.4 | 90.1 | ||
通用视觉问答 | VQAv2(测试集) | 0 | 准确率 | 75.2 | 78.1 | |
文本 | 通用 | MMLU(思维链) | 0 | 宏观平均/准确率 | 73.0 | 86.0 |
数学 | MATH(思维链) | 0 | 最终精确匹配 | 51.9 | 68.0 | |
推理 | GPQA | 0 | 准确率 | 32.8 | 46.7 | |
多语言 | MGSM(思维链) | 0 | 精确匹配 | 68.9 | 86.9 |
责任与安全
负责任的部署
Meta 采用三管齐下的策略来管理信任和安全风险:
- 使开发人员能够为其目标受众和 Llama 支持的用例部署有用、安全和灵活的体验。
- 保护开发人员免受试图利用 Llama 功能造成潜在危害的恶意用户的侵害。
- 为社区提供保护,防止模型被滥用。
Llama 3.2 指令微调
- 目标:为研究社区提供研究安全微调鲁棒性的有价值资源,为开发人员提供一个现成、安全且强大的模型,以减少部署安全人工智能系统的工作量。
- 微调数据:采用多方面的数据收集方法,结合供应商提供的人类生成数据和合成数据,以减轻潜在的安全风险。开发了许多基于大语言模型(LLM)的分类器,以精心选择高质量的提示和响应,提高数据质量控制。
- 拒绝和语气:在 Llama 3 的基础上,更加注重模型对良性提示的拒绝以及拒绝语气。在安全数据策略中包括了边界和对抗性提示,并修改安全数据响应以遵循语气指南。
Llama 3.2 系统
大型语言模型(包括 Llama 3.2)不应单独部署,而应作为整体人工智能系统的一部分,并根据需要添加额外的安全护栏。开发人员在构建代理系统时应部署系统保护措施,这些保护措施对于实现正确的有用性 - 安全性平衡以及减轻系统固有的安全和风险至关重要。作为负责任发布方法的一部分,Meta 为社区提供了 保护措施,包括 Llama Guard、Prompt Guard 和 Code Shield。所有 参考实现 演示默认包含这些保护措施,使开发人员能够立即受益于系统级安全。
新功能和用例
Llama 3.2-Vision 模型具有多模态(文本和图像)输入能力,支持图像推理应用。在负责任的发布过程中,采取了专门的措施,包括评估和缓解措施,以解决模型在图像中唯一识别个人的风险。与其他大语言模型风险一样,模型可能并不总是对对抗性提示具有鲁棒性,开发人员应在其应用背景下评估识别和其他适用风险,并考虑部署 Llama Guard 3-11B-Vision 或其他适当的缓解措施来检测和减轻这些风险。
评估
- 大规模评估:构建了专门的对抗性评估数据集,并评估了由 Llama 模型和 Purple Llama 保护措施组成的系统,以过滤输入提示和输出响应。建议为特定用例构建专门的评估数据集。
- 红队测试:定期进行红队测试,通过对抗性提示发现风险,并利用这些经验教训改进基准测试和安全调优数据集。与关键风险领域的专家合作,了解现实世界危害的性质以及模型可能对社会造成的意外危害。根据这些讨论,为红队制定了一系列对抗性目标,例如提取有害信息或重新编程模型以进行潜在的有害操作。红队由网络安全、对抗性机器学习、负责任人工智能和内容完整性专家组成,以及在特定地理市场具有内容完整性背景的多语言专家。
关键风险
除了上述安全工作外,还特别关注以下关键风险领域的测量和缓解:
- CBRNE(化学、生物、放射性、核和爆炸武器):对于 Llama 3.1,进行了提升测试,以评估使用 Llama 3.1 模型是否会显著增加恶意行为者使用此类武器进行攻击的能力。对于 Llama 3.2-Vision 模型,进行了额外的针对性评估,发现与 Llama 3.1 相比,由于其增加的图像理解能力,Llama 3.2 不太可能增加科学能力。
- 儿童安全:由专家团队进行儿童安全风险评估,以评估模型产生可能导致儿童安全风险输出的能力,并通过微调提供必要和适当的风险缓解措施。利用这些专家红队测试扩展了评估基准的覆盖范围。对于 Llama 3,使用基于目标的方法进行了新的深入评估,评估了模型在多个攻击向量上的风险,包括 Llama 3 训练的其他语言。还与内容专家合作进行红队测试,评估潜在违规内容,同时考虑市场特定的细微差别和经验。
- 网络攻击:对于 Llama 3.1 405B,进行了网络攻击提升研究,调查大语言模型是否能提高人类在黑客任务中的能力,包括技能水平和速度。攻击自动化研究专注于评估大语言模型作为自主代理在网络攻击操作中的能力,特别是在勒索软件攻击的背景下。由于 Llama 3.2 的视觉能力通常与网络提升无关,因此认为对 Llama 3.1 进行的测试也适用于 Llama 3.2。
社区
- 行业合作:积极参与开放联盟,包括 AI Alliance、Partnership on AI 和 MLCommons,为安全标准化和透明度做出贡献。鼓励社区采用 MLCommons 概念验证评估等分类法,以促进安全和内容评估的协作和透明度。Purple Llama 工具已开源,供社区使用,并广泛分发给包括云服务提供商在内的生态系统合作伙伴。鼓励社区为 Github 仓库 做出贡献。
- 资助计划:设立了 Llama 影响资助 计划,以识别和支持 Meta 的 Llama 模型在教育、气候和开放创新三个类别中的最有价值应用。数百份申请中的 20 名决赛选手可在 此处 查看。
- 反馈机制:建立了一系列资源,包括 输出报告机制 和 漏洞赏金计划,以在社区的帮助下不断改进 Llama 技术。
伦理考虑和局限性
价值观
Llama 3.2 的核心价值观是开放性、包容性和有用性。旨在为所有人服务,适用于广泛的用例。因此,设计为对不同背景、经验和观点的人都可访问。Llama 3.2 以用户的实际需求为出发点,不插入不必要的判断或规范性,同时认识到即使在某些情况下可能存在问题的内容,在其他情况下也可能有价值。尊重所有用户的尊严和自主性,特别是在推动创新和进步的自由思想和表达价值观方面。
测试
Llama 3.2 是一项新技术,与任何新技术一样,使用过程中存在风险。到目前为止进行的测试无法涵盖所有场景。因此,与所有大语言模型一样,Llama 3.2 的潜在输出无法提前预测,模型在某些情况下可能会产生不准确、有偏见或其他令人反感的响应。在部署 Llama 3.2 模型的任何应用之前,开发人员应针对特定应用进行安全测试和微调。请参考可用资源,包括 负责任使用指南、信任和安全 解决方案以及其他 资源,以了解更多关于负责任开发的信息。
🔧 技术细节
模型架构
Llama 3.2-Vision 基于 Llama 3.1 纯文本模型构建,采用优化的变压器架构。微调版本使用监督微调(SFT)和基于人类反馈的强化学习(RLHF)来符合人类对有用性和安全性的偏好。为支持图像识别任务,模型使用了一个单独训练的视觉适配器,该适配器由一系列交叉注意力层组成,将图像编码器的表示输入到核心大语言模型中。
训练数据
预训练数据为 60 亿个图像和文本对,指令微调数据包括公开可用的视觉指令数据集以及超过 300 万个合成生成的示例。
训练方法
使用自定义训练库、Meta 定制的 GPU 集群和生产基础设施进行预训练。微调、标注和评估也在生产基础设施上进行。训练总共使用了 202 万个 H100-80GB(TDP 为 700W)类型硬件的 GPU 小时计算量。
📄 许可证
使用 Llama 3.2 受 Llama 3.2 社区许可证(自定义商业许可协议)的约束。
⚠️ 重要提示
使用 Llama 3.2 时,请遵守适用法律法规和可接受使用政策,避免在本模型卡未明确支持的语言中使用。
💡 使用建议
在部署 Llama 3.2 模型的任何应用之前,建议针对特定应用进行安全测试和微调,并参考相关资源进行负责任的开发。








