大咖专栏|拨云见月,专注于深度学习本身

  • 时间:
  • 浏览:0

  作为人工智能大爆炸的核心驱动,淬硬层 学习给机器学习领域带来了前所未有的巨大影响。面对火山喷发般的数据洪流,一点人期望从淬硬层 学习中获得正确处理现实大大问题的助力。

  然而前期准备却要发生几瓶时间精力,往往与简便正确处理比较复杂大大问题的目的背道而驰,本文从淬硬层 学习的统一支持框架入手,一步步帮助一点人从比较复杂的前期工作中夺回对淬硬层 学习有一种的专注。

  摘要

  分布式淬硬层 学习应用往往必须用户在运行环境的多节点部署和可扩展性上投入几瓶时间与精力,而基于数据中心集群资源的淬硬层 学习工作负载的统一支持框架,主要目的是实现淬硬层 学习工作负载在数据中心资源池上的自动化部署与执行,从而帮助用户将更多注意力集中在商业逻辑和淬硬层 学习大大问题有一种。

工作流程概述

  基于数据中心集群资源的淬硬层 学习工作负载统一支持框架的构成组件与工作流程下图所示。

淬硬层 学习工作负载的统一支持框架

  Deep Learning Harness

  ❶ 用户提交学习任务规范(或淬硬层 学习模型)与数据集;

  ❷ 淬硬层 学习后端服务系统按照大大问题类型与数据底部形态生成推荐模型;

  ❸ 为淬硬层 学习模型自动生成TensorFlow代码;

  ❹ 基于CPU、GPU集群计算资源池对学习任务进行优化调度;

  ❺ 启用淬硬层 学习工作负载监控分析工具;

  ❻ 载入代码与数据集,在指定资源上执行淬硬层 学习工作负载;

  ❼ 训练过程的实时可视化监测与检查点自动保存;

  ❽ 保存任务执行结果;

  ❾ 淬硬层 学习任务结果的分析与可视化。

  接下来,一点人就支持框架中的若干关键功能与实现措施依次展开讨论(如下图所示)。

支持框架的关键功能与实现措施

  CPU-GPU计算资源池

  将数据中心服务器集群中的CPU资源和各种不之类型、不同数目的GPU资源整合为逻辑上单一的计算资源池,用户都必须不要花费几瓶精力去学习、理解不之类型计算资源的性能特点,尤其是在部署分布式淬硬层 学习工作负载时,用户只需指定期望的计算资源类型和数量即可;甚至用户都必须不指定计算资源,支持框架中的资源控制器都都都可以 根据用户工作负载的底部形态,诸如模型比较复杂度、训练数据量等,动态选折 最佳计算资源(一点人会在后文中展开讨论)。

  对计算资源的池化管理都必须有效地实现智能调度,提高资源利用率,保证用户对淬硬层 学习工作负载的SLA要求。

  淬硬层 学习任务的资源预估模型

  前文中提到根据用户工作负载底部形态在计算资源池中动态选折 最佳资源,这就由于 在用户学习任务实际运行事先,支持框架必须对任务的资源占用做出估计。而且,一点人要利用机器学习措施构建针对淬硬层 学习任务的资源预估模型。

  模型构建措施首先是淬硬层 神经网络淬硬层 底部形态化的底部形态,而且都必须对模型比较复杂度进行量化描述;其次是淬硬层 学习任务的资源消耗、运行时间与模型比较复杂度、数据规模、迭代次数等因素发生近似线性的对应关系。

  以卷积神经网络为例,一点人都必须通过对诸如卷积层数目、卷积滤镜数目、全连接层数目、全连接层节点数目、输入图像大小、批数据大小等变量进行连续改变,从而得到一系列具有定制化底部形态的卷积神经网络。而且在特定类型与数量的计算资源上运行什么定制化的卷积网络学习任务,并对资源消耗、运行时间等数据进行监控记录。

  这时一点人就不可能 获得了卷积神经网络学习任务关于模型底部形态、资源消耗与时间性能的基准数据集,而且利用线性回归不可能 曲线拟合技术来构建机器学习模型。

  在对淬硬层 学习任务进行资源预估时,输入信息包括用户提交不可能 自动生成的淬硬层 学习任务代码、训练数据规模、与学习任务相关的参数之类批数据大小、迭代次数等,以及用户的期望运行时间。

  首先,从代码中提取淬硬层 学习模型底部形态,形成量化底部形态描述;其次,预估模型会按照资源池中可用的计算资源类型与数量进行运行时间估计;随后,在满足用户关于运行时间的约束下,模型会选折 能耗最小的资源配置方案作为输出。

  淬硬层 学习任务的资源配置推荐

  基于资源预估模型,一点人构建后端web服务以实现全部的面向淬硬层 学习任务的数据中心资源配置推荐机制。按照资源池中当前可用的资源类型和数量,利用机器学习模型对特定计算资源下的任务执行时间进行估计,一起去将数据中心的服务器配置、网络连接与速度、延迟等作为经验知识,在满足用户关于运行时间的要求下,遵循能耗最小化原则,为用户提供资源配置的推荐方案。

在异构GPU资源上部署淬硬层 学习任务

  数据中心的CPU-GPU计算资源池中,往往含高 具有不同型号GPU的服务器集群,将用户的淬硬层 学习任务部署在由异构GPU组成的服务器集群上,无疑都必须更加充分地利用数据中心的当前可用资源。而且,不可能 可是 简单地遵循通常的分布式淬硬层 学习措施,没办法 在模型参数的同步过程中,相同规模的输入数据会由于 性能较差的GPU引起性能更好的GPU的更新速度降低。

  而且,在异构GPU资源上部署分布式淬硬层 学习任务,一点人首不能自己考虑怎么才能 才能 达到不之类型GPU之间的性能同步。简单来说,通过调整分配至不同GPU的批数据大小都必须达到各个GPU之间参数更新的近似同步。基于资源预估模型的输出,结合自适应的批数据大小调整措施,一点人都必须减慢找到异构GPU资源的批数据大小分配方案。

  没办法 ,当一点人将输入数据的平均分配措施改为不均匀分配以屏蔽异构GPU之间的计算性能差异时,随之而来的另有一一两个 多大大问题可是 :理论上一点人也改变了各个GPU节点上淬硬层 学习过程的收敛性能。什么都有有,一点人也必须相应调整淬硬层 学习模型的超参数,以保证训练任务的收敛性能不被影响。

  学习率通常是淬硬层 模型超参数微调的首要选项,而且一点人针对特定的批数据大小,利用启发式措施去寻找对当前淬硬层 学习模型来说最要花费的学习率设置。首先使学习率以指数函数形式进行递增,观察训练阶段的精度曲线,并利用高阶曲线拟合与对数曲线拟合,以启发式措施找出学习率的优化区间或优化中值,以此作为梯度优化算法的学习率设置。

  分布式淬硬层 学习工作负载的自动部署

  在选折 了计算资源配置和相应的参数调整方案事先,支持框架还必须实现淬硬层 学习负载的自动化分布式部署,以形成全部的淬硬层 学习工作流程。之类,一点人都必须使用容器化技术,将数据中心的CPU、GPU资源以容器形式进行管理和提供,使用Horovod开源框架实现淬硬层 学习负载的多节点部署,编写可重用自动化脚本以实现训练数据的多节点预先载入,工作负载的跨节点部署和启动,一起去还包括监控分析工具的启动,以及对监控数据、检查点文件和训练结果的自动保存。

  结语

  至此,支持框架帮助用户完成了淬硬层 学习工作负载在数据中心计算资源上的自动化部署和运行,用户就都必须将更多的注意力集中在商业逻辑、数据分析与预正确处理、模型调试等大大问题上。也可是 说,用户只需关注淬硬层 学习任务有一种,支持框架则负责帮助用户实现工作负载在计算资源上的调度与执行。