🚀 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
)并支持后量子算法。