配置MindIE-Server

前提条件

MindIE-Server对于Python的环境要求为Python3.10,如果环境中的Python3.10不是默认版本,需要参考如下方法添加环境变量(Python路径根据实际路径进行修改)。

export LD_LIBRARY_PATH=/usr/local/python3.10.13/lib:$LD_LIBRARY_PATH
export PATH=/usr/local/python3.10.13/bin:$PATH

软件包文件清单

MindIE-Server软件包Ascend-mindie-service_{version}_linux-{arch}.run解压后包含的文件如表1所示。

表1 文件清单

目录

文件

说明

bin

ibis

model wrapper的输入管理模块Python文件存放目录,该目录下的文件仅由model_wrapper模块调用,无需用户手动执行。

utils

model wrapper的Python工具类文件存放目录,该目录下文件仅由model_wrapper模块调用,无需用户手动执行。

infer_engine-0.0.1-py3-none-any.whl

benchmark Python接口包。

llm_engine_test

性能测试工具。

mindieclient-{version}-py3-none-any.whl

MindIE-Client工具安装包。

mindieserver_backend_connector

进程间通信模块。

mindieservice_daemon

主程序。

model.py

模型匹配文件。该文件仅由推理服务主进程调用,无需用户手动执行。

ock_hntc-{version}-cp310-cp310-linux_{arch}.whl

加速库模型安装包。

seceasy_encrypt

加密工具。

standard_model.py

普通推理模型。该文件仅由model wrapper模块调用,无需用户手动执行。

standard_model_mock.py

普通推理的假模型。该文件仅由model wrapper模块调用,无需用户手动执行。

tokenizer.py

文本和token id的互转工具。该文件仅由推理服务主进程调用,无需用户手动执行。

version

版本信息。

conf

config.json

配置文件。

include

backend

头文件。

sdk

头文件。

lib

libconfig_manager.so

推理服务so文件。

libcrypto.so

libhse_authorization.so

libhse_cryption.so

libmindieserver_backend.so

libmindieserver_common.so

libmindieservice_endpoint.so

libmindieserver_engine.so

libmindieserver_ibis.so

libssl.so

logs

-

日志文件。

scripts

config_mindie_server_tls_cert.py

密钥口令加密工具。

security

ca

根证书目录。

certs

服务证书和服务证书吊销列表目录。

keys

服务证书私钥目录。

pass

密钥口令加密文件目录。

