当前位置: 首页 > news >正文

QwQ-32B-GGUF模型部署

        由于硬件只有两张4090卡,但是领导还想要满血版32b的性能,那就只能部署GGUF版。据说QwQ-32B比Deepseek-R1-32b要更牛逼一些,所以就选择部署QwQ-32B-GGUF,根据最终的测试--针对长文本(3-5M大小)的理解,QwQ-32B-GGUF确实要比Deepseek-R1-32b-GGUF好一些。

        这里说一下QwQ-32B-GGUF与原版QwQ-32B的区别:

1. 文件格式与存储优化

  • QwQ-32B 是阿里官方发布的原始模型,通常以 PyTorch 权重文件(如 .bin 或 .safetensors)形式存储,需依赖深度学习框架(如 Hugging Face Transformers)加载 。

  • QwQ-32B-GGUF 是 QwQ-32B 经过 GGUF 格式转换后的版本,采用二进制存储,优化了数据结构与内存映射(mmap),显著提升加载速度和内存效率,特别适合本地部署 

    • 优势

      • 单文件部署,无需额外依赖库;

      • 支持量化(如 4-bit Q4_K_M),显存需求低至 8GB;

      • 通过 llama.cpp 或 Ollama 直接运行,无需复杂配置。

2. 部署场景与硬件要求

  • QwQ-32B

    • 适用场景:研究级开发、全精度推理、微调训练;

    • 硬件要求:需较高显存的 GPU(如 24GB 显存的 RTX 3090/4090)或云端算力;

    • 部署方式:通过 Transformers 库或 vLLM 框架启动服务 。

  • QwQ-32B-GGUF

    • 适用场景:消费级硬件本地部署、边缘计算、低资源推理;

    • 硬件要求:支持量化后单卡(如 RTX 3060)甚至 CPU 运行;

    • 部署方式:通过 llama.cpp、LM Studio 或 Ollama 一键启动,适合无编程经验的用户 。

3. 性能与功能差异

  • 推理速度 GGUF 版本因内存映射和量化技术,推理速度更快(30-40 tokens/秒),而原版在全精度下延迟较高 。

  • 功能完整性

    • 原版 QwQ-32B 支持完整微调和工具集成(如代码执行、Agent 能力);

    • GGUF 版本因格式限制,通常仅支持推理任务,无法直接微调。

  • 量化灵活性 GGUF 提供多级量化(如 2-bit/4-bit/8-bit),用户可平衡速度与精度;原版需自行实现量化 。

--------------------------------------------------------------------------------------------------------------------------------

以上内容是来自deepseek的回答,下面进入主题如何基于两张4090部署QwQ-32B-GGUF。

一、下载模型

1、下载目录

GIT_LFS_SKIP_SMUDGE=1 git clone https://www.modelscope.cn/Qwen/QwQ-32B-GGUF.git

GIT_LFS_SKIP_SMUDGE=1 这是环境变量设置,用于指示 Git LFS 跳过自动下载大文件(即“smudge”阶段)。此时大文件会被替换为轻量级指针文件(约 1KB),而非实际内容。因为该地址下有很多量化的版本。

2、下载指定文件

nohup git lfs pull --include="qwq-32b-q8_*" > lfs_pull.log 2>&1 &

下载q8_0量化版本,并设置后台下载

3、合并模型文件

下载完之后,发现是由多个文件分片组成的,需要合并为一个文件,可使用如下命令:

./llama-gguf-split --merge qwq-32b-q8_0-00001-of-00009.gguf qwq-32b-q8_0.gguf

这里使用的官方推荐的llama-gguf-split命令进行合并,只需指定第一个分片即可。

二、启动模型

经过各种参数调试,最终使用如下命令,上传并理解5M左右的长文本,不会包显存溢出异常

numactl --cpunodebind=0 --membind=0 ./bin/llama-server -m /data/servers/QwQ-32B-GGUF/qwq-32b-q8_0.gguf --ctx-size 16000 --n-gpu-layers 99 --tensor-split 24,24 --batch-size 128 --no-mmap --mlock --parallel 1 --host 0.0.0.0 --port 8000 --temp 0.3 --top-k 38 --repeat-penalty 1.2 --mirostat 2 --mirostat-lr 0.1 --flash-attn 

以下是该命令中关键参数的详细解析,结合 NUMA 绑定、大模型推理优化及服务器配置三方面进行说明:


一、NUMA 绑定优化
  1. numactl --cpunodebind=0 --membind=0

    • 作用:将进程的 CPU 和内存绑定到 NUMA 节点 0,避免跨节点访问内存导致的延迟。

    • 适用场景:多核服务器中,若模型推理对内存带宽敏感(如大模型),绑定到同一 NUMA 节点可提升性能 10%~30%。

