SageMaker算法如何推动机器学习民主化系统支持高效更新、并行化及稳定扩展。某机构SageMaker是一项云服务让客户能够快速、轻松地构建机器学习模型并部署在云端。它包含一套标准的机器学习算法如k-means聚类、主成分分析、神经主题建模和时间序列预测。在上周举行的数据系统领域重要会议SIGMOD/PODS上我与同事们描述了支撑这些算法的系统设计。基于云的机器学习模型运行的上下文环境很少是静态的。随着新的训练数据可用或出现新的用例模型通常需要更新有些模型甚至每小时都需要更新。然而仅在新数据上重新训练模型可能会侵蚀模型先前获得的知识。在新旧数据的组合上重新训练模型可以避免这个问题但这可能非常耗时。SageMaker的系统设计有助于解决这一僵局。它还使得模型训练的并行化更易实现并且能更高效地优化模型的“超参数”——即模型的结构性特征其变化会影响性能。例如在神经网络中超参数包括网络层数、每层节点数以及网络的学习率等特征。模型超参数的最佳设置因任务而异而为特定任务调整超参数通常是一个繁琐的试错过程。我们的系统设计通过区分模型和模型状态来解决这些问题。在此上下文中状态是模型迄今所见数据的一个执行摘要。以一个简单例子说明假设一个模型正在计算输入数字流的运行平均值。模型的状态将包括它所见所有数字的总和以及数量。如果模型存储此状态那么当新一周有新的数字流到来时它只需继续递增这两个值无需重新添加已见过的数字。当然大多数机器学习模型执行的任务比简单平均复杂得多状态必须捕获的信息也因任务而异例如它可以包括从所见数据中提取的代表性样本。使用SageMaker我们为支持的每种机器学习算法确定了独立的状态变量。跟踪状态的优势之一是模型稳定性。状态的大小是固定的模型可能看到越来越多的数据但状态对数据的摘要始终占用相同的内存空间。这意味着模型训练的时间和系统资源成本与新训练数据量成线性关系。如果训练时间呈超线性增长足够大量的数据可能导致训练超时而失败。平均的例子还说明了系统的另一个方面它需要在流式数据上运行。也就是说每个训练样本可能只被看到一次并且样本序列可能在任意点中断。在任何这样的中断点它都应该能综合所学内容生成一个有效且最新的模型。分布式状态我们的系统支持这种学习范式。但它也能在标准的机器学习设置中完美运行即将训练样本分成固定大小的批次模型多次遍历同一训练集直到其性能停止提升。当系统并行训练模型时每个并行处理器会收到自己的一份状态副本并在本地更新。为了同步本地存储的状态更新我们使用了一个名为参数服务器的开源框架。同步调度同样是算法特定的。例如使用k-means聚类和主成分分析时给定的处理器在完成所有计算之前无需向参数服务器报告其状态更新。而对于神经网络这种训练涉及寻找全局最优解的任务则需要更频繁地进行同步。正如状态的数据摘要能够高效地重新训练模型一样它们也能高效地估算不同超参数设置对模型性能的影响。这就是SageMaker能够自动化超参数调优的原因。在论文中我们报告了将系统与相同机器学习技术的一些标准实现进行比较的实验结果。我们发现平均而言我们的方法在资源效率上要高得多。例如对于线性学习器一种学习线性模型如线性回归和多类分类的算法我们的方法使并行化效率提高了八倍。而对于用于数据点聚类的k-means聚类技术我们的方法使训练效率提高了近十倍。实际上在我们的实验中大于100GB的数据集导致现有实现崩溃。FINISHED更多精彩内容 请关注我的个人公众号 公众号办公AI智能小助手或者 我的个人博客 https://blog.qife122.com/对网络安全、黑客技术感兴趣的朋友可以关注我的安全公众号网络安全技术点滴分享