开源地址:huggingface Llama3.2
Llama 3.2: Llama 3.2 多语言大型语言模型 (LLM) 集合是 1B 和 3B 大小(文本输入/文本输出)的预训练和指令调整生成模型的集合。
Llama 3.2 Vision: Llama 3.2-Vision 多模态大型语言模型 (LLM) 集合是经过预训练和指令调整的图像推理生成模型的集合,大小为 11B 和 90B(文本 + 图像输入/文本输出)
在线体验:meta.ai
Llama大模型是由Meta的人工智能研究团队开发并开源的大型语言模型,继Llama2+模型之后,Meta进一步推出了性能更卓越的Meta Llama3系列语言模型,包括一个80亿参数模型和一个700亿参数模型。lama370B的性能媲美Gemini1.5Pro,全面超越Claude大杯,而Llama3 400B+的模型与Claude超大版和新版GPT-4 Turbo相当。
Llama 3.2 系列中最大的两个模型 11B 和 90B 支持图像推理用例,例如文档级理解(包括图表和图形)、图像字幕以及视觉基础任务(例如基于自然语言描述在图像中精确定位对象)。
例如,一个人可以问一个问题,即他们的小企业去年哪个月的销售额最高,然后 Llama 3.2 可以根据可用的图表进行推理并快速提供答案。
在另一个例子中,该模型可以使用地图进行推理并帮助回答问题,例如何时徒步旅行可能会变得更陡峭或地图上标记的特定路径的距离。
11B 和 90B 模型还可以通过从图像中提取细节、理解场景,然后制作一两句话作为图像字幕来帮助讲述故事,从而弥合视觉和语言之间的差距。
轻量级 1B 和 3B 模型具有强大的多语言文本生成和工具调用功能。这些模型使开发人员能够构建个性化的设备代理应用程序,具有很强的隐私性,数据永远不会离开设备。
例如,这样的应用程序可以帮助汇总最近收到的 10 条消息,提取操作项,并利用工具调用直接发送日历邀请以进行后续会议。
在本地运行这些模型具有两大优势:
Llama 3.2 视觉模型在图像识别和一系列视觉理解任务上与领先的基础模型 Claude 3 Haiku 和 GPT4o-mini 具有竞争力。3B 模型在遵循指令、总结、快速重写和工具使用等任务上优于 Gemma 2 2.6B 和 Phi 3.5-mini 模型,而 1B 模型与 Gemma 具有竞争力。
对涵盖多种语言的 150 多个基准数据集进行了性能评估。对于视觉 LLM,我们根据图像理解和视觉推理的基准评估了性能。
作为首批支持视觉任务的 Llama 模型,11B 和 90B 模型需要支持图像推理的全新模型架构。
为了添加图像输入支持,训练了一组适配器权重,将预训练的图像编码器集成到预训练的语言模型中。适配器由一系列交叉注意层组成,这些层将图像编码器表示输入到语言模型中。
在文本-图像对上训练了适配器,以使图像表示与语言表示对齐。在适配器训练期间,还更新了图像编码器的参数,但有意不更新语言模型参数。通过这样做,保持了所有纯文本功能不变,为开发人员提供了 Llama 3.1 模型的直接替代品。
Llama 3.2训练流程由多个阶段组成,从预训练的 Llama 3.1 文本模型开始:
利用 Llama 3.1 模型生成合成数据,在域内图像的基础上过滤和扩充问题和答案,并使用奖励模型对所有候选答案进行排名,以提供高质量的微调数据。还添加了安全缓解数据,以生成具有高安全水平的模型,同时保留模型的有用性
最终结果是一组可以同时接收图像和文本提示并深入理解和推理两者组合的模型。这是 Llama 模型向拥有更丰富代理能力迈出的又一步。
正如在 Llama 3.1 中讨论的那样,可以利用强大的教师模型来创建性能更佳的小型模型。在 1B 和 3B 模型上使用了两种方法(修剪和提炼),使其成为首批能够高效适应设备的高性能轻量级 Llama 模型。
修剪使能够缩小 Llama 群中现有模型的大小,同时尽可能多地恢复知识和性能。对于 1B 和 3B 模型,采用了从 Llama 3.1 8B 中一次性使用结构化修剪的方法。这涉及系统地移除网络的某些部分并调整权重和梯度的大小,以创建一个更小、更高效的模型,同时保留原始网络的性能。
知识蒸馏使用较大的网络将知识传授给较小的网络,其理念是较小的模型使用教师可以获得比从头开始更好的性能。对于 Llama 3.2 中的 1B 和 3B,将 Llama 3.1 8B 和 70B 模型的对数合并到模型开发的预训练阶段,其中这些较大模型的输出(对数)被用作 token 级目标。修剪后使用知识蒸馏来恢复性能。
在后期训练中,使用与 Llama 3.1 类似的方法,通过在预训练模型的基础上进行几轮对齐来生成最终的聊天模型。每轮都涉及监督微调 (SFT)、拒绝采样 (RS) 和直接偏好优化 (DPO)。
在训练后,将上下文长度支持扩展到 128K 个 token,同时保持与预训练模型相同的质量。还参与了合成数据生成,经过仔细的数据处理和过滤以确保高质量。精心混合数据,以优化多项功能(如摘要、重写、指令遵循、语言推理和工具使用)的高质量。
为了让社区能够在这些模型上进行创新,与全球排名前两的移动片上系统 (SoC) 公司高通和联发科以及为99 %的移动设备提供基础计算平台的 Arm 密切合作。今天发布的权重基于 BFloat16 数值。
项目地址:https://github.com/meta-llama/llama-stack
7 月,发布了关于 Llama Stack API 的评论请求,这是一个用于规范工具链组件(微调、合成数据生成)的标准化接口,用于定制 Llama 模型和构建代理应用程序。参与度很高。
从那时起,一直在努力让 API 成为现实。为推理、工具使用和 RAG 构建了 API 的参考实现。此外,一直在与合作伙伴合作,使他们成为 API 的提供商。最后,引入了 Llama Stack Distribution,作为一种打包多个 API 提供商的方法,这些提供商可以很好地协同工作,为开发人员提供单一端点。现在与社区分享一种简化且一致的体验,使他们能够在多种环境中使用 Llama 模型,包括本地、云、单节点和设备上。
全套发布内容包括:
文本模型使用跟Llama3.1一致,多模态模型使用如下:
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]))
openllm:https://github.com/bentoml/OpenLLM
更多了解:https://www.llama.com/