Slide 1

Slide 1 text

Glue for Rayを使ってみよう 2 0 2 3 / 8 / 3 データアナリティクス事業本部 笠原 宏

Slide 2

Slide 2 text

⾃⼰紹介 笠原 宏 • データアナリティクス事業本部ビジネスソリューション部 • 新潟県新潟市在住 • 好きなAWSサービス: S 3 、Lambda、SageMaker • JAWS-UG新潟⽀部∕Python機械学習勉強会in新潟∕JaSST新潟 ∕SWANII∕etc. • AWS Community Builder / 2 0 2 3 Japan AWS All Certi fi cations Engineer 2 @kasacchiful @kasacchiful

Slide 3

Slide 3 text

お話ししたいこと Glue for RayがGAしました。 Glue for Rayをまだ使ったことない⽅向けに、 Glue for Rayの簡単な使い⽅をレクチャーします。 3

Slide 4

Slide 4 text

⽬次 1 . Glue for Rayとは何か? 2. まずは使ってみよう 3. 知っておくと良いこと 4. 気をつけておくこと 5. まとめ 4

Slide 5

Slide 5 text

Glue for Rayとは何か 5

Slide 6

Slide 6 text

AWS Glueのおさらい AWS Glue • ⼤規模なETL処理も可能な、マネージドなサーバーレスサービス 主な特徴 • サーバーレスETL • Spark / Python Shell / Ray • メタデータ管理 • データクローリング • 他AWSサービス間連携 • 様々なデータソースに対応 6

Slide 7

Slide 7 text

Spark / Python Shell / Ray Spark • マルチノードクラスタで分散処理 • 学習コストがそれなりにかかる Python Shell • シングルノード処理 • 分散処理できないため、スケールアウトが難しい 7 Ray • マルチノードクラスタで分散処理 • 少ない学習コスト

Slide 8

Slide 8 text

Glue for Ray Ray • Pythonアプリケーションのスケーリングを容易にするオープンソースのライブラリ Glue for Ray に含まれる機能 • Ray Core • Pure Pythonコードを分散処理可能にする、Tasks、Actors等の基本機能 • Ray Data • Rayアプリケーション上で分散処理可能な、PyArrowベースのデータセット 8 ը૾Ҿ༻IUUQTEPDTSBZJPFOMBUFTUSBZPWFSWJFXJOEFYIUNM

Slide 9

Slide 9 text

Glue for Ray is GA Glue for Ray GA時点で Ray 2 . 4 が利⽤可能です。 9 Ҿ༻IUUQTEFWDMBTTNFUIPEKQBSUJDMFTBXTHMVFGPSSBZHFOFSBMMZBWBJMBCMF

Slide 10

Slide 10 text

Glue for Rayの特徴 実装 • Pure Pythonコードに近い記述なので、⽐較的実装しやすい • クラスター設定は少ない • 関数を分散処理するTasks、クラスオブジェクトを分散処理するActorsが使える • ray.datasets は、Pandasのdataframeに似た関数を有しており、Pandasを使ったことがある ⽅であれば、⽐較的移⾏が⽤意 1 0

Slide 11

Slide 11 text

Glue for Rayの特徴 パフォーマンス • ケースによっては、Sparkより⾼速に処理する場合もある • 例: TripAdvisorレビューデータセットの128万レビュー⽂章を⽤いた検証 • Scikit-learn HashingVectorizerを⽤いた特徴量抽出 • シングルノードで、Spark: 5 0 s / Ray: 3 3 s • マルチノードでも、SparkよりRayが⾼速 • Wordbatchを⽤いたテキスト処理 • シングル、マルチともSparkよりRayが⾼速 1 1 Ҿ༻IUUQTUPXBSETEBUBTDJFODFDPNCFODINBSLJOHQZUIPOEJTUSJCVUFEBJCBDLFOETXJUIXPSECBUDICD

Slide 12

Slide 12 text

まずは使ってみよう 1 2

Slide 13

Slide 13 text

