昇思25天学习打卡营第8天 | 静态图加速
有些变量可能后续不会再被引用了,可以释放内存,在动态图系统中由于无法感知到后续图的结构,因此就必须保留下来(除非手动释放),导致显存占用一般会大于静态图。每次都需要重新建图,在计算效率上不如静态图,静态图是一次建图,后续永远都是在这个建图结果的基础上进行计算的。动态图是完全的边建图边计算,注意到是完全,完全,完全!由于动态图需要每次重新建图,导致其无法在嵌入式设备上进行部署(1是效率问题,2是嵌入
今天是第8天,学习了静态图加速。
动态图便于调试,适用于模型构建实验阶段
静态图执行高效,节省模型训练时间
动态图转换为静态图的实现方式有两种:
基于追踪转换 :以动态图模式执行并记录调度的算子,构建和保存为静态图模型。
基于源码转换 :分析前端代码来将动态图代码自动转写为静态图代码,并在底层自动帮用户使用静态图执行器运行。
动态图的优点:
更容易调试。
动态计算更适用于自然语言处理。(自然语言处理的输入往往不定长)
动态图更面向对象编程。
动态图边建图边计算,也即是每一次的模型训练都会进行重新建图和计算,这意味着:系统无法感知整个动态图模型的全局信息。
有些变量可能后续不会再被引用了,可以释放内存,在动态图系统中由于无法感知到后续图的结构,因此就必须保留下来(除非手动释放),导致显存占用一般会大于静态图。每次都需要重新建图,在计算效率上不如静态图,静态图是一次建图,后续永远都是在这个建图结果的基础上进行计算的。这个就类似于解释性语言(如python)和编译性语言(如C和C++)的区别。
由于动态图需要每次重新建图,导致其无法在嵌入式设备上进行部署(1是效率问题,2是嵌入式设备通常不具有网站的建图运行时,只支持推理模式),通常需要其以某种形式转化为静态图的参数后,通过静态图部署。
动态图是完全的边建图边计算,注意到是完全,完全,完全!重要的事情说三遍,这意味着在动态图里面的自动求导过程也是边建图边计算完成了。对于静态图而言,建图是一次性完成的,计算可以在这个建好的计算图上反复进行。




鲲鹏昇腾开发者社区是面向全社会开放的“联接全球计算开发者,聚合华为+生态”的社区,内容涵盖鲲鹏、昇腾资源,帮助开发者快速获取所需的知识、经验、软件、工具、算力,支撑开发者易学、好用、成功,成为核心开发者。
更多推荐

所有评论(0)