🚀 Gemma-3 4B Instruct GGUF模型
Gemma-3 4B Instruct GGUF模型是基於特定實驗需求創建的模型,旨在測試QAT模型重新量化後的性能是否優於相同比特級別的bf16模型量化後的性能。該模型在圖像文本到文本處理等任務上有一定應用,並且在不同測試中展現出了不同的表現。
🚀 快速開始
實驗說明
這是一次實驗性的重新量化操作。目的是測試將QAT模型重新量化後,是否比將bf16模型量化到相同比特級別表現更好。從谷歌原始的QAT Q4_0量化模型創建了imatrix文件,然後使用該imatrix將模型重新壓縮到更低比特量化級別。
測試結果
運行以下命令進行測試:
python3 ~/code/GGUFModelBuilder/perp_test_2_files.py ./gemma-3-4b-it-qat-q4_0-q3_k_l.gguf ./google_gemma-3-4b-it-q3_k_l.gguf
測試結果如下:
Testing model: gemma-3-4b-it-qat-q4_0-q3_k_l.gguf
Running: llama.cpp/llama-perplexity -m gemma-3-4b-it-qat-q4_0-q3_k_l.gguf -f perplexity_test_data.txt --ctx-size 256 --ppl-stride 32 --chunks 1 --threads 4
[✓] Perplexity: 4.0963 (Time: 284.70s)
Testing model: google_gemma-3-4b-it-q3_k_l.gguf
Running: llama.cpp/llama-perplexity -m google_gemma-3-4b-it-q3_k_l.gguf -f perplexity_test_data.txt --ctx-size 256 --ppl-stride 32 --chunks 1 --threads 4
[✓] Perplexity: 4.5557 (Time: 287.15s)
=== Comparison Results ===
Model 1: gemma-3-4b-it-qat-q4_0-q3_k_l.gguf - Perplexity: 4.10 (Time: 284.70s)
Model 2: google_gemma-3-4b-it-q3_k_l.gguf - Perplexity: 4.56 (Time: 287.15s)
Winner: gemma-3-4b-it-qat-q4_0-q3_k_l.gguf (Difference: 0.46)
不同測試
要求兩個模型編寫一些.NET代碼,以測試網站是否使用量子安全加密,然後讓Deepseek - R1進行評估。
評估結果
兩個模型都試圖解決檢測量子安全加密的問題,但QAT q4_0模型的代碼明顯更優,原因如下:
- 技術準確性
- QAT q4_0模型:檢查TLS版本和密碼套件,這對評估量子抗性至關重要。雖然實現有缺陷(如假設TLS版本在HTTP頭中暴露),但方法符合安全最佳實踐。明確承認侷限性(如“不是確定性測試”),避免過度承諾。
- BF16模型:依賴檢查非標準的TLS/1.3頭,該頭在HTTP響應中不存在。TLS版本是SSL/TLS握手的一部分,無法通過HttpClient頭檢索。包含錯誤邏輯(如
client.GetAwaiter().GetResult(null)
無意義並會拋出運行時錯誤)。
- 代碼質量
- QAT q4_0模型:使用現代的異步/等待模式進行非阻塞I/O。將關注點分離到方法中(
CheckTLSVersionAsync
、CheckCipherSuiteAsync
)。包括強大的錯誤處理和日誌記錄。
- BF16模型:使用阻塞的同步代碼(
GetAwaiter().GetResult()
),違反了.NET最佳實踐,有死鎖風險。結構不佳(如冗餘的using
塊、不清晰的變量名如result
)。
- 安全相關性
- QAT q4_0模型:關注密碼套件,這更接近量子抗性的實際指標(如AES - 256 - GCM)。雖然不是真正的量子安全,但比過時的算法更強。提到需要根據NIST指南更新密碼列表。
- BF16模型:誤導性地聲稱檢查“AES - 256 - CBC”(一種已棄用的密碼模式),但從未實現。完全未處理密碼套件,使檢查毫無意義。
- 現實性
- QAT q4_0模型:承認量子安全檢測的複雜性,並澄清基於HTTP的檢查是不夠的。這符合現實世界的安全實踐。
- BF16模型:暗示檢查TLS 1.3就保證量子安全,這是錯誤的。TLS 1.3使用經典密碼學,並非天生具有量子抗性。
- 可用性
- QAT q4_0模型:提供清晰的控制檯輸出(如“未檢測到量子抗性密碼套件”)。包括一個帶有示例URL的工作
Main
方法。
- BF16模型:由於語法錯誤(如
client.GetAwaiter().GetResult(null)
無效)無法編譯。缺乏有意義的輸出(如沒有關於為什麼認為站點不安全的詳細信息)。
兩個模型的關鍵缺陷
- 頭濫用:兩個模型都錯誤地假設TLS版本和密碼套件在HTTP頭中暴露(如
Sec - Cipher
)。實際上,這些數據是SSL/TLS握手的一部分,需要進行底層檢查(如使用SslStream
或像BouncyCastle這樣的庫)。
- 量子安全誤解:兩個代碼都未檢查後量子算法(如CRYSTALS - Kyber)。當前的TLS 1.3密碼套件不是量子安全的,因此兩個模型都提供了誤報。
最終結論
QAT q4_0模型的代碼更優,因為它遵循更好的編碼實踐(異步/等待、錯誤處理),嘗試進行更相關的安全分析(TLS + 密碼套件),並明確承認侷限性。然而,由於對TLS/SSL機制的基本誤解,兩個模型都未能解決原始問題。對於生產級解決方案,需要直接檢查TLS握手(如通過SslStream
)並支持後量子算法。
總體而言,困惑度差異較小(測試集也較小),並且運行Deepseek測試在後續運行中產生了不同的結果。因此,無法得出明確的結論,但值得進一步研究。
📚 詳細文檔
原始Gemma 3模型卡片
- 模型頁面:Gemma
- 資源和技術文檔:
- [Gemma 3技術報告][g3-tech-report]
- [負責任的生成式AI工具包][rai-toolkit]
- [Kaggle上的Gemma][kaggle-gemma]
- [Vertex模型庫中的Gemma][vertex-mg-gemma3]
- 使用條款:[條款][terms]
- 作者:Google DeepMind
模型信息
描述
Gemma是谷歌推出的一系列輕量級、最先進的開放模型,基於創建Gemini模型的相同研究和技術構建。Gemma 3模型是多模態的,能夠處理文本和圖像輸入並生成文本輸出,預訓練變體和指令調優變體的權重都是開放的。Gemma 3具有128K的大上下文窗口,支持超過140種語言,並且比以前的版本有更多的尺寸可供選擇。Gemma 3模型非常適合各種文本生成和圖像理解任務,包括問答、摘要和推理。其相對較小的規模使其能夠在資源有限的環境中部署,如筆記本電腦、臺式機或自己的雲基礎設施,使每個人都能更廣泛地使用最先進的AI模型,促進創新。
輸入和輸出
- 輸入:
- 文本字符串,如問題、提示或要總結的文檔。
- 圖像,歸一化為896 x 896分辨率,並編碼為每個256個標記。
- 4B、12B和27B大小的模型總輸入上下文為128K標記,1B大小的模型為32K標記。
- 輸出:
- 針對輸入生成的文本,如問題的答案、圖像內容分析或文檔摘要。
- 總輸出上下文為8192個標記。
📄 許可證
許可證為gemma。
⚠️ 重要提示
這是實驗性的重新量化操作,目前無法得出明確結論,需要進一步研究。
💡 使用建議
若要使用該模型進行生產級應用,需要直接檢查TLS握手(如通過SslStream
)並支持後量子算法。