报告摘要:
许多TensorFlow用户购买GPU来加速工作负载。但是,由于各种原因,人工智能集群中的GPU使用率通常非常低。在研发环境中,请求GPU实例的用户将大量时间花费在编码上,而无需在服务器上运行任何GPU工作负载。这是昂贵的GPU资源的极大浪费。 此次报告提供了解决此问题的高效且弹性的GPU共享系统的概述。它检测GPU API调用并在必要时分配GPU资源,并在没有工作负载运行时自动检索它们。将此方案与Kubernetes结合使用,可以在CPU盒上成功运行编码和编辑,以及在远程GPU实例上进行调试和执行。这种弹性系统极大地改善了GPU群集的使用。由于系统将GPU API调用转发到远程GPU服务器,因此Pengfei和Lingling在应用程序执行中引入了额外的延迟。为了缓解性能问题,他们进行了一些优化,以使TensorFlow在系统上更有效地运行。考虑到TensorFlow确实实现了memcpy和GPU内核的异步启动,他们稍微改变了重要CUDA API的行为,并在虚拟化层中使其功能保持正确,以使本地CPU和远程GPU异步运行。这种方法掩盖了大量的网络延迟,并且获得了2倍以上的加速。他们还修改了TensorFlow框架,以在远程执行中使用其他CUDA流,与在本地运行模式下使用多个CUDA流相比,它在系统上显示出更多的性能提升。在某些情况下,更改CPU和GPU节点之间的图形分区算法以最小化CPU和远程GPU服务器之间的数据移动也带来了好处。由于在系统中使用了远程存储,因此他们还使用GPU来直接访问远程SSD,以避免将数据复制到CPU节点。 构建这样的弹性GPU平台还需要一组经过修改的GPU监视和调试软件。他们的系统包括功能强大的配置文件部分,可以从本地和远程服务器收集配置文件数据,并在Web客户端中将其可视化。他们修改了TensorFlow框架,并使用NVIDA工具扩展(NVTX)库插入了一些标签,从而使更改后的框架可以在常规GPU机器及其系统上运行。这些标签为他们提供了一些有用的信息,例如关键运算符的开始和结束。它们可以与其他概要分析数据一起在Web客户端中可视化。 随着AI加速器的计算能力快速增长和网络速度提高,Pengfei和Lingling认为,将这些加速器集中在一起并通过网络提供服务是未来的趋势。他们正在将软件部署到研发环境中,并计划开放部分或全部解决方案的源代码,以便他们的框架可以与任何AI加速器一起使用,而不仅仅是GPU。
嘉宾介绍: Pengfei Fan是阿里云的高级异构计算工程师。 在此之前,他曾在NVIDIA从事GPU计算架构的研究。 Pengfei致力于为异构基础架构设计和实现虚拟化和调度系统,以加速AI应用程序并改善硬件使用。
Lingling Jin是阿里巴巴(Alibaba)的高级经理,她专注于异构基础架构,以加速AI应用程序并改善硬件使用。 之前,她是NVIDIA Compute Architecture Group的成员。 她在加州大学里弗赛德分校获得博士学位。