> 技术文档 > 【手把手一步步教你部署百度文心一言大模型(多模态)】_多模态大模型部署

【手把手一步步教你部署百度文心一言大模型(多模态)】_多模态大模型部署

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:81818182: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,允许用户在容器内进行交互式操作。

总结

这个命令的核心功能是:

  1. 创建一个名为PaddleGpu-cuda-12.0的容器,使用百度云提供的PaddlePaddle GPU镜像。
  2. 配置容器访问主机的所有GPU设备。
  3. 将主机的/mnt/目录挂载到容器内,方便数据共享。
  4. 映射多个端口,用于应用访问和监控。
  5. 启动交互式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-portengine-worker-queue-port监控服务状态,通过max-model-lenmax-num-seqs控制模型的输入长度和并发能力,确保服务稳定运行。

补充说明

  • 若启动失败,需优先检查:
    1. 模型路径是否正确,文件是否完整(尤其是分词器配置文件);
    2. FastDeploy、PaddlePaddle、PaddleNLP等依赖库版本是否与模型兼容(ERNIE-4.5系列需较新版本支持);
    3. 端口是否被占用,GPU显存是否充足(28B参数模型对显存要求较高,建议使用多卡或高显存GPU)。