操作步骤

  1. 组件包的默认路径在MindIE的子路径下/usr/local/Ascend/mindie/latest/mindie-service。

    chmod +x ./Ascend-mindie-service_{version}_linux-{arch}.run
    ./Ascend-mindie-service_{version}_linux-{arch}.run --install(--install-path=${用户指定路径})
    cd /usr/local/Ascend/mindie/latest/

  2. 执行以下命令,修改软件安装文件用户,以准备安装用户创建的安装用户为例。

    chown -R username:username mindie-service

  3. 执行以下命令,修改软件安装文件权限。

    chmod 750 mindie-service
    chmod -R 550 mindie-service/bin
    chmod -R 550 mindie-service/lib
    chmod -R 550 mindie-service/include/
    chmod -R 550 mindie-service/scripts/
    chmod 750 mindie-service/logs
    chmod 750 mindie-service/conf
    chmod 640 mindie-service/conf/config.json
    chmod 750 mindie-service/security/
    chmod -R 700 mindie-service/security/*

  4. 根据用户需要设置配置参数。

    1. 进入conf目录,打开“config.json”文件。
      cd ../conf
      vim config.json

      配置文件config.json格式如下。

      {
          "OtherParam":
          {
              "ResourceParam" :
              {
                  "cacheBlockSize" : 128,
                  "preAllocBlocks" : 4
              },
              "LogParam" :
              {
                  "logLevel" : "Info",
                  "logPath" : "/logs/mindservice.log"
              },
              "ServeParam" :
              {
                  "ipAddress" : "127.0.0.1",
                  "port" : 1025,
                  "maxLinkNum" : 300,
                  "httpsEnabled" : true,
                  "tlsCaPath" : "security/ca/",
                  "tlsCaFile" : ["ca.pem"],
                  "tlsCert" : "security/certs/server.pem",
                  "tlsPk" : "security/keys/server.key.pem",
                  "tlsPkPwd" : "security/pass/mindie_server_key_pwd.txt",
                  "kmcKsfMaster" : "tools/pmt/master/ksfa",
                  "kmcKsfStandby" : "tools/pmt/standby/ksfb",
                  "tlsCrl" : "security/certs/server_crl.pem"
              }
          },
          "WorkFlowParam":
          {
              "TemplateParam" :
              {
                  "templateType": "Standard",
                  "templateName" : "Standard_llama",
                  "pipelineNumber" : 1
              }
          },
          "ModelDeployParam":
          {
              "maxSeqLen" : 2560,
              "npuDeviceIds" : [[0,1,2,3]],
              "ModelParam" : [
                  {
                      "modelInstanceType": "Standard",
                      "modelName" : "llama_65b",
                      "modelWeightPath" : "/data/atb_testdata/weights/llama1-65b-safetensors",
                      "worldSize" : 4,
                      "cpuMemSize" : 5,
                      "npuMemSize" : 8,
                      "backendType": "atb"
                  }
              ]
          },
          "ScheduleParam":
          {
              "maxPrefillBatchSize" : 50,
              "maxPrefillTokens" : 8192,
              "prefillTimeMsPerReq" : 150,
              "prefillPolicyType" : 0,
      
              "decodeTimeMsPerReq" : 50,
              "decodePolicyType" : 0,
      
              "maxBatchSize" : 200,
              "maxIterTimes" : 512,
              "maxPreemptCount" : 200,
              "supportSelectBatch" : false,
              "maxQueueDelayMicroseconds" : 5000
          }
      }
    2. 按“i”进入编辑模式,根据用户需要修改配置参数,参数详情请参见MindIE-Service开发指南中的快速开始 > 参数说明章节。
      • 如果网络环境不安全,不开启https通信,即“httpsEnabled”=“false”时,会存在较高的网络安全风险。
      • “modelWeightPath”参数配置路径下的{modelWeightPath}/config.json文件,需保证其用户组和用户名与当前用户一致,并且为非软链接,文件权限不高于640。
    3. 按“Esc”键,输入“:wq!”,按“Enter”保存并退出编辑。

  5. (可选)若开启了https认证(“httpsEnabled”=“true”,默认开启),则将对应证书文件拷贝到默认目标路径,并对config.json文件进行配置,详情如下。

    证书文件

    默认目标路径

    备注

    开启https后是否必选

    根证书

    软件包解压目录/security/ca/。

    支持多个CA证书。

    开启https后必选。

    服务证书

    软件包解压目录/security/cert/。

    -

    开启https后必选。

    服务证书私钥

    软件包解压目录/security/keys/。

    支持私钥文件加密场景。

    开启https后必选。

    服务证书吊销列表

    软件包解压目录/security/cert/。

    -

    可选。

    1. 打开“config.json”文件。
      vim config.json
    2. 按“i”进入编辑模式。
      • 将根证书名称配置到config.json文件的“tlsCaFile”根证书名称列表中。
      • 修改其他证书文件对应参数的值,使证书文件名与config.json文件中的保持一致。
    3. 按“Esc”键,输入:wq!,按“Enter”保存并退出编辑。
    4. 执行以下命令,修改证书文件的用户和权限。
      chown -R HwHiAiUser:HwHiAiUser mindie-service/security
      chmod 400 mindie-service/security/ca/*
      chmod 400 mindie-service/security/cert/*
      chmod 400 mindie-service/security/keys/*
      chmod 400 mindie-service/security/cert/*

  6. (可选)进入软件包安装目录,切换安装用户,对加密私钥文件的密钥进行加密存储。

    su HwHiAiUser
    python3 scripts/config_mindie_server_tls_cert.py 软件包解压目录

    证书文件

    默认目标路径

    是否必选

    备注

    密钥口令加密文件目录

    软件包解压目录/security/pass/。

    若服务证书私钥文件启用了密钥加密,必选。

    服务证书私钥文件的加密密钥,由“软件包解压目录/security/config_mindie_server_tls_cert.py”脚本生成。

    KMC密钥库文件

    软件包解压目录/tools/pmt/master/。

    若服务证书私钥文件启用了密钥加密,必选。

    “软件包解压目录/scripts/config_mindie_server_tls_cert.py”脚本生成。

    KMC密钥库文件备份文件

    软件包解压目录/tools/pmt/standby/。

    若服务证书私钥文件启用了密钥加密,必选。

    “软件包解压目录/scripts/config_mindie_server_tls_cert.py”脚本生成。

  7. 准备环境配置文件。

    1. 直接使用安装后的mindie-service软件包中的环境变量。

      set_env.sh环境配置文件如下所示,详情请参见MindIE-Service开发指南中“附录 > 环境变量”章节。

      • 样例是llama-65b的环境变量,请用户根据实际的模型设置环境变量。
      • 为避免安装和使用时容器不一致或用户不一致导致服务不能正常使用,建议在set_env.sh中添加以下三个环境变量:
        source /usr/local/Ascend/ascend-toolkit/set_env.sh                                 # CANN
        source /usr/local/Ascend/mindie/latest/mindie-rt/mindie-atb/set_env.sh             # ATB
        source /home/package/atb_models/set_env.sh                                         # atb_models路径
      path="${BASH_SOURCE[0]}"
      mies_path=$(cd $(dirname $path); pwd )
      export MIES_INSTALL_PATH=${mies_path}/latest
      export LD_LIBRARY_PATH=${MIES_INSTALL_PATH}/lib:${LD_LIBRARY_PATH}
      export PYTHONPATH=${MIES_INSTALL_PATH}/bin:${PYTHONPATH}
      export PYTHONDONTWRITEBYTECODE=1             # 服务启动会在bin目录下生成__pycache__目录,bin目录没有写入权限,需要关闭生成__pycache__目录
      export MIES_CONTINUOUS_BATCHING=1
      export ATB_OPERATION_EXECUTE_ASYNC=1
      export TASK_QUEUE_ENABLE=1
      export HCCL_BUFFSIZE=120
      
      # 运行时日志
      export ASCEND_SLOG_PRINT_TO_STDOUT=0
      export ASCEND_GLOBAL_LOG_LEVEL=3
      export ASCEND_GLOBAL_EVENT_ENABLE=0
      
      # 加速库日志
      export ATB_LOG_TO_FILE=0
      export ATB_LOG_TO_FILE_FLUSH=0
      export ATB_LOG_TO_STDOUT=0
      export ATB_LOG_LEVEL=ERROR
      
      # 模型库日志
      export ASDOPS_LOG_TO_FILE=0
      export ASDOPS_LOG_TO_STDOUT=0
      export ASDOPS_LOG_LEVEL=ERROR
      
      # OCK后处理日志
      export OCK_LOG_LEVEL=ERROR
      export OCK_LOG_TO_STDOUT=0
      
      # Python日志
      export MIES_PYTHON_LOG_TO_FILE=0
      export MIES_PYTHON_LOG_TO_STDOUT=0
      export MIES_PYTHON_LOG_PATH=/workspace/log/pythonlog.log
      export MIES_PYTHON_LOG_LEVEL=INFO
    2. 按“i”进入编辑模式,拷贝7.a中的环境变量配置内容,并根据实际情况进行修改。
    3. 按“Esc”键,输入:wq!,按“Enter”保存并退出编辑。

  8. 将模型权重文件拷贝到4.a中模型配置参数“modelWeightPath”指定的目录下。

    cp 模型权重文件所在路径 /data/atb_testdata/weights/llama1-65b-safetensors

  9. 切换到运行用户,加载环境变量。

    su HwHiAiUser
    source set_env.sh

  10. 启动服务。启动命令需在/{MindIE安装目录}/latest/mindie-service目录中执行。

    ./bin/mindieservice_daemon

    Ascend-cann-toolkit工具会在执行服务启动的目录下生成kernel_meta_temp_xxxx目录,该目录为算子的cce文件保存目录。因此需要在当前用户拥有写权限目录下(例如Ascend-mindie-service_{version}_linux-{arch}目录,或者用户在Ascend-mindie-service_{version}_linux-{arch}目录下自行创建临时目录)启动推理服务。

    回显如下则说明启动成功。

    Daemon start success!

    使用推理服务化组件时,请参考MindIE-Service开发指南快速开始 > 参数说明 > 性能调优章节配置最优性能。