基於 Ollama 多模態引擎的 Qwen 2-5 VL 模型部署及其應用
Ollama 於 5 月份推出的全新多模態引擎。新的多模態引擎,可突破舊架構的設計依賴限制,爲本地部署的多模態 AI 模型提供更準確、可靠、靈活的運行環境,並嚴格確保推理過程符合模型的設計初衷(忠於原始模型,對模型原始意圖的忠實執行)。本文介紹基於 Ollama 多模態模型引擎的 Qwen 2.5 VL 模型部署及其應用,主要內容如下:
-
Ollama 全新多模態模型引擎介紹
-
Qwen 2.5 VL 模型介紹
-
Qwen 2.5 VL 模型本地部署及其應用實測
Ollama 多模態模型引擎
Ollama 推出了全新的多模態引擎,以解決原有架構的侷限。基於多模態引擎,Ollama 可以支持運行能同時處理圖像、文本的模型。新架構不僅解決當前多模態挑戰,也爲集成更復雜的能力(語音、生成等)和優化性能(更長上下文、更高併發)打下基礎。
背景
問題
-
原有依賴瓶頸: Ollama 過去依賴 llama.cpp 支持模型,自身專注於易用性和可移植性。
-
多模態的挑戰: 隨着各模型供應商(如 Google, Meta, Alibaba)不斷髮布新的多模態模型(能同時處理圖像、文本等),在 llama.cpp 基礎上按 Ollama 期望的高標準支持這些模型變得極其困難且容易出錯。
設計目標
Ollama 的多模態引擎的設計理念:忠於原始模型,嚴格遵循模型被訓練的方式和原始設計規範。捨棄了舊架構的 “通用引擎” 的簡潔性,但換來了更高的準確性、可靠性,對模型研發者意圖的尊重,併爲支持未來更復雜、更多樣化的模型奠定了堅實基礎。
-
提高本地推理的可靠性和準確性。
-
爲支持語音、圖像 / 視頻生成、更長上下文、更好的工具調用等未來模態和能力奠定基礎。
模型模塊化
-
問題:舊架構中,多模態模型的文本解碼器與視覺編碼器被拆分爲獨立模型並分別運行。將視覺模型的圖像嵌入傳遞給文本模型時,需要在編排層針對特定模型設計特定的處理邏輯,這可能會破壞某些模型的實現,違反了原始模型的設計意圖。
-
解決方案: 讓每個模型完全自包含。允許每個模型完全獨立,模型可以自帶其專屬的、與訓練完全一致的多模態處理邏輯。模型內部包含其視覺編碼器、文本解碼器以及關鍵的投影層(負責將視覺特徵映射到文本模型理解的表示)。確保推理過程與該模型的訓練方式保持一致。
-
好處:
-
隔離性 / 可靠性: 一個模型的修改或問題不會影響其他模型(“限制爆炸半徑”)。
-
簡化開發: 模型創建者只需專注於自己模型的實現,無需理解全局共享的複雜投影邏輯或擔心破壞其他模型,極大簡化集成。
-
遵循設計: 確保推理過程忠實於模型的設計和訓練方式。
準確性
-
問題:處理大圖像會生成海量 Token,可能超出處理批次大小。如何正確分割圖像進行分批處理(尤其在邊界處)並保持位置信息,對輸出質量至關重要。錯誤的處理方式會導致模型輸出質量下降。
-
解決方案:Ollama 在處理圖像時添加元數據來指導處理流程(如,是否啓用因果注意力、如何根據模型要求和硬件能力智能地分割圖像嵌入批次等)。
-
好處:通過精確控制處理細節,遵循模型的設計與訓練方式,確保輸出結果的準確性和可靠性。
內存管理優化
-
圖像緩存: 緩存處理過的圖像,可加速後續涉及同一圖像的查詢。緩存策略,可避免不必要的內存清理導致性能下降。
-
內存預估與 KV 緩存優化:
-
硬件協作:精確檢測硬件信息,優化內存預估和使用。
-
模型級細粒度控制:在單個模型級別配置關鍵參數(如因果注意力),而非全局統一配置,允許更精細的優化。
-
針對特定模型的優化
支持的模型
Ollama 通過全新多模態引擎支持的模型有:
-
Meta Llama 4
-
Google Gemma 3
-
Qwen 2.5 VL
-
Mistral Small 3.1
Qwen 2.5 VL 模型介紹
Qwen2.5-VL,作爲 Qwen 模型家族的旗艦視覺語言模型,對比此前發佈的 Qwen2-VL 實現了巨大的飛躍。Qwen2.5-VL 的主要特點如下(https://qwenlm.github.io/zh/blog/qwen2.5-vl/):
-
感知更豐富的世界:Qwen2.5-VL 不僅擅長識別常見物體,如花、鳥、魚和昆蟲,還能夠分析圖像中的文本、圖表、圖標、圖形和佈局。
-
Agent:Qwen2.5-VL 直接作爲一個視覺 Agent,可以推理並動態地使用工具,初步具備了使用電腦和使用手機的能力。
-
理解長視頻和捕捉事件:Qwen2.5-VL 能夠理解超過 1 小時的視頻,並且這次它具備了通過精準定位相關視頻片段來捕捉事件的新能力。
-
視覺定位:Qwen2.5-VL 可以通過生成 bounding boxes 或者 points 來準確定位圖像中的物體,並能夠爲座標和屬性提供穩定的 JSON 輸出。
-
結構化輸出:對於發票、表單、表格等數據,Qwen2.5-VL 支持其內容的結構化輸出,惠及金融、商業等領域的應用。
Qwen2.5-VL 的模型性能(在一系列涵蓋多個領域和任務的基準測試中表現出色,包括大學水平的問題、數學、文檔理解、視覺問答、視頻理解和視覺 Agent):
Qwen2.5-VL 已上架 Ollama:https://ollama.com/library/qwen2.5vl,可基於 Ollama 的全新多模態引擎進行部署運行。
Qwen2.5-VL 部署及其應用實測
安裝部署
ollama 的安裝,可閱讀前文:大模型本地部署開源框架 Ollama 介紹
運行命令:ollama pull qwen2.5vl:7b,下載 qwen2.5vl (7b 規格)到本地。
在終端運行命令:ollama run qwen2.5vl:7b,即可開啓與模型的交互對話。
測試示例
1、介紹一下這張圖片
>>> C:\Users\yuan_\Downloads\ollama-car.png 介紹一下這張圖片
Added image 'C:\Users\yuan_\Downloads\ollama-car.png'
這是一張黑白插畫,描繪了一隻卡通風格的動物(看起來像是一隻貓或狗)駕駛一輛復古風格的汽車。汽車的設計類似於經典的跑車
,車身上有“Ollama”這個標誌。動物戴着墨鏡,顯得非常酷炫,車後方有幾道白色的尾氣線條,表示汽車正在快速行駛。整體風格
簡潔,線條流暢,給人一種輕鬆愉快的感覺。
2、這張圖片裏,有什麼動物?
>>> C:\Users\yuan_\Downloads\multi-images.png 這張圖片裏,有什麼動物?
Added image 'C:\Users\yuan_\Downloads\multi-images.png'
這張圖片裏有幾幅插畫,每幅插畫中都有不同的動物:
1. 第一幅插畫中有一隻戴着墨鏡的羊駝,它正在駕駛一輛紅色的汽車。
2. 第二幅插畫中有一隻戴着拳擊手套的羊駝,它正在拳擊一個藍色的海豚。
3. 第三幅插畫中有一隻戴着墨鏡的羊駝,它站在草地上。
4. 第四幅插畫中有一隻戴着墨鏡的羊駝,它站在斑馬線上,旁邊有四個其他羊駝,它們看起來像是在排隊過馬路。
所以,這張圖片裏有羊駝。
模型的回答和圖片內容有點出入(如,第三幅插畫,羊駝是沒有戴墨鏡的;第四幅插圖,一共是四隻羊駝)
3、這是什麼食物?介紹一下
>>> C:\Users\yuan_\Downloads\food.jpg 這是什麼食物?介紹一下
Added image 'C:\Users\yuan_\Downloads\food.jpg'
這是一道中國菜,具體來說是燒麥。燒麥是一種傳統的中式點心,通常在早餐或午餐時食用。以下是關於燒麥的一些詳細介紹:
1. **外觀**:燒麥的外皮是用麪粉和水製成的,經過發酵後,再用蒸籠蒸熟。燒麥的形狀通常是半圓形的,頂部有褶皺,底部平整
。
2. **餡料**:燒麥的餡料非常豐富,可以是豬肉、牛肉、雞肉、蝦仁、蔬菜等。餡料通常會加入蔥、姜、蒜等調料,以增加風味。
燒麥的餡料可以根據個人口味進行調整。
3. **烹飪方法**:燒麥通常是蒸熟的,蒸的時間大約爲10-15分鐘。蒸熟後,燒麥會變得非常柔軟,外皮酥脆,內餡鮮美。
4. **蘸醬**:燒麥通常會搭配一些蘸醬一起食用,常見的蘸醬有醬油、醋、蒜泥、辣椒油等。蘸醬可以根據個人口味進行調整。
5. **食用方法**:喫燒麥時,可以用筷子夾起燒麥,蘸上一些蘸醬,然後一口咬下,感受外皮的酥脆和內餡的鮮美。
燒麥不僅美味,而且營養豐富,是許多中國家庭早餐或午餐的首選。如果你喜歡嘗試不同的中式點心,燒麥是一個不錯的選擇。
將廣東腸粉識別爲燒賣,準確度還是有待提高,哈哈。
4、 文字識別 1:第 20 章的標題是什麼,介紹了什麼內容,由哪幾個小節構成?
>>> C:\Users\yuan_\Downloads\book_page.jpg 第20章的標題是什麼,介紹了什麼內容,由哪幾個小節構成?
Added image 'C:\Users\yuan_\Downloads\book_page.jpg'
第20章的標題是“資本成本:進階主題”。
本章介紹了資本成本的評估方法,特別是對於非上市公司的權益資本成本的估計。具體內容包括:
1. **知識引導**:介紹了資本成本的重要性以及評估公司價值的關鍵因素之一。
2. **考點聚焦**:指出本章內容邏輯清晰,整體難度不高,但難點突出,公式較多。
3. **本章框架圖**:詳細列出了本章的內容結構,包括:
- **資本成本的影響因素**:分爲自上而下的外部因素和自下而上的公司特有因素。
- **估計債務資本成本**:包括上市交易的債務、非上市交易的債務、銀行借款、租賃等。
- **估計權益資本成本**:包括基於風險的模型、歷史估計法、預期估計法等。
- **權益風險溢價(ERP)**:涉及歷史估計法和預期估計法。
- **估計非上市公司的權益資本成本**:涉及基於風險的模型和歷史估計法。
通過這些內容,讀者可以全面瞭解資本成本的評估方法,特別是對於非上市公司的權益資本成本的估計。
準確地識別了圖片上的文字,正確回答了第 20 章的標題,歸納總結了文字內容。
5、文字識別 2:將這一頁目錄,翻譯成中文
>>> C:\Users\yuan_\Downloads\book_page2.jpg 將這一頁目錄,翻譯成中文
Added image 'C:\Users\yuan_\Downloads\book_page2.jpg'
第3章:設計良好的數據架構
3.1 數據架構是什麼?
3.2 什麼是企業架構?
3.3 數據架構定義
3.4 好的“數據架構”原則
3.5 原則1:明智地選擇通用組件
3.6 原則2:計劃失敗
3.7 原則3:爲可擴展性設計
3.8 原則4:架構是領導力
3.9 原則5:始終是架構師
3.10 原則6:始終是架構師
3.11 原則7:設計松耦合系統
3.12 原則8:優先考慮可逆的安全性
3.13 原則9:擁抱FinOps
3.14 主要架構概念
3.15 域和功能
3.16 分佈式系統、可擴展性和設計失敗
3.17 緊耦合與松耦合:層次、單體和微服務
3.18 綠地項目與現有項目
3.19 數據倉庫
3.20 數據湖
3.21 Lambda架構
3.22 數據平臺
3.23 數據湖與數據平臺
3.24 數據湖與數據平臺
3.25 數據湖與數據平臺
3.26 數據湖與數據平臺
翻譯了部分英文,部分內容不能準確識別,有待提高。
python sdk 運行
這股票近期走勢如何?
from ollama import Client
path = './images/k_line.png'
client = Client()
response = client.chat(
model='qwen2.5vl:7b',
messages=[
{
'role': 'user',
'content': '這股票近期走勢如何?',
'images': [path],
}
],
)
print(response.message.content)
E:\anaconda3\envs\llm\python.exe E:\python_project\ollama\chat\image_parse.py
從圖中可以看出,該股票近期的走勢呈現出明顯的上升趨勢。具體來說:
1. **價格走勢**:價格從35.84上漲到42.66,表明該股票在近期有顯著的上漲。
2. **均線系統**:圖中顯示了多條均線,其中黃色、綠色和紫色的均線均呈上升趨勢,表明短期和中期的均線都在支撐股價上漲。
3. **成交量**:雖然圖中沒有直接顯示成交量,但結合價格走勢和均線系統,可以推測成交量可能也在增加,因爲價格在上漲,通常伴隨着成交量的放大。
4. **技術指標**:圖中沒有顯示技術指標,但根據價格走勢和均線系統,可以推測該股票可能處於一個上升通道中,未來可能會繼續上漲。
總體來看,該股票近期的走勢是積極的,投資者可以考慮逢低買入,但需要注意市場風險,做好風險管理。
之前筆者測試了 llama3.2-vision:多模態大模型 llama3.2-vision 介紹及其應用。與 llama3.2-vision 相比,qwen2.5vl 的圖片物體識別與描述更準確,圖片中文識別能力更強。
本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源:https://mp.weixin.qq.com/s/I9RcQp97jEteqB3xdV1ywA