只用CPU跑「小型」語言模型可行嗎? / Is Running "Small" Language Models on CPUs Only Feasible?
很多人都說跑大型語言模型需要很高級的GPU,其實相對於門檻較高的大型語言模型,小型語言模型也一直在如火如荼地發展。最近我嘗試用12核CPU跟32GB的RAM來跑Gemma2:2B,意外地很順利呢。
Many people say that running large language models requires high-end GPUs. However, relative to the higher barrier to entry of large language models, small language models have also been developing rapidly. Recently, I experimented with running Gemma2:2B using a 12-core CPU and 32GB of RAM, and it went surprisingly smoothly.
小型模型語言 / Small Language Models
https://huggingface.co/nvidia/Llama-3.1-Nemotron-70B-Instruct
一般我們熟知的大型語言模型擁有快速且聰明的推理能力,但大型的模型也意味著我們需要較更好的硬體才能使它順利運作。舉例來說,在Chatbot Arena LLM Leaderboard排行較為前面、並且有註明參數量的模型中,第16名的nvidia/Llama-3.1-Nemotron-70B-Instruct的參數量來到了 705 億個參數,而用它推理所需要的硬體設備,建議是4張40GB、或是2張80GB的NVIDIA顯示卡,以及150GB以上的硬碟空間。這種等級的硬體設備完全是資料中心層級才能駕馭,對我們這種市井小民來說都是遙不可及。
https://www.ibm.com/think/topics/small-language-models
為了使大型語言模型能夠用於更多應用場景,研究者利用剪裁(pruning)、量化(quantization)、低階因式分解(low-rank factorization)、知識蒸餾(knowledge distillation)等方法對模型進行壓縮。在確保模型表現不會相差太多的情況下,盡可能縮小模型的規模,使得模型本身可以在更多裝置上運作。
https://openai.com/index/gpt-4o-mini-advancing-cost-efficient-intelligence/
目前小模型中最為著名的是GPT-4o mini,這是OpenAI家族中為了提高性價比的GPT-4o模型的縮小版。它具有多模態(multimodal)的處理能力,也就是能夠接受文字和圖片的輸入。
https://azure.microsoft.com/zh-tw/products/phi
另一個相當有名的模型是Microsoft推出的Phi。2025年Microsoft推出了最新的小型語言模型Phi-4,參數量為140億 (14B)。不過硬體要求還是要1張RTXA6000、40GB硬碟、RAM 48GB、CPU 48核。而前面的版本Phi-3-mini則只有3.8B,可以輕易地在大多設備上佈署,甚至可以在iPhone 14上運作。
Facebook也有釋出超級小型的小型語言模型MobileLLM,提供了125M、350M、600M、1B、1.5B參數量等不同的版本。我們可以使用HuggingFace跟MobileLLM codebase來使用這些模型。Fahd Mirza也用影片介紹如何在本地端安裝MobileLLM 1B。
https://deepmind.google/technologies/gemini/nano/
Google也有推出自家的小型語言模型。一個是運作在Android跟Google Chrome瀏覽器上的Gemini Nano,另一個則是開放式模型Gemma:2B。Gemini Nano大多都跟特定裝置綁定,並主要用於特定用途,例如翻譯、改寫。大多數Google Chrome都可以安裝Gemini Nano,讓你在瀏覽器使用小型語言模型。去年還蠻多人都在玩Gemini Nano,例如「3 種方式搶先體驗 Chrome 內建的免費 Gemini Nano AI,沒連上網也能用」
https://ai.google.dev/gemma?hl=zh-tw
另一方面,Google Gemma:2B則是可以讓開發者下載到本機運行的小型語言模型。只有20億參數的它可以靈活佈署在許多設備上。Google有提供將Gemma佈署在行動裝置的教學,也有人成功在Android佈署Gemma:2B的經歷。Gemma:2B的硬體要求是GPU的VRAM在8GB以上。
https://blog.google/technology/developers/google-gemma-2/
Google在2024年中推出了下一代Gemma2 9B與27B。後來也釋出了Gemma2的2B版本。如果只使用CPU的話,GopiUppari建議至少要用12.7GB的硬碟空間來運作。
如果只是硬碟空間12.7GB的話,好像也不是說做不到的感覺啊?
實驗環境 / Environment
這次我使用了一臺安裝了Proxmox VE的小型電腦。電腦本身的的CPU是AMD Ryzen 9 7940HS 16核心,記憶體是DDR5 64GB。我以以KVM架設Kubuntu 24.04作業系統安裝Ollama,並且下載了gemma2:2b模型。下載指令如下:
ollama pull gemma2:2b
gemma2:2b模型蠻小的,下載時只需要預留2GB左右的硬碟空間。然後用以下指令開始跟gemma2:2b互動:
ollama run gemma2:2b
一開始執行時需要花一些時間載入模型。載入之後就能跟gemma2:2b交談,而且可以用中文對談。速度比我想象中的還要快呢。
在詢問gemma2:2b的時候,也就是gemma2:2b推理期間,CPU資源會被完全的佔用。但記憶體僅有用到6.81GB,看起來綽綽有餘。
推理結束之後,CPU佔用就會極速減少。
由此可知,一般電腦確實能夠運作小型語言模型呢。
結語 / Conclusion
https://www.cna.com.tw/news/ait/202405240031.aspx
關注AI發展的研究人員大多聚焦在前緣大型語言模型的最新發展,但我更在意的是,能不能將大型語言模型的處理能力,推廣到更多尋常百姓的生活當中。小型語言模型的出現降低了我們使用AI的門檻,現在也有越來越多號稱內建「AI」的手機,真的是用本機資源在運作小型語言模型,例如Google Pixel 8a。
https://youtu.be/ZQ3axlOHr8c?t=453
然而,由於模型本身的能力限制,小型語言模型不夠聰明的這點,往往會被人視之雞肋。課堂上玩玩測試一下即可,但真的要工作的話,我想大多數人還是會打開ChatGPT或Claude。
事實上,小型模型語言並不是給大家直接用來問問題,而大多時候是為了配合「情境」(context)而設計的模型。舉例來說,大多數小型模型語言都具備了「翻譯」的功能,這就是仰賴你提供的原文情境,才能翻譯成對應的目標語言。而「改寫」也是相當仰賴情境的常見應用。很多人會用小型模型語言來為文章撰寫摘要,或是檢查並修正字句的語氣。這些應用都是在你提供足夠「情境」資訊的前提下,小型語言模型才能發揮功能的場合。
當然,說到提供情境,讓語言模型達到In-Context Learning的應用,那麼檢索增強生成的RAG應用也會是小型語言模型的主要戰場。Lazaro Hurtado比較了多個小型語言模型結合配合RAG的表現,發現Gemma 2B的精確回答令人印象深刻,而Gemma 7B則能夠生成創意性的表現。當然,更大的模型表現會更加優秀,Llama2 7B的表現明顯比其他模型好得多。
https://www.thepaper.cn/newsDetail_forward_29659857
前OpenAI聯合創始人、SSI創始人Ilya Sutskever認為強調算力的預訓練模型發展已經接近極限,但在前沿研究者的背後,還有許多人等待著AI落地的到來呢。