CNCC2020_贾志豪_Automated Discovery of Machine Learning Optimizations

遇到的挑战:

  1. 如何找到最优的并行方案,不同并行方案的效率有很大差别?

  2. 新的平台一直出现,如何快速适应新的算子、平台?

如何自动生成对机器学习算法的优化?

  1. 计算图方面的优化;

  2. 并行的优化;

  3. 不同平台的优化;
    在这里插入图片描述

团队在计算图上的优化:

什么是计算图优化?

  1. 这个图和指令流图类似;
    在这里插入图片描述
  2. 定义一些运算规则对图进行优化,比如算子融合;(规则很复杂,目前有500+)
    在这里插入图片描述

计算图优化存在的问题?

  1. 问题:鲁棒性问题,因为平台比较多,优化得可能不好;
    在这里插入图片描述

  2. 问题:扩展性问题,不断地有新的硬件平台和算子出现;
    在这里插入图片描述

  3. 问题:性能,采用程序优化很难有针对性,错失一些优化机会;
    在这里插入图片描述

  4. 举例:先把简单算子复杂化,然后会出现合并的机会;

    1. 即使如此,对于有些平台,可能优化后的图性能会更差,因此很难将其添加到优化规则中;
      在这里插入图片描述
  5. 总结,图优化的复杂性;
    在这里插入图片描述

解决办法?

  1. 不手工去定义规则,用程序优化;而是提供一种方法,自动地优化,并评估优化后的质量;

    1. 好处,减少代码量;
    2. 好处,可以带来最佳三倍的性能提升;
      在这里插入图片描述
  2. 什么是图替换?

    1. 图的等价性,即优化前和优化后的图是等价的,执行的结果相同;
      在这里插入图片描述
  3. TASO 的工作流程:

    1. 先输入硬件平台的算子集合;

    2. 由图替换生成器,生成可能的替换规则;

    3. 由图替换验证器,验证图替换规则的正确性;

    4. 正确的图替换规则,会添加到图替换规则中;
      在这里插入图片描述

  4. 如何生成可能的替换规则,如何验证替换规则的正确性?

    1. 利用图指纹技术生成可能的替换规则;

    2. 利用算子描述和定理证明器,验证替换规则的正确性;
      在这里插入图片描述

  5. 图替换规则生成器;

    1. 根据硬件平台支持的算子,枚举所有可能出现的图;

    2. 由于枚举空间过大,只考虑有限规模的图,比如四个算子的图;
      在这里插入图片描述

    3. 四个算子的图一共由66M个,考虑等价性,如果一一对比,则平方关系,复杂性高;利用图指纹技术产生随机化的输入,相同输入的输出一致,则图等价;(类似于FM的一致性验证)错了 是相同输入的输出不一致,则图必然不等价,只考虑输出结果一致的图;
      在这里插入图片描述

    4. 下一步,要验证对任意输入的等价性,包括可以使用数学逻辑等;
      在这里插入图片描述

    5. 可以利用自动的图定理证明器,证明图替换规则的等价性;
      在这里插入图片描述

    6. 即便是新增加了算子,也只需要根据算子为图定理证明器定义一些规则,就可以自动的进行验证;
      在这里插入图片描述

  6. 图优化器,考虑使用哪些替换规则;

    1. 主要基于每个算子的开销(硬件上测量),以评估图的开销;

    2. 根据算子,重新把过程跑一遍,大概只需要10分钟;
      在这里插入图片描述

  7. 该方法的优化效果;

    1. 标准测试集能够达到近似的效果;

    2. 而对于新的结构,还没有被完全手工优化,因此效果比较好;
      在这里插入图片描述

未来:

  1. 考虑是否可以将TASO基于图的优化,和TVM基于算子的优化结合起来;

  2. TASO好像是开源的,可以体验一下;
    在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_41754258/article/details/112505531
今日推荐