昇腾社区首页
中文
注册
开发者
下载

模型推理

  1. 若安装路径为默认路径,执行如下命令,进入MindIE安装目录。
    1
    cd /usr/local/Ascend/mindie/latest
    
  2. 确认目录文件权限是否如下所示,若存在不匹配项,则参考以下命令修改权限。
     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    chmod 750 mindie-service
    chmod -R 550 mindie-service/bin
    chmod 550 mindie-service/lib
    chmod 440 mindie-service/lib/*
    chmod 550 mindie-service/lib/grpc
    chmod 440 mindie-service/lib/grpc/*
    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 700 mindie-service/security
    chmod -R 700 mindie-service/security/*
    

    若文件权限不符合要求将会导致服务启动失败。

  3. 设置环境变量。

    运行以下命令初始化各组件环境变量,并开启日志打印。

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    # 配置CANN环境,默认安装在/usr/local目录下
    source /usr/local/Ascend/ascend-toolkit/set_env.sh
    # 配置加速库环境
    source /usr/local/Ascend/nnal/atb/set_env.sh
    # 配置模型仓环境变量
    source /usr/local/Ascend/atb-models/set_env.sh
    # MindIE
    source /usr/local/Ascend/mindie/latest/mindie-llm/set_env.sh
    source /usr/local/Ascend/mindie/latest/mindie-service/set_env.sh
    # 开启MindIE日志打印
    export MINDIE_LOG_TO_STDOUT="true"
    
  4. 配置服务化参数。
    1. 进入conf目录,打开“config.json”文件。
      1
      2
      cd mindie-service/conf
      vim config.json
      
    2. 按“i”进入编辑模式,根据实际情况修改“config.json”中的配置参数。(以下已Qwen2-7B为例,需要修改的配置参数已加粗)
       1
       2
       3
       4
       5
       6
       7
       8
       9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      {
          "ServerConfig" : 
           {
              "httpsEnabled" : true,
            },
          "BackendConfig" : 
          {
               "npuDeviceIds" : [[0,1,2,3]],
               "ModelDeployConfig" :
              {
                   "ModelConfig" : [
                      {
                        "modelName" : "qwen2-7b",
                         "modelWeightPath" : "权重路径",
                         "worldSize" : 4,
                         "trustRemoteCode": false
                  }
                  ]
              },
              }
      }
      

      如上的参数说明如下,更多“config.json”的参数说明请参考《MindIE LLM开发指南》中的“核心概念与配置 >配置参数说明(服务化)”章节

      配置项

      取值类型

      取值范围

      配置说明

      httpsEnabled

      bool

      • true(开启)
      • false(关闭)

      是否开启HTTPS通信安全认证。

      • true:开启HTTPS通信。
      • false:关闭HTTPS通信。

      如果网络环境不安全,不开启HTTPS通信,即“httpsEnabled”=“false”时,会存在较高的网络安全风险。

      npuDeviceIds

      std::vector<std::set<size_t>>

      根据模型和环境的实际情况来决定。

      表示启用哪几张卡。对于每个模型实例分配的npuIds,使用芯片逻辑ID表示。

      • 在未配置ASCEND_RT_VISIBLE_DEVICES环境变量时,每张卡对应的逻辑ID可使用"npu-smi info -m"指令进行查询。
      • 若配置ASCEND_RT_VISIBLE_DEVICES环境变量时,可见芯片的逻辑ID按照ASCEND_RT_VISIBLE_DEVICES中配置的顺序从0开始计数。

        例如:

        ASCEND_RT_VISIBLE_DEVICES=1,2,3,4

        则以上可见芯片的逻辑ID按顺序依次为0,1,2,3。

        多机推理场景下该值无效,每个节点上使用的npuDeviceIds根据ranktable计算获得。

      必填,默认值:[[0,1,2,3]]。

      modelName

      string

      由大写字母、小写字母、数字、中划线、点和下划线组成,且不以中划线、点和下划线作为开头和结尾,字符串长度小于或等于256。

      模型名称。

      必填,默认值:"llama_65b"。

      modelWeightPath

      std::string

      文件绝对路径长度的上限与操作系统的设置(Linux为PATH_MAX)有关,最小值为1。

      模型权重路径。

      程序会读取该路径下的config.json中torch_dtype和vocab_size字段的值,需保证路径和相关字段存在。

      必填,默认值:"/data/atb_testdata/weights/llama1-65b-safetensors"。

      该路径会进行安全校验,需要和执行用户的属组和权限保持一致。

      worldSize

      uint32_t

      根据模型实际情况来决定。每一套模型参数中worldSize必须与使用的NPU数量相等。

      启用几张卡推理。

      必填,默认值:4。

      trustRemoteCode

      bool

      • true
      • false

      是否信任远程代码。

      • false:不信任远程代码。
      • true:信任远程代码。

        选填,默认值:false。

        说明:

        如果设置为true,会存在信任远程代码行为,可能会导致恶意代码注入风险,请自行保障代码注入安全风险。

    3. 按“Esc”键,输入:wq!,按“Enter”保存并退出编辑。
  5. 启动服务。
    1. 执行如下命令,进入安装目录。
      1
      cd /usr/local/Ascend/mindie/latest/mindie-service
      
    2. 两种启动服务方法如下所示。
      • 方式一(推荐):使用后台进程方式启动服务。后台进程方式启动服务后,关闭窗口时进程也会保留。
        1
        nohup ./bin/mindieservice_daemon > output.log 2>&1 &
        

        在标准输出流捕获到的文件中,打印如下信息说明启动成功。

        1
        Daemon start success!
        
      • 方式二:直接启动服务。
        1
        ./bin/mindieservice_daemon
        

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

        1
        Daemon start success!
        
    • bin目录按照安全要求,目录权限为550,没有写权限,但执行推理过程中,算子会在当前目录生成kernel_meta文件夹,需要写权限,因此不能直接在bin启动mindieservice_daemon。
    • Ascend-cann-toolkit工具会在执行服务启动的目录下生成kernel_meta_temp_xxxx目录,该目录为算子的cce文件保存目录。因此需要在当前用户拥有写权限目录下(例如Ascend-mindie-server_{version}_linux-{arch}目录,或者用户在Ascend-mindie-server_{version}_linux-{arch}目录下自行创建临时目录)启动推理服务。
    • 如需切换用户,请在切换用户后执行rm -f /dev/shm/*命令,删除由之前用户运行创建的共享文件。避免切换用户后,该用户没有之前用户创建的共享文件的读写权限,造成推理失败。
    • 标准输出流捕获到的文件output.log支持用户自定义文件和路径。
  6. 发送请求。

    服务化API接口请参考《MindIE Motor开发指南》中的“服务化接口”章节

    用户可使用HTTPS客户端(Linux curl命令,Postman工具等)发送HTTPS请求,此处以Linux curl命令为例进行说明。

    重开一个窗口,使用以下命令发送请求。例如验证服务是否拉起:

    1
    2
    3
    4
    curl -H "Accept: application/json" -H "Content-type: application/json" -X POST -d '{
    "prompt": "My name is Olivier and I ",
    "max_tokens":10
    }' https://127.0.0.1:1025/generate
    

    回显如下则表明请求发送成功:

    1
    {"text":["My name is Olivier and I  25 years old. I am a French student"]}