读数据自助服务实践指南:数据开放与洞察提效13模型训练服务
1.1. 如果洞察是机器学习模型,则需要进行模型训练
1.2. 典型的数据科学家在训练过程中会探索数百个模型组合,以找到最准确的模型
1.3. 探索包括尝试机器学习算法、超参数值和数据特征的不同排列组合
1.4. 挑战
1.4.1. 随着数据集大小不断扩大和复杂的深度学习模型数量不断增长,训练可能需要几天甚至几周的时间
1.4.1.1. 在由CPU和专用硬件(如GPU)组成的服务器群中管理训练编排并非易事
1.4.2. 模型参数和超参数值的最优值的迭代调整依赖于暴力搜索
1.4.3. 对于数据不断变化的场景,需要对模型进行持续训练
1.4.3.1. 用于持续训练的机器学习管道需要以自动化的方式进行管理,以便在没有人工干预的情况下持续地对模型进行重新训练、验证和部署
1.5. 用于持续训练的机器学习管道需要以自动化的方式进行管理,以便在没有人工干预的情况下持续地对模型进行重新训练、验证和部署
1.6. 理想情况下,通过部署前自动化训练和部署后持续训练,模型训练服务可以缩短训练耗时
1.7. 对于持续训练,服务使用新数据来训练模型,与当前模型相比验证其准确性,并相应地触发新训练模型的部署
1.8. 自动化模型训练平台
1.8.1. 谷歌的TensorFlow Extended
1.8.2. Airbnb的Bighead
1.8.3. Uber的Michelangelo
1.8.4. Amazon的SageMaker
1.8.5. 谷歌云的AutoML
1.9. 模型训练本身就很费时,会影响整体的洞察耗时
1.9.1. 训练时间和训练后模型的质量在准确性、鲁棒性、性能和偏差方面需要权衡
1.9.2. 模型训练服务旨在消除由于分布式训练、自动调优和持续训练的临时方法,而导致在管理训练时出现的意外复杂性
1.9.3. 对于具有大量数据和使用复杂的机器学习模型的部署来说,该服务是不可或缺的
2. 路线图2.1. 在模型部署到生产中之前,模型训练和验证是一个迭代过程
2.2. 在构建阶段,根据训练结果,数据用户可以回到数据发现和准备阶段,探索不同的特征组合,以开发更精确的模型
2.3. 模型原型设计
2.3.1. 数据科学家探索不同的模型组合,包括特征组合、模型参数和超参数值,以找到解决业务问题的最佳模型
2.3.2. 数据集分成训练集和测试集
2.3.2.1. 首先使用数据样本的训练集对模型进行训练,然后使用测试数据集中的未知样本对模型进行评估
2.3.3. 在实验环境中,数据用户通常更喜欢使用在短时间内训练的近似模型来进行初步验证和测试,而不是等待大量时间来获得一个经过更好训练但参数调优较差的模型
2.4. 持续训练
2.4.1. 在模型部署到生产环境中之后,数据会不断变化
2.4.2. 要么手动对新数据进行训练并部署模型,要么自动对新数据进行训练,然后自动部署得到的模型
2.4.3. 目标是确保数据不断变化时获得最高的准确性
2.4.4. 在线学习,它根据收到的每个请求更新一个模型,即服务模型就是训练模型
2.4.5. 在重新训练期间,将新模型部署到生产环境中之前,需要以自动化的方式验证其质量并与现有模型进行比较
2.4.5.1. 重新训练可以提高不同数据段的准确度
2.4.6. 更常见的是批量更新模型,通过在更新前对数据和模型进行验证,以确保生产安全
2.5. 模型调试
2.5.1. 模型在生产中可能表现不好:数据质量差、特征管道不正确、数据分布偏斜、模型过拟合等
2.5.2. 调试模型性能需要根据模型的依赖项来了解模型的沿袭
2.5.3. 数据科学家可以通过理解、调试和调优模型来实现模型可视化
3. 最小化训练耗时3.1. 原因
3.1.1. 数据集大小不断增长和深度学习模型的复杂性导致了模型的内在复杂性,这增加了每次训练迭代的时间
3.1.1.1. 在模型训练中,选择正确的特征(特征工程)、模型参数值以及超参数值的过程是迭代的,这要求数据科学家具备必需的专业知识
3.1.2. 在训练和调优模型时,即席查询脚本命令可能会产生意外的复杂性
3.1.2.1. 对于机器学习库、工具、模型类型和底层硬件资源的不同组合,模型的训练过程是非标准的且各不相同
3.2. 缩短训练耗时的重点是应用自动化以消除意外的复杂性
3.3. 如今,模型在训练过程中所用的时间主要耗费在训练编排、调优和持续训练上
3.4. 训练编排
3.4.1. 训练编排包括为模型特征创建训练数据集、为训练在异构硬件环境中分配计算资源,以及优化训练策略
3.4.2. 过去,训练是由数据科学家在单机上进行的
3.4.3. 随着数据集大小不断增长,且训练可能需要几天甚至几周的时间,因此需要将训练分散到多台机器上
3.4.4. 创建训练数据集需要创建用于获取与模型中每个特征对应的训练数据的管道
3.4.4.1. 训练中的资源分配需要利用CPU和GPU的底层硬件组合
3.4.4.2. 考虑到训练的迭代性质,不需要从头开始
3.4.4.3. 优化技术(如迁移学习)利用自动化的方式加快训练过程
3.4.4.4. 如果碰到任务是手动的和非标准的情况,它们就会变成既耗时又不理想的方式
3.5. 调优
3.5.1. 模型参数和超参数值通过调优来生成最准确可靠的模型
3.5.2. 模型参数是学习属性,用于定义直接从训练数据(例如,回归系数和决策树分割位置)导出的单个模型
3.5.3. 在每次训练迭代结束时,使用各种度量来评估模型的准确度
3.6. 持续训练
3.6.1. 模型需要根据数据的变化而不断更新
3.6.1.1. 一个关键指标是模型的新鲜度(模型反映新数据的速度),这可以确保高质量的推理
3.6.2. 方式
3.6.2.1. 在每个新样本上更新模型(称为在线训练);
3.6.2.2. 通过创建数据滑动窗口定期更新模型,并使用窗口函数(类似于流式分析)重新训练模型
3.6.3. 重新训练模型包括跟踪数据更改以及仅针对更改进行选择性迭代
3.6.4. 如今,作业编排框架不具备数据感知能力,无法只选择重新运行具有新数据的管道
3.6.5. 在实践中,更常见的是批量更新模型,在更新前对数据和模型进行验证,以确保生产安全
3.6.6. 常见的情况
3.6.6.1. 反馈数据点可能主要属于某一类别,导致出现模型倾斜问题
3.6.6.2. 学习率太高,导致模型忘记最近发生的一切(称为灾难性干扰)
3.6.6.3. 模型训练结果可能过拟合或欠拟合
3.6.6.4. 正则化可能太低或太高
3.6.7. 鉴于新数据的到达是高度不规则的,管道架构需要检测新输入的存在并相应地触发新模型的生成
3.6.8. 如果新数据在预定的管道执行后出现,则连续管道不能有效地实现按预定的时间间隔重复执行一次性管道,可能需要多个时间间隔才能生成新模型,这在生产环境中可能是不可接受的
4. 定义需求4.1. 规范细节
4.1.1. 模型类型
4.1.2. 模型和超参数值
4.1.3. 数据源引用
4.1.4. 特征DSL表达式
4.1.5. 持续训练计划
4.2. 数据用户可以使用Web UI、API或notebook明确训练的详细信息并查看结果
4.3. 训练编排
4.3.1. 对于数据用户使用的机器学习库和工具,没有通用的解决方案
4.3.2. 训练环境和模型类型很多,模型训练环境既可以在云上,也可以在数据科学家的本地机器中
4.3.3. TensorFlow是一个流行的深度学习框架,用于解决广泛的机器学习和深度学习问题,如图像分类和语音识别
4.3.3.1. PyTorch、Keras、MXNet、Caffe2、Spark MLlib、Theano等
4.3.4. 对于非深度学习,Spark MLlib和XGBoost是最受欢迎的选择
4.3.5. 对于深度学习,Caffe和TensorFlow应用最为广泛
4.3.6. 模型
4.3.6.1. 使用回归模型预测数量
4.3.6.2. 使用分类模型预测类别
4.3.6.3. 使用异常检测模型预测异常值、欺诈值和新值
4.3.6.4. 使用降维模型探索特征和关系
4.3.6.5. 使用聚类模型发现数据结构
4.3.7. 一种流行的替代分类法是基于学习风格的分类法,它将算法分为有监督学习、无监督学习和强化学习
4.3.7.1. 深度学习是有监督学习的变体,用于回归和分类
4.3.7.2. 与大多数经过良好调优和具备特征工程的传统机器学习技术相比,深度学习因其更高的精准度更加受欢迎
4.3.8. 模型的可理解性是机器学习生产部署的一个重要标准
4.4. 调优
4.4.1. 调优是一个迭代过程
4.4.1.1. 在每次迭代结束时,对模型的准确度进行评估
4.4.2. 曲线下面积(AUC)、精度、召回率、F1、混淆矩阵
4.4.3. 调优需求的另一个方面是优化模型的成本和时间
4.4.3.1. 自动调优并行探索模型参数和超参数的多个组合
4.4.3.2. 考虑到云计算资源的丰富性,很容易增加组合方式的数量
4.5. 持续训练
4.5.1. 持续管道的一个关键指标是模型新鲜度
4.5.2. 个性化软件产品体验需要模型能根据产品特征的敏捷性在几天或几周内得到优化
4.5.3. 在线学习会在每个新样本上更新模型,当预计数据分布会随时间变化或数据是时间函数(如股票价格)时,在线学习也适用
4.5.4. 使用在线学习的另一种情况是当数据不适合放入内存时,可以连续使用增量新样本来微调模型权重
4.6. 非功能性需求
4.6.1. 可扩展
4.6.1.1. 随着企业的发展,训练服务的规模必须扩大,以支持更大的数据集和更多的模型
4.6.2. 成本
4.6.2.1. 训练的计算成本非常高,优化相关成本势在必行
4.6.3. 自动监控和告警
4.6.3.1. 需要监控持续训练管道,以检测生产问题并自动生成告警
5. 实现模式5.1. 分布式训练编排模式
5.1.1. 自动化资源编排、作业调度和优化训练工作流
5.1.2. 分布式训练编排模式能自动化模型训练过程,目标是优化多个其他训练作业所需的时间和资源
5.1.3. 训练在使用迁移学习等技术进行优化的机器集群上运行
5.1.4. 资源编排
5.1.4.1. 训练可以在同一台机器内或跨不同机器的计算内核(CPU和GPU)之间分布,通常在可用硬件内核上使用不同的策略来划分训练
5.1.4.2. 同步训练,使所有worker在不同的输入数据片上同步训练,并在每一步累积梯度
5.1.4.3. 异步训练,所有worker在输入数据上独立训练并异步更新变量
5.1.5. 作业编排
5.1.5.1. 对于训练,需要计算特征数据集或从特征存储中获取特征数据集
5.1.5.2. 训练被定义为作业的有向无环图(DAG)
5.1.6. 训练优化
5.1.6.1. 训练通常使用训练数据集中的数据样本来进行
5.1.6.2. 对于每个训练样本,通过反向传播反馈来细化模型系数,并应用优化来加快训练过程
5.1.7. Google的TFX
5.1.7.1. TFX是可扩展的,且开箱即用地支持Airflow和Kubeflow,也可以向TFX添加其他工作流引擎
5.1.8. Apache Beam是一个可以在多个执行引擎上运行的统一编程模型
5.1.9. 分布式训练编排模式的优势在于它能够通过分布处理加快训练,以尽可能地优化训练
5.1.10. 该模式的缺点在于它集成有限的机器学习库、工具和硬件
5.1.11. 随着数据集大小的增长,这种模式会考验场景实现
5.2. 自动调优模式
5.2.1. 自动调优模型参数和超参数
5.2.2. 自动调优最初的定义来源于调优模型参数和超参数
5.2.3. 进化算法
5.2.4. Auto Gluon
5.2.5. Auto-WEKA
5.2.6. auto-sklearn
5.2.7. TPOT
5.2.8. AutoML
5.2.9. Hyperopt
5.2.10. 自动调优模式的优势在于提高数据科学家的生产力,因为训练服务可以找到最佳的调优值
5.2.11. 该模式的缺点是需要大量的计算资源来暴力探索不同的调优组合
5.2.12. 对于复杂的深度学习模型,该模式很重要
5.3. 数据感知持续训练模式
5.3.1. 通过跟踪元数据与机器学习管道组件并智能地重试来自动化重新训练模型的过程
5.3.2. 还可以在将模型投入生产之前进行自动验证
5.3.3. 数据感知持续训练模式优化已部署模型的训练来反映数据变化,模型的重新训练可以按计划进行,也可以在线进行,其中每个新的数据样本都可以用于重新训练和创建新的模型
5.3.4. 此模式是数据驱动的,允许通过管道组件的特定配置来触发作业
5.3.5. 元数据跟踪
5.3.5.1. 元数据捕获与当前模型相关的详细信息、管道组件的执行状态以及训练数据集属性
5.3.5.2. 跟踪每次运行的管道组件的执行统计信息有助于调试、复现性和审计
5.3.5.3. 元数据帮助管道确定可以复用以前运行的哪些结果
5.3.6. 编排
5.3.6.1. 机器学习管道组件是基于数据构件的可用性异步触发的
5.3.6.2. 当机器学习组件完成处理时,它们将其状态记录为元数据存储的一部分
5.3.7. 验证
5.3.7.1. 在投入生产前对模型进行评估
5.3.7.2. 根据模型的类型,使用不同的技术来实现验证
5.3.7.3. 验证涉及数据集中单个数据切片的模型性能
5.3.8. 数据感知持续训练模式的需求取决于模型重新训练的严格程度
5.3.9. 虽然该模式可以应用于在线模型和离线模型,但它最适用于需要以在线方式或按计划重新训练的在线模型
发表评论:
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。