模型推理
- 若安装路径为默认路径,执行如下命令,进入MindIE安装目录。
1cd /usr/local/Ascend/mindie/latest
- 确认目录文件权限是否如下所示,若存在不匹配项,则参考以下命令修改权限。
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/*
若文件权限不符合要求将会导致服务启动失败。
- 设置环境变量。
运行以下命令初始化各组件环境变量,并开启日志打印。
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"
- 配置服务化参数。
- 进入conf目录,打开“config.json”文件。
1 2
cd mindie-service/conf vim config.json
- 按“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
是否信任远程代码。
- 按“Esc”键,输入:wq!,按“Enter”保存并退出编辑。
- 进入conf目录,打开“config.json”文件。
- 启动服务。
- 执行如下命令,进入安装目录。
1cd /usr/local/Ascend/mindie/latest/mindie-service
- 两种启动服务方法如下所示。
- 方式一(推荐):使用后台进程方式启动服务。后台进程方式启动服务后,关闭窗口时进程也会保留。
1nohup ./bin/mindieservice_daemon > output.log 2>&1 &
在标准输出流捕获到的文件中,打印如下信息说明启动成功。
1Daemon start success!
- 方式二:直接启动服务。
1./bin/mindieservice_daemon
回显如下则说明启动成功。
1Daemon 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支持用户自定义文件和路径。
- 执行如下命令,进入安装目录。
- 发送请求。
服务化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"]}