【MindSpore】Ascend(昇腾)310推理 | 实现步骤

简介:本文介绍在Ascend 310平台对MindSpore框架实现的网络进行推理的流程。以CV语义分割网络(HRNet)为例,使用的数据集是Cityscapes,数据文件为PNG图片。使用的中间原语为MindIR,数据格式为二进制流

建议:可以参考MindSpore ModelZoo master分支下的ResNet系列网络的310推理脚本,是一个不错的完整示例。

注:本文目前仅介绍基于MindIR和二进制流文件的310推理,其他方法随缘更新。仅涉及实际操作流程,具体原理请查阅其他资料。

总体流程

在这里插入图片描述

相关脚本

推理过程涉及到一下相关脚本:

  • export.py
  • preprocess.py
  • main.cc
  • postprocess.py

接下来分别介绍各个脚本的作用。

Export

这一步的工作是将训练得到的checkpoint文件和网络模型转换为MindIR。

相关脚本:export.py

输入:checkpoint文件

输出(*.mindir)位置:自定义

def main():
    """Export mindir for 310 inference."""
    parser = argparse.ArgumentParser("HRNet Semantic Segmentation exporting.")
    parser.add_argument("--device_id", type=int, default=0, help="Device ID. ")
    parser.add_argument("--checkpoint_file", type=str, help="Checkpoint file path. ")
    parser.add_argument("--file_name", type=str, help="Output file name. ")
    parser.add_argument("--file_format", type=str, default="MINDIR",
                        choices=["AIR", "MINDIR"], help="Output file format. ")
    parser.add_argument("--device_target", type=str, default="Ascend",
                        choices=["Ascend", "GPU", "CPU"], help="Device target.")

    args = parser.parse_args()

    context.set_context(mode=context.GRAPH_MODE, device_target=args.device_target)
    if args.device_target == "Ascend":
        context.set_context(device_id=args.device_id)
    # 将此前训练得到的checkpoint导入网络
    net = get_seg_model(config)
    params_dict = load_checkpoint(args.checkpoint_file)
    load_param_into_net(net, params_dict)
    net.set_train(False)
    # 构造一个推理时的模型输入
    height, width = config.eval.image_size[0], config.eval.image_size[1]
    input_data = Tensor(np.zeros([1, 3, height, width], dtype=np.float32))
    # 导出mindir文件
    export
### 在昇腾910B处理器上部署Qwen1.8B大模型的具体步骤和要求 在昇腾910B处理器上部署Qwen1.8B大模型需要遵循以下关键点,包括环境配置、软件安装以及推理引擎的使用等。 #### 1. 环境准备 为了确保兼容性,建议使用Python 3.9版本作为基础环境[^2]。创建一个独立的Conda虚拟环境以避免依赖冲突: ```bash conda create --name myenv python=3.9 conda activate myenv ``` #### 2. 安装昇腾AI处理器配套软件包 昇腾910B的推理和训练功能依赖于华为提供的昇腾AI处理器配套软件包。这些软件包包含必要的驱动程序和工具链,用于支持昇腾硬件设备的运行。具体安装命令如下: ```bash pip install mindspore-ascend pip install ascend-toolkit ``` #### 3. 部署Qwen1.8B模型 Qwen1.8B模型可以通过MindSpore框架加载并运行。以下是具体的加载和推理代码示例: ```python import numpy as np from mindspore import Tensor, context from mindspore.train import load_checkpoint, load_param_into_net from mindspore.models.qwen import Qwen # 设置运行上下文为Ascend后端 context.set_context(device_target="Ascend", device_id=0) # 加载Qwen1.8B模型权重 model = Qwen() param_dict = load_checkpoint("qwen_1.8b.ckpt") load_param_into_net(model, param_dict) # 推理测试 input_ids = Tensor(np.array([[1, 2, 3, 4]]), dtype=mindspore.int32) output = model(input_ids) print(output) ``` #### 4. 使用MindIE推理加速套件 为了进一步优化推理性能,可以使用华为提供的MindIE(Mind Inference Engine)推理加速套件[^3]。该套件通过分层开放AI能力,能够显著提升昇腾910B上的推理效率。以下是启用MindIE的步骤: - 安装MindIE相关依赖: ```bash pip install mindie ``` - 修改推理代码以适配MindIE接口: ```python from mindie.engine import InferenceEngine # 初始化推理引擎 engine = InferenceEngine(model_path="qwen_1.8b.ms") # 执行推理 input_data = {"input_ids": np.array([[1, 2, 3, 4]], dtype=np.int32)} output = engine.infer(input_data) print(output) ``` #### 5. 注意事项 - **算子兼容性**:昇腾910B可能存在某些算子瓶颈,特别是在处理复杂的大模型时。如果遇到性能问题,可以尝试优化模型结构或替换不兼容的算子[^1]。 - **第三方库限制**:部分第三方库如`bitsandbytes`和`Xformers`尚未原生支持Ascend NPU,因此在训练和微调阶段可能会受到一定限制[^1]。 - **硬件差异**:昇腾910B与910A在性能表现上存在差异,尤其是在浮点运算方面。建议根据实际需求选择合适的硬件型号。 ### 总结 通过上述步骤,可以在昇腾910B处理器上成功部署Qwen1.8B大模型,并利用MindIE推理加速套件优化性能。同时,需注意算子兼容性和第三方库的支持情况。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值