這章來整理一下目前看到的繁體中文LLM,以及怎麼選擇適合自己任務的local LLM。
找local Model最重要的是模型的推理能力,模型對於特定任務的回答能力,像是翻譯、摘要,或是對各種語言理解的能力,或是多輪對話表現能力。若是要做RAG,知識背景(如台灣的總統是誰)反而是其次,重要的是它在相關文章段落中回答出問題的能力。
這些能力值在模型Hugging Face介紹中通常會有一些現有評估資料集的比較表格可以提供參考,不過模型實際上運用在自己的任務當中的效果還是要經過自身實驗才準。
(圖源: 網路)
在一開始找模型時,每個模型的介紹都很長,不知道要看什麼,可以從模型訓練/微調的 語言、資料、參數大小、上下文長度 (context length)、微調的base model是誰 來看。
由於先前的章節並沒有特別寫到過,因此在此補充兩者的差異。
雲端服務 - 雲端服務的模型不會出現在user的電腦裡面,因此不需要自建基礎設施,user只需透過付費call API即可得到回應。資料會傳入對方的伺服器當中做運算,至於中間是否會被存檔或用於其他用途,取決於服務提供者的設定,通常會有相關公告或聲明。
地端服務 (local LLM) - 模型可以在的伺服器或是電腦當中,一般人可以在自己電腦中體驗LLM的神奇。然而專業使用上卻要有一定的設備和知識,才能做環境與服務的建設,會有速度、準確性、安全性、多人使用等種種考量,這也是本系列會介紹的目標。
這邊不考慮GPT、Claude、FFM這種不能下載在你的電腦裡面的模型,順序就是想到啥就放啥,並沒有特別的排序。這些模型在台灣資料的微調下,擁有更多的台灣知識,繁體中文的回答也會比較好。
Github / Taiwan-LLM HF / Demo / 解說
其中最新的TAME = Llama-3-Taiwan(長春、和碩、長庚醫院、欣興電子、科技報橘、律果科技、台大),具備石化、電子製造、醫療、媒體內容和法律等在地專業知識。
評估方式是使用: TCEval v2。
實測效果:在2024/9鐵人賽寫這篇文章的時候覺得最好用的模型,Llama-3-Taiwan基於llama-3推理能力很不錯,非常遵守指令也更會講中文,只是有時會在特定任務中(像是摘要)無限跳針,AWQ量化模型效果體感也不錯。
他們有建立一套評估方式和資料集: TC-Eval。
實測效果:當初剛出來的時候測試過,由於Bloom-zh系列參數量是1B和3B,速度上明顯比其他台灣模型快很多。如果任務並沒有複雜到需要更大型的語言模型,也許它是一個好選擇。
至於Llama-Breeze2-3B-Instruct用起來跟llama-3.2比較接近,偏好輸出較短的答案,整體而言在參數量大量減少的狀況下確實比Llama-3-Taiwan更聰明,同樣資料集下回答也更接近GPT。特別補充,如果Breeze2要用vLLM部屬的話,tokenizer會有點問題,需要手動添加special token之後額外掛載tokenizer,或是看要把模型全部下載下來改也可以,解法請參考這篇大大的文。
他們有一套自己的評估方式和資料集: taide-bench。
實測效果:它非常偏好長篇大論的回答,其他模型都回答短短的,就它很喜歡回答很長XD
同樣是以Llama-2-7b微調,筆著覺得它有比當時的Taiwan-LLM-7B-v2.0-chat系列在回答QA問題上更聰明許多,如果再來一個llama-3.1或3.2微調版本,應該會更聰明。
Bailong(群創)
基於「meta-llama/Llama-2-7b-hf」,利用QLoRA和群創提出的zip-tie embedding初始化,Context Length是2048 tokens。
他們也有一套自己的評估方式: Bailong-bench。
lianghsun/Llama-3.2-Taiwan-3B-Instruct(Developed by: Huang Liang Hsun)
在llama-3.2出了之後,看到有大大用繁體中文資料微調一個Llama-3.2-Taiwan-3B-Instruct。
實測效果:可能有用大量markdown資料或指令微調過,在沒有特別指定輸出格式時,回答問題喜歡用markdown格式回答。雖然是llama-3.2微調的,但是同樣的prompt,回答長度稍微比llama-3.2長一些。
非中文為主訓練的模型有大量的背景知識,但因為不是以中文為主,有可能即使下了語言#zh-TW指令,回答到一半還是不小心就把英文或簡體字噴了出來。
實測效果:筆者最喜歡的模型還是llama系列,在單純QA的時候有時可能會噴英文,但在RAG的問答任務下都是乖乖繁體中文輸出,而且回答都是簡短風格,又快又好用。
Mistral(Mistral AI)
Mistral AI以Apache 2.0授權自由使用的模型,7B的模型Context length是8k,在各種測試中打敗當時的llama-2-13B。
Yi(零一万物)
Yi-1.5系列的參數量有6B、9B、34B,而Context length有4k、16k、32k。除此之外還有Yi-Coder與多模態模型Yi-VL,可以專門用在程式撰寫和影像辨識上。
Qwen(阿里云)
通义千问系列目前最新的Qwen2的Context length有131,072 tokens,參數量從1.5B到72B都有。除此之外還有Qwen2-Math、Qwen2-Audio、Qwen2-VL三種系列,包含音訊和影像在內的多模態應用。
DeepSeek(DeepSeek)
主要分成:用於一般綜合任務的V3系列,它是一個671B的超大MoE模型,Context length是128k;以及利用Chain of Thought資料、強化學習等技術做出專門用在推理任務的R1系列,其中他們將DeepSeek-R1的知識蒸餾給小型模型Qwen和llama,讓這些蒸餾後的小型模型有著超越非推理模型GPT-4o-0513的優秀表現。除此之外還有多模態模型VL2和Janus系列也都值得讓人研究。
實測效果:測試過DeepSeek-R1-Distill-Llama-8B,輸出的部分會由
</think>
分隔推理和回答,假設你全都使用繁體中文問問題,在推理的部分簡體字推理,但輸出會是繁體字,非常的酷,當然也很常全都回答簡體字,單看結果來說回答的不錯,只是看它的推理過程會覺得它的內心戲很多XD
模型比較很多人會下載oobabooga的text-generation-webui來做比較,不一定需要GPU,即使使用CPU的電腦也可以下載GGUF量化模型,體驗C++在你電腦上壓榨CPU全力運轉LLM的魅力,也是筆者在還沒熟悉LLM模型時常用的體驗工具。過了一陣子沒用,發現它現在還有出colab版本的可以玩,詳細內容可以見它的github。
(圖源: 筆者很久以前下載的舊版本text-generation-webui)
其實台大也有建一個繁體中文LLM競技場,不需要自身硬體設備即可使用網頁測試,不過最近打開來看好像壞掉了,不確定是否會再維修開啟它QQ
https://arena.twllm.com/
(圖源: 今年三月截圖的)
如果網站修好後,使用上唯一要注意的事情就是,打過的對話會變成資料集公開在HF上。
繁體中文的開源模型已經有許多選擇,目前台灣微調的模型都還是以文字模型為主,不知道未來會不會朝向繁體中文多模態的方向前進XD >>>> 過了半年就一堆了,太快了、真的太快了(:3」∠ )
在前面的9天內,已經學習到LLM推理上、硬體設備相關的簡單知識、也學習到了如何選擇模型,下一章開始就是令人期待的推理加速的技術章節了。
不過因為我們的目標不是隨便在自己的電腦下載一個model跑就=部屬了,為了要做成OpenAI那種雲端API服務的純地端版本,在實作之前還有很長一段路要走!
(圖源: 自製)