二、模型加载与GPU卸载
  1. -m /data/servers/QwQ-32B-GGUF/qwq-32b-q8_0.gguf

    • 作用:指定 GGUF 格式的量化模型路径。q8_0 表示 8 位整数量化,平衡精度与显存占用。

  2. --n-gpu-layers 99

    • 作用:将模型的前 99 层卸载到 GPU 计算,剩余层使用 CPU 推理。数值越大,GPU 显存占用越高。

  3. --tensor-split 24,24

    • 作用:在多 GPU 环境下按比例分配张量。此处表示两块 GPU 各分配 24GB 显存。

三、内存与性能优化
  1. --ctx-size 16000

    • 作用:设置上下文窗口大小为 16000 tokens。适用于长文本推理,但需更多显存(每 1000 tokens 约需 1GB)。

  2. --batch-size 128

    • 作用:批量处理 128 个 tokens,提升吞吐量。过大可能导致 OOM,需根据显存调整。

  3. --no-mmap --mlock

    • 作用:禁用内存映射,强制锁定模型到物理内存,避免换出到磁盘。

四、服务器与推理参数
  1. --host 0.0.0.0 --port 8000

    • 作用:监听所有 IP 的 8000 端口,允许外部访问服务。

  2. --temp 0.3 --top-k 38

    • 作用

      • --temp 0.3:降低生成随机性(值越小越确定,如问答任务);

      • --top-k 38:仅从概率最高的 38 个候选词中采样,避免低质量输出。

  3. --mirostat 2 --mirostat-lr 0.1

    • 作用:启用 Mirostat 2.0 算法,动态调整生成多样性,lr 为学习率,控制调整幅度。

  4. --flash-attn

    • 作用:启用 Flash Attention 优化,加速注意力计算,降低显存占用 20%~40%。


三、调用

1、非流式调用


curl -X POST "http://192.168.1.50:8000/v1/chat/completions" \
  -H "Content-Type: application/json" \
  -d '{
    "messages": [
      {"role": "user", "content": "中国的首都是哪里?"}
    ],
    "model": "/data/servers/QwQ-32B-GGUF/qwq-32b-q8_0.gguf",
    "temperature": 0.7
  }'  

2、流式调用

curl -X POST "http://192.168.1.50:8000/v1/chat/completions" \
  -H "Content-Type: application/json" \
  -d '{
	"stream": true,
    "messages": [
      {"role": "user", "content": "中国的首都是哪里?"}
    ],
    "model": "/data/servers/QwQ-32B-GGUF/qwq-32b-q8_0.gguf",
    "temperature": 0.7
  }'

OK,大功告成!

相关文章:

  • 快速入手-基于DRF的过滤、分页、查询配置(十五)
  • 2025年渗透测试面试题总结-某 携程旅游-基础安全工程师(题目+回答)
  • 41、当你在 index.html 中引用了一个公共文件(比如 common.js),修改这个文件后,用户访问页面时仍然看到旧内容,因为浏览器缓存了旧版本
  • 人工智能-LangGraph+ChatUI+DeepSeek API搭建本地智能助手
  • 搭建开源笔记平台:outline
  • 如何在 Unity3D 导入 Spine 动画
  • 【NLP】15. NLP推理方法详解 --- 动态规划:序列标注,语法解析,共同指代
  • JavaScript 库:全面解析与推荐
  • 13-SpringBoot3入门-整合MyBatis-Plus
  • 【Docker镜像】Python项目之使用Dockerfile构建镜像(一)
  • 如何用Postman实现自动化测试?
  • 【Jira 查询与 JQL 使用详解】
  • 【数据结构】导航
  • Ubuntu 24.04.2 LTS 系统安装python,创建虚拟环境
  • 解决 CMS Old GC 频繁触发线上问题技术方案
  • 本地部署vanna ai+通过http请求调用vanna
  • 虚幻5入门
  • Docker学习--本地镜像管理相关命令--docker save 命令
  • 【Easylive】TokenUserInfoDto中@JsonIgnoreProperties和 Serializable 接口作用
  • git 按行切割 csv文件
  • 正荣地产:董事会主席、行政总裁辞任,拟投入更多精力推动境内债重组等工作
  • 乡村快递取件“跑腿费”屡禁不止?云南元江县公布举报电话
  • 美联储主席:不打算先发制人地降息,将继续观望
  • 巴国家安全委员会授权军方自主决定对印反击措施
  • 博裕基金拟收购“全球店王”北京SKP最多45%股权
  • 五一档7.47亿收官:《水饺皇后》领跑;男观众占比增多