IAMロール作成 1 3 • Glueジョブ⽤のIAMロールを事前に作成しておきます。 • マネージドポリシー「AWSGlueServiceRole」「AmazonS 3 FullAccess」があれば、とりあえ ず動作します。

Slide 14

Slide 14 text

Glue Studioを利⽤ 1 4 • メニュー「ETL jobs」から「Ray Script Editor」を新規作成します。

Slide 15

Slide 15 text

コードを書く前に 1 5 • コードを書く前に「Job details」タブから、「ジョブ名」と「ロール」を設定して保存しま す。

Slide 16

Slide 16 text

コードを書いて実⾏してみましょう 1 6 • 「Script」でコードを記述して、「Run」をクリックして実⾏します。

Slide 17

Slide 17 text

実⾏結果を⾒てみましょう 1 7 • 「Runs」タブで、実⾏履歴が確認できます。

Slide 18

Slide 18 text

CloudWatch Logsも⾒てみましょう 1 8 • /aws-glue/ray/jobs/ の各種ロググループが⽣成されてます。 • print() で標準出⼒した結果は、「/aws-glue/ray/jobs/script-log」で確認できます。

Slide 19

Slide 19 text

知っておくと良いこと 1 9

Slide 20

Slide 20 text

以下のことを知っていればとりあえずOK • 「ray.init()」で初期化 • 「@ray.remote」デコレータを、分散処理 したい関数やクラスに付与 • 「remote()」メソッドで、分散処理したい 関数に引数を渡し、Rayクラスタで実⾏ • 「ray.get()」で、実⾏結果を取得 Ray の基本的な使い⽅ 2 0

Slide 21

Slide 21 text

Actor • クラスに「@ray.remote」デコレータ • Task • 関数に「@ray.remote」デコレータ Ray Tasks と Ray Actors 2 1

Slide 22

Slide 22 text

Ray Dataset と Pandas Dataframe 2 2 • ETL処理をするなら、Ray Dataの操作をおさえておきましょう。 • S 3 read → データ変換処理 → S 3 write の処理は、Pandasの操作とほぼ同じでできます。 Ray Dataset Pandas Dataframe

Slide 23

Slide 23 text

Ray Dataset と Pandas Dataframe 2 3 • 参考までに、同じRayジョブ内で実⾏して、処理時間を⽐較してみました。 • Amazon Customer Reviews Dataset の Wireless カテゴリ: 約900万件 • Ray: 6 4 [s] • Pandas: 1 2 5 [s] • RayはPandasのほぼ半分の時間で処理

Slide 24

Slide 24 text

Ray Dataset と Pandas Dataframe 2 4 • Rayのページに、Ray Dataset と Pandas Dataframe のメソッド⽐較表があるので、ご参考く ださい。 ը૾Ҿ༻IUUQTEPDTSBZJPFOMBUFTUEBUBBQJGSPN@PUIFS@EBUB@MJCTIUNM

Slide 25

Slide 25 text

Ray Dataset の構造 2 5 • Ray Datasetでは、並列数に応じて「ブロック」単位で処理されます。 • 「ブロック」毎に部分テーブルを持っているイメージ ը૾Ҿ༻IUUQTEPDTSBZJPFOMBUFTUEBUBEBUBJOUFSOBMTIUNM

Slide 26

Slide 26 text

Ray Dataset の read と write 2 6 • read_parquet() 等のデータ読込時に⾃動的に並列数が算出されて、その分のブロック毎に部 分テーブルを持っています。 • 「parallelism」オプションで並列数を指定できます。 • write_parquet() 等のデータ書込時は、ブロック毎にファイル書き込みを⾏うため、並列数と 同じ数のファイルが作成されます。 • 書込時にブロック数を変更したい場合は repartition() メソッドを使⽤します。 ը૾Ҿ༻IUUQTEPDTSBZJPFOMBUFTUEBUBEBUBJOUFSOBMTIUNM

Slide 27

Slide 27 text

