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 isktransformers
.
--backend_type
:balance_serve
是 v0.2.4 中引入的多并发后端引擎。最初的单并发引擎是ktransformers
。--max_batch_size
: Maximum number of requests (prefill + decode) processed in a single run by the engine. (Supported only bybalance_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
- Prefill(预填充)阶段:
- 速度:58.34 tokens/s
- 耗时:0.38 秒
- 说明:处理用户输入提示词(prompt)的速度,该阶段并行计算能力强,吞吐量高。
- Decode(解码)阶段:
- 速度:19.09 tokens/s
- 耗时:26.04 秒
- 说明:逐token生成回复内容的速度,受自回归生成特性限制,吞吐量较低。
- Tokenizer(分词)阶段:
- 耗时:0.023 秒
- 耗时:26.04 秒
- 说明:逐token生成回复内容的速度,受自回归生成特性限制,吞吐量较低。
- Tokenizer(分词)阶段:
- 耗时:0.023 秒
- 说明:将文本转换为模型输入token的时间,通常不是瓶颈。