模型简介
模型特点
模型能力
使用案例
🚀 Qwen2.5-7B-Instruct-1M GGUF模型
本项目提供了Qwen2.5-7B-Instruct-1M的GGUF模型,采用了超低位量化技术,在保持高精度的同时显著减少了内存占用。这些模型适用于多种硬件环境,可根据不同的硬件能力和内存限制进行选择。
🚀 快速开始
环境要求
Qwen2.5的代码已集成在最新的Hugging face transformers
库中,建议使用最新版本的 transformers
。若使用 transformers<4.37.0
,会出现如下错误:
KeyError: 'qwen2'
代码示例
以下是一个使用 apply_chat_template
加载分词器和模型并生成内容的代码片段:
from transformers import AutoModelForCausalLM, AutoTokenizer
model_name = "Qwen/Qwen2.5-7B-Instruct-1M"
model = AutoModelForCausalLM.from_pretrained(
model_name,
torch_dtype="auto",
device_map="auto"
)
tokenizer = AutoTokenizer.from_pretrained(model_name)
prompt = "Give me a short introduction to large language model."
messages = [
{"role": "system", "content": "You are Qwen, created by Alibaba Cloud. You are a helpful assistant."},
{"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=512
)
generated_ids = [
output_ids[len(input_ids):] for input_ids, output_ids in zip(model_inputs.input_ids, generated_ids)
]
response = tokenizer.batch_decode(generated_ids, skip_special_tokens=True)[0]
✨ 主要特性
超低位量化技术
我们最新的量化方法为超低位模型(1 - 2位)引入了精度自适应量化,并在 Llama-3-8B 上通过基准测试验证了其有效性。该方法采用特定层策略,在保持极高内存效率的同时保留了准确性。
- 动态精度分配:
- 前/后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 |
关键改进:
- 🔥 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和边缘设备 ✔ 超低位量化研究
📦 安装指南
系统准备
为获得最佳性能,建议使用支持优化内核的Ampere或Hopper架构的GPU。确保系统满足以下要求:
- CUDA版本:12.1或12.3
- Python版本:>=3.9且<=3.12
显存要求:
- 处理100万令牌序列时:
- Qwen2.5-7B-Instruct-1M:至少120GB显存(跨GPU总和)
- Qwen2.5-14B-Instruct-1M:至少320GB显存(跨GPU总和)
若GPU显存不足,仍可使用Qwen2.5-1M处理较短任务。
安装依赖
目前,需要从我们的自定义分支克隆vLLM仓库并手动安装。我们正在努力将该分支合并到主vLLM项目中。
git clone -b dev/dual-chunk-attn git@github.com:QwenLM/vllm.git
cd vllm
pip install -e . -v
启动vLLM
vLLM支持离线推理或启动类似OpenAI的服务器。
离线推理示例
from transformers import AutoTokenizer
from vllm import LLM, SamplingParams
# Initialize the tokenizer
tokenizer = AutoTokenizer.from_pretrained("Qwen/Qwen2.5-7B-Instruct-1M")
# Pass the default decoding hyperparameters of Qwen2.5-7B-Instruct
# max_tokens is for the maximum length for generation.
sampling_params = SamplingParams(temperature=0.7, top_p=0.8, repetition_penalty=1.05, max_tokens=512)
# Input the model name or path. See below for parameter explanation (after the example of openai-like server).
llm = LLM(model="Qwen/Qwen2.5-7B-Instruct-1M",
tensor_parallel_size=4,
max_model_len=1010000,
enable_chunked_prefill=True,
max_num_batched_tokens=131072,
enforce_eager=True,
# quantization="fp8", # Enabling FP8 quantization for model weights can reduce memory usage.
)
# Prepare your prompts
prompt = "Tell me something about large language models."
messages = [
{"role": "system", "content": "You are Qwen, created by Alibaba Cloud. You are a helpful assistant."},
{"role": "user", "content": prompt}
]
text = tokenizer.apply_chat_template(
messages,
tokenize=False,
add_generation_prompt=True
)
# generate outputs
outputs = llm.generate([text], sampling_params)
# Print the outputs.
for output in outputs:
prompt = output.prompt
generated_text = output.outputs[0].text
print(f"Prompt: {prompt!r}, Generated text: {generated_text!r}")
类似OpenAI服务器示例
vllm serve Qwen/Qwen2.5-7B-Instruct-1M \
--tensor-parallel-size 4 \
--max-model-len 1010000 \
--enable-chunked-prefill --max-num-batched-tokens 131072 \
--enforce-eager \
--max-num-seqs 1
# --quantization fp8 # Enabling FP8 quantization for model weights can reduce memory usage.
之后,可使用curl或Python与部署的模型进行交互。
参数解释:
--tensor-parallel-size
:设置为使用的GPU数量。7B模型最多使用4个GPU,14B模型最多使用8个GPU。--max-model-len
:定义最大输入序列长度。若遇到内存不足问题,可减小此值。--max-num-batched-tokens
:设置分块预填充的块大小。较小的值可减少激活内存使用,但可能会减慢推理速度。建议设置为131072以获得最佳性能。--max-num-seqs
:限制并发处理的序列数量。
也可参考我们的文档了解vLLM的使用方法。
故障排除
- 遇到错误:"The model's max sequence length (xxxxx) is larger than the maximum number of tokens that can be stored in the KV cache."
KV缓存预留的显存不足。可考虑减小
max_model_len
或增加tensor_parallel_size
。或者,可减小max_num_batched_tokens
,但这可能会显著减慢推理速度。 - 遇到错误:"torch.OutOfMemoryError: CUDA out of memory."
激活权重预留的显存不足。可尝试将
gpu_memory_utilization
设置为0.85或更低,但需注意这可能会减少KV缓存可用的显存。 - 遇到错误:"Input prompt (xxxxx tokens) + lookahead slots (0) is too long and exceeds the capacity of the block manager."
输入过长。可考虑使用较短的序列或增加
max_model_len
。
💻 使用示例
处理超长文本
为提高长序列的处理准确性和效率,我们基于vLLM开发了一个先进的推理框架,集成了稀疏注意力和长度外推技术。该方法显著提高了模型对超过256K令牌序列的生成性能,并使长达1M令牌的序列推理速度提高3至7倍。
以下是使用我们的框架部署Qwen2.5-1M模型的详细步骤:
选择合适的模型格式
选择正确的模型格式取决于您的硬件能力和内存限制。
模型格式 | 精度 | 内存使用 | 设备要求 | 最佳使用场景 |
---|---|---|---|---|
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设备优化 |
包含的文件及详情
Qwen2.5-7B-Instruct-1M-bf16.gguf
:模型权重保存为BF16格式。若要将模型重新量化为其他格式,可使用此文件。适用于支持BF16加速的设备。Qwen2.5-7B-Instruct-1M-f16.gguf
:模型权重保存为F16格式。适用于支持FP16的设备,尤其是BF16不可用的情况。Qwen2.5-7B-Instruct-1M-bf16-q8_0.gguf
:输出层和嵌入层保持为BF16格式,其他层量化为Q8_0。适用于支持BF16且需要量化版本的设备。Qwen2.5-7B-Instruct-1M-f16-q8_0.gguf
:输出层和嵌入层保持为F16格式,其他层量化为Q8_0。Qwen2.5-7B-Instruct-1M-q4_k.gguf
:输出层和嵌入层量化为Q8_0,其他层量化为Q4_K。适用于内存有限的CPU推理。Qwen2.5-7B-Instruct-1M-q4_k_s.gguf
:最小的Q4_K变体,以牺牲准确性为代价减少内存使用。适用于极低内存设置。Qwen2.5-7B-Instruct-1M-q6_k.gguf
:输出层和嵌入层量化为Q8_0,其他层量化为Q6_K。Qwen2.5-7B-Instruct-1M-q8_0.gguf
:完全Q8量化的模型,准确性更高。需要更多内存,但提供更高的精度。Qwen2.5-7B-Instruct-1M-iq3_xs.gguf
:IQ3_XS量化,针对极致内存效率进行优化。适用于超低内存设备。Qwen2.5-7B-Instruct-1M-iq3_m.gguf
:IQ3_M量化,提供中等块大小以提高准确性。适用于低内存设备。Qwen2.5-7B-Instruct-1M-q4_0.gguf
:纯Q4_0量化,针对ARM设备进行优化。适用于低内存环境。建议使用IQ4_NL以获得更好的准确性。
测试模型
如果您发现这些模型有用,请点击“点赞”!同时,帮助我们测试具有量子就绪安全检查功能的AI网络监控助手: 👉 免费网络监控器
💬 测试方法:
- 点击任何页面右下角的聊天图标。
- 选择一个AI助手类型:
TurboLLM
(GPT-4-mini)FreeLLM
(开源)TestLLM
(仅支持CPU的实验性模型)
测试内容
我们正在挑战小型开源模型在AI网络监控中的极限,具体包括:
- 针对实时网络服务的函数调用
- 模型可以多小,同时仍能处理:
- 自动化Nmap扫描
- 量子就绪检查
- Metasploit集成
🟡 TestLLM – 当前的实验性模型(在6个CPU线程上运行llama.cpp):
- ✅ 零配置设置
- ⏳ 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"
📚 详细文档
模型介绍
Qwen2.5-1M是Qwen2.5系列模型的长上下文版本,支持长达100万令牌的上下文长度。与Qwen2.5 128K版本相比,Qwen2.5-1M在处理长上下文任务时表现出显著提升,同时在短任务中也保持了良好的性能。
模型具有以下特点:
- 类型:因果语言模型
- 训练阶段:预训练和后训练
- 架构:带有RoPE、SwiGLU、RMSNorm和注意力QKV偏置的transformers
- 参数数量:76.1亿
- 非嵌入参数数量:65.3亿
- 层数:28
- 注意力头数量(GQA):Q为28,KV为4
- 上下文长度:完整1,010,000令牌,生成8192令牌
建议使用我们的自定义vLLM进行部署,该框架引入了稀疏注意力和长度外推方法,以确保长上下文任务的效率和准确性。具体指导请参考此部分。您也可以使用支持Qwen2.5的先前框架进行推理,但对于超过262,144令牌的序列,可能会出现准确性下降的情况。
更多详细信息,请参考我们的博客、GitHub、技术报告和文档。
🔧 技术细节
评估与性能
📄 许可证
本项目采用Apache-2.0许可证,详情请见许可证链接。
引用
如果您觉得我们的工作有帮助,请引用以下内容:
@misc{qwen2.5-1m,
title = {Qwen2.5-1M: Deploy Your Own Qwen with Context Length up to 1M Tokens},
url = {https://qwenlm.github.io/blog/qwen2.5-1m/},
author = {Qwen Team},
month = {January},
year = {2025}
}
@article{qwen2.5,
title={Qwen2.5-1M Technical Report},
author={An Yang and Bowen Yu and Chengyuan Li and Dayiheng Liu and Fei Huang and Haoyan Huang and Jiandong Jiang and Jianhong Tu and Jianwei Zhang and Jingren Zhou and Junyang Lin and Kai Dang and Kexin Yang and Le Yu and Mei Li and Minmin Sun and Qin Zhu and Rui Men and Tao He and Weijia Xu and Wenbiao Yin and Wenyuan Yu and Xiafei Qiu and Xingzhang Ren and Xinlong Yang and Yong Li and Zhiying Xu and Zipeng Zhang},
journal={arXiv preprint arXiv:2501.15383},
year={2025}
}



