網路上有很多影片,我主要都是參考"零度解說"
https://www.youtube.com/@lingdujieshuo/videos
本來我都是使用ollama或者lm studio,雖然安裝設定都很方便直觀,但是總覺得模型很笨,答非所問,後來才知道是模型不夠力,然後自己筆電的規格也低,所以我決定用llama.cpp搭配適合的模型,不過,還是要懂一些參數的設定跟選擇模型,所以我留下筆記避免忘記
這是llama.cpp的主網站
https://github.com/ggml-org/llama.cpp
常用的參數有
-ngl :將模型的層數卸載到 GPU。 -ngl 999 就是指全部放進去
-c :上下文長度。每個模型不一樣, -c 128000
-n :單次對話最大生成長度 (Token 數)。 -n -1 就沒有限制
-t :運算時使用的 CPU 執行緒數。 設定實體核心數就好
想要知道全部的參數, 就執行 llama-server.exe --help
找個模型下載,執行底下命令就好了(這只有聊天文字功能)
llama-server.exe -m "模型.gguf" -ngl 999 -c 128000
那,模型哪裡來?
https://huggingface.co/HauhauCS/Qwen3.6-35B-A3B-Uncensored-HauhauCS-Aggressive
https://huggingface.co/unsloth/Qwen3.6-35B-A3B-GGUF/tree/main
https://huggingface.co/unsloth/gemma-4-12b-it-GGUF/tree/main
https://huggingface.co/unsloth/Qwen2.5-VL-7B-Instruct-GGUF/tree/main
如果還想文字以外的功能,就要再加個多模態
llama-server.exe -m "模型.gguf" --mmproj "多模態.gguf" -ngl 999 -c 131072 -n 8192
但是,我發現TUF Dash F15的規格太低,一開始很多模型都跑不起來,還要找出適合的模型才行,麻煩的是我不懂什麼是gguf不知道怎麼選,就跑去問了GEMINI,發現很多專有名詞
先講結論(記得要把解壓縮後的DLL檔放在一起),
gemma-4-12b-it-UD-IQ2_M.gguf 每秒20個Token
Q4 / Q5 / Q3 (Quantization Bits): 代表量化位元數。數字越大(如 Q5),模型越聰明、體積越大;數字越小(如 Q2),模型越笨、體積越小。
K_M / K_S / K_L: 代表 K-quant 量化策略。
_S (Small):體積最小,犧牲多一點點精確度。
_M (Medium):中等體積,通常是該 Bit 下最推薦的規格。
_L (Large):體積稍大,保留更多細節。
UD (Unsloth Dynamic): 這是 Unsloth 團隊特製的動態量化技術。他們在量化時,會對模型中「比較重要的層」保留高精度,「不重要的層」進行大力壓縮。因此,帶有 UD 字樣的模型,在相同檔案體積下,通常會比傳統的 Q 版本還要聰明。
IQ (Importance Quantization): 重要性量化。專門為超低位元(2~3 bit)研發的技術,能讓極小體積的模型盡可能多保留一點智商。
FP32Float 32 (單精度浮點數),早期訓練用的格式,精準度極高,但檔案大到爆炸,現在極少直接拿來執行。
FP16Float 16 (半精度浮點數),前幾年最主流的格式。體積小了一半,運作速度快很多,但有時遇到極大或極小的數字會「溢出(計算崩潰)」。
BF16Bfloat16 (大腦浮點數),目前現代大模型的標配(如 Qwen2.5、Llama 3)。 由 Google 開發,它犧牲了一點點小數點後的精確度,但容納數字極限範圍跟 FP32 一樣大。這讓模型在訓練和執行時非常穩定,不會輕易崩潰。
最後,來講講為什麼要選GGUF
.gguf: 專門為「消費級電腦(普通顯卡、甚至沒顯卡)」設計的格式。
優點: 支援 CPU + GPU 混合調度。如果你的顯存(VRAM)不夠大,它可以把裝不下的部分偷偷塞進你的系統記憶體(RAM)和 CPU 裡繼續跑,雖然會變慢,但「絕對不會閃退崩潰」。這也是為什麼地端新手最推 GGUF。
.safetensors:目前最安全的原始模型權重格式(不含可執行代碼,不用怕下載到木馬程式)。
優點: 載入速度極快。但它要求顯存必須 100% 完全裝得下模型,只要差 0.1GB 裝不下,電腦就會直接報錯(OOM)並拒絕執行。通常用於 VLLM、Hugging Face Transformers 等專業部署。
底下是心得,
-ngl 不是指模型的容量大小,而是模型的層數,要放幾層到顯卡記憶體裡面,但是, 不能全部放進去的話,就會在系統記憶體切換,因為我不懂有幾層,就乾脆, 只要模型比顯卡記憶體小,我就設定 -ngl 999,強制全部放進去
-c 上下文長度,這個也會吃顯卡記憶體,但設定太少,就講不了什麼事
因為gemma-4-12b-it-UD-IQ2_M.gguf的容量只有4G,所以我執行的指令是
llama-server.exe -m "models\gemma-4-12b-it-UD-IQ2_M.gguf" -ngl 999 -c 128000
雖然能跑出每秒20個Token,但理解能力有問題,換成
llama-server.exe -m "models\gemma-4-12b-it-UD-Q4_K_XL.gguf" -ngl 999 -c 128000
就只有每秒7個Token,慢到不想用
model = "Qwen3.6-27B-UD-Q5_K_XL.gguf"
model_reasoning_effort = "low"
profile = "llamacpp-codex"
model_provider = "llamacpp"
[profiles.llamacpp-codex]
model = "Qwen3.6-27B-UD-Q5_K_XL.gguf"
model_provider = "llamacpp"
model_reasoning_effort = "low"
[profiles.llamacpp-codex.windows]
sandbox = "elevated"
[model_providers.llamacpp]
name = "llama.cpp"
base_url = "http://127.0.0.1:8080/v1/"
wire_api = "responses"
[windows]
sandbox = "elevated"
最後,談一下怎麼連接CODEX,就是設定~\.codex底下的config.toml檔案
底下是當時的設定,記得要修改成當下使用的模型名稱
model = "gemma-4-12b-it-UD-IQ2_M.gguf" # 預設呼叫的模型檔名
model_provider = "llamacpp" # 預設使用的後端
model_reasoning_effort = "low" # 降低推理能耗,換取極致生成速度
[model_providers.llamacpp]
name = "llama.cpp"
base_url = "http://127.0.0.1:8080/v1" # 連接你本地的 llama-server
wire_api = "responses" # 新版 Codex 專用協議
requires_openai_auth = false # 核心:直接跳過官方登入驗證,免去 API Key
[windows]
sandbox = "elevated"
model = "Qwen3.6-27B-UD-Q5_K_XL.gguf"
model_reasoning_effort = "low"
profile = "llamacpp-codex"
model_provider = "llamacpp"
[profiles.llamacpp-codex]
model = "Qwen3.6-27B-UD-Q5_K_XL.gguf"
model_provider = "llamacpp"
model_reasoning_effort = "low"
[profiles.llamacpp-codex.windows]
sandbox = "elevated"
[model_providers.llamacpp]
name = "llama.cpp"
base_url = "http://127.0.0.1:8080/v1/"
wire_api = "responses"
[windows]
sandbox = "elevated"
沒有留言:
張貼留言