Glue for Rayジョブワーカー 2 7 • Glue for Ray向けに、Graviton 2 ベースのEC 2 ワーカータイプでジョブが実⾏されます。 • Glueで⽤いられる標準的なデータ処理ユニット(DPU)より、メモリ最適化されたデータ処理 ユニット(M-DPU)が適⽤されます。 • 現在利⽤可能なワーカータイプは「Z. 2 X」です。 • 2 M-DPU ( 8 vCPU, 6 4 GBメモリ) • 1 2 8 GBストレージ

Slide 28

Slide 28 text

料⾦ 2 8 • 東京リージョンでの料⾦⽐較です。 • 秒単位課⾦。最⼩単位は1分。 • デフォルトDPU構成によって、Python Shell < Ray < Spark の順に費⽤がかかりやすい。 %16࣌ؒ͋ͨΓ ౦ژϦʔδϣϯ ࠷খ%16 σϑΥϧτ %16 1ZUIPO 4IFMM 3BZ .%16 4QBSL

Slide 29

Slide 29 text

気をつけておくこと 2 9

Slide 30

Slide 30 text

Interactive Sessionはまだプレビュー版 3 0 • 「Jupyter Notebook」からKernelを「Ray」も選べますが、こちらはまだプレビュー版です。 • 本資料では、扱いません。

Slide 31

Slide 31 text

プレビュー版とGA版で同梱ライブラリが異なる 3 1 • プレビュー版に同梱されていた 「awswrangler」「modin」が、GAで同梱されていません。 • プレビュー版で動作していたスクリプトは、そのままだと動作しない場合があるので、 「awswrangler」「modin」をインストールする必要があります。 Preview GA Ҿ༻IUUQTEPDTBXTBNB[PODPNHMVFMBUFTUEHFEJUTDSJQUSBZFOWEFQFOEFODJFTIUNM

Slide 32

Slide 32 text

PIPライブラリ追加インストール 3 2 • ライブラリを追加インストールする必要がある場合、Job parametersにて「--pip-install」を 指定します。 • 複数のライブラリをインストールする場合は、カンマ区切りで指定します。

Slide 33

Slide 33 text

VPCへのプライベートアクセスは不可 3 3 • GA時点では、VPCへのプライベートアクセスはできません。 • RDS等、VPC内のリソースへアクセスしたい場合、パブリックアクセスができる必要がありま す。 Ҿ༻IUUQTEPDTBXTBNB[PODPNHMVFMBUFTUEHFEJUTDSJQUSBZDPOOFDUJPOTGPSNBUTIUNM

Slide 34

Slide 34 text

まとめ 3 4

Slide 35

Slide 35 text

まとめ 3 5 • Glue for RayがGAしました。 • ⽐較的容易に分散処理が記述できるようになっています。 • ETL処理に関しては、Pandas等と⽐較してほとんど変わらない記述で処理が可能になってい ます。 • まだ成⻑段階のサービスです。今後より使いやすくなっていくことを期待しながら、みなさ んで積極的に使っていきましょう。

Slide 36

Slide 36 text

No content

Slide 37

Slide 37 text

参考資料 3 7 • AWS Glue for Ray の⼀般提供が開始されました | DevelopersIO • https://dev.classmethod.jp/articles/aws-glue-for-ray-generally-available/ • AWS Glue on Ray ではじめるデータ分析 とそのパフォーマンス • https://pages.awscloud.com/rs/ 1 1 2 -TZM- 7 6 6 /images/ 2 0 2 3 0 1 2 6 _ 2 6 th_ISV_DiveDeepSeminar_GlueonRay.pdf • Working with Ray jobs in AWS Glue - AWS Glue • https://docs.aws.amazon.com/glue/latest/dg/ray-jobs-section.html • Welcome to Ray! • https://docs.ray.io/en/releases- 2 . 4 . 0 / • Benchmarking Python Distributed AI Backends with Wordbatch | by Antti Puurula | Towards Data Science • https://towardsdatascience.com/benchmarking-python-distributed-ai-backends-with- wordbatch- 9 8 7 2 4 5 7 b 7 8 5 c