1 引言
目前,使用较多的深度学习框架是tPyTorch和Tensorflow。近些年来,由华为开发的mindspore框架也逐渐火热起来。
当前,为了适应国产化的需要,有不少的项目也选用了mindspore来进行模型的构建和训练。但有些时候,需要将离线推理项目迁移到mindspore上。
不过,将离线推理项目迁移到到mindspore上,有时会遇到这样的问题:
- 项目代码使用torch/tensorflow框架,模型已经训练好,原有的训练数据已经删除,再次训练几乎不可能
- 相较于训练设备,推理设备并不好获得;或者推理设备性能不足以支持项目进行离线推理
后文将以torch转mindspore为例,来对这种问题相关经验进行介绍与分享。
2 基础介绍
2.1 PyTorch
2.1.1 PyTorch 介绍
PyTorch是一个开源的Python机器学习库,基于Torch,底层由C++实现,目前在人工智能领域有着广泛的应用。
2.1.2 PyTorch优势
- 简洁:PyTorch的设计追求最少的封装,尽量避免重复造轮子。不像 TensorFlow 中充斥着session、graph、operation、name_scope、variable、tensor、layer等全新的概念,PyTorch 的设计遵循tensor→variable(autograd)→nn.Module 三个由低到高的抽象层次,分别代表高维数组(张量)、自动求导(变量)和神经网络(层/模块),而且这三个抽象之间联系紧密,可以同时进行修改和操作。
- 速度:PyTorch 的灵活性不以速度为代价,在许多评测中,PyTorch 的速度表现胜过 TensorFlow和Keras 等框架。
- 易用:PyTorch 是所有的框架中面向对象设计的最优雅的一个。PyTorch的面向对象的接口设计来源于Torch,而Torch的接口设计以灵活易用而著称,Keras作者最初就是受Torch的启发才开发了Keras。
- 活跃的社区:PyTorch 提供了完整的文档,循序渐进的指南,作者亲自维护的论坛,供用户交流和求教问题。Facebook 人工智能研究院对 PyTorch 提供了强力支持。
2.2 Mindspore
MindSpore是端边云全场景按需协同的华为自研AI计算框架,提供全场景统一API,为全场景AI的模型开发、模型运行、模型部署提供端到端能力。
MindSpore采用端-边-云按需协作分布式架构、微分原生编程新范式以及AI Native新执行模式,实现更好的资源效率、安全可信,同时降低行业AI开发门槛、释放昇腾芯片算力,助力普惠AI。
3 总体流程
要将原先torch上的离线推理项目迁移到mindspore上,一般来讲,总体需要以下三个流程:
后面的文章也主要围绕这三个部分来进行介绍
离线推理项目迁移至mindspore(二)——模型加载
离线推理项目迁移至mindspore(三)——代码迁移