聊聊多模態大模型處理的思考

轉載請註明出處:https://www.cnblogs.com/zhiyong-ITNote

多模態:文本、音頻、視頻、圖像等多形態的展現形式。
目前部門內業務要求領域大模型需要是多模態——支持音頻/文本。從個人思考的角度來審視下,審視下多模態大模型的實現方式。
首先就要區分輸入與輸出,即輸入的模態與輸出的模態。從目前來看,模型的輸出大多都是文本,模型的輸入一般是圖片/文本;但少數的大模型比如QWen、訊飛星火等支持語音的輸入。

輸入

對於輸入來說,最需要考慮的就是Embedding。
不管是哪種大模型,其最終的輸入都是張量數字的形式;其模型的結構都是神經網絡模型,而神經網絡模型計算的單位是張量。這中間就需要一個轉換過程,也就是最常用聽到看到的Embedding。

Embedding的作用是巨大的,不論是在深度學習領域還是推薦系統領域、搜索引擎領域等等;而且也衍生出向量數據庫的概念;存的就是這些Embedding後的張量。

多模態基座模型

即原生基座模型,比如GLM、LlaMa2、QWen、文心一言等基座模型支持多模態的輸入輸出,從個人調研來看,GLM、文心一言對這方面的支持比較弱,僅支持文本/圖像;LlaMa2有開源的實現支持文本/圖像/音視頻;QWen是最全的,阿里對其支持很到位,而且在魔塔社區,阿里開源了很多的音視頻模型,還是蠻強大覆蓋很全的。
以Llama2實現爲例,官方地址:Video-LLaMA;其架構圖如下:
architecture_v2.png
輸入的Embedding化都在模型內部已處理完畢,我們無需考慮。
魔塔社區/HuggingFace上,已經開源了很多高質量的多模態模型,截個圖展示下:
image.png

文本化處理

使用開源/商務組件處理輸入的內容,將其文本化,再輸入到模型中;然後再經歷輸入部分的流程。

但對於這類的處理來說,需要考慮的問題還是比較多:

  1. 組件轉換文本的準確性
  2. 組件轉換的損失
  3. 大模型中Embedding組件將輸入文本Embedding化時的損失

第一點不用敘述;
第二點,如果組件的處理不到位,遺漏了一些語氣詞或是某些情感詞之類的,對輸出文本的內容表達、語義表達將產生一定的損失。
第三點,如果轉換後的文本語義與文本內容不對應,比如同音詞或是生僻字的情況下,導致Embedding化時產生一定的損失。

Embedding化處理

利用某種Embedding模型,將輸入的內容直接Embedding化,生成張量後,直接丟進大模型中。
在這裏需要考慮兩點:

  1. 大模型支持Embedding的輸入
  2. Embedding組件與大模型內置的Embedding組件要一致

大模型訓練時,有自己的內置的Embedding組件,如果輸入時的Embedding組件產生的張量與訓練時的Embedding張量不一致,這就是兩種不同的Embedding組件導致的問題,其最終的效果將會大打折扣。

輸出

模型的輸出雖然最終也是經過處理後,生成文本;但這就已經很滿足絕大多數的需求。
而對於很多場景下,比如我們的場景需要再製定角色語音包,也是很好處理的。這個過程其實就是語音合成的過程。比如,開車導航時的語音包,有不同的人物聲音,這都是語音合成處理的。

總結

最終來看,第一個方案肯定是最合適的;但如果對於選型的大模型不支持多模態的情況下,考慮開源實現或是第二張方案,但要綜合調研其帶來的影響,並不是簡單的轉文本就行。第三種,目前我沒有找到合適的Embedding模型支持多模態,後續繼續探討挖掘下。

轉載請註明出處:https://www.cnblogs.com/zhiyong-ITNote

首發於個人公衆號
image

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章