AI Compiler

百度

秋招面试时遇到高铁柱前辈。问了相关的问题(对AI专业的人可能是基础知识)

  1. nvcc编译器不好用吗?为什么要开发tvm之类的编译器?
    1. 答:首先,nvcc是类似与gcc, msvc(Microsoft Visual C++) 之类的传统的编译器,支持的是CUDA C/C++ 代码。
    2. 但是tvm编译器是张量编译器,支持的是python之类的代码,将其中的网络设计,编译拆解成各种算子,然后使用cudnn或者特定硬件的高效机器码来执行。

蔚来

数字信号处理器 (Digital signal processor)

HLO 简单理解为编译器 IR。

TVM介绍

https://tvm.apache.org

  1. TVM解决的问题:
    1. 2017年,deploy Deep learning(TF,Pytorch) everywhere(hardware).
    2. Before TVM,
      1. 手动调优:loop tiling for locality.
      2. operator fusion 算子融合。虽然性能高,但是部署不高效
  2. 编译优化思路引入深度学习
    1. 定义了算子描述到部署空间的映射。核心是感知调度空间,并且实现compute/schedule 分离
  3. TVM当前的发展
    1. 上层计算图表示:NNVM Relay Relax
    2. 底层优化方式:manual -> AutoTVM(schedule最优参数的搜索,基于AI的cost model) -> Ansor(也不再需要手动写AutoTVM模版,使用模版规则生成代码)
  4. TVM的额外工作
    1. HeteroCL: TVM + FPGA


  1. output Fusion
    1. 减少Global Memory Copy

把中间算子库替换成编译器?

暂时不好支持张量

AI自动调整变化来调优

自动调参。缺点:

  1. 需要人工写模版
  2. 人工导致解空间变小

随机各级循环应用优化策略(并行,循环展开,向量化

介绍了Ansor效果很好

需要进一步的研究学习

暂无

遇到的问题

暂无

开题缘由、总结、反思、吐槽~~

参考文献

AI Image

AI tag

https://www.bilibili.com/video/BV1L84y1z7bH/?spm_id_from=333.999.0.0&vd_source=5bbdecb1838c6f684e0b823d0d4f6db3

https://aitag.top/

novelAI

官网要钱,有泄漏的50G的模型,B站有up抽取了其中的一个做了整合包

不知道,会不会有版权问题下架了。

1
2
https://pan.baidu.com/s/1AAHoNYYano6q7XBl3luCcg
upqn

常见问题(环境RTX3070 8G)

  1. 6G、8G显存生成太慢的问题已经修复
    1. 百度盘里已经上传了修复包,请下载并且替换hydra_node里所有文件
    2. 然后6G显存请使用6g的bat文件 等于8G或者以上的直接使用start.bat
  2. 网址是 127.0.0.1:6969
  3. CTRL+C 好像才能启动?
    1. RTX3070 大概20s一张

可以把start.bat改成sh脚本在实验室A100上跑

参考文献

作者:秋葉aaaki https://www.bilibili.com/read/cv19038600?spm_id_from=333.788.b_636f6d6d656e74.7 出处:bilibili

Code Migration And Alignment

导言

  • 越靠近一线的研发,更会忙碌于开源代码/特性的迁移工作。
  • 原因主要在于客户发现了效果好的开源成果,就觉得没有复用门槛,反过来催促开发快点实现。
  • 读论文也是为了更好的理解迁移的代码,而较少关注其原理

无论是把 PyTorch代码 迁移到其他框架(e.g.,MindSpore),还是把将代码继承到All IN ONE 框架(e.g., MindSpeed-MM),都经常遇到如下头大的问题:

  1. 一行行代码理解迁移速度太慢,并且要理解的非重要、不相关内容太多。
  2. 一股脑先移植过来,总是遇到channel对不上、触发算子计算维度限制条件 等问题。
  3. 训练推理流程打通之后,也会遇到精度不对齐的问题。

原始的解决办法就是在计算流程上打印关键数据的变化,找到是开始出现了差异(非预期)地方,使用起来非常不方便:

  1. 需要手动加print;
  2. 需要肉眼对比打屏信息;

想寻找/开发一个python工具DataDiffer/TensorDiffer:

  1. 比如通过装饰器等方法,跟踪函数内,指定变量的变化;
  2. 包括shape,tensor内前5个非0值,
  3. 支持将变化信息保存到文件,方便后续对比;
Read more