Olympiccoder 32B GGUF
模型简介
模型特点
模型能力
使用案例
🚀 OlympicCoder-32B GGUF模型
OlympicCoder-32B是一个代码模型,在诸如LiveCodeBench和2024年国际信息学奥林匹克竞赛等竞赛编程基准测试中表现出色。该模型在代码竞赛领域具有强大的竞争力,为开发者和研究者提供了有力的工具。
🚀 快速开始
你可以使用🤗 Transformers库中的pipeline()
函数来运行该模型:
# pip install transformers
# pip install accelerate
import torch
from transformers import pipeline
pipe = pipeline("text-generation", model="open-r1/OlympicCoder-32B", 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>
标记,或修改聊天模板以移除预填充内容。更多详情请查看我们的博客文章。
✨ 主要特性
超低比特量化技术
我们最新的量化方法为超低比特模型(1 - 2比特)引入了精度自适应量化,经基准测试证明,该方法在Llama - 3 - 8B上有显著改进。此方法采用特定层策略,在保持极高内存效率的同时保留了准确性。
多模型格式支持
提供多种模型格式,如BF16、F16、量化模型(Q4_K、Q6_K、Q8等)以及极低比特量化模型(IQ3_XS、IQ3_S、IQ3_M、Q4_K、Q4_0),可根据不同的硬件能力和内存限制进行选择。
多场景适用
适用于多种场景,包括内存受限的部署、CPU和边缘设备,以及超低比特量化研究等。
📦 安装指南
文档未提及具体安装步骤,可参考相关库(如transformers
)的官方安装指南进行安装。
💻 使用示例
基础用法
# pip install transformers
# pip install accelerate
import torch
from transformers import pipeline
pipe = pipeline("text-generation", model="open-r1/OlympicCoder-32B", 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. ...
📚 详细文档
量化方法详情
基准测试环境
所有测试均在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支持(如较新的GPU、TPU)。 ✔ 你希望在节省内存的同时获得更高的精度。 ✔ 你计划将模型重新量化为其他格式。
📌 避免情况: ❌ 你的硬件不支持BF16(可能会回退到FP32并运行较慢)。 ❌ 你需要与缺乏BF16优化的旧设备兼容。
F16(Float 16) – 比BF16更广泛支持
- 一种16位浮点格式,精度较高,但取值范围小于BF16。
- 适用于大多数支持FP16加速的设备(包括许多GPU和一些CPU)。
- 数值精度略低于BF16,但通常足以进行推理。
📌 适用情况: ✔ 你的硬件支持FP16但不支持BF16。 ✔ 你需要在速度、内存使用和准确性之间取得平衡。 ✔ 你在GPU或其他针对FP16计算优化的设备上运行。
📌 避免情况: ❌ 你的设备缺乏原生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-32B-bf16.gguf
- 模型权重以BF16保存。
- 如果你想将模型重新量化为不同格式,请使用此文件。
- 若你的设备支持BF16加速,效果最佳。
OlympicCoder-32B-f16.gguf
- 模型权重以F16存储。
- 若你的设备支持FP16,尤其是BF16不可用时使用。
OlympicCoder-32B-bf16-q8_0.gguf
- 输出和嵌入层保持为BF16。
- 所有其他层量化为Q8_0。
- 若你的设备支持BF16且你想要量化版本,可使用此文件。
OlympicCoder-32B-f16-q8_0.gguf
- 输出和嵌入层保持为F16。
- 所有其他层量化为Q8_0。
OlympicCoder-32B-q4_k.gguf
- 输出和嵌入层量化为Q8_0。
- 所有其他层量化为Q4_K。
- 适合内存有限的CPU推理。
OlympicCoder-32B-q4_k_s.gguf
- 最小的Q4_K变体,以牺牲准确性为代价使用更少的内存。
- 最适合极低内存设置。
OlympicCoder-32B-q6_k.gguf
- 输出和嵌入层量化为Q8_0。
- 所有其他层量化为Q6_K。
OlympicCoder-32B-q8_0.gguf
- 完全Q8量化的模型,以获得更好的准确性。
- 需要更多内存,但提供更高的精度。
OlympicCoder-32B-iq3_xs.gguf
- IQ3_XS量化,针对极端内存效率进行了优化。
- 最适合超低内存设备。
OlympicCoder-32B-iq3_m.gguf
- IQ3_M量化,提供中等块大小以提高准确性。
- 适用于低内存设备。
OlympicCoder-32B-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 – 开源模型(约8B参数):
- 比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"
🔧 技术细节
训练过程
训练超参数
在16个H100节点上训练时使用了以下超参数:
- 数据集:open - r1/codeforces - cots_decontaminated
- 学习率:4.0e - 5
- 训练批次大小:1
- 随机种子:42
- 打包:false
- 分布式类型:fsdp
- 设备数量:128
- 梯度累积步数:1
- 总训练批次大小:16
- 优化器:Adam,beta=(0.9, 0.999),epsilon = 1e - 08
- 学习率调度器类型:cosine_with_min_lr
- 最小学习率:0.1
- 学习率调度器热身比例:0.03
- 训练轮数:10.0
📄 许可证
本项目采用Apache - 2.0许可证。



