模型概述
模型特點
模型能力
使用案例
🚀 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}
}



