Ray最佳实践指南

The Hitchhiker’s Guide to Ray


您好!欢迎来到《Ray最佳实践指南》。

这份人工编写的指南旨在为Ray初学者和专家提供一个关于Ray安装、配置、和日常使用的最佳实践手册。

💥 这份指南是 主观的,它与Ray官方文档几乎,但不是完全不同。您会发现一份优秀的简明列表,包含有强烈推荐的选项。

使用 Python 3 是高度 优先于 Python 2。如果您发现自己 仍然 在生产环境中使用 Python 2,请考虑升级您的应用程序和基础设施。如果您正在使用 Python 3,恭喜您 —— 您确实有很好的品味。 ——Kenneth Reitz

致谢

感谢妻子的支持,以及可爱的女儿对我心情的调节。

感谢Ray项目团队的无私奉献。

授权

欢迎转载、引用。

转载、引用请注明出处。

作者保留本书和本书相关的所有权利。

作者自序

ray是什么?

Ray是为机器学习、深度学习而开发的高可用、高性能的分布式框架。该框架旨在让基于Python的机器学习和深度学习工作负载能够实时执行,并具有类似消息传递接口(MPI)的性能和细粒度。

Ray与其他分布式系统(如Spark)的相比,在深度学习领域具有很大的优势。因为目前的很多流行分布式系统都不是以构建 AI 应用为目标设计的,缺乏人工智能应用的相应支持与 API。而Ray 与 TensorFlow、PyTorch 和 MXNet 等深度学习框架互相兼容,项目应用中,在 Ray 中可以使用一个或多个深度学习框架。

本书中,基于Ray分布式系统:运用Pandas进行数据分析,运用TensorFlow和PyTorch等框架进行深度学习算法方面的实战。

本书中使用Python、Scala,以及Java进行例程的开发,因此读者需要具备Python、Scala、Java中任意一种语言的基础编程技能。

背景和必要性

目前比较流行的分布式计算引擎Spark等都不是以构建 AI 应用为目标设计的,缺乏人工智能应用的相应支持与API。

而Ray不同,Ray以构建AI应用为设计目标。同时Ray 与 TensorFlow、PyTorch 和 MXNet等深度学习框架互相兼容,项目应用中,在Ray中可以使用一个或多个深度学习框架。

第1章 数据分析和机器学习

摘要

数据分析

云计算

大数据

机器学习

深度学习

增强学习

Ray环境部署

摘要

Linux和WSL环境

Ray的组件和特性

Ray Tune:超参数优化框架

Ray RLlib:可自由扩展的增强学习

Ray的安装和优化

从PyPI安装Ray

Ray的源码编译安装

Ray的依赖

从源码安装Ray

安装测试

执行清理

Docker中安装Ray

Docker安装

编写Dockerfile

编译Docker镜像及Ray源码

启动和运行Ray的Docker容器

测试Ray的Dcoker容器

实例运行

超参数优化示例

L-BFGS

Play Pong

安装问题收集

Ray安装问题

Ray运行问题

第3章 Ray入门

  1. Ray概览

  1. 不可变远程对象

  1. Ray中的异步计算

  1. 小结

第4章 Actors—DataFlow模型扩展

  1. Ray概览

  1. 定义和创建Actor

  1. Actor使用和实例

  1. 在Actor上使用GPUs

  1. 分发Actor操作(实验)

  1. Actor使用限制

  1. 小结

第5章 Ray和GPUs的整合使用

  1. 概述

  1. 启动整合GPUs的Ray

  1. 使用远程函数整合GPUs

  1. 使用Actor整合GPUs

  1. 问题总结

  1. 小结

第6章 Ray Web UI

  1. 概述

  1. Ray Web UI所需依赖

  1. 运行Ray Web UI

  1. Ray Web UI特性

  1. 任务和对象IDs

#. 任务执行时间轴

#. 时间分布与时间序列

  1. 问题总结

  1. 小结

第7章 Ray Tune:超参数优化框架

  1. 概述

  1. 安装和运行

  1. 安装

#. 运行

  1. Ray Tune特性

  1. Ray Tune设计分析

  1. Ray Tune调度试验

  1. 大型数据集处理

  1. HyperOpt集成

  1. 结果集可视化

  1. 检查点试验

  1. 客户端API

  1. 开发实例分析

  1. 小结

第8章 Ray Tune高阶

  1. 概述

  1. 训练配置

.. toctree:: experiment-configuration.md

  1. HyperBand与Early Stopping

.. toctree:: hyperband-early-stopping.md

  1. 人口基础训练

.. toctree:: population-based-training

  1. 小结

第9章 RLlib:可自由扩展的增强学习

  1. 概述

  1. 安装和运行

.. toctree:: installation.md

  1. RLlib训练APIs

.. toctree:: training-apis.md

  1. RLlib运行环境

.. toctree:: environments.md

  1. RLLib算法

.. toctree:: algorithms.md

  1. RLLib模型与预处理器

.. toctree:: models-preprocessors.md

  1. RLLib包使用参考

  1. 小结

第10章 在Ray中使用TensorFlow

  1. 概述

  1. 加权平均法完整实例

  1. 使用Ray和梯度进行并行训练

  1. 问题总结

  1. 小结

第11章 在Ray中使用PyTorch

  1. 概述

  1. 搭建一个简单的卷积神经网络

  1. 使用Ray进行迭代训练和测试

  1. 小结

第12章 Ray之上的Pandas—高效数据处理

  1. 概述

  1. 单节点数据处理

  1. 集群数据处理

  1. 小结

第13章 Ray实例应用

  1. 概述

  1. 神经网络实例

  1. 策略梯度实例

  1. 参数服务器实例

  1. 残差网络实例

  1. A3实例

  1. 数值优化实例

  1. 进化策略实例

  1. Cython应用

  1. MapReduce流实例

  1. 小结

第14章 Ray的架构设计

  1. 内构件概览

.. toctree:: ray-internals.md

  1. 序列化机制

.. toctree:: serialization.md

  1. Ray的容错性

.. toctree:: fault-tolerance.md

  1. Plasma对象存储

  1. 资源管理(CPUs, GPUs)

  1. 小结

第15章 Ray的集群使用

  1. 概述

  1. 云设备和自动扩展

  1. Ray集群部署和运行

  1. 在大集群中运行Ray

  1. 在Docker集群中运行Ray

  1. 小结

附录

  1. 问题汇总和解决

  1. 参考和推荐资料

  1. APIs分类汇总

  1. 小结