Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Glue for Rayを使ってみよう #devio2023 / devio2023-glue-for-ray

Glue for Rayを使ってみよう #devio2023 / devio2023-glue-for-ray

DevelopersIO 2023 ビデオセッション資料。
https://youtu.be/EZ-jNWFcMM8

DevelopersIO 2023 公式サイト:
https://event.classmethod.jp/developers-io/2023

kasacchiful

August 03, 2023
Tweet

More Decks by kasacchiful

Other Decks in Programming

Transcript

  1. Glue for Rayを使ってみよう 2 0 2 3 / 8 /

    3 データアナリティクス事業本部 笠原 宏
  2. ⾃⼰紹介 笠原 宏 • データアナリティクス事業本部ビジネスソリューション部 • 新潟県新潟市在住 • 好きな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
  3. AWS Glueのおさらい AWS Glue • ⼤規模なETL処理も可能な、マネージドなサーバーレスサービス 主な特徴 • サーバーレスETL •

    Spark / Python Shell / Ray • メタデータ管理 • データクローリング • 他AWSサービス間連携 • 様々なデータソースに対応 6
  4. Spark / Python Shell / Ray Spark • マルチノードクラスタで分散処理 •

    学習コストがそれなりにかかる Python Shell • シングルノード処理 • 分散処理できないため、スケールアウトが難しい 7 Ray • マルチノードクラスタで分散処理 • 少ない学習コスト
  5. Glue for Ray Ray • Pythonアプリケーションのスケーリングを容易にするオープンソースのライブラリ Glue for Ray に含まれる機能

    • Ray Core • Pure Pythonコードを分散処理可能にする、Tasks、Actors等の基本機能 • Ray Data • Rayアプリケーション上で分散処理可能な、PyArrowベースのデータセット 8 ը૾Ҿ༻IUUQTEPDTSBZJPFOMBUFTUSBZPWFSWJFXJOEFYIUNM
  6. Glue for Ray is GA Glue for Ray GA時点で Ray

    2 . 4 が利⽤可能です。 9 Ҿ༻IUUQTEFWDMBTTNFUIPEKQBSUJDMFTBXTHMVFGPSSBZHFOFSBMMZBWBJMBCMF
  7. Glue for Rayの特徴 実装 • Pure Pythonコードに近い記述なので、⽐較的実装しやすい • クラスター設定は少ない •

    関数を分散処理するTasks、クラスオブジェクトを分散処理するActorsが使える • ray.datasets は、Pandasのdataframeに似た関数を有しており、Pandasを使ったことがある ⽅であれば、⽐較的移⾏が⽤意 1 0
  8. 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
  9. Ray Dataset と Pandas Dataframe 2 2 • ETL処理をするなら、Ray Dataの操作をおさえておきましょう。

    • S 3 read → データ変換処理 → S 3 write の処理は、Pandasの操作とほぼ同じでできます。 Ray Dataset Pandas Dataframe
  10. Ray Dataset と Pandas Dataframe 2 3 • 参考までに、同じRayジョブ内で実⾏して、処理時間を⽐較してみました。 •

    Amazon Customer Reviews Dataset の Wireless カテゴリ: 約900万件 • Ray: 6 4 [s] • Pandas: 1 2 5 [s] • RayはPandasのほぼ半分の時間で処理
  11. Ray Dataset と Pandas Dataframe 2 4 • Rayのページに、Ray Dataset

    と Pandas Dataframe のメソッド⽐較表があるので、ご参考く ださい。 ը૾Ҿ༻IUUQTEPDTSBZJPFOMBUFTUEBUBBQJGSPN@PUIFS@EBUB@MJCTIUNM
  12. Ray Dataset の read と write 2 6 • read_parquet()

    等のデータ読込時に⾃動的に並列数が算出されて、その分のブロック毎に部 分テーブルを持っています。 • 「parallelism」オプションで並列数を指定できます。 • write_parquet() 等のデータ書込時は、ブロック毎にファイル書き込みを⾏うため、並列数と 同じ数のファイルが作成されます。 • 書込時にブロック数を変更したい場合は repartition() メソッドを使⽤します。 ը૾Ҿ༻IUUQTEPDTSBZJPFOMBUFTUEBUBEBUBJOUFSOBMTIUNM
  13. 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ストレージ
  14. 料⾦ 2 8 • 東京リージョンでの料⾦⽐較です。 • 秒単位課⾦。最⼩単位は1分。 • デフォルトDPU構成によって、Python Shell

    < Ray < Spark の順に費⽤がかかりやすい。 %16࣌ؒ͋ͨΓ ౦ژϦʔδϣϯ ࠷খ%16 σϑΥϧτ %16 1ZUIPO 4IFMM    3BZ .%16    4QBSL   
  15. まとめ 3 5 • Glue for RayがGAしました。 • ⽐較的容易に分散処理が記述できるようになっています。 •

    ETL処理に関しては、Pandas等と⽐較してほとんど変わらない記述で処理が可能になってい ます。 • まだ成⻑段階のサービスです。今後より使いやすくなっていくことを期待しながら、みなさ んで積極的に使っていきましょう。
  16. 参考資料 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