权重转换
执行推理前,需将权重格式转为MindFormers所使用的格式(ckpt格式)。MindFormers提供了统一的权重转换工具。
以Qwen2.5-72B为例,转换后的模型权重目录结构如下:
mf_model
└── qwen2_5_72b
├── config.json # 模型json配置文件
├── vocab.json # 模型vocab文件,hf上对应模型下载
├── merges.txt # 模型merges文件,hf上对应模型下载
├── predict_qwen2_5_72b.yaml # 模型yaml配置文件
├── qwen2_5_tokenizer.py # 模型tokenizer文件,从mindformers仓中research目录下找到对应模型复制
└── qwen2_5_72b_ckpt_dir # 模型分布式权重文件夹
权重转换之后,需要进行权重切分。切分后生成“qwen2_5_72b_ckpt_dir”文件夹。
predict_qwen2_5_72b.yaml需要关注以下配置:
load_checkpoint: '/mf_model/qwen2_5_72b/qwen2_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/qwen2_5_72b/vocab.json" # vocab文件路径
merges_file: "/mf_model/qwen2_5_72b/merges.txt" # merges文件路径
模型的config.json文件可以使用save_pretrained接口生成,示例如下:
from mindformers import AutoConfig
model_config = AutoConfig.from_pretrained("/mf_model/qwen2_5_72b/predict_qwen2_5_72b.yaml")
model_config.save_pretrained(save_directory="./json/qwen2_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参数是否冲突。若日志打印中该参数报错,替换为其他端口号重新尝试即可。
-
启动服务化并发送请求。
-
若要启用MindSpore Models作为模型后端,服务化配置中需将ModelDeployConfig.ModelConfig.backendType字段设置为"ms"。
-
vim /usr/local/Ascend/mindie/latest/mindie-service/conf/config.json # 修改ModelDeployConfig.ModelConfig.backendType "backendType": "ms" -
用户可使用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设置。