MindSpore Models服务化使用
MindIE LLM不仅支持ATB Models,同时支持MindSpore作为框架后端,MindSpore Models覆盖MindFormers社区下的开源模型,模型列表和使用方式参考MindSpore Transformers。
权重转换
执行推理前,需将权重格式转为MindFormers所使用的格式(ckpt格式)。MindFormers提供了统一的权重转换工具,请参考权重格式转换。
mf_model └── qwen1_5_72b ├── config.json # 模型json配置文件 ├── vocab.json # 模型vocab文件,hf上对应模型下载 ├── merges.txt # 模型merges文件,hf上对应模型下载 ├── predict_qwen1_5_72b.yaml # 模型yaml配置文件 ├── qwen1_5_tokenizer.py # 模型tokenizer文件,从mindformers仓中research目录下找到对应模型复制 └── qwen1_5_72b_ckpt_dir # 模型分布式权重文件夹
predict_qwen1_5_72b.yaml需要关注以下配置:
load_checkpoint: '/mf_model/qwen1_5_72b/qwen1_5_72b_ckpt_dir' # 为存放模型分布式权重文件夹路径 use_parallel: True auto_trans_ckpt: False # 是否开启自动权重转换,离线切分设置为False parallel_config: data_parallel: 1 model_parallel: 4 # 多卡推理配置模型切分,一般与使用卡数一致 pipeline_parallel: 1 processor: tokenizer: vocab_file: "/mf_model/qwen1_5_72b/vocab.json" # vocab文件路径 merges_file: "/mf_model/qwen1_5_72b/merges.txt" # merges文件路径
模型的config.json文件可以使用save_pretrained接口生成,示例如下:
from mindformers import AutoConfig model_config = AutoConfig.from_pretrained("/mf_model/qwen1_5_72b/predict_qwen1_5_72b.yaml") model_config.save_pretrained(save_directory="./json/qwen1_5_72b/", save_json=True)
使用实例
运行MindSpore Models需配合服务化使用。
- 设置环境变量。
若安装路径为默认路径,可以运行以下命令初始化各组件环境变量。
# Ascend source /usr/local/Ascend/ascend-toolkit/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 # MindSpore export LCAL_IF_PORT=8129 # 组网配置 export MS_SCHED_HOST=127.0.0.1 # scheduler节点ip地址 export MS_SCHED_PORT=8090 # scheduler节点服务端口
若机器上有其他卡已启动MindIE,需要注意MS_SCHED_PORT参数是否冲突。若日志打印中该参数报错,替换为其他端口号重新尝试即可。
- 启动服务化并发送请求。
MindIE服务化使用方法请参考《MindIE Service开发指南》的“快速开始 > 启动服务”章节,服务化参数配置请参考《MindIE Service开发指南》的“MindIE Service组件 > MindIE Server > 配置参数说明”章节。
若要启用MindSpore Models作为模型后端,服务化配置中需将ModelDeployConfig.ModelConfig.backendType字段设置为"ms"。
vim /usr/local/Ascend/mindie/latest/mindie-service/conf/config.json # 修改ModelDeployConfig.ModelConfig.backendType "backendType": "ms"
服务化API接口请参考《MindIE Service开发指南》的“服务化接口”章节。
用户可使用HTTPS客户端(Linux curl命令,Postman工具等)发送HTTPS请求,此处以Linux curl命令为例进行说明。重开一个窗口,使用以下命令发送请求。
curl -H "Accept: application/json" -H "Content-type: application/json" -X POST --cacert {MindIE Server服务端证书的验签证书/根证书路径} --cert {客户端证书文件路径} --key {客户端证书私钥路径} -d '{"inputs": "I love Beijing, because","stream": false}' https://{ip}:{port}/generate
MindSpore场景下,请求体中的seed字段限制在[0, 2^32)范围内,若超过则按照默认值seed = 0设置。