Olympiccoder 7B GGUF
模型简介
模型特点
模型能力
使用案例
🚀 OlympicCoder-7B GGUF 模型
OlympicCoder-7B 是一个代码模型,在诸如 LiveCodeBench 和 2024 年国际信息学奥林匹克竞赛等竞赛编程基准测试中表现出色。它能帮助开发者在代码编写和竞赛编程场景中获得更好的效果。
🚀 快速开始
模型使用示例
以下是如何使用 🤗 Transformers 的 pipeline()
函数运行该模型的示例:
# pip install transformers
# pip install accelerate
import torch
from transformers import pipeline
pipe = pipeline("text-generation", model="open-r1/OlympicCoder-7B", torch_dtype=torch.bfloat16, device_map="auto")
# We use the tokenizer's chat template to format each message - see https://huggingface.co/docs/transformers/main/en/chat_templating
messages = [
{"role": "user", "content": "Write a python program to calculate the 10th Fibonacci number"},
]
prompt = pipe.tokenizer.apply_chat_template(messages, tokenize=False, add_generation_prompt=True)
outputs = pipe(prompt, max_new_tokens=8000, do_sample=True, temperature=0.7, top_k=50, top_p=0.95)
print(outputs[0]["generated_text"])
#<|im_start|>user
#Write a python program to calculate the 10th fibonacci number<|im_end|>
#<|im_start|>assistant
#<think>Okay, I need to write a Python program that calculates the 10th Fibonacci number. Hmm, the Fibonacci sequence starts with 0 and 1. Each subsequent number is the sum of the two preceding ones. So the sequence goes: 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, and so on. ...
⚠️ 重要提示
为确保模型始终输出长的思维链,我们已编辑聊天模板,在第一个助手回复中预填充了
<think>
标记。因此,如果使用模型的generate()
方法,该模型的输出将不会显示开头的<think>
标记。若要使用格式奖励进行强化学习,要么在模型的完成内容前添加<think>
标记,要么修改聊天模板以移除预填充内容。
✨ 主要特性
超低比特量化与 IQ-DynamicGate (1 - 2 比特)
我们最新的量化方法为超低比特模型(1 - 2 比特)引入了精度自适应量化,经基准测试证明,在 Llama - 3 - 8B 上有显著改进。这种方法采用特定层策略,在保持极高内存效率的同时保留准确性。
基准测试背景
所有测试均在 Llama - 3 - 8B - Instruct 上进行,使用以下条件:
- 标准困惑度评估流程
- 2048 令牌上下文窗口
- 所有量化方式使用相同的提示集
方法
- 动态精度分配:
- 前/后 25% 的层 → IQ4_XS(选定层)
- 中间 50% → IQ2_XXS/IQ3_S(提高效率)
- 关键组件保护:
- 嵌入层/输出层使用 Q5_K
- 与标准 1 - 2 比特量化相比,误差传播减少 38%
量化性能比较(Llama - 3 - 8B)
量化方式 | 标准困惑度 | DynamicGate 困惑度 | 困惑度变化 | 标准大小 | DG 大小 | 大小变化 | 标准速度 | DG 速度 |
---|---|---|---|---|---|---|---|---|
IQ2_XXS | 11.30 | 9.84 | -12.9% | 2.5G | 2.6G | +0.1G | 234s | 246s |
IQ2_XS | 11.72 | 11.63 | -0.8% | 2.7G | 2.8G | +0.1G | 242s | 246s |
IQ2_S | 14.31 | 9.02 | -36.9% | 2.7G | 2.9G | +0.2G | 238s | 244s |
IQ1_M | 27.46 | 15.41 | -43.9% | 2.2G | 2.5G | +0.3G | 206s | 212s |
IQ1_S | 53.07 | 32.00 | -39.7% | 2.1G | 2.4G | +0.3G | 184s | 209s |
关键说明:
- PPL = 困惑度(越低越好)
- Δ PPL = 从标准量化到 DynamicGate 量化的困惑度变化百分比
- 速度 = 推理时间(CPU avx2,2048 令牌上下文)
- 大小差异反映了混合量化的开销
主要改进:
- 🔥 IQ1_M 困惑度大幅降低 43.9%(从 27.46 降至 15.41)
- 🚀 IQ2_S 困惑度降低 36.9%,同时仅增加 0.2GB 大小
- ⚡ IQ1_S 尽管采用 1 比特量化,但准确性仍提高 39.7%
权衡:
- 所有变体的大小均有适度增加(0.1 - 0.3GB)
- 推理速度相近(差异 < 5%)
使用场景
📌 将模型装入 GPU 显存 ✔ 内存受限的部署场景 ✔ 可容忍 1 - 2 比特误差的 CPU 和边缘设备 ✔ 超低比特量化研究
模型格式选择
选择正确的模型格式取决于你的硬件能力和内存限制。
BF16 (Brain Float 16) – 若支持 BF16 加速则使用
- 一种 16 位浮点格式,专为更快计算而设计,同时保留良好的精度。
- 提供与 FP32 相似的动态范围,但内存使用更低。
- 若硬件支持 BF16 加速(请检查设备规格),建议使用。
- 与 FP32 相比,适用于高性能推理且内存占用减少的场景。
📌 使用 BF16 的情况: ✔ 硬件具有原生 BF16 支持(如较新的 GPU、TPU)。 ✔ 希望在节省内存的同时获得更高精度。 ✔ 计划将模型重新量化为其他格式。
📌 避免使用 BF16 的情况: ❌ 硬件不支持 BF16(可能会回退到 FP32 并运行较慢)。 ❌ 需要与缺乏 BF16 优化的旧设备兼容。
F16 (Float 16) – 比 BF16 更广泛支持
- 一种 16 位浮点格式,精度较高,但取值范围小于 BF16。
- 适用于大多数支持 FP16 加速的设备(包括许多 GPU 和一些 CPU)。
- 数值精度略低于 BF16,但通常足以用于推理。
📌 使用 F16 的情况: ✔ 硬件支持 FP16 但不支持 BF16。 ✔ 需要在速度、内存使用和准确性之间取得平衡。 ✔ 在GPU或其他针对 FP16 计算优化的设备上运行。
📌 避免使用 F16 的情况: ❌ 设备缺乏原生 FP16 支持(可能运行比预期慢)。 ❌ 存在内存限制。
量化模型 (Q4_K, Q6_K, Q8 等) – 用于 CPU 和低显存推理
量化可在尽可能保留准确性的同时减小模型大小和内存使用。
- 低比特模型 (Q4_K) → 最适合最小化内存使用,可能精度较低。
- 高比特模型 (Q6_K, Q8_0) → 准确性更好,但需要更多内存。
📌 使用量化模型的情况: ✔ 在CPU上运行推理,需要优化的模型。 ✔ 设备显存较低,无法加载全精度模型。 ✔ 希望在保持合理准确性的同时减少内存占用。
📌 避免使用量化模型的情况: ❌ 需要最高准确性(全精度模型更适合)。 ❌ 硬件有足够的显存支持更高精度格式(BF16/F16)。
极低比特量化 (IQ3_XS, IQ3_S, IQ3_M, Q4_K, Q4_0)
这些模型针对极致内存效率进行了优化,非常适合低功耗设备或大规模部署,其中内存是关键限制因素。
- IQ3_XS:超低比特量化(3 比特),具有极致内存效率。
- 使用场景:最适合超低内存设备,即使 Q4_K 也太大的情况。
- 权衡:与高比特量化相比,准确性较低。
- IQ3_S:小块大小,实现最大内存效率。
- 使用场景:最适合低内存设备,当 IQ3_XS 过于激进时使用。
- IQ3_M:中等块大小,比 IQ3_S 准确性更好。
- 使用场景:适用于低内存设备,当 IQ3_S 限制过多时使用。
- Q4_K:4 比特量化,具有逐块优化以提高准确性。
- 使用场景:最适合低内存设备,当 Q6_K 太大时使用。
- Q4_0:纯 4 比特量化,针对 ARM 设备进行了优化。
- 使用场景:最适合基于 ARM 的设备或低内存环境。
模型格式选择总结表
模型格式 | 精度 | 内存使用 | 设备要求 | 最佳使用场景 |
---|---|---|---|---|
BF16 | 最高 | 高 | 支持 BF16 的 GPU/CPU | 减少内存的高速推理 |
F16 | 高 | 高 | 支持 FP16 的设备 | BF16 不可用时的 GPU 推理 |
Q4_K | 中低 | 低 | CPU 或低显存设备 | 内存受限的环境 |
Q6_K | 中等 | 适中 | 内存较多的 CPU | 量化模型中准确性较好的情况 |
Q8_0 | 高 | 适中 | 有足够显存的 CPU 或 GPU | 量化模型中准确性最高的情况 |
IQ3_XS | 非常低 | 非常低 | 超低内存设备 | 极致内存效率和低准确性 |
Q4_0 | 低 | 低 | ARM 或低内存设备 | llama.cpp 可针对 ARM 设备进行优化 |
📦 安装指南
文档未提及安装相关内容,暂无法提供安装指南。
📚 详细文档
包含文件及详情
OlympicCoder-7B-bf16.gguf
- 模型权重以 BF16 格式保存。
- 若要将模型重新量化为其他格式,可使用此文件。
- 若设备支持 BF16 加速,使用效果最佳。
OlympicCoder-7B-f16.gguf
- 模型权重以 F16 格式存储。
- 若设备支持 FP16,尤其是在 BF16 不可用时,可使用此文件。
OlympicCoder-7B-bf16-q8_0.gguf
- 输出层和嵌入层保持为 BF16 格式。
- 所有其他层量化为 Q8_0。
- 若设备支持 BF16 且需要量化版本,可使用此文件。
OlympicCoder-7B-f16-q8_0.gguf
- 输出层和嵌入层保持为 F16 格式。
- 所有其他层量化为 Q8_0。
OlympicCoder-7B-q4_k.gguf
- 输出层和嵌入层量化为 Q8_0。
- 所有其他层量化为 Q4_K。
- 适合内存有限的 CPU 推理。
OlympicCoder-7B-q4_k_s.gguf
- 最小的 Q4_K 变体,以牺牲准确性为代价减少内存使用。
- 最适合极低内存设置。
OlympicCoder-7B-q6_k.gguf
- 输出层和嵌入层量化为 Q8_0。
- 所有其他层量化为 Q6_K。
OlympicCoder-7B-q8_0.gguf
- 完全 Q8 量化的模型,准确性更好。
- 需要更多内存,但提供更高的精度。
OlympicCoder-7B-iq3_xs.gguf
- IQ3_XS 量化,针对极致内存效率进行了优化。
- 最适合超低内存设备。
OlympicCoder-7B-iq3_m.gguf
- IQ3_M 量化,提供中等块大小以提高准确性。
- 适用于低内存设备。
OlympicCoder-7B-q4_0.gguf
- 纯 Q4_0 量化,针对 ARM 设备进行了优化。
- 最适合低内存环境。
- 若追求更好的准确性,建议使用 IQ4_NL。
模型测试相关
测试邀请
如果您觉得这些模型有用,请点赞支持!同时,帮助我测试我的支持量子安全检查的 AI 网络监控助手: 👉 免费网络监控器
测试方法
- 点击聊天图标(任意页面右下角)
- 选择一个 AI 助手类型:
TurboLLM
(GPT - 4 - mini)FreeLLM
(开源)TestLLM
(仅支持 CPU 的实验性模型)
测试内容
我正在挑战小型开源模型在 AI 网络监控方面的极限,具体包括:
- 针对实时网络服务进行函数调用
- 探索模型在处理以下任务时可以达到的最小规模:
- 自动 Nmap 扫描
- 量子就绪检查
- Metasploit 集成
各助手介绍
- 🟡 TestLLM – 当前的实验性模型(llama.cpp 在 6 个 CPU 线程上运行):
- ✅ 零配置设置
- ⏳ 30 秒加载时间(推理速度慢,但无 API 成本)
- 🔧 寻求帮助! 如果您对边缘设备 AI 感兴趣,让我们一起合作!
- 🟢 TurboLLM – 使用 gpt - 4 - mini 进行:
- 实时网络诊断
- 自动渗透测试(Nmap/Metasploit)
- 🔑 通过下载我们的免费网络监控代理获取更多令牌
- 🔵 HugLLM – 开源模型(约 80 亿参数):
- 令牌数量是 TurboLLM 的 2 倍
- AI 日志分析
- 🌐 在 Hugging Face 推理 API 上运行
测试用的 AI 命令示例
"Give me info on my websites SSL certificate"
"Check if my server is using quantum safe encyption for communication"
"Run a quick Nmap vulnerability test"
🔧 技术细节
训练过程
训练超参数
训练过程中使用了以下超参数:
- 数据集:open - r1/codeforces - cots
- 学习率:4.0e - 5
- 训练批次大小:2
- 随机种子:42
- 打包:false
- 分布式类型:deepspeed - zero - 3
- 设备数量:8
- 梯度累积步数:8
- 总训练批次大小:16
- 优化器:Adam,β=(0.9, 0.999),ε = 1e - 08
- 学习率调度器类型:cosine_with_min_lr
- 最小学习率:0.1
- 学习率调度器热身比例:0.03
- 训练轮数:10.0
📄 许可证
本项目采用 Apache - 2.0 许可证。
📚 模型卡片信息
属性 | 详情 |
---|---|
模型类型 | 一个在经过净化的 Codeforces 数据集上微调的 70 亿参数模型 |
训练数据 | open - r1/codeforces - cots |
语言 | 主要为英语 |
许可证 | Apache - 2.0 |
基础模型 | [Qwen/Qwen2.5 - Coder - 7B - Instruct](https://huggingface.co/Qwen/Qwen2.5 - Coder - 7B - Instruct) |
仓库地址 | https://github.com/huggingface/open - r1 |
博客文章 | https://huggingface.co/blog/open - r1/update - 3 |
评估指标
我们在两个主要的竞赛编程基准测试中比较了 OlympicCoder 模型的性能:
- IOI'2024:2024 年国际信息学奥林匹克竞赛的 6 个极具挑战性的问题。每个问题允许模型最多提交 50 次。
- LiveCodeBench:来自 CodeForces 和 LeetCoder 等平台的 Python 编程问题。我们使用了
livecodebench/code_generation_lite
中的v4_v5
子集,对应 268 个问题。使用lighteval
按照[此处](https://github.com/huggingface/open - r1?tab=readme - ov - file#livecodebench)描述的采样参数在 LiveCodeBench 上评估模型。
⚠️ 重要提示
OlympicCoder 模型仅在 DeepSeek - R1 生成的 C++ 解决方案上进行了后续训练。因此,在 LiveCodeBench 上的性能应被视为部分域外表现,因为该基准测试期望模型输出 Python 解决方案。
评估结果展示
- IOI'24:
- LiveCodeBench:



