模型简介
模型特点
模型能力
使用案例
🚀 Qwen2.5-7B-Instruct GGUF模型
Qwen2.5-7B-Instruct GGUF模型采用了最新的超低比特量化方法,在保持高精度的同时,极大地提高了内存使用效率。该模型适用于多种硬件环境,能满足不同场景下的文本生成需求。
🚀 快速开始
本项目提供了Qwen2.5-7B-Instruct的多种量化模型,可根据硬件能力和内存限制选择合适的模型格式。以下是使用示例代码,展示了如何加载分词器和模型并生成内容:
from transformers import AutoModelForCausalLM, AutoTokenizer
model_name = "Qwen/Qwen2.5-7B-Instruct"
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上经基准测试验证有显著改进。
- 采用特定层策略,在保持极端内存效率的同时保留准确性。
多模型格式支持
提供BF16、F16、量化模型(Q4_K、Q6_K、Q8等)以及极低比特量化模型(IQ3_XS、IQ3_S、IQ3_M、Q4_K、Q4_0)等多种格式,可根据硬件能力和内存限制灵活选择。
广泛的应用场景
适用于GPU显存有限的场景、内存受限的部署、CPU和边缘设备,以及超低比特量化研究等。
📦 安装指南
代码已集成在最新的Hugging face transformers
库中,建议使用最新版本的transformers
。若使用transformers<4.37.0
,会遇到以下错误:
KeyError: 'qwen2'
💻 使用示例
基础用法
# 加载模型和分词器
from transformers import AutoModelForCausalLM, AutoTokenizer
model_name = "Qwen/Qwen2.5-7B-Instruct"
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]
处理长文本
当前config.json
设置的上下文长度最大为32,768个标记。若要处理超过32,768个标记的长输入,可使用YaRN技术,在config.json
中添加以下内容以启用YaRN:
{
...,
"rope_scaling": {
"factor": 4.0,
"original_max_position_embeddings": 32768,
"type": "yarn"
}
}
部署时,建议使用vLLM。若不熟悉vLLM的使用,请参考文档。目前,vLLM仅支持静态YARN,即缩放因子不随输入长度变化,可能会影响短文本的性能。因此,建议仅在需要处理长上下文时添加rope_scaling
配置。
📚 详细文档
量化方法详情
基准测试背景
所有测试均在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%)。
模型格式选择
选择正确的模型格式取决于硬件能力和内存限制。
模型格式 | 精度 | 内存使用 | 设备要求 | 最佳使用场景 |
---|---|---|---|---|
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-bf16.gguf
:模型权重保存为BF16格式,适用于支持BF16加速的设备,可用于将模型重新量化为其他格式。Qwen2.5-7B-Instruct-f16.gguf
:模型权重保存为F16格式,适用于支持FP16的设备,特别是BF16不可用的情况。Qwen2.5-7B-Instruct-bf16-q8_0.gguf
:输出和嵌入层保持为BF16,其他层量化为Q8_0,适用于支持BF16且需要量化版本的设备。Qwen2.5-7B-Instruct-f16-q8_0.gguf
:输出和嵌入层保持为F16,其他层量化为Q8_0。Qwen2.5-7B-Instruct-q4_k.gguf
:输出和嵌入层量化为Q8_0,其他层量化为Q4_K,适用于内存有限的CPU推理。Qwen2.5-7B-Instruct-q4_k_s.gguf
:最小的Q4_K变体,以牺牲精度为代价减少内存使用,适用于极低内存的设置。Qwen2.5-7B-Instruct-q6_k.gguf
:输出和嵌入层量化为Q8_0,其他层量化为Q6_K。Qwen2.5-7B-Instruct-q8_0.gguf
:全Q8量化模型,精度更高,但需要更多内存。Qwen2.5-7B-Instruct-iq3_xs.gguf
:IQ3_XS量化,针对极致内存效率进行优化,适用于超低内存设备。Qwen2.5-7B-Instruct-iq3_m.gguf
:IQ3_M量化,提供中等块大小以提高精度,适用于低内存设备。Qwen2.5-7B-Instruct-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"
🔧 技术细节
Qwen2.5模型介绍
Qwen2.5是通义大语言模型的最新系列。针对Qwen2.5,发布了一系列参数从5亿到720亿的基础语言模型和指令调优语言模型。Qwen2.5在Qwen2的基础上有以下改进:
- 拥有显著更多的知识,在编码和数学方面的能力有极大提升,这得益于在这些领域的专业专家模型。
- 在指令遵循、长文本生成(超过8K标记)、结构化数据理解(如表格)和结构化输出生成(特别是JSON)方面有显著改进。对系统提示的多样性更具鲁棒性,增强了聊天机器人的角色扮演实现和条件设置。
- 支持长达128K标记的长上下文,可生成多达8K标记的内容。
- 支持超过29种语言,包括中文、英文、法语、西班牙语、葡萄牙语、德语、意大利语、俄语、日语、韩语、越南语、泰语、阿拉伯语等。
本仓库模型特性
本仓库包含指令调优的7B Qwen2.5模型,具有以下特性:
属性 | 详情 |
---|---|
模型类型 | 因果语言模型 |
训练阶段 | 预训练和后训练 |
架构 | 采用RoPE、SwiGLU、RMSNorm和注意力QKV偏置的transformers架构 |
参数数量 | 76.1亿 |
非嵌入参数数量 | 65.3亿 |
层数 | 28 |
注意力头数量(GQA) | Q为28,KV为4 |
上下文长度 | 完整131,072个标记,生成8192个标记 |
📄 许可证
本项目采用Apache 2.0许可证,详情请见许可证链接。
🔖 引用
如果觉得我们的工作有帮助,请引用以下文献:
@misc{qwen2.5,
title = {Qwen2.5: A Party of Foundation Models},
url = {https://qwenlm.github.io/blog/qwen2.5/},
author = {Qwen Team},
month = {September},
year = {2024}
}
@article{qwen2,
title={Qwen2 Technical Report},
author={An Yang and Baosong Yang and Binyuan Hui and Bo Zheng and Bowen Yu and Chang Zhou and Chengpeng Li and Chengyuan Li and Dayiheng Liu and Fei Huang and Guanting Dong and Haoran Wei and Huan Lin and Jialong Tang and Jialin Wang and Jian Yang and Jianhong Tu and Jianwei Zhang and Jianxin Ma and Jin Xu and Jingren Zhou and Jinze Bai and Jinzheng He and Junyang Lin and Kai Dang and Keming Lu and Keqin Chen and Kexin Yang and Mei Li and Mingfeng Xue and Na Ni and Pei Zhang and Peng Wang and Ru Peng and Rui Men and Ruize Gao and Runji Lin and Shijie Wang and Shuai Bai and Sinan Tan and Tianhang Zhu and Tianhao Li and Tianyu Liu and Wenbin Ge and Xiaodong Deng and Xiaohuan Zhou and Xingzhang Ren and Xinyu Zhang and Xipin Wei and Xuancheng Ren and Yang Fan and Yang Yao and Yichang Zhang and Yu Wan and Yunfei Chu and Yuqiong Liu and Zeyu Cui and Zhenru Zhang and Zhihao Fan},
journal={arXiv preprint arXiv:2407.10671},
year={2024}
}



