Megrez-3B-Omni:無問芯穹端側(cè)全模態(tài)大模型技術(shù)剖析與應用指南
在人工智能領域,技術(shù)的創(chuàng)新不斷推動著行業(yè)的發(fā)展。前段時間,無問芯穹發(fā)布的Megrez-3B-Omni模型引起了廣泛關注,它作為全球首款端側(cè)全模態(tài)理解開源模型,為智能設備的交互體驗帶來了全新的變革。本文將對Megrez-3B-Omni進行詳細介紹,包括項目概述、技術(shù)特點、性能優(yōu)勢、應用場景、快速使用以及項目地址等,希望能幫助讀者更好地了解這一創(chuàng)新技術(shù)。
一、項目概述
Megrez-3B-Omni是由無問芯穹發(fā)布的全球首款端側(cè)全模態(tài)理解開源模型。它支持圖片、音頻和文本三種模態(tài)的數(shù)據(jù)處理,參數(shù)量達30億,主干網(wǎng)絡參數(shù)僅2.3B,卻在精度上超越了14B模型,并在推理速度上領先同級模型300%。該模型專為手機、平板等端側(cè)設備進行了優(yōu)化,旨在實現(xiàn)圖像、音頻和文本三種模態(tài)數(shù)據(jù)的無縫融合,讓用戶在端側(cè)設備上就能享受到更加智能、便捷的交互體驗。
二、技術(shù)特點
1、創(chuàng)新的架構(gòu)設計:采用多層多頭注意力機制,能夠更好地捕捉不同模態(tài)數(shù)據(jù)中的長程依賴關系,提高模型的理解能力和泛化能力。同時,將圖像、音頻和文本三種不同模態(tài)的數(shù)據(jù)進行深度融合,自動學習不同模態(tài)數(shù)據(jù)之間的關聯(lián)和轉(zhuǎn)換,從而實現(xiàn)更加準確和全面的理解,跨模態(tài)的信息整合能力是傳統(tǒng)單一模態(tài)模型所無法比擬的。
2、高效的模型優(yōu)化:運用模型剪枝、量化等技術(shù),減少模型的大小和計算量,同時保持其精度和泛化能力,使其能夠在資源受限的設備上運行,如智能手機、嵌入式系統(tǒng)等。此外,還采用了先進的訓練算法,如分布式訓練、自適應學習率調(diào)整等,可加速模型的收斂速度,提高訓練效率,并減少過擬合的風險。同時,采用遷移學習、元學習等技術(shù),能更快地適應新的應用場景和任務需求。
3、先進的模態(tài)處理:在圖像理解方面,利用Siglip-400m技術(shù),將圖像轉(zhuǎn)化為易于理解的token,在OpenCompass評測中以高分領先。在語音理解方面,搭載了Qwen2-Audio/Whisper-Large-V3的encoder,能夠理解中英文語音輸入,并支持多輪對話。
三、性能優(yōu)勢
1、卓越的圖像理解:在OpenCompass、MME等測試中,展現(xiàn)了超強的圖像分析能力,能夠快速且準確地識別和理解圖像內(nèi)容,在場景理解、光學字符識別等應用中表現(xiàn)優(yōu)異,精度在同行中處于領先地位,甚至能在一些測試集中超越34B模型。
2、出色的文本理解:在C-eval、MMLU等多個權(quán)威測試中取得了最佳結(jié)果,將上一代14B大模型的能力壓縮至3B規(guī)模,同時顯著降低計算成本,實現(xiàn)了性能與資源利用的最佳平衡,確保用戶獲得高效的文本處理體驗。
3、良好的語音理解:支持中文和英文的語音輸入,能夠熟練應對復雜的多輪對話場景,可通過語音輸入與模型進行自然互動,實現(xiàn)更自然和流暢的溝通體驗。
4、快速的推理速度:單模態(tài)版本Megrez-3B-Instruct在推理速度上相比同類精度模型領先高達300%,即使在復雜場景下也能流暢運行,能讓用戶在各類實時應用中獲得更及時的響應,提升工作和生活的效率。
四、應用場景
- 智能家居領域:可應用于智能音箱、智能電視等設備的智能助手中,用戶能通過語音、文字或圖片與智能助手進行交互,獲取信息、設置提醒、控制設備等。
- 媒體領域:用于圖像、音頻和文本內(nèi)容的分析和理解,能更準確地識別視頻中的關鍵幀、提取音頻中的關鍵詞、生成文本摘要等,為媒體的內(nèi)容推薦和搜索提供支持。
- 自動駕駛領域:可用于車輛的環(huán)境感知和決策控制,融合圖像、雷達、激光雷達等多種傳感器的數(shù)據(jù),更準確地識別道路標志、行人、障礙物等,為車輛的安全行駛提供保障。
- 醫(yī)療健康領域:用于醫(yī)學影像的分析、病歷報告的生成等,輔助醫(yī)生進行疾病診斷和治療方案的制定,自動識別X光片、CT掃描等醫(yī)學影像中的異常區(qū)域,并提供初步的診斷意見。
- 教育領域:用于個性化學習系統(tǒng)的開發(fā),根據(jù)學生的學習行為、學習進度、興趣偏好和知識水平等信息,為學生提供定制化的學習資源和教學策略。
五、快速使用
1. 安裝相關依賴
安裝所需的依賴庫
git clone https://github.com/infinigence/Infini-Megrez-Omni.git
pip install -r requirements.txt
音頻功能依賴`ffmpeg`進行音頻處理,如果使用Debian相關系統(tǒng),可以通過以下命令安裝
sudo apt-get install ffmpeg
對于其他操作系統(tǒng),請參考`ffmpeg`官方文檔進行安裝。
2. 下載模型權(quán)重文件
使用 modelscope 中的 snapshot_download 函數(shù)下載模型(提前安裝modelscope :pip install modelscope)。第一個參數(shù)為模型名稱,參數(shù) cache_dir 用于指定模型的下載路徑。在 /root/autodl-tmp 路徑下新建 download.py 文件,并在其中輸入以下內(nèi)容:
# 模型下載
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 執(zhí)行下載。
3. 使用transformers 推理模型
使用多模態(tài)數(shù)據(jù)進行多輪對話,示例代碼如下(請將`<PATH_TO_PRETRAINED_MODEL>`替換為下載的模型權(quán)重的路徑):
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": "圖片的內(nèi)容是什么?",
"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??
用戶可以直接在網(wǎng)頁上輸入文本或上傳圖片、音頻,與模型進行交互,模型會根據(jù)輸入的多模態(tài)信息生成相應的回復。
6. 啟動 Gradio 應用
您需要在命令行中指定 model_path 和 port。model_path 是模型的路徑,port 是本地服務器的端口號。默認情況下,port 是 7860。
python gradio_app.py --model_path {model_path} --port {port}
然后,您可以在瀏覽器中訪問?? http://localhost:7860 ??與模型對話。
六、結(jié)語
Megrez-3B-Omni的發(fā)布是人工智能領域的一次重大突破,它為端側(cè)設備的智能化處理樹立了全新標桿,開啟了端側(cè)全模態(tài)理解的新時代。無問芯穹的這一創(chuàng)新成果不僅展示了其在智能設備領域的強大實力,也為廣大開發(fā)者和用戶提供了一個極具潛力的工具。
項目地址
- Github:??https://github.com/infinigence/Infini-Megrez??
- HuggingFace:??https://huggingface.co/Infinigence/Megrez-3B-Omni??
- Infini-AI異構(gòu)云:??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??
本文轉(zhuǎn)載自??小兵的AI視界??,作者: AGI小兵 ????
