[翻訳] Rayの概要

[Overview — Ray 2\.23\.0](https://docs.ray.io/en/latest/ray-overview/index.html)の翻訳です。

# 概要

Rayは機械学習のようなAIやPythonのアプリケーションをスケールさせるためのオープンソースの統合フレームワークです。あなたが分散システムの専門家である必要がないように、並列処理の計算レイヤーを提供します。Rayは以下のコンポーネントを用いて、あなたの分散された個々とのワークフローやエンドツーエンドの機械学習ワークフローを実行する際の複雑性を最小化します:

- データ前処理、分散トレーニング、ハイパーパラメータチューニング、強化学習、モデルサービングのような一般的な機械学習タスクに対してスケール可能なライブラリ。
- Pythonアプリケーションを並列化、スケールさせるためのPythonicな分散コンピューティングプリミティブ。
- Kubernetes、AWS、GCP、Azureのような既存ツールやインフラストラクチャとRayクラスターとの連携、デプロイのためのインテグレーションやユーティリティ。

データサイエンスや機械学習の実践者に対して、Rayはインフラストラクチャの専門性を必要とすることなしにジョブをスケール可能にします:

- 複数ノードや複数GPUに対してMLワークロードを容易に並列化、分散。
- ネイティブ、拡張可能なインテグレーションでMLエコシステムを活用。

MLプラットフォーム構築者やMLエンジニアに対して、Rayは以下を提供します:

- スケーラブルで堅牢なMLプラットフォームを構築するための計算資源の抽象化レイヤー。
- 幅広いMLエコシステムへのオンボーディングとインテグレーションをシンプルにする統合ML API。
- ラップトップから大規模クラスターにシームレスにスケールする際に、同じPythonコードを活用することで開発とプロダクションの間の摩擦を軽減。

分散システムエンジニア向けに、Rayはキーとなるプロセスに自動で対応します:

- オーケストレーション - 分散して産むのさまざまなコンポーネントの管理。
- スケジューリング - いつ、どこでタスクを実行するのかを調整。
- 耐障害性 - 不可避な障害ポイントに関係なくタスクの完了を保証。
- オートスケーリング - 動的な需要に割り当てられるリソースの数を調整。

# Rayでできること

個人、組織、企業が自身のAIアプリケーションを構築するためにRayを活用できるいくつかの一般的なMLワークロードが存在します。

- [CPUやGPUにおけるバッチ推論](https://docs.ray.io/en/latest/ray-overview/use-cases.html#ref-use-cases-batch-infer)
- [モデルサービング](https://docs.ray.io/en/latest/ray-overview/use-cases.html#ref-use-cases-model-serving)
- [大規模モデルの分散トレーニング](https://docs.ray.io/en/latest/ray-overview/use-cases.html#ref-use-cases-distributed-training)
- [並列ハイパーパラメータチューニングの実験](https://docs.ray.io/en/latest/ray-overview/use-cases.html#ref-use-cases-hyperparameter-tuning)
- [強化学習](https://docs.ray.io/en/latest/ray-overview/use-cases.html#ref-use-cases-reinforcement-learning)
- [MLプラットフォーム](https://docs.ray.io/en/latest/ray-overview/use-cases.html#ref-use-cases-ml-platform)

# Rayのフレームワーク

![](https://docs.ray.io/en/latest/_images/map-of-ray.svg)
Rayライブラリのスタック - MLワークロードに対する統合ツールキット

Rayの統合コンピュートフレームワークは3つのレイヤーから構成されます:

1. **Ray AIライブラリ** - MLエンジニア、データサイエンティスト、研究者をMLアプリケーションのためのスケーラブルで統合されたツールキットで強化する、オープンソース、Python、ドメイン固有の一連のライブラリです。
1. **Ray Core** - MLエンジニアやPython開発者がPythonアプリケーションをスケールし、機械学習ワークロードを加速させる、オープンソース、Python、汎用、分散コンピューティングライブラリです。
1. **Rayクラスター** - 共通のRayヘッドノードに接続する一連のワーカーノードです。Rayクラスターは固定サイズ、あるいはクラスターで実行されるアプリケーションによってリクエストされるリソースに応じて自動でスケールアップ、ダウンすることができます。

**機械学習ワークロードをスケール**

分散[データ処理](https://docs.ray.io/en/latest/data/data.html)、[モデルトレーニング](https://docs.ray.io/en/latest/train/train.html)、[チューニング](https://docs.ray.io/en/latest/tune/index.html)、[強化学習](https://docs.ray.io/en/latest/rllib/index.html)、[モデルサービング](https://docs.ray.io/en/latest/serve/index.html)、[その他](https://docs.ray.io/en/latest/ray-more-libs/index.html)のためのライブラリのツールキットでMLアプリケーションを構築。

[Ray AIライブラリ](https://docs.ray.io/en/latest/ray-overview/getting-started.html#libraries-quickstart)

**分散アプリケーションをスケール**

[シンプルかつ柔軟性のあるAPI](https://docs.ray.io/en/latest/ray-core/walkthrough.html)で分散アプリケーションを構築、実行。数行の変更、あるいはコードの変更なしにシングルマシンのコードを[並列化](https://docs.ray.io/en/latest/ray-core/walkthrough.html)。

[Ray Core](https://docs.ray.io/en/latest/ray-core/walkthrough.html)

**大規模ワークロードのデプロイ**

[AWS, GCP, Azure](https://docs.ray.io/en/latest/cluster/getting-started.html)あるいは、[オンプレミス](https://docs.ray.io/en/latest/cluster/vms/user-guides/launching-clusters/on-premises.html)にワークロードをデプロイ。既存の[Kubernetes](https://docs.ray.io/en/latest/cluster/kubernetes/index.html)、[YARN](https://docs.ray.io/en/latest/cluster/vms/user-guides/community/yarn.html)、[Slurm](https://docs.ray.io/en/latest/cluster/vms/user-guides/community/slurm.html)クラスターでRayを実行するためにRayクラスターマネージャを活用。

[Rayクラスター](https://docs.ray.io/en/latest/cluster/getting-started.html)

[Ray](https://docs.ray.io/en/latest/ray-air/getting-started.html)の5つのネイティブライブラリのそれぞれが、特定のMLタスクを分散させます。

- [Data](https://docs.ray.io/en/latest/data/data.html): トレーニング、チューニング、予測におけるスケーラブルかつフレームワーク非依存のデータロード、変換処理。
- [Train](https://docs.ray.io/en/latest/train/train.html): 人気のトレーニングライブラリと連携する、耐障害性を持つマルチノード、マルチコア分散モデルトレーニング。
- [Tune](https://docs.ray.io/en/latest/tune/index.html): モデルパフォーマンスを最適化するためのスケーラブルなハイパーパラメータチューニング。
- [Serve](https://docs.ray.io/en/latest/serve/index.html): パフォーマンスを改善するためのオプションのマイクロバッチを備えた、オンライ推論のためのモデルをデプロイするためのスケーラブルでプログラム可能なサービング。
- [RLlib](https://docs.ray.io/en/latest/rllib/index.html): スケーラブルな分散強化学習ワークロード。

RayのライブラリはデータサイエンスやMLエンジニアの両方向けのものです。データサイエンスは、これらのライブラリを個々のワークロードやエンドツーエンドのMLアプリケーションをスケールさせるために活用することができます。MLエンジニア向けにこのライブラリは、広範なMLエコシステムのツールを容易にオンボード、連携するために活用できるスケーラブルなプラットフォームの抽象化レイヤーを提供します。

カスタムアプリケーションにおいては、ラップトップ、クラスター、Kubernetes上で実行されるスケーラブルかつ分散したシステムをPython開発者が容易に構築できるようにする、[Ray Core](https://docs.ray.io/en/latest/ray-core/walkthrough.html)ライブラリが存在します。これは、Ray AIライブラリやサードパーティインテグレーション(Rayエコシステム)が構築される基盤となります。

Rayはいかなるマシン、クラスター、クラウドプロバイダー、Kubernetesで動作し、これらの機能は[コミュニティインテグレーションのエコシステム](https://docs.ray.io/en/latest/ray-overview/ray-libraries.html)を成長させています。