模型简介
模型特点
模型能力
使用案例
🚀 QwenLong-L1-32B GGUF模型
QwenLong-L1-32B GGUF模型是专为长上下文推理设计的大语言模型,通过强化学习训练,在多个长上下文问答基准测试中表现出色,能有效处理复杂的推理任务,且有多种量化格式可供不同硬件和内存条件选择。
✨ 主要特性
- 模型生成:使用llama.cpp在提交版本
f5cd27b7
生成。 - 超低比特量化:引入精度自适应量化方法,在超低比特模型(1 - 2比特)上有显著改进,在Llama - 3 - 8B基准测试中表现良好。
- 多种模型格式:提供BF16、F16、Q4_K等多种量化格式,可根据硬件能力和内存限制选择。
- 长上下文处理:通过强化学习框架,能从短上下文推理过渡到长上下文泛化,有效处理长文档。
📦 安装指南
# 创建conda环境
conda create -n qwenlongl1 python==3.10
conda activate qwenlongl1
# 安装依赖
pip3 install -r requirements.txt
# 安装verl
cd verl
pip3 install -e .
# 安装vLLM
pip3 install vllm==0.7.3
# 安装flash - attn
pip3 install flash-attn --no-build-isolation
💻 使用示例
基础用法
from transformers import AutoModelForCausalLM, AutoTokenizer
model_name = "Tongyi-Zhiwen/QwenLong-L1-32B"
# 加载分词器和模型
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForCausalLM.from_pretrained(
model_name,
torch_dtype="auto",
device_map="auto"
)
# 准备模型输入
template = """Please read the following text and answer the question below.
<text>
$DOC$
</text>
$Q$
Format your response as follows: "Therefore, the answer is (insert answer here)"."""
context = "<YOUR_CONTEXT_HERE>"
question = "<YOUR_QUESTION_HERE>"
prompt = template.replace('$DOC$', context.strip()).replace('$Q$', question.strip())
messages = [
# {"role": "system", "content": "You are QwenLong-L1, created by Alibaba Tongyi Lab. You are a helpful assistant."}, # Use system prompt to define identity when needed.
{"role": "user", "content": prompt}
]
text = tokenizer.apply_chat_template(
messages,
tokenize=False,
add_generation_prompt=True
)
model_inputs = tokenizer([text], return_tensors="pt").to(model.device)
# 进行文本生成
generated_ids = model.generate(
**model_inputs,
max_new_tokens=10000,
temperature=0.7,
top_p=0.95
)
output_ids = generated_ids[0][len(model_inputs.input_ids[0]):].tolist()
# 解析思考内容
try:
# rindex finding 151649 (</think>)
index = len(output_ids) - output_ids[::-1].index(151649)
except ValueError:
index = 0
thinking_content = tokenizer.decode(output_ids[:index], skip_special_tokens=True).strip("\n")
content = tokenizer.decode(output_ids[index:], skip_special_tokens=True).strip("\n")
print("thinking content:", thinking_content)
print("content:", content)
📚 详细文档
模型生成细节
该模型使用llama.cpp在提交版本f5cd27b7
生成。
超低比特量化(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)
量化方式 | 标准PPL | DynamicGate PPL | Δ PPL | 标准大小 | 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 |
关键改进
- 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设备优化 |
包含文件及详情
- QwenLong-L1-32B-bf16.gguf:模型权重保存为BF16。若要将模型重新量化为不同格式,可使用此文件。若设备支持BF16加速,最佳选择。
- QwenLong-L1-32B-f16.gguf:模型权重保存为F16。若设备支持FP16,尤其是BF16不可用时,可使用。
- QwenLong-L1-32B-bf16-q8_0.gguf:输出和嵌入保持为BF16,其他层量化为Q8_0。若设备支持BF16且需要量化版本,可使用。
- QwenLong-L1-32B-f16-q8_0.gguf:输出和嵌入保持为F16,其他层量化为Q8_0。
- QwenLong-L1-32B-q4_k.gguf:输出和嵌入量化为Q8_0,其他层量化为Q4_K。适合内存有限的CPU推理。
- QwenLong-L1-32B-q4_k_s.gguf:最小的Q4_K变体,以准确性为代价减少内存使用。最适合极低内存设置。
- QwenLong-L1-32B-q6_k.gguf:输出和嵌入量化为Q8_0,其他层量化为Q6_K。
- QwenLong-L1-32B-q8_0.gguf:完全Q8量化模型,准确性更好。需要更多内存,但提供更高精度。
- QwenLong-L1-32B-iq3_xs.gguf:IQ3_XS量化,针对极端内存效率优化。最适合超低内存设备。
- QwenLong-L1-32B-iq3_m.gguf:IQ3_M量化,提供中等块大小以提高准确性。适用于低内存设备。
- QwenLong-L1-32B-q4_0.gguf:纯Q4_0量化,针对ARM设备优化。最适合低内存环境。优先选择IQ4_NL以获得更好的准确性。
测试模型
如果觉得这些模型有用,请点击“点赞”!帮助测试支持量子安全检查的AI网络监控助手:免费网络监控器
测试方法
选择一个AI助手类型:
TurboLLM
(GPT - 4o - mini)HugLLM
(Huggingface开源)TestLLM
(仅实验性CPU)
测试内容
正在突破用于AI网络监控的小型开源模型的极限,具体包括:
- 针对实时网络服务的函数调用
- 模型可以多小,同时仍能处理:
- 自动Nmap扫描
- 量子就绪检查
- 网络监控任务
TestLLM - 当前实验模型(llama.cpp在2个CPU线程上)
- 零配置设置
- 30秒加载时间(推理慢,但无API成本)
- 寻求帮助!如果对边缘设备AI感兴趣,让我们合作!
其他助手
- TurboLLM - 使用gpt - 4o - mini进行:
- 在免费网络监控代理上创建自定义cmd处理器以运行.net代码
- 实时网络诊断和监控
- 安全审计
- 渗透测试(Nmap/Metasploit)
- 通过登录或下载集成AI助手的免费网络监控代理获得更多令牌
- HugLLM - 最新开源模型:
- 在Hugging Face推理API上运行
示例命令
"Give me info on my websites SSL certificate"
"Check if my server is using quantum safe encyption for communication"
"Run a comprehensive security audit on my server"
- '"Create a cmd processor to .. (what ever you want)" 注意需要安装免费网络监控代理才能运行.net代码。这是一个非常灵活和强大的功能,请谨慎使用!
模型介绍
提出了QwenLong-L1,一种新颖的强化学习(RL)框架,旨在促进大型推理模型(LRMs)从短上下文能力过渡到强大的长上下文泛化能力。初步实验说明了短上下文和长上下文推理RL训练动态之间的差异。
框架通过在RL训练期间逐步扩展上下文来增强短上下文LRMs。该框架包括三个核心组件:预热监督微调(SFT)阶段以初始化强大的策略,课程引导的RL阶段以促进从短到长上下文的稳定适应,以及难度感知回顾性采样机制,该机制在各个阶段调整训练复杂度以激励策略探索。利用最近的RL算法,包括GRPO和DAPO,框架集成了混合奖励函数,结合基于规则和基于模型的二元结果奖励,以平衡精度和召回率。通过在策略优化期间战略性地利用组相对优势,引导LRMs学习有效的推理模式,这对于强大的长上下文基础和卓越的推理能力至关重要。
模型发布
发布了QwenLong-L1-32B,这是第一个使用强化学习进行长上下文推理训练的长上下文LRM。在七个长上下文文档问答(DocQA)基准测试中的实验表明,QwenLong-L1-32B优于旗舰LRMs,如OpenAI-o3-mini和Qwen3-235B-A22B,性能与Claude-3.7-Sonnet-Thinking相当,展示了在现有LRMs中的领先性能。
处理长文档
对于总长度(包括输入和输出)显著超过32,768令牌的输入,建议使用RoPE缩放技术来有效处理长文本。使用YaRN方法验证了模型在长达131,072令牌的上下文长度上的性能。
YaRN目前由几个推理框架支持,例如用于本地使用的transformers
和llama.cpp
,用于部署的vllm
和sglang
。通常,有两种方法可以为支持的框架启用YaRN:
- 修改模型文件:
在
config.json
文件中,添加rope_scaling
字段:
对于{ ..., "rope_scaling": { "rope_type": "yarn", "factor": 4.0, "original_max_position_embeddings": 32768 } }
llama.cpp
,修改后需要重新生成GGUF文件。 - 传递命令行参数:
对于
vllm
,可以使用
对于vllm serve ... --rope-scaling '{"rope_type":"yarn","factor":4.0,"original_max_position_embeddings":32768}' --max-model-len 131072
sglang
,可以使用
对于python -m sglang.launch_server ... --json-model-override-args '{"rope_scaling":{"rope_type":"yarn","factor":4.0,"original_max_position_embeddings":32768}}'
llama.cpp
的llama-server
,可以使用llama-server ... --rope-scaling yarn --rope-scale 4 --yarn-orig-ctx 32768
⚠️ 重要提示
如果遇到以下警告
Unrecognized keys in `rope_scaling` for 'rope_type'='yarn': {'original_max_position_embeddings'}
请升级
transformers
库。
📄 许可证
本项目采用Apache - 2.0许可证。
属性 | 详情 |
---|---|
模型类型 | 长上下文大型推理模型 |
训练数据 | Tongyi - Zhiwen/DocQA - RL - 1.6K |
基础模型 | deepseek - ai/DeepSeek - R1 - Distill - Qwen - 32B |
标签 | long - context, large - reasoning - model |
管道标签 | text - generation |
库名称 | transformers |



