今天繼續用 Ollama 測試本地模型, 本篇旨在測試微軟推出的開源模型 Phi 4.
本系列全部測試文章索引參考 :
Phi 4 是微軟推出的旗艦級輕量化大語言模型, 它代表了微軟在以小博大技術路線上的巔峰之作. Phi 4 的核心基礎版本為 14B (140億參數), 在 Ollama 中經過 4-bit 量化後大約為 9.1 GB 左右, 可以被完整載入 RT3060 12GB 顯卡的 VRAM 中.
微軟在訓練 Phi 4 時採用了特殊的高質量合成數據與多階段強化學習 (RLHF/PPO), 這讓它打破了傳統參數即正義的迷思, 在僅僅 14B 參數量下, 許多核心能力直接與 70B 甚至雲端商業大模型 (如 GPT-4o) 平起平坐.
以下是 Phi 4 的核心強項 (摘要整理自 Gemini) :
- 強悍的數理邏輯推理能力 :
Phi 4 最令人驚豔的是它的硬核實力, 在科學, 程式與複雜數學公式的推理基準測試中, 它的表現甚至超越了部分體積比它大數倍的模型, 這使它成為開發者進行本地 Vibe Coding, 程式除錯的頂級首選. - 消費級硬體的黃金尺寸 :
9.1 GB 的檔案大小簡直是為 RTX 3060 12GB 這類顯卡量身打造. 它能完全塞進 12GB VRAM, 不需要把算力分流到系統記憶體, 在本地端可以實現極高的吐字速度, 完全沒有等待的焦慮感. - 超長的上下文記憶 (Context Window) :
Phi 4 支援高達 128K Token 的上下文視窗, 這使得長篇學術論文, 甚至數十個 Python 程式檔案的內容同時餵給它依然能保持清晰的記憶並進行精準的摘要或修改. - 極高的性價比與隱私性 :
不需要每個月花 20 美金訂閱雲端服務就能擁有媲美一線大模型的智商, 而且所有商業機密或代碼絕不外流.
但 Phi 4 也存在一些缺陷 :
- 繁體中文能力不道地 (有翻譯腔) :
微軟官方在訓練 Phi 4 時主要的語料庫高度集中在英文, 程式碼和學術數據上, 雖然它完全聽得懂繁體中文, 也能用繁體中文流暢回答, 但與阿里巴巴專門針對中文優化的 Qwen 3.5/3.6 系列相比, Phi 4 的中文有時會帶有一點點美式翻譯腔或語法略顯生硬. - 通識人文知識偶爾會有幻覺 :
由於體積 (14B 參數) 被極度壓縮, 微軟把焦點全部放在了邏輯, 程式碼與數學上, 使得 Phi 4 對一些冷門的世界歷史, 各國風俗, 或是影視八卦等通識人文知識出現幻覺的機率會高於 Gemma 4. - 不支援多模態 :
標準版的 Phi 4 是純文字模型, 它沒有辦法像 gemma4 那樣可分析或辨識圖片 (微軟另外有推出 Phi-4-Multimodal 的多模態版本).
總之, Phi 4 就是一個理工男, 擅長處理邏輯推理, 密碼學, 或演算法, 擁有寫程式, 重構代碼, 除錯等硬實力, 不適合用它來寫感性的中文行銷文案, 小說創作, 或聊一些歷史人文的軟材料.
在模型架構上, Phi 4 不是 MoE 架構, 它是一個稠密模型 (Dense Model), 亦即向它提問時, 模型內部的所有參數都會百分之百全部啟動參與運算. 不過它的多模態版本採用了創新的 Mixture-of-LoRAs 架構 (類似 MoE 的路由機制), 當向它提交語音, 圖片或文字時, 它內部的路由器會動態切換不同的 LoRA 適配器來處理, 達到與 MoE 類似的效果.
下載 & 執行 Phi 4 模型用下列兩個指令均可 :
- ollama run phi4:14b
- ollama run phi4:latest
參考 :
此處 latest 是一個動態指針, 當輸入一個模型名稱 (例如 phi4) 而沒有指定具體參數大小時, Ollama 預設就會自動補上 :latest, 官方會把該模型家族中大小最主流, 最適合大眾消費級顯卡 (通常是 4-bit 量化的基礎版) 的型號綁定到 :latest, 對於微軟的 Phi 4 系列, 官方設定的預設黃金型號就是 14B (Q4_K_M 量化版) :
PS C:\Users\USER> ollama run phi4:14b
pulling manifest
pulling fd7b6731c33c: 100% ▕████████████████████████████████████████▏ 9.1 GB
pulling 32695b892af8: 100% ▕████████████████████████████████████████▏ 275 B
pulling fa8235e5b48f: 100% ▕████████████████████████████████████████▏ 1.1 KB
pulling 45a1c652dddc: 100% ▕████████████████████████████████████████▏ 82 B
pulling f5d6f49c6477: 100% ▕████████████████████████████████████████▏ 486 B
verifying sha256 digest
writing manifest
success
照例問候一下 :
>>> 你是誰?
我是一個由人工智能技術設計的虛擬助理。我的目的是幫助回答問題、提供資訊和解決各種問題,以盡可能準確且有用地協助你。如果你有任何問
題或需要信息,隨時告訴我!
哈, 預設是繁中, 但還是叮嚀一下 :
>>> 請一律使用繁體中文與我交談
當然可以,從現在開始我將使用繁體中文和你交談。如果有任何問題或需要幫助的地方,隨時告訴我!你現在想知道什麼呢?
問一下物理學知識 :
>>> 請簡介量子糾纏
量子糾纏是一個量子力學中的現象,它將兩個或多個粒子連結在一起,使得每個粒子的狀態與其他粒子的狀態相關聯。不論這些粒子之間的距離有
多遠,改變其中一個粒子的量子狀態會立即影響到其他粒子的狀態。這種現象被愛因斯坦稱為「鬼怪效應」(spooky action at a distance),因
為它似乎違反了內在因果關係。
量子糾纏的特性包括:
1. **即時性**:一旦粒子糾纏,改變其中一個粒子的狀態會對另一個粒子產生影響,無論它們之間相隔多遠。
2. **非局域性**:這種現象不依賴於任何物理傳播的速度限制(即使是光速),因此似乎涉及無效率的信息傳遞。
3. **綜合性**:一旦粒子糾纏,它們形成了一個整體系統,而不是單純地將各自的狀態加起來。這意味著只有通過觀測整個系統才能完全描述其狀
態。
量子糾纏在理論物理學中具有重要的地位,並且對於量子計算、量子通信和量子密碼學等領域有著廣泛的應用前景。它挑戰了我們對於物理定律如
何在大規模上適用的傳統理解,並可能提供新型的信息處理和傳輸技術。
不過,值得注意的是,量子糾纏不能用來實現超光速通訊或其他違反相對論原則的效果。因為即使粒子間有糾纏,個別的觀測結果仍然是隨機的;
要提取信息,需要額外的傳遞或共享參考來解釋和使用這些結果。
既然數理邏輯能力強, 問它這題簡單的 :
>>> 3.10 與 3.8 這兩個數值哪一個比較大?
在直接的數值大小比較中,3.10 大於 3.8。如果考慮到小數點後面的位數:
- 3.10 可以理解為 3.100(即有三個有效小數位)。
- 3.8 等同於 3.800(有四個有效小數位)。
從數值大小來看,3.10 < 3.80。因此,在比較兩者時,3.8 更大。
看看程式能力, 用最含糊的提問詞 :
>>> 請用 Python 寫一個基本的 GUI 四則運算計算器程式
當然可以!我將使用 Python 的 `tkinter` 库來建立一個簡單的 GUI 介面四則運算計算器。這個程式會允許使用者輸入數字和運算符,並在按下
「計算」按鈕時顯示結果。
以下是基本的 Python 程式碼:
```python
import tkinter as tk
def calculate():
try:
# 以文本框中的内容作为表达式计算
result = eval(entry.get())
# 显示结果
label_result.config(text=f"Result: {result}")
except Exception as e:
# 如果出现错误,显示错误信息
label_result.config(text=f"Error: {e}")
# 创建主窗口
root = tk.Tk()
root.title("Calculator")
# 设置窗口大小
root.geometry("400x250")
# 输入框,用于输入表达式
entry = tk.Entry(root, width=40)
entry.grid(row=0, column=0, columnspan=4, padx=10, pady=10)
# 结果标签
label_result = tk.Label(root, text="Result: ")
label_result.grid(row=1, column=0, columnspan=4)
# 计算按钮
button_calculate = tk.Button(root, text="Calculate", command=calculate)
button_calculate.grid(row=2, column=2, padx=10, pady=5)
# 创建数字和操作符按键
buttons = [
'7', '8', '9', '/',
'4', '5', '6', '*',
'1', '2', '3', '-',
'0', '.', '=', '+'
]
row_val = 3
col_val = 0
for button in buttons:
tk.Button(root, text=button, width=10, height=3,
command=lambda b=button: entry.insert(tk.END, b)).grid(row=row_val, column=col_val)
col_val += 1
if col_val > 3:
col_val = 0
row_val += 1
# 运行事件循环
root.mainloop()
```
### 程式說明:
- **tkinter**: 這是 Python 的標準 GUI 套件,我們用它來建立界面。
- **Entry Widget**: 用於輸入表達式。
- **Label Widget**: 顯示計算結果。
- **Buttons**: 提供數字和運算符的按鈕,以及一個「Calculate」按鈕來觸發計算。
### 注意事項:
1. 使用 `eval` 函式是為了方便地將輸入的字符串作為 Python 表達式來評估,但這也可能帶來安全風險(如內存洩漏)。在真實應用中,建議使
用更安全的方式處理表達式計算。
2. 本程式不做輸入驗證或錯誤處理,只是提供基本的功能。在擴展和商業化應用時需要進行更為全面的測試和安全性考量。
你可以輸入像 `3 + 5 * 2` 或 `9 / 3 - 1` 等運算式來測試此計算器。按下「Calculate」後,結果將會顯示在窗口中的「Result:」標籤上。
結果如下, 功能與排版都一次到位 :
覺得比 Deepseek 要好很多, 回應速度也很快.


沒有留言 :
張貼留言