【手把手一步步教你部署百度文心一言大模型(多模态)】_多模态大模型部署
1.docker拉取镜像:
docker pull ccr-2vdh3abv-pub.cnc.bj.baidubce.com/paddlepaddle/fastdeploy-cuda-12.6:2.0.0
预构建映像仅支持SM80/90 GPU(例如H800/A800),如果您在SM86/89GPU(L40/4090/L20)上部署,请在创建容器后重新安装fastdpeloy GPU。也就是说,如果显卡是H800/A800,则按2步骤运行后可跳过下面的3;如果显卡是L40/4090/L20等,则按下面步骤一步步进行,不要跳过3.
如果是ubuntu,启动并进入容器:
docker run --gpus all -it --rm --name PaddleGpu-cuda-12.0 \\-v /mnt/:/workspace \\-p 8888:8888 -p 8183:8180 -p 8181:8181 -p 8182:8182 \\ccr-2vdh3abv-pub.cnc.bj.baidubce.com/paddlepaddle/paddle:3.1.0-gpu-cuda12.6-cudnn9.5 bash
如果是win,启动并进入容器:
docker run --gpus all -it --rm --name PaddleGpu-cuda-12.0 -v C:/mnt:/workspace -p 8888:8888 -p 8183:8180 -p 8181:8181 -p 8182:8182 ccr-2vdh3abv-pub.cnc.bj.baidubce.com/paddlepaddle/paddle:3.1.0-gpu-cuda12.6-cudnn9.5 bash
完整命令解释
docker run --gpus all -it --rm --name PaddleGpu-cuda-12.0 \\-v /mnt/:/workspace \\-p 8888:8888 -p 8183:8180 -p 8181:8181 -p 8182:8182 \\ccr-2vdh3abv-pub.cnc.bj.baidubce.com/paddlepaddle/paddle:3.1.0-gpu-cuda12.6-cudnn9.5 bash
各部分参数详解
1. 基础命令结构
docker run [选项] <镜像名称> <启动命令>
docker run
:创建并启动一个新容器。:使用的Docker镜像(
ccr-2vdh3abv-pub...
)。:容器启动后执行的命令(
bash
表示启动交互式Shell)。
2. GPU相关参数
--gpus all
--gpus
:启用GPU支持。all
:允许容器访问所有可用的GPU设备。
(若需指定特定GPU,可改为--gpus device=0,1
)
3. 交互与清理参数
-it --rm
-i
(--interactive
):保持标准输入打开,允许交互式操作。-t
(--tty
):分配一个伪终端,提供类似SSH的交互界面。--rm
:容器退出时自动删除容器文件(避免残留)。
4. 容器命名
--name PaddleGpu-cuda-12.0
--name
:为容器指定一个名称(便于管理和识别)。
5. 数据卷挂载
-v /mnt/:/workspace
-v
(--volume
):将主机目录挂载到容器内。/mnt/:/workspace
:将主机的/mnt/
目录映射到容器的/workspace
目录。
(Windows中需改为C:/mnt:/workspace
)
6. 端口映射
-p 8888:8888 -p 8183:8180 -p 8181:8181 -p 8182:8182
-p
(--publish
):将容器端口映射到主机端口。8888:8888
:容器的8888端口映射到主机的8888端口(常用于Jupyter Notebook)。8183:8180
:容器的8180端口映射到主机的8183端口(解决原8180被占用的问题)。8181:8181
和8182:8182
:分别映射监控端口和工作队列端口。
7. 镜像名称与版本
ccr-2vdh3abv-pub.cnc.bj.baidubce.com/paddlepaddle/paddle:3.1.0-gpu-cuda12.6-cudnn9.5
- 这是一个来自百度云容器镜像服务(CCR)的PaddlePaddle镜像。
3.1.0
:PaddlePaddle版本。gpu
:支持GPU加速。cuda12.6
:基于CUDA 12.6版本。cudnn9.5
:使用cuDNN 9.5深度神经网络库。
8. 启动命令
bash
- 容器启动后执行的命令,这里启动Bash shell,允许用户在容器内进行交互式操作。
总结
这个命令的核心功能是:
- 创建一个名为
PaddleGpu-cuda-12.0
的容器,使用百度云提供的PaddlePaddle GPU镜像。 - 配置容器访问主机的所有GPU设备。
- 将主机的
/mnt/
目录挂载到容器内,方便数据共享。 - 映射多个端口,用于应用访问和监控。
- 启动交互式Shell,允许用户直接在容器内运行深度学习任务。
执行后,用户可以在容器内使用完整的PaddlePaddle环境,并通过主机端口访问相关服务。
3.启动容器进入后:
然后安装fastdeploy。不要从PyPI安装。请改用以下方法:
A30/A100/H100/和 A10/4090/L20/L40不同,根据显卡型号不同选用不同的方式:
For SM80/90 architecture GPUs(e.g A30/A100/H100/):
python -m pip install fastdeploy-gpu -i https://www.paddlepaddle.org.cn/packages/stable/fastdeploy-gpu-80_90/ --extra-index-url https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple
For SM86/89 architecture GPUs(e.g A10/4090/L20/L40):
python -m pip install fastdeploy-gpu -i https://www.paddlepaddle.org.cn/packages/stable/fastdeploy-gpu-86_89/ --extra-index-url https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple
4.部署文心一言大模型:
python -m fastdeploy.entrypoints.openai.api_server --model /workspace/LlmFile/ERNIE-4.5-VL-28B-A3B-Paddle --port 8180 --metrics-port 8181 --engine-worker-queue-port 8182 --max-model-len 131072 --max-num-seqs 32
这个命令用于通过fastdeploy
工具启动一个兼容OpenAI API格式的服务,以部署ERNIE-4.5-VL多模态大模型。以下是各参数的详细释义:
基础命令结构
python -m fastdeploy.entrypoints.openai.api_server [参数列表]
python -m
:通过Python模块方式运行指定的脚本(这里是fastdeploy
的OpenAI API服务入口)。fastdeploy.entrypoints.openai.api_server
:FastDeploy框架中用于启动OpenAI兼容接口的服务模块,作用是将模型封装为符合OpenAI API规范的接口,方便通过HTTP请求调用模型。
核心参数详解
1. --model /workspace/LlmFile/ERNIE-4.5-VL-28B-A3B-Paddle
- 作用:指定模型文件的路径。
- 说明:
/workspace/LlmFile/ERNIE-4.5-VL-28B-A3B-Paddle
是容器内模型文件的存放路径,需包含模型权重(如.pdparams
文件)、配置文件(config.json
)、分词器文件(tokenizer_config.json
等)。若路径错误或文件不完整,会导致模型加载失败(如你之前遇到的“模型不存在”错误)。
注意:需要提前将文心一言大模型下载到:/mnt/LlmFile/ 这个文件夹中(下载方式有很多,可以在魔搭社区,hf上下也行),因为前面/mnt映射为容器中/workspace文件夹,所以这里使用/workspace/LlmFile/这个文件夹
2. --port 8180
- 作用:指定API服务监听的端口。
- 说明:服务启动后,可通过
http://容器IP:8180
访问模型接口(如调用/v1/chat/completions
生成对话)。需确保该端口未被容器内其他进程占用。
3. --metrics-port 8181
- 作用:指定模型性能监控指标的端口。
- 说明:用于暴露模型的运行指标(如推理延迟、吞吐量等),通常供监控工具(如Prometheus)采集数据,方便排查性能问题。
4. --engine-worker-queue-port 8182
- 作用:指定引擎工作队列的通信端口。
- 说明:FastDeploy内部通过工作队列管理推理任务,该端口用于服务进程与工作进程之间的通信,确保任务有序分发和处理。
5. --max-model-len 131072
- 作用:设置模型支持的最大序列长度(Token数量)。
- 说明:ERNIE-4.5-VL作为大模型,输入文本和图像经过分词/编码后会转换为Token,
131072
表示模型最多可处理131072个Token(包含输入和输出)。若输入内容超过此长度,会被截断或报错。
6. --max-num-seqs 32
- 作用:设置模型同时处理的最大序列数量(批处理大小上限)。
- 说明:控制并发推理的最大任务数。
32
表示服务最多同时处理32个推理请求,超过则进入队列等待。该参数需根据GPU显存大小调整:显存越大,可设置的值越高(避免显存溢出)。
命令的整体作用
这条命令的核心功能是:
通过FastDeploy框架,将ERNIE-4.5-VL-28B模型(一个支持文本和图像输入的多模态大模型)部署为一个兼容OpenAI API格式的服务。部署后,可通过HTTP请求(如POST http://IP:8180/v1/chat/completions
)向模型发送文本或图像输入,获取生成的响应。
同时,通过metrics-port
和engine-worker-queue-port
监控服务状态,通过max-model-len
和max-num-seqs
控制模型的输入长度和并发能力,确保服务稳定运行。
补充说明
- 若启动失败,需优先检查:
- 模型路径是否正确,文件是否完整(尤其是分词器配置文件);
- FastDeploy、PaddlePaddle、PaddleNLP等依赖库版本是否与模型兼容(ERNIE-4.5系列需较新版本支持);
- 端口是否被占用,GPU显存是否充足(28B参数模型对显存要求较高,建议使用多卡或高显存GPU)。