文心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