AI开发平台MODELARTS-分离部署推理服务:步骤七 启动增量推理实例

时间:2024-12-17 18:06:51

步骤七 启动增量推理实例

  1. 启动增量推理容器

    启动容器镜像前请先按照参数说明修改${}中的参数。docker启动失败会有对应的error提示,启动成功会有对应的docker id生成,并且不会报错。

    docker run -itd \
    --device=/dev/davinci6 \
    --device=/dev/davinci7 \
    -v /etc/localtime:/etc/localtime  \
    -v /usr/local/Ascend/driver:/usr/local/Ascend/driver \
    -v /etc/ascend_install.info:/etc/ascend_install.info \
    --device=/dev/davinci_manager \
    --device=/dev/devmm_svm \
    --device=/dev/hisi_hdc \
    -v /var/log/npu/:/usr/slog \
    -v /usr/local/sbin/npu-smi:/usr/local/sbin/npu-smi \
    -v /sys/fs/cgroup:/sys/fs/cgroup:ro \
    -v ${dir}:${container_work_dir} \
    --net=host \
    --name ${container_name} \
    ${image_id} \
    /bin/bash

    参数说明:

    • --device=/dev/davinci0,..., --device=/dev/davinci7:挂载NPU设备,示例中挂载了2张卡davinci6、davinci7。
    • -v ${dir}:${container_work_dir} 代表需要在容器中挂载宿主机的目录。宿主机和容器使用不同的大文件系统,dir为宿主机中文件目录,${container_work_dir}为要挂载到的容器中的目录。为方便两个地址可以相同。
      • 容器不能挂载到/home/ma-user目录,此目录为ma-user用户家目录。如果容器挂载到/home/ma-user下,拉起容器时会与基础镜像冲突,导致基础镜像不可用。
      • driver及npu-smi需同时挂载至容器。
      • 不要将多个容器绑到同一个NPU上,会导致后续的容器无法正常使用NPU功能。
      • 如果需要多个增量实例,每个增量都需要启动一个容器,只挂载对应的NPU
    • --name ${container_name}:容器名称,进入容器时会用到,此处可以自己定义一个容器名称。
    • {image_id} 为docker镜像的ID,即第四步中生成的新镜像id,在宿主机上可通过docker images查询得到。
  2. 进入容器
    docker exec -it -u ma-user ${container-name} /bin/bash
  3. 启动增量推理实例,命令如下。
    export GLOBAL_RANK_TABLE_FILE_PATH=global_ranktable_10.**.**.18.json
    export RANK_TABLE_FILE_PATH=local_rank_table_10.**.**.18_67.json
    
    export NODE_PORTS=8088,8089
    export USE_OPENAI=1
    
    sh AscendCloud-LLM/llm_tools/PD_separate/start_servers.sh \
        --model=${model} \
        --tensor-parallel-size=2 \
        --max-model-len=4096 \
        --max-num-seqs=256 \
        --max-num-batched-tokens=4096 \
        --host=0.0.0.0 \
        --port=8089 \
        --served-model-name ${served-model-name}

    其中环境变量说明如下:

    • GLOBAL_RANK_TABLE_FILE_PATH:global rank_table的路径,必选。不同实例类型的global rank_table均一致。
    • RANK_TABLE_FILE_PATH:local rank_table的路径,必选。当实例类型为全量推理实例或者增量推理实例,local rank_table配置local_ranktable_xx_yy.json文件,其中xx表示当前实例的IP地址,yy表示当前实例使用的device_id信息;当实例类型为服务入口实例,local rank_table配置local_ranktable_xx_host.json文件,其中xx表示当前实例的IP地址。
    • NODE_PORTS:仅在服务入口实例生效,用于与全量推理实例、增量推理实例的信息交互。该参数入参为形如{port1},{port2},{portn}的字符串,与全量/增量推理实例启动的--port参数相关,--port表示服务部署的端口。每个全量/增量推理实例基于配置的端口号(--port)启动服务,并按照global rank_table中的全量实例、增量实例的顺序,对全量推理实例、增量推理实例启动的端口号进行排序,端口之间用,(英文逗号)分隔开作为该环境变量的输入。
    • USE_OPENAI:仅在服务入口实例生效,用于配置api-server服务是否使用openai服务,默认为1。当配置为1时,启动服务为openai服务;当配置为0时,启动服务为vllm服务。

    其中常见的参数如下:

    • --host:服务部署的IP地址
    • --port:服务部署的端口,注意如果不同实例部署在一台机器上,不同实例需要使用不同端口号
    • --model:HuggingFace下载的官方权重
    • --max-num-seqs:同时处理的最大句子数量
    • --max-model-len:模型能处理的请求输入+输出的token长度
    • --max-num-batched-tokens:最多会使用多少token,必须大于或等于--max-model-len,推荐使用4096或8192
    • --tensor-parallel-size:模型并行数量
    • --served-model-name:openai服务的model入参名称,仅在环境变量`USE_OPENAI=1`时候生效。
    • --quantization:如果需要增加模型量化功能,启动推理服务前,先参考使用AWQ量化使用SmoothQuant量化使用GPTQ量化章节对模型做量化处理。
support.huaweicloud.com/bestpractice-modelarts/modelarts_llm_infer_91104.html