昇腾Ascend 随记 —— TensorFlow 模型迁移

文章目录

    • 一、为什么要做模型迁移
    • 二、了解两种模型迁移方式
    • 三、TensorFlow AI 模型自动迁移详解
      • 1. 模型自动迁移步骤
    • 四、TensorFlow AI 模型手工迁移详解
      • 1. 为什么要进行 络迁移
      • 2. 迁移流程
      • 3. Estimator 迁移要点
        • ① Estimator迁移
        • ② 使用Estimator进行训练脚本开发的一般步骤
        • ③ Estimator 迁移的详细步骤
      • 4. Session Run 迁移要点
        • ① Sess.run 迁移
        • ② 使用 Sess.run API 进行训练脚本开发的一般步骤
        • ③ Sess.run 迁移的详细步骤

一、为什么要做模型迁移

目前人工智能领域内,AI算法模型搭建方面的技艺已经是炉火纯青,市面上用于AI模型搭建的深度学习框架,除了华为开源的昇思MindSpore,还有Google的TensorFlow、Facebook的PyTorch、Caffe等。

但是AI模型训练却是一个漫长的过程,随着模型参数量、样本的增多,训练一个模型动辄以月为单位,此时一款高性能AI处理器简直是雪中送炭。昇腾910 AI处理器是华为在2019年发布的人工智能(AI)专用的神经 络处理器,其算力高达256T,最新款算力高达310T,是业界主流处理器算力的2倍,基于昇腾910 AI处理器的昇腾系列硬件,比如Atlas 800训练服务器,算力更是大到惊人,此时你一定跃跃欲试了。

除了昇思MindSpore外,TensorFlow等其他深度学习框架下的模型并不能直接在昇腾910 AI处理器上训练,为了使其充分利用昇腾910 AI处理器的澎湃算力来提升训练性能,我们需要借助异构计算架构CANN的Plugin适配层转换,使转换后的模型能够高效运行在昇腾910 AI处理器上。值得庆幸的是,目前,CANN已经能够支持多种主流AI框架,包括昇思MindSpore、TensorFlow、PyTorch、飞浆、ONNX等,并且开发者只需要非常少的改动,即可快速搞定算法移植,大大减少切换平台的代价。

下面的课程中,我们主要以TensorFlow模型迁移和训练为例进行介绍。

二、了解两种模型迁移方式

将TensorFlow 络模型迁移到昇腾AI处理器执行训练,主要有两种方式:

  1. 一种是 自动迁移 方式。通过迁移工具对原始脚本进行AST语法树扫描,可自动分析原生的TensorFlow API在昇腾AI处理器上的支持度,并将原始的TensorFlow训练脚本自动迁移成昇腾AI处理器支持的脚本,对于无法自动迁移的API,可以参考工具输出的迁移 告,对训练脚本进行相应的适配修改。

  2. 一种是 手工迁移 方式。算法工程师需要人工分析TensorFlow训练脚本中的API支持度情况,并且参照文档逐一手工修改不支持的API,以便在昇腾AI处理器上训练,该种方式较为复杂,我们建议大家优先使用自动迁移方式。

三、TensorFlow AI 模型自动迁移详解

自动迁移是通过工具对原始脚本进行AST语法树扫描,可自动分析原生的TensorFlow API在昇腾AI处理器上的支持度,并将原始的TensorFlow训练脚本自动迁移成昇腾AI处理器支持的脚本,对于无法自动迁移的API,可以参考工具输出的迁移 告,对训练脚本进行相应的适配修改。

相关学习文档,请点击:LINK

1. 模型自动迁移步骤

1. 下载和安装软件

软件 址:第三方框架适配-昇腾 区 (hiascend.com)

① 迁移工具在 “tfplugin” 安装目录 目录下。

② 了解工具的使用限制

3. 准备脚本和数据集

① 准备脚本和数据集

4. 使用工具迁移

① 安装相关依赖

② 训练脚本扫描和自动迁移

5. 训练前准备

执行单Device训练-自动迁移和训练-TensorFlow 络模型迁移和训练-模型开发-5.1.RC2.alpha007-CANN 区版本-文档首页-昇腾 区 (hiascend.com)

① 将迁移后的脚本拷贝到训练路径

② 训练前,对照文档准备运行环境、ranktable 文件,并配置必要的环境变量

6. 启动训练

① 启动 shell 脚本,拉起训练进程

四、TensorFlow AI 模型手工迁移详解

手工迁移需要算法工程师人工分析TensorFlow训练脚本中的API支持度情况,并且参照文档逐一手工修改不支持的API,以便在昇腾AI处理器上训练,该种方式较为复杂,我们建议大家优先使用自动迁移方式。

相关学习文档:LINK

在线实验:LINK

更多学习课程:LINK(请观看第一章内容,可不关注ModelArts训练部分的介绍,后续课程会有讲解)

1. 为什么要进行 络迁移

Ascend910 是华为在2019年发布的人工智能(AI)专用的神经 络处理器(NPU),其算力高达256T,最新款算力高达320T,是业界主流芯片算力的2倍,默认配套Mindspore训练框架。当前业界大多数训练脚本基于TensorFlow的PyhonAPI开发,默认运行在CPU/GPU/TPU。为了使其能够在 Ascend910 上利用NPU的澎湃算力执行训练,提升训练性能,我们需要对训练 络脚本进行少量的迁移适配工作。当前 Ascend910 上支持TensorFlow的三种API开发的训练脚本迁移:分别是Estimator,Sess.run,Keras。

2. 迁移流程

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2022年10月6日
下一篇 2022年10月6日

相关推荐