昇腾社区首页
中文
注册

MindIE Motor服务化使用

限制与约束

当用户使用多模态理解模型在服务化推理且输入输出序列为长序列时,可能会由于超出NPU内存限制而推理失败,导致服务化出现core dump问题。若遇到这种情况,需要先手动结束服务化进程,再重新拉起服务化。

为了避免多模态模型推理失败,需要对服务化参数和并发数进行限制。以Atlas 800I A2 推理服务器(64G)8卡,输入tokens=16384,输出tokens=2048场景为例,需要使用以下服务化参数进行配置。当用户使用的序列更长时,可以适当下调并发数。

模型名称

maxPrefillTokens

npuMemSize

最大并发数

Qwen2-VL-72B

16384

30

40

Qwen2.5-VL-72B

16384

30

40

InternVL2.5-78B

16384

20

35

操作步骤

以Qwen2-VL模型为例,执行服务化推理步骤如下:

  1. 进入容器。
    docker exec -it {docker_name} bash
  2. 安装相关配套以后,设置环境变量,以下为使用MindIE镜像场景时的默认安装路径。
    # 配置CANN环境,默认安装在/usr/local目录下
    source /usr/local/Ascend/ascend-toolkit/set_env.sh
    # 配置加速库环境
    source /usr/local/Ascend/nnal/atb/set_env.sh
    # 配置MindIE环境变量
    source /usr/local/Ascend/mindie/latest/mindie-service/set_env.sh
    # 配置模型仓环境变量
    source /usr/local/Ascend/atb-models/set_env.sh
  3. 安装模型的第三方依赖,注意根据模型名称选择正确的requirements文件进行安装,确保第三方依赖安装正确。
    pip install -r /usr/local/Ascend/atb-models/requirements/models/requirements_{model}.txt
  4. 设置配置文件。
    vim /usr/local/Ascend/mindie/latest/mindie-service/conf/config.json

    请重点关注并根据实际情况,修改配置文件中的参数(加粗),参数说明请参见配置参数说明(服务化)

    “httpsEnabled”表示是否开启HTTPS协议。设为“True”表示开启HTTPS协议,此时需要配置双向认证证书;设为“False”表示不开启HTTPS协议。推荐开启HTTPS协议,并参见《MindIE Motor开发指南》中的“MindIE Motor组件 > MindIE Motor Tools > CertTools”章节,配置开启HTTPS通信所需服务证书、私钥等证书文件。

    配置文件config.json示例如下:

    {
        ...
        "ServerConfig" :
        {
            ...
            "port" : 1040,
            "managementPort" : 1041,
            ...
            "httpsEnabled" : true,
            ...
        },
     
    "BackendConfig": {
        ...
        "npuDeviceIds" : [[3]],
        ...
        "ModelDeployConfig":
        {
            ...
            "ModelConfig" : [
                {
                    "modelInstanceType": "Standard",
                    "modelName" : "qwen2-vl",
                    "modelWeightPath": "/data/datasets/qwen-2vl/",
                    "worldSize" : 1,
                    ...
                    "npuMemSize" : 8,
                    ...
                    "trustRemoteCode": true,
                }
            ]
        },
        ...
        }
    }
  5. 拉起服务进程。
    cd /usr/local/Ascend/mindie/latest/mindie-service/bin
    ./mindieservice_daemon
  6. 发起请求,其他请求样例可参考《MindIE Motor开发指南》中的“服务化接口 > EndPoint业务面RESTful接口”章节,注意在请求侧不要配置网络代理。
    请求样例如下:
    POST https://{ip_address}:{port}/v1/chat/completions 
    {
        "model": "{model_name}",
        "messages": [
            {"role": "system", "content":[{"type": "text", "text": "You are a helpful assistant"}]},
            {"role": "user",
             "content": [{"type": "image_url", "image_url": "demo.png"},
                 {"type": "text", "text": "Generate the caption in English:"}]}],
        "max_tokens": 512,
        "presence_penalty": 1,
        "frequency_penalty": 1,
        "temperature": 1,
        "top_p": 1,
        "top_k": 0.0001
    }

    “model”和“image_url”参数的取值请根据实际情况进行修改。

  7. 服务化拉起成功,如下图所示:

  8. 服务化启动推理成功,如下图所示: