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

Docke启动Ktransformers部署Qwen3MOE模型实战与性能测试

docker运行Ktransformers部署Qwen3MOE模型实战及 性能测试

最开始拉取ktransformers:v0.3.1-AVX512版本,发现无论如何都启动不了大模型,后来发现是cpu不支持avx512指令集。

由于本地cpu不支持amx指令集,因此下载avx2版本镜像:

1.下载docker镜像并运行


docker pull approachingai/ktransformers:v0.3.1-AVX2
docker run -it --gpus all --privileged --shm-size 64g --name ktrans --network=host -v /home/xugq/models/:/models approachingai/ktransformers:v0.3.1-AVX512 /bin/bash

2.确定挂载卷并进入容器

通过该命令查看挂载卷:

docker inspect ktrans | grep -A 10 "Mounts"

执行结果:

 "Mounts": [{"Type": "bind","Source": "/home/xugq/models/Qwen3-30B-A3B-GGUF","Destination": "/Qwen3-30B-A3B-GGUF","Mode": "","RW": true,"Propagation": "rprivate"}],"Config": {

执行以下命令进入容器内部:

docker exec -it ktrans bash

3.启动qwen3-moe模型

执行以下代码启动Qwen 3 MoE :(注意model_path文件路径是容器内部的挂载路径,因为是在容器内部启动命令)

#普通指令集
python ktransformers/server/main.py --architectures Qwen3MoeForCausalLM --model_path /Qwen3-30B-A3B-GGUF --gguf_path /Qwen3-30B-A3B-GGUF/Qwen3-30B-A3B-Q4_K_M.gguf --optimize_config_path ktransformers/optimize/optimize_rules/Qwen3Moe-serve.yaml --backend_type balance_serve --port 8999
#支持amx指令集
python ktransformers/server/main.py --architectures Qwen3MoeForCausalLM --model_path <model_dir> --gguf_path <gguf_dir> --optimize_config_path ktransformers/optimize/optimize_rules/Qwen3Moe-serve-amx.yaml --backend_type balance_serve

一些可添加的额外参数参数:

  • --chunk_size: Maximum number of tokens processed in a single run by the engine.
    --chunk_size:引擎在一次运行中处理的最大令牌数。
  • --cache_lens: Total length of kvcache allocated by the scheduler. All requests share a kvcache space corresponding to 32768 tokens, and the space occupied will be released after the requests are completed.
    --cache_透镜 :调度程序分配的 kvcache 的总长度。所有请求共享一个 kvcache 空间,对应 32768 个 token,请求完成后释放所占用的空间。
  • --backend_type: balance_serve is a multi-concurrency backend engine introduced in version v0.2.4. The original single-concurrency engine is ktransformers.
    --backend_typebalance_serve 是 v0.2.4 中引入的多并发后端引擎。最初的单并发引擎是 ktransformers
  • --max_batch_size: Maximum number of requests (prefill + decode) processed in a single run by the engine. (Supported only by balance_serve)
    --max_batch_size:引擎在一次运行中处理的最大请求数(预填充+解码)。(仅支持 balance_serve

4.调用模型测试性能

访问服务器测试响应速度:

curl -X POST http://localhost:8999/v1/chat/completions \-H "accept: application/json" \-H "Content-Type: application/json" \-d '{"messages": [{"role": "user", "content": " <no_think>贵阳市有什么美丽的景点可以去旅游?"}],"model": "Qwen3-30B-A3B","temperature": 0.3,"top_p": 1.0,"stream": false
}'

收到回复:
请添加图片描述

查看服务器后台日志:
请添加图片描述

分析关键性能指标:

Performance(T/s): prefill 58.34309968405152, decode 19.089551765073455. Time(s): tokenize 0.023163557052612305, prefill 0.37707972526550293, decode 26.035184383392334

  1. Prefill(预填充)阶段
    • 速度:58.34 tokens/s
    • 耗时:0.38 秒
    • 说明:处理用户输入提示词(prompt)的速度,该阶段并行计算能力强,吞吐量高。
  2. Decode(解码)阶段
    • 速度:19.09 tokens/s
    • 耗时:26.04 秒
    • 说明:逐token生成回复内容的速度,受自回归生成特性限制,吞吐量较低。
  3. Tokenizer(分词)阶段
    • 耗时:0.023 秒
    • 耗时:26.04 秒
    • 说明:逐token生成回复内容的速度,受自回归生成特性限制,吞吐量较低。
  4. Tokenizer(分词)阶段
    • 耗时:0.023 秒
    • 说明:将文本转换为模型输入token的时间,通常不是瓶颈。
http://www.xdnf.cn/news/923761.html

相关文章:

  • 如何理解ES6模块化方案的缓存机制?
  • SpringBoot离线应用的5种实现方式
  • 【python】RGB to YUV and YUV to RGB
  • 使用python实现奔跑的线条效果
  • 【八股消消乐】MySQL存储引擎InnoDB知识点汇总
  • 深入解析快速排序算法:原理、优化与应用
  • java内存模型JMM
  • 图上合成:用于大型语言模型持续预训练的知识合成数据生成
  • Python: 告别 ModuleNotFoundError, 解决 pipx 环境下 sshuttle 缺少 pydivert 依赖的终极指南
  • Redis Key过期策略
  • 关于 ​​Thread 与 Runnable​​ 以及 ​​线程生命周期​​ 的详细说明与示例
  • Protobuf 中的类型查找规则
  • ADB识别手机系统弹授权框-如何处理多重弹框叠加和重叠问题
  • 现代C++特性(一):基本数据类型扩展
  • Unity的日志管理类
  • 东芝Toshiba e-STUDIO2110AC打印机信息
  • 用电脑通过USB总线连接控制keysight示波器
  • csrf攻击学习
  • Java 8 Stream API 入门到实践详解
  • Robot Framework 一个通用的 自动化测试框架
  • 【DAY42】Grad-CAM与Hook函数
  • 大模型Agent智能体介绍和应用场景
  • SpiritTools:一款小而精的实用工具箱
  • nonlocal 与global关键字
  • BeckHoff--MES数据交互 MQ TRANCE API (MQ 追溯 API - 系统概述和命令参考)
  • YOLOv8 升级之路:主干网络嵌入 SCINet,优化黑暗环境目标检测
  • gawk 指令
  • NPOI Excel用OLE对象的形式插入文件附件以及插入图片
  • 元器件基础学习笔记——结型场效应晶体管 (JFET)
  • 实战二:开发网页端界面完成黑白视频转为彩色视频