近年來語言模型越來越被應用到實際環境上,使用模型還進行翻譯通常能獲得不錯的效果但對於大部分的模型目前都是透過雲端來運行通常對於串接翻譯器會產生額外的費用,為了防止這種狀況發生所以我們需要運行一個可以在本地電腦上運行的模型。
關於 SakuraLLM
基於一系列開源大模型構建,在通用日語料與輕小說/Galgame等領域的中日語料上進行繼續預訓練與調整,旨在提供接近GPT3.5且完全離線的Galgame/輕小說翻譯大語言的性能模型。
SakuraLLM 不允許被用在任何商用行為
環境檢查
- NVIDIA 顯卡,打包的環境包需求
- 安裝好最新 NVIDIA 驅動
- AMD GPU 作者說可以跑 vllm 模式(但須自用原碼建置環境
如果驅動正確安裝成功,就能透過 CMD 輸入 nvidia-smi
來檢查版本
下載所需檔案
SakuraLLM主程式 : https://github.com/SakuraLLM/SakuraLLM/releases
本文使用模型 : Sakura-1B8-Qwen2beta-v0.9.1-GGUF
文檔: https://github.com/SakuraLLM/SakuraLLM/wiki
更多模型↓
SakuraLLM模型倉庫: https://huggingface.co/SakuraLLM (拉至下方models有更多模型)
當前作者只打包兩個環境,如果都不符合你電腦規格則需要自己用原始碼運行
- 理論上版本越高性能越好,如上方環境檢查我當前cuda版本為12.5所以cu121,cu118皆可運行
- cu121 – 12.1版本
- cu118 – 11.8版本
本文使用 Sakura-1B8-Qwen2beta-v0.9.1-GGUF 進行演示,進入選擇小圖示下載模型
如果翻譯遊戲可以使用 GalTransl-7B 效果會比較好
下載後解壓縮主程式,並把模型放置於同一資料夾內
運行指令
開啟cmd ← 這就不說明了不懂要自己查一下
特別注意的重要參數↓ 其他基本通用
- sakura-1b8-qwen2beta-v0.9.1-fp16.gguf ← 模型名稱
- –model_version 如果使用1.0模型需改成1.0,GalTransl系列填0.9
- 更多對應參數可從這邊參考
運行成功會顯示預設測試翻譯
或是直接保存成一個 bat 檔案就不用每次打指令了,下方使用 ^ 進行分行
調用效果
使用 LunaTranslator 最新版支持 SakuraLLM 整合
測試效果,在RTX 3060 12G 下使用1b8模型延遲很低
- LunaTranslator 測試範例,監聽剪貼簿複製,簡繁轉換
- 下方有幾句跳過直接處理是因為我在翻譯器上有設置緩存
更多說明
Sakura模型的名字是什麼意思?
此段說明參考至→ https://books.fishhawk.top/forum/656d60530286f15e3384fcf8
以sakura-14b-qwen2beta-v0.9-iq4_xs_ver2.gguf
為例。
- 14b表示模型的參數數量,也就是模型的規模,其中b表示billion。目前有1.4b、7b、14b、32b等多個檔位。參數數量越大,模型大小越大,所需的顯存越大,速度越慢,理論上AI能力更強。
- qwen2beta表示模型所使用的底模,也就是模型是基於哪個模型訓練的。
- v0.9表示模型的訓練方法的版本號,基本上可以視為sakura的版本號。
- iq4_xs表示是4bit量化,不同字母代表了不同的量化演算法。量化是以一定的性能下降為代價,減少模型的尺寸的方法。量化越高,模型越接近完全體,大小越大,所需的顯存越大,速度越慢,理論上AI能力更強。
- ver2表示額外的標註,視情況有很多種。
無GPU能夠運行嗎?
照說明是可以的但須要自己透過 llama.cpp 來產生dll
暫時沒時間撰寫教學,以後有時間再補充
https://github.com/ggerganov/llama.cpp 有提供一些預產的dll(不過我運行失敗)
能否超載運行如32B模型?
如果GPU RAM不夠,我自己測試下也能用一般RAM運行並產出,只是速度真的就慢很多
至於如果連一般RAM都不夠那就不太可能了
不過32B對比如7B翻譯效果不一定會比較好,只是文本量比較多,一般推薦用7B就可以覆蓋所有日常及娛樂對話
無法判斷人名或錯亂?
0.9版本不支持術語表,1.0後可以透過術語表定義(但仍是測試階段也須自己研究)
像我本身搭配用 manga-image-translator 翻譯漫畫可以在 sakura_dict.txt 中定義如下
感謝教學已經成功運行,淺顯易懂
想請問一下 版本的部分 GalTransl-7B-v2-Q6_K.gguf的版本 –model_version的部分要填甚麼才對 填過 v2 2.0 v1 v1.0 1.0 或是空白 都無法成功
0.9
出現這個請問該如何解決
1.cmd用管理員執行看看
2.檢查防火牆是否阻擋(或是直接關閉)
3.檢查5000端口是否被占用,cmd使用如 netstat -ano 指令查看
關閉防火牆後可以使用了 感謝