
Megrez-3B-Omni:无问芯穹端侧全模态大模型技术剖析与应用指南
在人工智能领域,技术的创新不断推动着行业的发展。前段时间,无问芯穹发布的Megrez-3B-Omni模型引起了广泛关注,它作为全球首款端侧全模态理解开源模型,为智能设备的交互体验带来了全新的变革。本文将对Megrez-3B-Omni进行详细介绍,包括项目概述、技术特点、性能优势、应用场景、快速使用以及项目地址等,希望能帮助读者更好地了解这一创新技术。
一、项目概述
Megrez-3B-Omni是由无问芯穹发布的全球首款端侧全模态理解开源模型。它支持图片、音频和文本三种模态的数据处理,参数量达30亿,主干网络参数仅2.3B,却在精度上超越了14B模型,并在推理速度上领先同级模型300%。该模型专为手机、平板等端侧设备进行了优化,旨在实现图像、音频和文本三种模态数据的无缝融合,让用户在端侧设备上就能享受到更加智能、便捷的交互体验。
二、技术特点
1、创新的架构设计:采用多层多头注意力机制,能够更好地捕捉不同模态数据中的长程依赖关系,提高模型的理解能力和泛化能力。同时,将图像、音频和文本三种不同模态的数据进行深度融合,自动学习不同模态数据之间的关联和转换,从而实现更加准确和全面的理解,跨模态的信息整合能力是传统单一模态模型所无法比拟的。
2、高效的模型优化:运用模型剪枝、量化等技术,减少模型的大小和计算量,同时保持其精度和泛化能力,使其能够在资源受限的设备上运行,如智能手机、嵌入式系统等。此外,还采用了先进的训练算法,如分布式训练、自适应学习率调整等,可加速模型的收敛速度,提高训练效率,并减少过拟合的风险。同时,采用迁移学习、元学习等技术,能更快地适应新的应用场景和任务需求。
3、先进的模态处理:在图像理解方面,利用Siglip-400m技术,将图像转化为易于理解的token,在OpenCompass评测中以高分领先。在语音理解方面,搭载了Qwen2-Audio/Whisper-Large-V3的encoder,能够理解中英文语音输入,并支持多轮对话。
三、性能优势
1、卓越的图像理解:在OpenCompass、MME等测试中,展现了超强的图像分析能力,能够快速且准确地识别和理解图像内容,在场景理解、光学字符识别等应用中表现优异,精度在同行中处于领先地位,甚至能在一些测试集中超越34B模型。
2、出色的文本理解:在C-eval、MMLU等多个权威测试中取得了最佳结果,将上一代14B大模型的能力压缩至3B规模,同时显著降低计算成本,实现了性能与资源利用的最佳平衡,确保用户获得高效的文本处理体验。
3、良好的语音理解:支持中文和英文的语音输入,能够熟练应对复杂的多轮对话场景,可通过语音输入与模型进行自然互动,实现更自然和流畅的沟通体验。
4、快速的推理速度:单模态版本Megrez-3B-Instruct在推理速度上相比同类精度模型领先高达300%,即使在复杂场景下也能流畅运行,能让用户在各类实时应用中获得更及时的响应,提升工作和生活的效率。
四、应用场景
- 智能家居领域:可应用于智能音箱、智能电视等设备的智能助手中,用户能通过语音、文字或图片与智能助手进行交互,获取信息、设置提醒、控制设备等。
- 媒体领域:用于图像、音频和文本内容的分析和理解,能更准确地识别视频中的关键帧、提取音频中的关键词、生成文本摘要等,为媒体的内容推荐和搜索提供支持。
- 自动驾驶领域:可用于车辆的环境感知和决策控制,融合图像、雷达、激光雷达等多种传感器的数据,更准确地识别道路标志、行人、障碍物等,为车辆的安全行驶提供保障。
- 医疗健康领域:用于医学影像的分析、病历报告的生成等,辅助医生进行疾病诊断和治疗方案的制定,自动识别X光片、CT扫描等医学影像中的异常区域,并提供初步的诊断意见。
- 教育领域:用于个性化学习系统的开发,根据学生的学习行为、学习进度、兴趣偏好和知识水平等信息,为学生提供定制化的学习资源和教学策略。
五、快速使用
1. 安装相关依赖
安装所需的依赖库
git clone https://github.com/infinigence/Infini-Megrez-Omni.git
pip install -r requirements.txt
音频功能依赖`ffmpeg`进行音频处理,如果使用Debian相关系统,可以通过以下命令安装
sudo apt-get install ffmpeg
对于其他操作系统,请参考`ffmpeg`官方文档进行安装。
2. 下载模型权重文件
使用 modelscope 中的 snapshot_download 函数下载模型(提前安装modelscope :pip install modelscope)。第一个参数为模型名称,参数 cache_dir 用于指定模型的下载路径。在 /root/autodl-tmp 路径下新建 download.py 文件,并在其中输入以下内容:
# 模型下载
from modelscope import snapshot_download
model_dir = snapshot_download('InfiniAI/Megrez-3B-Omni', cache_dir='/root/autodl-tmp', revision='master')
运行 python /root/autodl-tmp/download.py 执行下载。
3. 使用transformers 推理模型
使用多模态数据进行多轮对话,示例代码如下(请将`<PATH_TO_PRETRAINED_MODEL>`替换为下载的模型权重的路径):
import torch
from transformers import AutoModelForCausalLM
path = "/mnt/algorithm/user_dir/zhoudong/workspace/models/megrez-o" # Change this to the path of the model.
model = (
AutoModelForCausalLM.from_pretrained(
path,
trust_remote_code=True,
torch_dtype=torch.bfloat16,
attn_implementatinotallow="flash_attention_2",
)
.eval()
.cuda()
)
prompt = "hi" * (128 - 1)
# Chat with text and image
messages = [
{
"role": "user",
"content": {
"text": prompt,
"image": "./data/sample_image.jpg",
},
},
]
# Chat with audio and image
# messages = [
# {
# "role": "user",
# "content": {
# "image": "./data/sample_image.jpg",
# "audio": "./data/sample_audio.m4a",
# },
# },
# ]
MAX_NEW_TOKENS = 100
response = model.chat(
messages,
sampling=False,
max_new_tokens=MAX_NEW_TOKENS,
)
print(response)
4. 使用vLLM进行推理
首先安装vLLM及其相关依赖(需要特定版本以确保兼容性):
pip install vLLM==0.6.3.post1 flash_attn==2.5.8 xformers==0.0.27.post2
推理脚本如下:
from PIL import Image
from vllm import LLM
from vllm import ModelRegistry
from vllm import SamplingParams
from megrezo import MegrezOModel
ModelRegistry.register_model("MegrezO", MegrezOModel)
# Load the model.
# model_path = "{{PATH_TO_HF_PRETRAINED_MODEL}}" # Change this to the path of the model.
model_path = "/mnt/algorithm/user_dir/zhoudong/workspace/models/megrez-o" # Change this to the path of the model.
llm = LLM(
model_path,
trust_remote_code=True,
gpu_memory_utilizatinotallow=0.5,
)
sampling_params = SamplingParams(
temperature=0,
max_tokens=1000,
repetition_penalty=1.2,
stop=["<|turn_end|>", "<|eos|>"],
)
img = Image.open("../data/sample_image.jpg")
conversation = [
{
"role": "user",
"content": {
"text": "图片的内容是什么?",
"image": img,
},
},
]
# Convert the conversation to vLLM acceptable format.
prompt = llm.get_tokenizer().apply_chat_template(
conversation,
tokenize=False,
add_generation_prompt=True,
)
vllm_inputs = [
{
"prompt": prompt,
"multi_modal_data": {
"image": img,
},
}
]
# Generate the outputs.
outputs = llm.generate(
vllm_inputs,
sampling_params,
)
# Print the outputs.
for output in outputs:
print(output.outputs[0].text)
5. 在线体验 Gradio 应用
在线Demo:https://huggingface.co/spaces/Infinigence/Megrez-3B-Omni
用户可以直接在网页上输入文本或上传图片、音频,与模型进行交互,模型会根据输入的多模态信息生成相应的回复。
6. 启动 Gradio 应用
您需要在命令行中指定 model_path 和 port。model_path 是模型的路径,port 是本地服务器的端口号。默认情况下,port 是 7860。
python gradio_app.py --model_path {model_path} --port {port}
然后,您可以在浏览器中访问 http://localhost:7860 与模型对话。
六、结语
Megrez-3B-Omni的发布是人工智能领域的一次重大突破,它为端侧设备的智能化处理树立了全新标杆,开启了端侧全模态理解的新时代。无问芯穹的这一创新成果不仅展示了其在智能设备领域的强大实力,也为广大开发者和用户提供了一个极具潜力的工具。
项目地址
- Github:https://github.com/infinigence/Infini-Megrez
- HuggingFace:https://huggingface.co/Infinigence/Megrez-3B-Omni
- Infini-AI异构云:https://cloud.infini-ai.com/genstudio/model/mo-c73owqiotql7lozr
- ModelScope:https://www.modelscope.cn/models/InfiniAI/Megrez-3B-Omni
- Modelers:https://modelers.cn/models/INFINIGENCE-AI/Megrez-3B-Omni
本文转载自小兵的AI视界,作者: AGI小兵
