深度学习的最佳实践在砖上
本文包含小贴士深度学习在砖和内置的工具和库的信息设计优化深度学习工作负载如以下:
砖机器学习提供了预构建的深度学习机器学习与数据砖运行时基础设施,其中包括最常见的深度学习图书馆像TensorFlow PyTorch, Keras。它还内置,预配置的GPU支持包括司机和支持库。
砖运行时毫升还包括砖的功能空间,如集群创建和管理,图书馆和环境管理、代码管理与砖回购,自动化支持包括砖工作和api,并集成MLflow模型开发跟踪和模型部署和服务。
资源和环境管理
砖能帮助你定制你的深度学习的环境和保持环境一致的用户。
定制开发环境
与砖运行时,您可以定制您的开发环境在笔记本,集群,和工作水平。
使用notebook-scoped Python库或notebook-scoped R库使用一组特定集群或版本的库,而不影响其他用户。
安装集群级别的图书馆为一个团队或一个项目规范版本。
建立一个砖工作确保重复任务运行在一个一致的、不变的环境。
使用集群政策
您可以创建集群政策指导正确选择数据科学家,比如使用单个节点集群的发展和使用一个集群自动定量大的工作。
考虑A100 gpu深度学习工作负载
A100 gpu是一种有效的选择对于许多深度学习任务,如培训和调优大型语言模型、自然语言处理、目标检测和分类,推荐引擎。
在所有云砖支持A100 gpu。支持GPU类型的完整列表,请参阅支持实例类型。
A100 gpu通常是有限的可用性。请联系您的云提供商资源分配,或者提前考虑保留能力。
加载数据的最佳实践
云数据存储通常不优化I / O,这可能是一个挑战,需要大型数据集的深度学习模型。砖运行时毫升包括三角洲湖和Petastorm深度学习应用程序来优化数据吞吐量。
砖建议使用三角洲湖表数据存储。三角洲湖有效地简化了ETL和允许您访问数据。特别是对于图像、三角洲湖有助于优化摄入对培训和推理。的参考图像应用的解决方案提供了一个示例ETL优化的图像使用三角洲湖。
Petastorm提供api,让你准备拼花格式的数据供TensorFlow使用,Keras或PyTorch。SparkConverter API提供了火花DataFrame集成。Petastorm也为分布式处理提供数据分片。看到使用Petastorm加载数据获取详细信息。
培训深度学习的最佳实践模型
砖推荐使用机器学习运行时和MLflow跟踪和autologging所有模型的训练。
从单个节点集群
一个单独的节点(司机)GPU集群为深度学习模型通常是最快和最有效的发展。一个节点4 GPU可能更快的深度学习培训,每个4工人节点1 GPU。这是因为分布式训练带来网络通信开销。
单个节点集群是一个很好的选择在快速迭代开发和培训对中小规模数据模型。如果您的数据集很大足以让训练慢在单个机器上,考虑搬到multi-GPU甚至分布式计算。
使用TensorBoard监控培训过程
TensorBoard预装在砖运行时毫升。你可以用它在笔记本或在一个单独的标签。看到TensorBoard获取详细信息。
深度学习的优化性能
你可以,也应该,使用深度学习在砖性能优化技术。
早期停止
早期停止监控指标的价值计算验证集和训练时度量停止改善。这是一个更好的方法比猜测在一个好时代完成的数量。每个深度学习库提供的本机API早期停止;例如,看到EarlyStopping调apiTensorFlow / Keras和PyTorch闪电。例如笔记本,看到的开始使用TensorFlow Keras砖。
批量大小调整
批量大小调整有助于优化GPU的利用率。如果批处理大小太小,不能充分利用GPU的计算能力。
调整批大小与学习速度。一个好的经验法则是,当你增加n的批量大小,增加sqrt (n)的学习速率。当手动调整,尝试改变批量大小2或0.5倍。然后继续调整优化性能,手动或通过测试各种hyperparameters使用自动化工具Hyperopt。
转移学习
迁移学习,你从以前开始训练模型,并根据需要修改它为您的应用程序。转移学习可以大大减少所需的时间来训练和优化新模型。看到Featurization转移学习为更多的信息和一个例子。
搬到分布式训练
包括HorovodRunner砖运行时毫升、spark-tensorflow-distributor
,TorchDistributor Hyperopt促进从单节点分布式训练。
HorovodRunner
Horovod是一个开源项目,鳞片深度学习培训multi-GPU或分布式计算。HorovodRunner,由砖和砖中包括运行时的ML,是Horovod包装,提供火花兼容性。API允许您扩展单节点代码以最小的变化。HorovodRunner TensorFlow, Keras, PyTorch。
spark-tensorflow-distributor
spark-tensorflow-distributor
是一个开源本地包TensorFlow分布式训练与TensorFlow火花集群。看到例如笔记本电脑。
TorchDistributor
TorchDistributor PySpark模块是一个开源,积极促进分布式训练与PyTorch火花集群,允许您启动PyTorch培训工作引发的工作。看到分布式训练TorchDistributor。
Hyperopt
Hyperopt提供了机器学习适应性hyperparameter调优。SparkTrials类,您可以迭代优化参数深度学习在一个集群上并行模型。
最佳实践推理
本节包含一般建议使用模型推理与砖。
来最小化成本,同时考虑cpu和inference-optimized gpu A2等机器的家庭。没有明确的建议,作为最好的选择取决于模型的大小,数据维度,和其他变量。
使用MLflow为了简化部署和服务模式。MLflow可以登录任何深度学习模型,包括定制的预处理和后处理逻辑。模型注册MLflow模型注册可以部署为批处理、流媒体或网络推理。
批处理和流推理
批处理和流媒体评分支持高吞吐量,低成本的得分在延迟低至几分钟。有关更多信息,请参见离线预测。
如果你希望访问数据推理不止一次,考虑创建一个ETL数据预处理工作湖成三角洲表在运行推理工作之前。这种方式,摄取的成本和准备数据分布在多个数据的读取。分离预处理从推理还允许您为每个工作优化选择不同的硬件成本和性能。例如,您可能使用ETL cpu和gpu推理。
使用火花熊猫udf在一个集群规模批处理和流推理。
当你从砖,日志模型MLflow自动提供推理代码应用模型作为熊猫UDF。
您还可以进一步优化你的推理管道,特别是大型深度学习模型。看到参考图像ETL解决方案了一个例子。
在线服务
MLflow提供api部署到各种管理服务在线推理,以及api来创建集装箱码头工人自定义服务解决方案。