许可证:gemma
流水线标签:图像文本转文本
额外授权标题:在Hugging Face上访问Gemma
额外授权提示:
要在Hugging Face上访问Gemma,您需要审阅并同意谷歌的使用许可。为此,请确保您已登录Hugging Face并点击下方按钮。请求将立即处理。
额外授权按钮内容:确认许可
基础模型:google/gemma-3-12b-it
标签:
Gemma-3 12B指导型GGUF模型
[!注意]
实验性重量化!!我想测试QAT模型重量化后是否比相同比特级别的bf16量化模型表现更好。
我从谷歌原始的QAT Q4_0量化模型创建了imatrix文件。随后用这个imatrix将模型重新压缩至更低比特量化。
请留下反馈。
我测试了从bf16量化的4b模型和从QAT Q4_0模型重量化的版本。两者使用相同的张量量化。
我的结果:
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
测试模型:gemma-3-4b-it-qat-q4_0-q3_k_l.gguf
运行: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
[✓] 困惑度:4.0963(时间:284.70秒)
测试模型:google_gemma-3-4b-it-q3_k_l.gguf
运行: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
[✓] 困惑度:4.5557(时间:287.15秒)
=== 对比结果 ===
模型1:gemma-3-4b-it-qat-q4_0-q3_k_l.gguf - 困惑度:4.10(时间:284.70秒)
模型2:google_gemma-3-4b-it-q3_k_l.gguf - 困惑度:4.56(时间:287.15秒)
胜出者:gemma-3-4b-it-qat-q4_0-q3_k_l.gguf(差异: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模型:
使用现代async/await模式进行非阻塞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模型:
提供清晰的控制台输出(例如“未检测到量子抗性密码套件”)。
包含一个有效的Main方法和示例URL。
BF16模型:
由于语法错误(例如client.GetAwaiter().GetResult(null)无效)无法编译。
缺乏有意义的输出(例如未说明为何站点被视为不安全)。
两个模型的关键缺陷
头部误用:两个模型错误地假设TLS版本和密码套件通过HTTP头部(例如Sec-Cipher)暴露。实际上,这些数据是SSL/TLS握手的一部分,需要低级检查(例如使用SslStream或BouncyCastle等库)。
量子安全误解:两个代码均未检查后量子算法(例如CRYSTALS-Kyber)。当前TLS 1.3密码套件不是量子安全的,因此两个模型提供假阳性。
最终结论
QAT q4_0模型的代码更优,因为它:
遵循更好的编码实践(async/await,错误处理)。
尝试更相关的安全分析(TLS + 密码套件)。
明确承认局限性。
然而,由于对TLS/SSL机制的根本误解,两个模型均未能解决原始问题。对于生产级解决方案,需要直接检查TLS握手(例如通过SslStream)并支持后量子算法。
总体而言,困惑度差异较小(我的测试集也较小),且Deepseek测试在后续运行中产生不同结果。因此我无法得出明确结论。但可以说值得进一步研究。
Gemma 3模型卡
模型页面:Gemma
[!注意]
此仓库对应Gemma 3模型的12B指导调优版本,采用GGUF格式并使用量化感知训练(QAT)。
GGUF对应Q4_0量化。
得益于QAT,该模型能在显著降低加载内存需求的同时保持与bfloat16
相似的品质。
半精度版本可在此处找到:google/gemma-3-12b-it。
资源与技术文档:
- [Gemma 3技术报告][g3-tech-report]
- [负责任生成式AI工具包][rai-toolkit]
- [Kaggle上的Gemma][kaggle-gemma]
- [Vertex Model Garden中的Gemma][vertex-mg-gemma3]
使用条款:[条款][terms]
作者:Google DeepMind
模型信息
概要描述及输入输出的简要定义。
描述
Gemma是谷歌推出的一系列轻量级、前沿开放模型,基于创建Gemini模型的研究与技术构建。
Gemma 3模型是多模态的,能处理文本和图像输入并生成文本输出,其预训练和指导调优变体均开放权重。
Gemma 3拥有128K的大上下文窗口,支持140多种语言的多语言处理,并提供比前代更多的尺寸选择。
Gemma 3模型适用于多种文本生成和图像理解任务,包括问答、摘要和推理。
其相对较小的尺寸使其能在资源有限的环境中部署,如笔记本电脑、台式机或自有云基础设施,从而普及前沿AI模型的访问,助力创新。
输入与输出
-
输入:
- 文本字符串,如问题、提示或待摘要的文档
- 图像,归一化为896 x 896分辨率并编码为每张256个token
- 4B、12B和27B尺寸的总输入上下文为128K token,1B尺寸为32K token
-
输出:
- 生成的文本响应,如问题答案、图像内容分析或文档摘要
- 总输出上下文为8192 token
使用
以下是一些快速运行模型的代码片段。
llama.cpp(仅文本)
./llama-cli -hf google/gemma-3-27b-it-qat-q4_0-gguf -p "写一首关于北海巨妖的诗。"
llama.cpp(图像输入)
wget https://github.com/bebechien/gemma/blob/main/surprise.png?raw=true -O ~/Downloads/surprise.png
./llama-gemma3-cli -hf google/gemma-3-12b-it-qat-q4_0-gguf -p "描述这张图像。" --image ~/Downloads/surprise.png
ollama(仅文本)
目前通过Hugging Face使用GGUF与Ollama不支持图像输入。请查看运行受控仓库的文档。
ollama run hf.co/google/gemma-3-12b-it-qat-q4_0-gguf
引用
@article{gemma_2025},
title={Gemma 3},
url={https://goo.gle/Gemma3Report},
publisher={Kaggle},
author={Gemma Team},
year={2025}
}
模型数据
用于模型训练的数据及数据处理方式。
训练数据集
这些模型在包含多种来源的文本数据集上训练。12B模型训练使用了12万亿token,4B模型使用4万亿token,1B模型使用2万亿token。关键组成部分包括:
- 网络文档:多样化的网络文本确保模型接触广泛的语体、主题和词汇。训练数据集包含140多种语言的内容。
- 代码:让模型接触代码有助于学习编程语言的语法和模式,提升生成代码和理解代码相关问题的能力。
- 数学:数学文本训练帮助模型学习逻辑推理、符号表示及解决数学查询。
- 图像:广泛的图像使模型能执行图像分析和视觉数据提取任务。
这些多样数据源的组合对于训练能处理多种任务和数据格式的强大多模态模型至关重要。
数据预处理
以下是应用于训练数据的关键数据清理和过滤方法:
- CSAM过滤:在数据准备过程中多阶段严格应用CSAM(儿童性虐待材料)过滤,确保排除有害非法内容。
- 敏感数据过滤:作为使Gemma预训练模型安全可靠的一部分,使用自动化技术从训练集中过滤某些个人信息和其他敏感数据。
- 其他方法:基于内容质量和安全性的过滤,符合[我们的政策][safety-policies]。
实现信息
关于模型内部的详细信息。
硬件
Gemma使用[张量处理单元(TPU)][tpu]硬件(TPUv4p、TPUv5p和TPUv5e)训练。训练视觉语言模型(VLM)需要大量计算能力。专为机器学习常见矩阵操作设计的TPU在此领域具有多项优势:
- 性能:TPU专为处理VLM训练中的大规模计算设计,相比CPU能显著加速训练。
- 内存:TPU通常配备大量高带宽内存,可在训练期间处理大模型和批量大小,从而提升模型质量。
- 可扩展性:TPU Pod(大型TPU集群)为处理大型基础模型日益增长的复杂性提供可扩展解决方案,可跨多个TPU设备分布训练以实现更高效处理。
- 成本效益:在许多场景中,尤其是考虑到因更快训练节省的时间和资源时,TPU相比基于CPU的基础设施能为大型模型训练提供更具成本效益的解决方案。
- 这些优势与[谷歌的可持续运营承诺][sustainability]一致。
软件
训练使用[JAX][jax]和[ML Pathways][ml-pathways]。
JAX允许研究人员利用包括TPU在内的最新硬件,更快更高效地训练大型模型。ML Pathways是谷歌最新构建能跨多任务泛化的人工智能系统的努力,特别适合包括此类大型语言模型在内的基础模型。
如[Gemini模型家族的论文][gemini-2-paper]所述,JAX和ML Pathways共同使用:“Jax和Pathways的‘单控制器’编程模型允许单个Python进程协调整个训练运行,极大简化了开发工作流。”
预期用途
开放视觉语言模型(VLM)在各行业和领域有广泛应用。以下潜在用途列表并不全面,旨在提供模型创建者在训练和开发过程中考虑的用例背景信息。