メインコンテンツへジャンプ
Engineering blog

DatabricksとApache Spark ClustersにおけるRayのサポートを発表

Share this post

Original : Announcing Ray support on Databricks and Apache Spark Clusters

翻訳: junichi.maruyama 

Rayは、スケーラブルなAIおよびPythonワークロードを実行するための著名なコンピュートフレームワークで、さまざまな分散機械学習ツール、大規模なハイパーパラメータチューニング機能、強化学習アルゴリズム、モデル提供などを提供します。同様に、Apache Spark™は、Spark MLlibや、XGBoost, TensorFlowPyTorchなどの機械学習フレームワークとの深い統合を通じて、分散機械学習用の多様な高性能アルゴリズムを提供しています。機械学習者は、最適なモデルを構築するために、複数のアルゴリズムを検討する必要があり、RayとSparkの両方を含む複数のプラットフォームを使用する必要があることがよくあります。本日、Rayバージョン2.3.0をリリースし、RayワークロードがDatabricksとSparkスタンドアロンクラスターでサポートされ、両方のプラットフォームでモデル開発を劇的に簡素化することをお知らせします。

 

DatabricksやSparkでRayクラスタを作る
DatabricksまたはSparkクラスタでRayを起動するには、Rayの最新バージョンをインストールし、Ray.util.spark.setup_ray_cluster()関数を呼び出してRayワーカーの数と計算リソースの割り当てを指定するだけです。Databricks Runtimeバージョン12.0以上のDatabricksクラスタと、バージョン3.3以上のSparkクラスタがサポートされています。例えば、以下のコードはDatabricksノートブックにRayをインストールし、2つのワーカーノードを持つRayクラスターを初期化します:

# Install Ray with the ‘default’, ‘rllib’, and 'tune' extensions for 
# Ray dashboard, reinforcement learning, and tuning support
%pip install ray[default,rllib,tune]>=2.3.0
from ray.util.spark import setup_ray_cluster

setup_ray_cluster(num_worker_nodes=2)

わずか数行のコードでRayクラスタを作成し、モデルのトレーニングを開始する準備ができました。

 

Ray TrainとRay RLlibでモデルを鍛える

Rayクラスターを起動したところで、いよいよ分散型機械学習のパワーを活用してモデルを構築してみましょう。すべてのRayアプリケーションとRayに統合された機械学習アルゴリズムは、DatabricksとSparkクラスタ上で何の変更もなくサポートされています。例えば、DatabricksノートブックでRay Train API を使用すると、XGBoostモデルのトレーニングを簡単に分散し、トレーニング時間を短縮してモデルの精度を向上させることができます:

# Install xgboost-ray for distributed XGBoost training on Ray
%pip install xgboost-ray
import pandas as pd
import ray.data
from ray.air.config import ScalingConfig
from ray.train.xgboost import XGBoostTrainer
from sklearn.datasets import fetch_california_housing

housing_dataset = fetch_california_housing(as_frame=True)
housing_df = pd.concat(
    [housing_dataset.data, housing_dataset.target], axis=1
)

trainer = XGBoostTrainer(
    scaling_config=ScalingConfig(num_workers=2),
    label_column="MedHouseVal",
    num_boost_round=20,
    params={
        "objective": "reg:squarederror",
        "eval_metric": ["logloss", "error"],
    },
    datasets={"train": ray.data.from_pandas(housing_df)}
)
training_result = trainer.fit()

また、Rayは強化学習のネイティブサポートを提供しています。例えば、以下のRay RLlib のコードをDatabricksノートブックで実行すると、Taxi Gymnasium environmentでPPO強化学習アルゴリズムを学習することができます:

from ray.rllib.algorithms.ppo import PPOConfig

config = (  # 1. Configure the algorithm,
    PPOConfig()
    .environment("Taxi-v3")
    .rollouts(num_rollout_workers=2)
    .framework("tf2")
    .training(model={"fcnet_hiddens": [64, 64]})
    .evaluation(evaluation_num_workers=1)
)

algo = config.build()  # 2. build the algorithm,

for _ in range(3):
    print(algo.train())  # 3. train it,

algo.evaluate()  # 4. and evaluate it.

その他のモデルトレーニングの情報や例については、Ray TrainのドキュメントRay RLlibのドキュメントをご覧ください。

 

