You need to enable JavaScript to run this app.
机器学习平台

机器学习平台

复制全文
最佳实践
veMLP xLLM 推理引擎 PD 分离部署 Qwen 模型
复制全文
veMLP xLLM 推理引擎 PD 分离部署 Qwen 模型

xLLM 是火山方舟全自研的高效推理框架,支持PD分离( Prefiling、Decoding)、弹性扩缩等特性,性能显著领先开源框架。
在火山引擎机器学习平台(veMLP)的推理服务中,已产品化支持使用xLLM推理引擎实现PD分离部署功能。通过本文,您可使用 xLLM 预置镜像,部署Qwen3模型推理服务;同时这里会给出 xLLM 镜像相较于 vLLM 开源版的性能数据对比。

部署在线服务

预置模型信息

模型

路径

Qwen3-235B-A22B

tos://preset-models-cn-beijing-tob-demo/Qwen/Qwen3-235B-A22B-veMLP/

Qwen3-32B

tos://preset-models-cn-beijing-tob-demo/Qwen/Qwen3-32B/

Qwen2.5-32B

tos://preset-models-cn-beijing-tob-demo/Qwen/Qwen2.5-32B-Instruct/

Qwen2.5-72B

tos://preset-models-cn-beijing-tob-demo/Qwen/Qwen2.5-72B-Instruct/

Tips:请留意镜像、模型路径需要根据Region位置适当调整。例如示例Qwen3-32B文件位于cn-beijing Region,TOS路径为tos://preset-models-cn-beijing-tob-demo/Qwen/Qwen3-32B;如果文件位于cn-beijing2 Region,TOS路径调整为tos://preset-models-cn-beijing2-tob-demo/Qwen/Qwen3-32B。镜像地址同理。

1.创建服务

创建服务

  • 正确填写【服务名称】,【私有网络】,【API 网关】,8000 服务推理端口,8080 监控指标采集端口等信息。

说明

目前POC指定8000、8080,请勿更改端口,并再次检查安全组、ACL是否提前放开所有端口。

创建 API 网关(第一次创建服务时)

  • 正确填写 VPC开启 VMP

2.创建部署

新增部署

  • 在上面创建服务的部署 tab 页面,点击新增部署。
  • 正确填写所属队列,GPU等信息。
  • Prefill 角色和 Decode 角色,都需要正确填写用户模型路径$VEPFS_MODEL_PATH/Qwen/Qwen3-32B/
  • 选择【子网】,【安全组】,并且点击创建后,等待实例排队运行中。
  • 观察 【decode】 角色实例日志,无模型加载报错,等待模型加载运行。
  • 从在线服务的调用指南 tab 页面,获取服务调用地址。如需加密,则在当前页面开启 API Key校验。

模型部署建议

功能限制

  • 暂不支持128K长文本输入。
  • 暂不支持 Function Call
  • 暂不支持指定response_format
  • 暂不支持enable-thinking请求字段。可以在用户提示词或系统消息中添加 /think/no_think ,以切换模型的思考模式。
# think
curl -X POST <访问地址>/v1/chat/completions \
 -H "Content-Type: application/json" -d '{
    "model": "Qwen/Qwen3-235B-A22B,
    "messages": [
        {"role": "user", "content": "帮我设计北京三天的旅游行程 /think"}
    ],
    "max_tokens": 800
}'


# no_think
curl -X POST <访问地址>/v1/chat/completions \
 -H "Content-Type: application/json" -d '{
    "model": "Qwen/Qwen3-235B-A22B",
    "messages": [
        {"role": "user", "content": "帮我设计北京三天的旅游行程 /no_think"}
    ],
    "max_tokens": 800
}'

模型调用

使用 OpenAI 兼容方式调用模型

部署完成后会自动创建公网服务 ,提供 HTTP OpenAI API 端点。可以按照 OpenAI 兼容 API 方式去调用。例如:

# 流式
curl -X POST <访问地址>/v1/chat/completions \
 -H "Content-Type: application/json" -d '{
    "model": "Qwen/Qwen3-32B",
    "messages": [
        {"role": "user", "content": "帮我设计北京三天的旅游行程"}
    ],
    "max_tokens": 20,
    "stream": true
}'

# 非流式
curl -X POST <访问地址>/v1/chat/completions \
 -H "Content-Type: application/json" -d '{
    "model": "Qwen/Qwen3-235B-A22B",
    "messages": [
        {"role": "user", "content": "帮我设计北京三天的旅游行程"}
    ],
    "max_tokens": 800
}'

