极市导读
当前,各式各样深度学习框架的发展充分赋能机器学习,尤其是深度学习领域,为开发者提供了极致便利。在本文中,Waymo 软件工程师 Lin Yuan 细数了二十一世纪以来深度学习框架的发展历程,并划分为了石器、青铜、铁器、罗马和工业化时代。 >>加入极市CV技术交流群,走在计算机视觉的最前沿
基于编译器的算子(operator)优化。如今,许多操作符内核都是通过手动或第三方库实现的,比如 BLAS、CuDNN、OneDNN 等,这些库针对特定的硬件平台。当模型被训练或部署在不同的硬件平台上时,这会造成很大的开销。此外,新的深度学习算法的增长速度往往比这些库的迭代速度快得多,这使得这些库常常不支持新的算子。深度学习编译器,如 Apache TVM、MLIR、Facebook Glow 等,已经提出了在任何硬件后端上有效优化和运行计算的建议。它们可以作为深度学习框架的整个后端。
统一的 API 标准。许多深度学习框架共享类似但略有不同的用户 api。这给用户从一个框架切换到另一个框架带来了困难和不必要的学习曲线。虽然大多数机器学习从业者和数据科学家都熟悉 NumPy库,但在新的深度学习框架中,NumPy API 自然会成为 tenor 操作 API 的标准。我们已经看到快速发展的框架 JAX 受到了用户的热烈欢迎,它的 api 完全与 NumPy 兼容。
数据搬运作为一等公民。多节点或多设备训练正在成为深度神经网络训练的规范。最近开发的深度学习框架,如 OneFlow,从设计的第一天起就将这一观点纳入设计考虑,并将数据通信视为模型训练的整体计算图的一部分。这为性能优化打开了更多的机会,而且由于它不需要像以前的深度学习框架那样维护多种训练策略(单设备 vs 分布式训练),因此除了提供更好的性能之外,它还可以提供更简单的用户界面。
推荐阅读