【プレビュー】AWS Glue で Ray が利用できるようになりました!#reinvent

2022.11.30

こんにちは、森田です! 先日、AWS Glue on Ray のプレビューが発表されました。

AWS Glue on Ray について

そもそも Ray とは

Pythonの分散並列処理のフレームワークとなっております。 Rayの特徴としては、とてもシンプルに記述できるように設計されており、分散並列処理をPythonで簡単に行うことができます。 以下は、実際にモンテカルロ法で円周率を出すサンプルコードとなっており、とてもシンプルに記述できることがわかります。

sample.py

import ray
import time
from random import random
# Let's start Ray
ray.init()

SAMPLES = 1000000
# By adding the `@ray.remote` decorator, a regular Python function
# becomes a Ray remote function.


@ray.remote
def pi4_sample():
    in_count = 0
    for _ in range(SAMPLES):
        x, y = random(), random()
        if x * x + y * y <= 1:
            in_count += 1
    return in_count


# To invoke this remote function, use the `remote` method.
# This will immediately return an object ref (a future) and then create
# a task that will be executed on a worker process. Get retreives the result.
st = time.time
future = pi4_sample.remote()
pi = ray.get(future) * 4.0 / SAMPLES
print(f'{pi} is an approximation of pi')

AWS Glue on Ray とは

AWS Glue on Rayでは、上記のような処理をAWSのマシンリソースを利用して処理を行うことができるようになります。 今までも AWS Glue には、Apache Spark や PySpark がありましたが、Spark の知識が必要でした。

今回 Glue 上で Ray が利用できるようになったことで、Python と Ray のシンプルな使い方さえわかれば、 AWS Glue を利用することができるようなりました。Pythonエンジニアにとっては結構ありがたいアップデートですね。

実際にやってみた

では、AWS Glue で Rayジョブを実際に動かしてみます。

AWS Glue Studio

まずは、AWS Glue Studio を開き、Jobsを選択します。 すると、以下のようにRay script editorがでてくるので、こちらを選択し、Createをクリックします。 コードは、通常通り Ray を利用するようにを書きます。

あとは、Jobs details で名前やIAM ロールの設定を行い、Saveを行い、実際にRunしてみます。

しばらく待つと以下のようにログが確認でき、円周率や実行時間も問題なく出力できていることも確認できました!

最後に

思ってた以上に簡単に書くことができました! 今まで Spark の知識が必要なため、AWS Glue を敬遠していた方は、ぜひ一度 AWS Glue on Ray 試してみてはいかがでしょうか。

参考