流式输出样例

{"id": "chatcmpl-17399634109****", "choices": [{"index": 0, "delta": {"role": "assistant", "content": "", "reasoning_content": "Okay", "tool_calls": []}, "finish_reason": ""}], "created": 1739963410, "model": "vemlp-deepseek-r1-enc", "system_fingerprint": "fp", "object": "chat.completion.chunk", "usage": {"prompt_tokens": 9, "completion_tokens": 1, "total_tokens": 10, "completion_tokens_details": {"reasoning_tokens": 1}}}
{"id": "chatcmpl-17399634109****", "choices": [{"index": 0, "delta": {"role": "assistant", "content": "", "reasoning_content": ",", "tool_calls": []}, "finish_reason": ""}], "created": 1739963410, "model": "vemlp-deepseek-r1-enc", "system_fingerprint": "fp", "object": "chat.completion.chunk", "usage": {"prompt_tokens": 9, "completion_tokens": 2, "total_tokens": 11, "completion_tokens_details": {"reasoning_tokens": 2}}}
...

非流式输出样例

{"id":"chatcmpl-1739963676****","object":"chat.completion","created":1739963676,"model":"vemlp-deepseek-r1-enc","system_fingerprint":"fp","choices":[{"index":0,"message":{"role":"assistant","content":"\n\n以下是为您设计的北京三日经典行程,涵盖历史古迹、皇家园林、现代地标及本地文化体验,行程紧凑但劳逸结合:\n\n🌟 **第一天:中轴线经典之旅**\n","reasoning_content":"嗯,用户让我帮忙设计一个北京三天的旅游行程。首先,我需要考虑用户可能的背景和需求。北京作为中国的首都,有很多经典的景点,比如故宫、天安门、长城之类的。用户可能第一次来北京,想看看这些必去的地方。不过也有可能他们已经去过一些景点,想更深入地体验。不过通常第一次设计的话,还是以经典景点为主比较保险。\n\n接下来,我要确定三天的行程安排是否合理。北京很大,景点之间可能需要考虑交通时间。比如长城在郊区,需要单独安排一天。第一天可能在市中心,安排天安门、故宫、景山这些比较集中的地方。第二天可以考虑颐和园和圆明园,这两个都在海淀区,离市中心稍远,但可以放在同一天。第三天可以安排一些文化体验,比如胡同、南锣鼓巷、798艺术区之类的。\n\n还要注意时间分配是否合理。比如故宫需要半天时间,如果加上天安门广场和毛主席纪念堂,可能需要一上午。下午去景山公园,然后晚上去王府井。这样的安排是否太赶?可能需要调整。另外,要考虑用户的体力,尤其是长城一天可能需要较多步行,所以第二天安排颐和园和圆明园,第三天相对轻松的文化景点可能更合适。\n\n饮食方面,用户可能想体验北京特色美食,比如烤鸭、炸酱面、涮羊肉等。所以在每天的行程里推荐附近的餐馆或小吃街是必要的。比如第一天午餐在故宫附近可能不太方便,但可以推荐王府井的小吃街或者附近的餐馆。晚餐在王府井的话,全聚德是经典选择,但可能需要提前预定。\n\n交通方面,北京地铁比较方便,但有些景点可能需要打车或者公交。比如长城通常需要坐公交或者旅游专线,或者参加一日游团。要提醒用户注意交通时间和方式,避免耽误行程。\n\n另外,季节因素也要考虑。如果是夏天,注意防晒和补水;冬天的话,保暖措施。但用户没有提到具体时间,可能需要一般性的提醒。\n\n还要注意景点开放时间和闭馆日。比如故宫周一闭馆,所以行程安排要避开周一。如果用户不知道这一点,可能会白跑一趟。所以在注意事项里需要提醒。\n\n可能用户还想体验北京的文化,比如胡同、四合院,所以第三天安排了南锣鼓巷和后海,还有798艺术区,这样既有传统文化,又有现代艺术,比较全面。\n\n最后,检查行程是否覆盖了北京的主要景点,三天时间是否足够。第一天:天安门、故宫、景山、王府井。第二天:长城、鸟巢水立方。第三天:颐和园、圆明园、南锣鼓巷、后海。或者可能需要调整,比如第二天如果去长城的话,可能下午回来比较累,晚上安排鸟巢水立方的夜景不错。第三天颐和园和圆明园可能比较紧凑,但可以安排上午和下午分别游览。或者是否应该把颐和园和圆明园放在第二天,而长城单独一天?需要再考虑路线是否合理。\n\n可能第二天去长城,回到市区后去鸟巢水立方,这样比较顺路,因为长城在北部郊区,而鸟巢也在北边,可能更合适。而颐和园和圆明园在西郊,所以第三天安排那里,然后下午去南锣鼓巷和后海。或者反过来?需要查地图确认地理位置。\n\n另外,用户可能有兴趣看升旗仪式,所以第一天早上可以建议早起看升旗,但需要提前查好时间,并且可能需要很早起床,比如夏天升旗很早,用户是否愿意?\n\n总之,需要综合考虑景点分布、时间安排、交通、饮食和用户的体力,确保行程合理可行,不要太赶,又能覆盖主要景点。\n","tool_calls":[]},"finish_reason":"length"}],"usage":{"completion_len":799,"prompt_len":12,"total_len":811,"completion_tokens_details":{"reasoning_tokens":758}}}

性能测试

推理框架性能对比

以 3500: 1500 的Qwen3-235B-A22B 模型为例:

  • 火山 xLLM 版 Qwen3-235B-A22B 推理的单机极限总吞吐可达到7389 token/s,是vLLM版(4092 token/s)的146%。
  • 限定 TPOT < 35 ms 的 SLO 下,火山 xLLM 版吞吐是 vLLM 的 161 %

以 2500: 1500 的Qwen3-235B-A22B 模型为例:

  • 火山 xLLM 版 DeepSeek 推理的单机极限吞吐可达 7259 tokens/s,输出吞吐达到 2722 tokens/s,达到 vLLM 版吞吐量的两倍。
  • 限定 TPOT < 35 ms 的 SLO 下,火山 xLLM 版的单机输出吞吐能达到1586 tokens/s,比 vLLM 版高 81%

在TPOT < 40ms 的 SLO 下进行Qwen3-32B 推理,xLLM吞吐相比开源框架吞吐能力提升约 1 倍。

  • 输入输出比例为3500:1500时,火山 xLLM 版的平均单机输出吞吐能达到774 token/s,是 vLLM 版性能的171%
  • 输入输出比例为2500:1500时,火山 xLLM 版的平均单机输出吞吐能达到908 token/s,vLLM 版单机输出吞吐为557 token/s,提高了63%

Qwen3-32B 性能测试

3500: 1500

xLLM torch版

TPOT

input_len

output_len

等效单机吞吐(req/s)

等效单机输出吞吐量(token/s)

等效单机吞吐量(token/s)

等效单卡吞吐量(token/s)

Mean TPOT

< 40

3500

1500

0.52

773.82

2579.38

1289.69

39.00

< 30

3500

1500

0.42

622.90

2076.35

1038.17

27.81

< 20

3500

1500

0.35

521.26

1737.50

868.75

18.93

vLLM

TPOT

input_len

output_len

等效单机吞吐(req/s)

等效单机输出吞吐量(token/s)

等效单机吞吐量(token/s)

等效单卡吞吐量(token/s)

Mean TPOT

< 50

3500

1500

0.36

538.51

1795.03

897.52

50.44

< 45

3500

1500

0.31

462.17

1540.57

770.28

44.11

< 40

3500

1500

0.30

452.99

1509.97

754.98

40.08

< 35

3500

1500

0.29

465.94

1553.13

776.57

36.43

< 30

3500

1500

0.09

133.61

445.37

222.68

29.58

2500:1500

xLLM torch版

TPOT

input_len

output_len

等效单机吞吐(req/s)

等效单机输出吞吐量(token/s)

等效单机吞吐量(token/s)

等效单卡吞吐量(token/s)

Mean TPOT

< 40

2500

1500

0.60

908.44

2422.51

1211.26

35.83

< 30

2500

1500

0.53

789.84

2106.27

1053.13

29.91

< 20

2500

1500

0.39

578.92

1543.80

771.90

18.23

vLLM

TPOT

input_len

output_len

等效单机吞吐(req/s)

等效单机输出吞吐量(token/s)

等效单机吞吐量(token/s)

等效单卡吞吐量(token/s)

Mean TPOT

< 40

2500

1500

0.37

557.37

1486.32

743.16

38.5

< 35

2500

1500

0.36

543.47

1449.25

724.63

34.72

< 30

2500

1500

0.09

133.26

355.36

177.68

29.28

Qwen3-32B-FP8 性能测试

3500: 1500

xLLM

TPOT

input_len

output_len

等效单机吞吐(req/s)

等效单机输出吞吐量(token/s)

等效单机吞吐量(token/s)

等效单卡吞吐量(token/s)

Mean TPOT

< 20

3500

1500

0.46

757.93

2273.81

1136.90

17.96

< 15

3500

1500

0.32

527.33

1582.00

791.00

16.08

SGLang

TPOT

input_len

output_len

等效单机吞吐(req/s)

等效单机输出吞吐量(token/s)

等效单机吞吐量(token/s)

等效单卡吞吐量(token/s)

Mean TPOT

< 20

3500

1500

0.42

680.45

2041.36

1020.68

17.96

< 15

3500

1500

0.29

485.76

1457.28

728.63

16.08

Qwen3-235B-A22B 性能测试

3500: 1500

xLLM xperf版

TPOT

input_len

output_len

等效单机吞吐(req/s)

等效单机输出吞吐量(token/s)

等效单机吞吐量(token/s)

等效单卡吞吐量(token/s)

Mean TPOT

< 50

3500

1500

1.90

2849.55

9498.51

831.12

49.10

< 40

3500

1500

1.57

2358.10

7860.34

687.78

39.20

< 30

3500

1500

0.79

1189.94

3966.45

347.06

27.71

vLLM

TPOT

input_len

output_len

等效单机吞吐(req/s)

等效单机输出吞吐量(token/s)

等效单机吞吐量(token/s)

等效单卡吞吐量(token/s)

Mean TPOT

< 40

3500

1500

0.63

947.88

3159.60

394.95

39.68

< 35

3500

1500

0.56

845.16

2817.20

352.15

35.65

< 30

3500

1500

0.56

835.88

2786.27

348.28

28.07

< 25

3500

1500

0.41

620.07

2066.90

258.36

25.62

< 20

3500

1500

0.25

381.56

1271.87

158.98

20.79

SGLang

TPOT

input_len

output_len

等效单机吞吐(req/s)

等效单机输出吞吐量(token/s)

等效单机吞吐量(token/s)

等效单卡吞吐量(token/s)

Mean TPOT

< 40

3500

1500

0.43

640.10

2133.67

266.71

40.22

< 35

3500

1500

0.39

592.09

1973.63

246.70

34.48

< 30

3500

1500

0.34

508.78

1695.93

211.99

29.12

2500: 1500

xLLM xperf版

TPOT

input_len

output_len

等效单机吞吐(req/s)

等效单机输出吞吐量(token/s)

等效单机吞吐量(token/s)

等效单卡吞吐量(token/s)

Mean TPOT

< 50

2500

1500

2.19

3278.88

8743.69

1092.96

49.11

< 40

2500

1500

1.86

2788.16

7435.14

929.39

38.94

< 30

2500

1500

0.67

997.92

2661.01

332.63

29.39

vLLM

TPOT

input_len

output_len

等效单机吞吐(req/s)

等效单机输出吞吐量(token/s)

等效单机吞吐量(token/s)

等效单卡吞吐量(token/s)

Mean TPOT

< 35

2500

1500

0.64

965.49

2574.64

321.83

32.87

< 30

2500

1500

0.56

841.39

2243.71

280.46

28.26

< 25

2500

1500

0.41

612.99

1634.64

204.33

25.86

< 20

2500

1500

0.25

379.04

1010.77

126.35

20.92

Qwen3-235B-A22B-FP8 性能测试

3500: 1500

xLLM

TPOT

input_len

output_len

等效单机吞吐(req/s)

等效单机输出吞吐量(token/s)

等效单机吞吐量(token/s)

等效单卡吞吐量(token/s)

Mean TPOT

< 40

3500

1500

0.47

782.61

2344.83

586.21

36.41

< 35

3500

1500

0.42

702.21

2106.62

526.65

33.07

< 30

3500

1500

0.35

587.18

1761.55

440.39

30.03

SGLang

TPOT

input_len

output_len

等效单机吞吐(req/s)

等效单机输出吞吐量(token/s)

等效单机吞吐量(token/s)

等效单卡吞吐量(token/s)

Mean TPOT

< 40

3500

1500

0.425

708.96

2126.88

531.72

36.41

< 35

3500

1500

0.446

615.55

1846.65

461.66

33.07

< 30

3500

1500

0.339

565.31

1695.93

423.98

30.03

最近更新时间:2025.07.23 17:08:36
这个页面对您有帮助吗?
有用
有用
无用
无用