第 9 篇/共 12 篇
AI 怎麼同時看圖、聽聲音?
多模態 AI 以語言模型當大腦,前面接「眼睛耳朵」編碼器、後面接畫圖配音的解碼器。用 NExT-GPT 看它怎麼組起來、怎麼分三階段訓練。
一句話回答
多數多模態 AI 的做法,是讓一個已經很會理解文字的大型語言模型(LLM)當「大腦」,前面接上把圖片、聲音、影片轉成向量的編碼器,中間用連接層翻譯成 LLM 看得懂的格式;要輸出圖片或聲音時,再交給後面的生成模型(解碼器)完成。
為什麼值得知道
- 你每天用的「拍照問 AI」「上傳影片請它摘要」「叫它畫一張圖」,背後都是多模態大語言模型(Multimodal LLM, MLLM)。
- 懂架構,就能判斷一個產品的能力邊界:它是真的「看懂」圖片,還是只是把圖片轉成文字描述再處理?
- 想做自己的應用時,知道「大部分元件是現成的」,就能估出成本規模。
白話原理
為什麼以語言模型為中心?
教程提到領域裡的一個共識:LLM 在規模擴大之後,已展現強大的語意理解能力,語言成了承載智能的關鍵模態,因此幾乎所有 MLLM 都蓋在 LLM 之上,讓它擔任核心決策者,就像大腦或中央處理器。其他模態則靠外接模組補上。
通用架構:四個零件
把它想成一個請了口譯員的跨國會議:
| 零件 | 白話角色 | NExT-GPT 用的元件 |
|---|---|---|
| 編碼器(Encoder) | 眼睛和耳朵,把圖片/聲音/影片轉成向量 | ImageBind(一個模型處理多種模態) |
| 輸入連接層(Input Projection) | 口譯員,把向量翻成 LLM 能讀的格式 | 可訓練的投影層 |
| LLM | 大腦,理解內容、決定怎麼回應 | Vicuna 7B |
| 輸出連接層+解碼器 | 把大腦的意圖交給畫家、配音員、攝影師 | 投影層+Stable Diffusion、AudioLDM、ZeroScope |
兩種常見架構
- LLM 當調度員(Task Scheduler):LLM 只輸出文字指令指揮外部工具,工具之間不直接溝通;所有資訊都經過文字傳遞,細節容易流失。
- LLM 當系統的一部分(編碼器—LLM—解碼器):LLM 直接接收多模態的訊號,再把指令更順暢地交給解碼器。教程說這是目前最流行的架構。
MLLM 有哪些類型?
教程依支援的模態與功能分類。白話說:有的只能看圖回答(輸出文字);有的看也能畫;最通用的是「任意模態到任意模態」(any-to-any)。NExT-GPT 是首先提出 any-to-any 的研究,文字、圖片、影片、聲音任意組合都能進也能出,並支援多輪對話。
教程裡實際做了什麼
這章以 NExT-GPT 的開源程式碼為實作主角:
- 建立環境:Python 3.8、PyTorch 1.13.1、CUDA 11.6,用 conda 安裝後再裝 requirements。
- 準備凍結的預訓練模型:下載 ImageBind(huge 版)、依說明準備 Vicuna;Stable Diffusion v1-5、AudioLDM、ZeroScope 會由程式自動下載。
- 載入可訓練參數:使用自己訓練的,或從 Hugging Face 下載作者提供的 checkpoint。
- 啟動 Gradio 示範介面測試各種組合。
- 準備訓練資料:文字—圖片配對(CC3M)、文字—影片(WebVid)、文字—聲音(AudioCap),以及 LLaVA、Alpaca、VideoChat 等指令資料,和作者整理的模態切換指令資料(MosIT)。
- 預先計算嵌入向量:先把圖說轉成向量,節省訓練時間與記憶體。
- 三階段訓練(用 DeepSpeed 執行):
- 第一階段,編碼端對齊:只訓練輸入投影層,讓 LLM 學會「讀懂」各模態。
- 第二階段,解碼端對齊:只訓練輸出投影層,讓 LLM 發出的訊號能被生成模型理解。
- 第三階段,指令微調:用 LoRA 微調 LLM,同時調整輸入與輸出投影層。
前兩階段 ImageBind 與 LLM 都凍結,只動小小的連接層,因此訓練成本可控。
硬體:原文沒寫顯存需求,只給 CUDA 11.6 與單張 GPU 的訓練指令範例;要同時放下 7B LLM、ImageBind 和三個擴散模型,實務上需要大顯存 GPU。
動手試試
老實說,完整重現門檻很高:模型檔很大,訓練資料要下載好幾套。可行的入門路線:
- 先讀架構:打開 NExT-GPT 的 GitHub,對照教程的目錄說明,找到主模型檔與三個階段的設定檔,看哪些參數被凍結。
- 看官方示範:到 NExT-GPT 專案頁看 any-to-any 的案例。
- 有 GPU 再跑推理:有大顯存雲端 GPU,就只做「下載 checkpoint、啟動 Gradio」,先別碰訓練。
- 用日常工具體會:問看圖聊天 AI 圖中的小字或位置,觀察它哪裡會猜錯,再對照「編碼器把圖壓成向量」想原因。
常見誤解
- 「多模態 AI 是一個從頭訓練的巨大模型。」 以 NExT-GPT 為例,大部分元件都是現成的預訓練模型,主要訓練的是連接層,第三階段才用 LoRA 微調 LLM。
- 「能輸出圖片,就代表 LLM 會畫圖。」 畫圖、配音、做影片的是擴散模型,LLM 負責下指令。
- 「多模態一定比純文字模型聰明。」 多了感官,推理仍主要靠 LLM。
延伸閱讀
- 第 8 章原文:https://github.com/Lordog/dive-into-llms/tree/main/documents/chapter8
- NExT-GPT 專案頁:https://next-gpt.github.io/
- NExT-GPT GitHub:https://github.com/NExT-GPT/NExT-GPT
- 多模態大模型論文整理:https://github.com/BradyFU/Awesome-Multimodal-Large-Language-Models
本文整理自上海交通大學《動手學大模型》第 8 章,原教程:https://github.com/Lordog/dive-into-llms/tree/main/documents/chapter8。內容由 MK 以自己的話解說,如有錯誤歡迎留言指正。
追蹤 MK,掌握最新 AI 工具應用
每週分享 GitHub 飆星實測、AI 工具教學與提示詞,短影片版都在社群。