2025年3月26日 星期三

使用Ollama+最新的Gemma3模型

搞完後Podman Desktop與Mtranserver應用後
很難不注意到Podman Desktop還有個AI Lab功能
可是使用之後,其效能沒有很好
說實話就是太慢到超出我容忍的限度
看來這應該是桌機與高階顯卡才能跑吧

正當測試不出我要的速度與效果,要放棄跑離線模型時
就這麼剛好,因為這陣子Google發表了最新開源的Gemma3
就看到有網友討論到ollama這軟體也有Gemma3可以用了
ollama?又是沒聽過的東西
於是就抽空研究了一下ollama這軟體
發現支援的模型還真不少,網路上中文說明也多
就試著使用看看
用完之後的簡單結論,這就是我要的離線AI應用啊


當然不是說podman不好,或不好用
而是該這麼說,應用方向不同所造成的差異
以運轉離線AI服務這目標來說,ollama在安裝與使用上的方便性,明顯遠超podman
畢竟podman只是執行容器服務的軟體,只是不少AI離線模型會用docker跑才有關聯
就連ollama也支援使用docker的方式執行
而ollama就是為了簡單應用離線模型而產生的應用
專用,自然更稱職許多

廢話不多說,開始進入ollama的世界
ollama支援多平台,包含MacOS、Linux與Windows
我自然是只使用windows平台,以下介紹都是在windows環境中
ollama的windows安裝檔差不多1GB,還算蠻肥的
雖然這次安裝沒有中文介面,但是安裝真的很簡單
便利度的差不多就是一鍵安裝的程度

按下Install

等進度條跑完

這樣就結束了
裝完也沒有其它複雜的設定與介面,就一個指令「ollama」用到底
只要進命令列中,執行以下命令
ollama run gemma3:4b
然後它就會從網路上下載模型檔,再執行

好了,可以用了
就這麼簡單
弄到這裡,真的是感到相恨見晚啊

更進一步描述它實際的運轉狀況是這樣
ollama預設會在背景執行網路伺服功能,預設port:11434
在windows環境下可以看到系統匣圖示有這隻可愛的羊駝就是有在運作了


我們就可以透過這個服務配上特定網址與json格式與它溝通運作
類似上次架起來的Mtranserver
後面再提這些更詳細的API說明
先說明更簡單的指令應用
指令應用如前所說,通通靠ollama當主指令
除了剛剛講的run之外
還有ollama list可以列出目前有下載的模型

ollama pull可以預先下載模型不執行

還有ollama show可以查詢模型的一些參數

指令的部分差不多就這樣

回過頭來說ollama的API介面
詳細這可以看github上的這份文件
Ollama API 使用指南(簡體中文)
簡單地說,跟上次與Mtranserver溝通很相似
只是命令上複雜了不少
所以我也仿照上次的做法,叫grok弄了個網頁介面要來跑
然後就遇到了CORS(Cross-Origin Resource Sharing)問題
簡單地說,就是網頁資料請求不在同一個網域內,造成有安全上疑慮而被禁止
會這樣是因為離線網頁是放在files://下,而ollama api服務是放在http://localhost下
這樣視為跨網域,ollama伺服服務會拒絕命令,不給存取..........
可是我用curl命令就沒這問題,這甚至連網頁都不是啊...
算了,總之再問grok解法,它給了我幾個選項
最後我用python架簡易伺服器的選項,把網頁放在伺服器上就解掉這個問題
但自己用還好,給其它人用,他們應該不會用
如果要給其它人用的工具,還是得用python寫個簡單視窗吧
最好還是用pyinstaller包起來的執行檔最佳

所以研究另一個使用API的方式,就是靠Python了,文件連結如下
在 Python 中使用 Ollama API
一樣是簡體中文說明
總之送出去給ollama伺服的指令應該還是一樣的東西
差別只是這邊是用python寫而已,回來的資料可以做更多的處理
Ollama的API最後再介紹一個東西
就是ollama有相容OpenAI的API介面,說明文件如下
OpenAI compatibility(只有英文版)
換言之,如果之前有些開發的東西,像是翻譯應用,是靠open ai的api去向Chat GPT要資料的話
那透過這個相容的部分,你可以直接對ollama進行存取而不用改任何程式
雖然我目前用不到,但這個繼承性超棒超方便的啦,真的讚

Ollama講這麼多,另一個主題Gemma3還沒講到,後半就來講講這個部分
我下載測試的有兩個模型,一個是gemma3:4b,一個是gemma3:12b
先講這兩個的差異,4b代表的是4 billion,也就是這個模型有40億個參數
所以類推,12b就是有120億個參數的模型
這參數量也反應在其容量,佔用資源與運轉速度上
4b的模型大小約3.3GB,電腦跑下去,大概吃了4gb的記憶體,在我華碩電競筆電上速度還行


12b的模型大小約8GB,電腦跑下去,吃了8GB的記憶體,跑下來明顯比4b的慢上可能有4倍


12b就慢成這樣,我就沒勇氣再挑戰最大容量20b的模型了
至於兩者間的功能差異,我主功能要的是翻譯
就用一段ESPN今年開幕戰介紹大谷翔平的英文新聞來當對比
https://www.espn.com/mlb/story/_/id/44314472/

左下是4b,右下是12b
可以感受相同提詞下12b翻出來的有更好一點
尤其大谷翔平是用漢字而不是只用Ohtani
可惜,4B的首轟比12B的本壘打翻得好

然後這代gemma3可以接收一些外部的資料,像是圖片與短影音
我也有試了一下,像是餵下圖左邊後,問gemma3:4b得到這回答

可以從外部拿資料還蠻棒的
於是我臨時想到,那餵它網址會如何?
就丟了Mtranserver的github網址給它,結果跑出下面的說明


好像可以直接餵網址資料耶
驚訝之餘,想想似乎有點不太對
冷靜拔了網路線,關了Wifi,進飛航模式再測一次
發現仍然可以產出答案,那很明顯資料不是網路來的,是唬爛來的
再用新聞的網址測一次,就是前面大谷翔平的新聞連結,然後就看到明顯的唬爛文章了

雖然很厲害的還是大谷的新聞
不過內容就完全不同了,寫的還真順啊

最後就是把這個弄進公司筆電裡跑
有點遺憾的是,4b的速度沒有家裡那台筆電來得快,跑起來跟家裡跑12b差不多
但還能跑得動就已經是對我有很大的幫助了,幫是翻完後還不用再從簡轉繁就方便很多
寫寫一些提詞工具就可以輔助做不少的事
科技的進步真棒啊,只是要追得上就是了




沒有留言: