文心4.5开源模型部署实践
使用fastdeploy本地部署
执行命令:
python -m fastdeploy.entrypoints.openai.api_server \--model baidu/ERNIE-4.5-21B-A3B-Paddle \--port 8180 \--metrics-port 8181 \--engine-worker-queue-port 8182 \--max-model-len 32768 \--max-num-seqs 32
解释一下部署命令
该命令用于通过 FastDeploy 框架部署百度 ERNIE-4.5 大模型服务,并兼容 OpenAI API 协议。以下是参数详解:
1. 核心模块与模型
fastdeploy.entrypoints.openai.api_server
:FastDeploy 提供的服务入口模块,用于启动兼容 OpenAI API 的 HTTP 服务12。--model baidu/ERNIE-4.5-21B-A3B-Paddle
:指定模型路径,此处为百度 ERNIE-4.5-21B 的 PaddlePaddle 格式模型,支持 210 亿参数规模23。
2. 端口配置
--port 8180
:主服务监听端口,用于处理 API 请求(如文本生成、对话等)14。--metrics-port 8181
:监控指标端口,提供 Prometheus 格式的模型性能数据(如吞吐量、延迟)15。--engine-worker-queue-port 8182
:工作队列通信端口,协调多个推理引擎实例的任务分配15。
3. 性能与资源控制
--max-model-len 32768
:限制模型单次处理的上下文最大长度(32K tokens),避免内存溢出14。--max-num-seqs 32
:设置批量处理的最大序列数,平衡并发性能与显存占用15。
4. 技术背景
- FastDeploy:百度推出的高效推理框架,支持多硬件后端(如 GPU、NPU),优化了 PaddlePaddle 模型的部署效率23。
- ERNIE-4.5:百度最新大语言模型,在代码生成、逻辑推理等任务上表现优异,需通过此类服务化部署提供 API 调用能力23。
5. 典型应用场景
- 企业级 AI 中台:通过标准化 OpenAI API 协议集成到现有系统16。
- 高并发推理:利用多端口设计实现负载均衡与监控15。
- 长文本处理:32K 上下文窗口适合文档摘要、代码分析等任务34。
最近在实际工程中,发现32K上下文窗口实在太小了。怎么也要64K才好工作。
使用fastdeploy在星河社区部署
进入部署页面:飞桨AI Studio星河社区-人工智能学习与实训社区
点击:新建部署
部署内部模型
在热门模型库里,选FastDeploy推理框架,然后选文心4.5模型即可。
比如这里选了21B模型。
部署完毕,点“详情”,会提供api调用的测试代码,直接在python里调用即可。
这个模型来自:ERNIE-4.5-21B-A3B-Paddle_文心大模型_大语言模型_文本生成-飞桨AI Studio星河社区
我在部署了21B模型后,使用Auto-Coder工具构建一个项目进行了测试,这个21B模型还是挺厉害的,正好处于几乎符合Auto-Coder工具要求的那一档,也就是略低于DeepSeek-v3模型,但是勉强能用。
但是由于只能提供32k的上下文,这个限制较大,导致无法在Auto-Coder中真实的使用。
部署外部模型(其实是用ollam部署)
选择:外部部署,把部署链接cp过去
先尝试了部署最大的模型:baidu/ERNIE-4.5-300B-A47B-PT · HF Mirror
部署失败
再尝试部署这个:
https://huggingface.cn/baidu/ERNIE-4.5-300B-A47B-W4A8C8-TP4-Paddle
还是失败。证明300B的模型在星河是无法部署成功的。
也就是只有21B和28B等较小的模型才能部署成功。
星河官方已经设好了21B模型的部署,直接点一下就可以了。这里我们再从外部huggingface引入部署实践一下:
使用这个模型
https://huggingface.co/baidu/ERNIE-4.5-21B-A3B-Base-Paddle
失败,再用这个试试
https://huggingface.co/baidu/ERNIE-4.5-21B-A3B-Base-PT
还是失败
测试了半天,才发现这行小字:
说明:平台暂仅支持GGUF格式且不大于70B的公开模型部署,请遵守平台规范(禁止涉黄、暴力等违规信息)
所以只要大于70B,且不是GGUF格式的,都不能部署。新发布的文心模型,还都没有GGUF格式,所以都还不行。
有空再使用GGUF格式模型试试
在星河社区,看模型配置
{"architectures": ["Ernie4_5_MoeForCausalLM"],"bos_token_id": 1,"eos_token_id": 2,"hidden_act": "silu","hidden_size": 2560,"intermediate_size": 12288,"max_position_embeddings": 131072,"model_type": "ernie4_5_moe","num_attention_heads": 20,"num_key_value_heads": 4,"num_hidden_layers": 28,"pad_token_id": 0,"rms_norm_eps": 1e-05,"use_cache": false,"vocab_size": 103424,"rope_theta": 500000,"use_rmsnorm": true,"tie_word_embeddings": true,"use_bias": false,"moe_num_experts": 64,"moe_num_shared_experts": 2,"moe_layer_start_index": 1,"moe_intermediate_size": 1536,"moe_capacity": [64,64,64],"moe_gate": "topk","moe_k": 6,"moe_layer_interval": 1,"moe_use_aux_free": true,"dtype": "bfloat16","num_nextn_predict_layers": 1,"multi_token_pred_lambda": 0.3
}
这证明它是支持128K长文本的,那为什么使用中最大是32K呢?出现了这个报错:
File "/home/skywalk/minipy312/lib/python3.12/site-packages/openai/_base_client.py", line 1037, in requestraise self._make_status_error_from_response(err.response) from None
openai.BadRequestError: Error code: 400 - {'object': 'error', 'message': 'Input text is too long, input_ids_len (32767) + min_tokens(1) >= max_model_len(32768)', 'code': 400}
╭────────────────────────────────────────────────── 🔥 System Error ───────────────────────────────────────────────────╮
│ FATAL ERROR: │
│ Error code: 400 - {'object': 'error', 'message': 'Input text is too long, input_ids_len (32767) + min_tokens(1) >= │
│ max_model_len(32768)', 'code': 400} │
╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
──────────────────────────────────────────────── Agentic Edit Finished ─────────────────────────────────────────────────
An error occurred: BadRequestError - Error code: 400 - {'object': 'error', 'message': 'Input text is too long, input_ids_len (32767) + min_tokens(1) >= max_model_len(32768)', 'code': 400}
不知道是模型设置了32K的上下文限制,还是Auto-Coder的拆分出了问题。
找到了,默认设置是51200
/conf conversation_prune_safe_zone_tokens:51200
把它设置为
/conf conversation_prune_safe_zone_tokens:32767试试
测试glm4试试
https://hf-mirror.com/unsloth/GLM-4-32B-0414-GGUF
https://huggingface.co/unsloth/GLM-4-32B-0414-GGUF
部署成功!
不过在Auto-Coder里面一直刷,有些问题
coding@auto-coder.chat:~$ 继续
Successfully set configuration: event_file =
/home/skywalk/work/autocoder/.auto-coder/events/05ee5870-bcca-4f8f-b6a2-a10adb1fca8f_20250702-114604.jsonl
─────────────────────────────────────────── Starting Agentic Edit: autocoder ───────────────────────────────────────────
╭───────────────────────────────────────────────────── Objective ──────────────────────────────────────────────────────╮
│ User Query: │
│ 继续 │
╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
Conversation ID: 8c63e814-a349-414c-92e6-7be661ed09d3
当前会话总 tokens: 34624
GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG当前会话总 tokens: 34652
当前会话总 tokens: 34720
GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG当前会话总 tokens: 34749
当前会话总 tokens: 34817
GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG当前会话总 tokens: 34846
当前会话总 tokens: 34914
GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG当前会话总 tokens: 34943
当前会话总 tokens: 35011
GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG当前会话总 tokens: 35040
当前会话总 tokens: 35108
GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG当前会话总 tokens: 35137
当前会话总 tokens: 35205
GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG当前会话总 tokens: 35234
当前会话总 tokens: 35302
GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG当前会话总 tokens: 35331
当前会话总 tokens: 35399
GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG当前会话总 tokens: 35428
当前会话总 tokens: 35496
GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG当前会话总 tokens: 35525
当前会话总 tokens: 35593
GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG当前会话总 tokens: 35622
当前会话总 tokens: 35690