MKMK 的 AI 筆記
動手學大模型 12 問

第 9 篇/共 12 篇

AI 怎麼同時看圖、聽聲音?

閱讀約 9 分鐘(約 1,388 字)發布 分類 一人公司工作流+學習系列

#多模態#LLM#NExT-GPT

AI 怎麼同時看圖、聽聲音?

多模態 AI 以語言模型當大腦,前面接「眼睛耳朵」編碼器、後面接畫圖配音的解碼器。用 NExT-GPT 看它怎麼組起來、怎麼分三階段訓練。

本文目錄
  1. 一句話回答
  2. 為什麼值得知道
  3. 白話原理
    1. 為什麼以語言模型為中心?
    2. 通用架構:四個零件
    3. 兩種常見架構
    4. MLLM 有哪些類型?
  4. 教程裡實際做了什麼
  5. 動手試試
  6. 常見誤解
  7. 延伸閱讀

一句話回答

多數多模態 AI 的做法,是讓一個已經很會理解文字的大型語言模型(LLM)當「大腦」,前面接上把圖片、聲音、影片轉成向量的編碼器,中間用連接層翻譯成 LLM 看得懂的格式;要輸出圖片或聲音時,再交給後面的生成模型(解碼器)完成。

為什麼值得知道

  • 你每天用的「拍照問 AI」「上傳影片請它摘要」「叫它畫一張圖」,背後都是多模態大語言模型(Multimodal LLM, MLLM)。
  • 懂架構,就能判斷一個產品的能力邊界:它是真的「看懂」圖片,還是只是把圖片轉成文字描述再處理?
  • 想做自己的應用時,知道「大部分元件是現成的」,就能估出成本規模。

白話原理

為什麼以語言模型為中心?

教程提到領域裡的一個共識:LLM 在規模擴大之後,已展現強大的語意理解能力,語言成了承載智能的關鍵模態,因此幾乎所有 MLLM 都蓋在 LLM 之上,讓它擔任核心決策者,就像大腦或中央處理器。其他模態則靠外接模組補上。

通用架構:四個零件

把它想成一個請了口譯員的跨國會議:

零件 白話角色 NExT-GPT 用的元件
編碼器(Encoder) 眼睛和耳朵,把圖片/聲音/影片轉成向量 ImageBind(一個模型處理多種模態)
輸入連接層(Input Projection) 口譯員,把向量翻成 LLM 能讀的格式 可訓練的投影層
LLM 大腦,理解內容、決定怎麼回應 Vicuna 7B
輸出連接層+解碼器 把大腦的意圖交給畫家、配音員、攝影師 投影層+Stable Diffusion、AudioLDM、ZeroScope

兩種常見架構

  1. LLM 當調度員(Task Scheduler):LLM 只輸出文字指令指揮外部工具,工具之間不直接溝通;所有資訊都經過文字傳遞,細節容易流失。
  2. LLM 當系統的一部分(編碼器—LLM—解碼器):LLM 直接接收多模態的訊號,再把指令更順暢地交給解碼器。教程說這是目前最流行的架構。

MLLM 有哪些類型?

教程依支援的模態與功能分類。白話說:有的只能看圖回答(輸出文字);有的看也能畫;最通用的是「任意模態到任意模態」(any-to-any)。NExT-GPT 是首先提出 any-to-any 的研究,文字、圖片、影片、聲音任意組合都能進也能出,並支援多輪對話。

教程裡實際做了什麼

這章以 NExT-GPT 的開源程式碼為實作主角:

  1. 建立環境:Python 3.8、PyTorch 1.13.1、CUDA 11.6,用 conda 安裝後再裝 requirements。
  2. 準備凍結的預訓練模型:下載 ImageBind(huge 版)、依說明準備 Vicuna;Stable Diffusion v1-5、AudioLDM、ZeroScope 會由程式自動下載。
  3. 載入可訓練參數:使用自己訓練的,或從 Hugging Face 下載作者提供的 checkpoint。
  4. 啟動 Gradio 示範介面測試各種組合。
  5. 準備訓練資料:文字—圖片配對(CC3M)、文字—影片(WebVid)、文字—聲音(AudioCap),以及 LLaVA、Alpaca、VideoChat 等指令資料,和作者整理的模態切換指令資料(MosIT)。
  6. 預先計算嵌入向量:先把圖說轉成向量,節省訓練時間與記憶體。
  7. 三階段訓練(用 DeepSpeed 執行):
    • 第一階段,編碼端對齊:只訓練輸入投影層,讓 LLM 學會「讀懂」各模態。
    • 第二階段,解碼端對齊:只訓練輸出投影層,讓 LLM 發出的訊號能被生成模型理解。
    • 第三階段,指令微調:用 LoRA 微調 LLM,同時調整輸入與輸出投影層。

前兩階段 ImageBind 與 LLM 都凍結,只動小小的連接層,因此訓練成本可控。

硬體:原文沒寫顯存需求,只給 CUDA 11.6 與單張 GPU 的訓練指令範例;要同時放下 7B LLM、ImageBind 和三個擴散模型,實務上需要大顯存 GPU。

動手試試

老實說,完整重現門檻很高:模型檔很大,訓練資料要下載好幾套。可行的入門路線:

  1. 先讀架構:打開 NExT-GPT 的 GitHub,對照教程的目錄說明,找到主模型檔與三個階段的設定檔,看哪些參數被凍結。
  2. 看官方示範:到 NExT-GPT 專案頁看 any-to-any 的案例。
  3. 有 GPU 再跑推理:有大顯存雲端 GPU,就只做「下載 checkpoint、啟動 Gradio」,先別碰訓練。
  4. 用日常工具體會:問看圖聊天 AI 圖中的小字或位置,觀察它哪裡會猜錯,再對照「編碼器把圖壓成向量」想原因。

常見誤解

  • 「多模態 AI 是一個從頭訓練的巨大模型。」 以 NExT-GPT 為例,大部分元件都是現成的預訓練模型,主要訓練的是連接層,第三階段才用 LoRA 微調 LLM。
  • 「能輸出圖片,就代表 LLM 會畫圖。」 畫圖、配音、做影片的是擴散模型,LLM 負責下指令。
  • 「多模態一定比純文字模型聰明。」 多了感官,推理仍主要靠 LLM。

延伸閱讀

本文整理自上海交通大學《動手學大模型》第 8 章,原教程:https://github.com/Lordog/dive-into-llms/tree/main/documents/chapter8。內容由 MK 以自己的話解說,如有錯誤歡迎留言指正。

追蹤 MK,掌握最新 AI 工具應用

每週分享 GitHub 飆星實測、AI 工具教學與提示詞,短影片版都在社群。