Ray Tuneで最適なモデルを探す

モデルの品質を向上させるために、Ray Tuneを活用して、何千ものモデルパラメータ構成を大規模に並行して探索することも可能です。例えば、次のコードはRay Tuneを使用してscikit-learnの分類モデルを最適化しています:

# Install the scikit-learn integration for Ray Tune
%pip install tune-sklearn
from sklearn.datasets import load_iris
from sklearn.linear_model import SGDClassifier
from ray.tune.sklearn import TuneGridSearchCV

X, y = load_iris(return_X_y=True)
parameter_grid = {"alpha": [1e-4, 1e-1, 1], "epsilon": [0.01, 0.1]}
tune_search = TuneGridSearchCV(
    SGDClassifier(), parameter_grid, max_iters=10
)
tune_search.fit(X, y)
best_model = tune_search.best_estimator

Ray と MLflowの併用など、Rayでのモデルチューニングに関する詳細な情報や例は、 Ray Tune documentationに掲載されています。

 

Rayのダッシュボードを見る

After starting Ray on a Databricks cluster, a link to the Ray dashboard is displayed.
Databricksクラスタ上でRayを起動すると、Rayダッシュボードへのリンクが表示されます

モデル開発中、Ray dashboardを使用して、Ray機械学習タスクの進捗とRayノードの健全性を監視できます。Rayクラスタを作成すると、ray.util.spark.setup_ray_cluster()でRayダッシュボードへのリンクが表示されます。

The Ray dashboard provides a detailed view of your cluster's nodes, actors, logs, and more.
Rayダッシュボードでは、クラスタのノード、アクター、ログなどを詳細に確認することができます

Rayダッシュボードでは、Rayクラスタのノード、アクター、メトリクス、イベントログを包括的に表示することができます。個々のノードのリソース利用メトリクスを簡単に表示したり、すべてのノードのメトリクスを集計したりすることができます。Rayダッシュボードの詳細については、Ray dashboard documentationをご覧ください。

 

Ray on DatabricksまたはSparkを今すぐ始める

Ray 2.3.0の提供により、今日からDatabricksまたはSparkクラスタ上でRayアプリケーションを実行することができます。Databricksのお客様であれば、バージョン12.0以上のDatabricks RuntimeでDatabricksクラスタを作成し、Ray on Databricks documentationをチェックするだけで始められます。最後に、スタンドアロンのSparkクラスタ上でRayを起動するための手順は、Ray on Spark documentationで提供されています。また https://docs.ray.io/en/latest/ では、Rayでの機械学習について詳しく知ることができます。

私たちは分散型機械学習の相互運用性が一歩前進したことを大変嬉しく思っており、RayアプリケーションをApache Spark™とDatabricksで動かすことを楽しみにしています!

Databricks 無料トライアル

関連記事

Engineering blog

Hugging Faceトランスフォーマーのパイプラインを使ったNLPを始めよう

February 5, 2023 Paul Ogilvie による投稿 in エンジニアリングのブログ
Original Blog : Getting started with NLP using Hugging Face transformers pipelines 翻訳: junichi.maruyama 自然言語処理(NLP)の進歩は、企業がテキストデータから価値を引き出すための前例のない機会を解き放ちました。自然言語処理は、テキストの要約、人や場所などの固有名詞の認識、感情分類、テキスト分類、翻訳、質問応答など、幅広い用途に使用できます。多くの場合、大規模なテキストデータセットで事前に訓練された機械学習モデルから、高品質の結果を得ることができます。これらの事前学習済みモデルの多くは、オープンソースで公開されており、無料で使用することができます。 Hugging Face は、これらのモデルの素晴らしいソースの一つであり、彼らの Transformers ライブラリは、モデルを適用し、また自分のデータにも適応させるための使いやすいツールです。また、これらのモデルを自分のデータに合わせて微調整をすることも可能で
Engineering blog

Accelerating Your Deep Learning with PyTorch Lightning on Databricks

PyTorch Lightning is a great way to simplify your PyTorch code and bootstrap your Deep Learning workloads. Scaling your workloads to achieve timely...
Platform blog

Announcing Availability of MLflow 2.0

MLflow , with over 13 million monthly downloads, has become the standard platform for end-to-end MLOps, enabling teams of all sizes to track...
エンジニアリングのブログ一覧へ