AI开发平台MODELARTS-Bert基于DevServer适配MindSpore Lite 推理指导(6.3.910):准备推理环境

时间:2024-12-25 09:49:49

准备推理环境

  1. 安装transformers,用于转换模型和推理。
    pip install transformers==4.45.2
  2. 获取推理代码。
    cd ${container_work_dir} 
    unzip AscendCloud-CV-6.3.910-*.zip 
    cd Bert/bert_infer/mindspore_lite
  3. 获取bert-base-chinese模型文件。
    mkdir bert-base-chinese
    wget -P bert-base-chinese https://huggingface.co/google-bert/bert-base-chinese/resolve/main/pytorch_model.bin
    wget -P bert-base-chinese https://huggingface.co/google-bert/bert-base-chinese/resolve/main/config.json
    wget -P bert-base-chinese https://huggingface.co/google-bert/bert-base-chinese/resolve/main/tokenizer.json
    wget -P bert-base-chinese https://huggingface.co/google-bert/bert-base-chinese/resolve/main/tokenizer_config.json
    wget -P bert-base-chinese https://huggingface.co/google-bert/bert-base-chinese/resolve/main/vocab.txt
  4. pt模型转onnx模型。
    python pth2onnx.py ./bert-base-chinese/ ./bert_model.onnx
    python modify_onnx.py ./bert_model.onnx

    该转换脚本用于Fill-Mask 任务,若是其他类型任务请按实际场景修改转换脚本。

  5. onnx模型转mindir格式,执行如下命令,转换完成后会生成bert_model.mindir文件。
    converter_lite --fmk=ONNX --modelFile=bert_model.onnx --outputFile=bert_model --inputShape='input_ids:1,512;attention_mask:1,512;token_type_ids:1,512' --saveType=MINDIR --optimize=ascend_oriented

    动态seq_len场景下需要创建转换配置文件convert_config.ini,将如下内容写入配置文件:

    [acl_build_options]
    input_format="ND"
    input_shape="input_ids:1,-1;attention_mask:1,-1;token_type_ids:1,-1"
    ge.dynamicDims="50,50,50;100,100,100;150,150,150;200,200,200;250,250,250;300,300,300;350,350,350;400,400,400;450,450,450;512,512,512"

    其中input_shape中的-1表示设置动态seq_len,ge.dynamicDims表示支持的seq_len值,可根据实际业务场景选取要支持的seq_len,上面的配置表示模型的三个输入shape支持[1, seq_len],seq_len取值[50,100, …,450,512]。另外需要注意seq_len不能超过模型支持的最大值,本文中下载的bert模型seq_len最大支持512。关于动态batch配置说明详见:https://www.mindspore.cn/lite/docs/zh-CN/r2.3.0/use/cloud_infer/converter_tool_ascend.html

    使用如下转换命令:

    converter_lite --fmk=ONNX --modelFile=bert_model.onnx --outputFile=bert_model_dy --saveType=MINDIR --optimize=ascend_oriented --configFile=convert_config.ini

    使用converter_lite转换模型时,如果报E10001: Value [linux] for parameter [--host_env_os] is invalid. Reason: os not supported, support setting are the OS types of opp package。

    建议在启动容器镜像中通过docker run启动容器时,加上--privileged=true参数。

support.huaweicloud.com/bestpractice-modelarts/modelarts_aigc_bert_910.html