$30 off During Our Annual Pro Sale. View Details »

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
    データアナリティクス事業本部 笠原 宏

    View Slide

  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

    View Slide

  3. お話ししたいこと
    Glue for RayがGAしました。


    Glue for Rayをまだ使ったことない⽅向けに、


    Glue for Rayの簡単な使い⽅をレクチャーします。
    3

    View Slide

  4. ⽬次
    1
    . Glue for Rayとは何か?


    2. まずは使ってみよう


    3. 知っておくと良いこと


    4. 気をつけておくこと


    5. まとめ
    4

    View Slide

  5. Glue for Rayとは何か
    5

    View Slide

  6. AWS Glueのおさらい
    AWS Glue


    • ⼤規模なETL処理も可能な、マネージドなサーバーレスサービス


    主な特徴


    • サーバーレスETL


    • Spark / Python Shell / Ray


    • メタデータ管理


    • データクローリング


    • 他AWSサービス間連携


    • 様々なデータソースに対応
    6

    View Slide

  7. Spark / Python Shell / Ray
    Spark


    • マルチノードクラスタで分散処理


    • 学習コストがそれなりにかかる


    Python Shell


    • シングルノード処理


    • 分散処理できないため、スケールアウトが難しい
    7
    Ray


    • マルチノードクラスタで分散処理


    • 少ない学習コスト

    View Slide

  8. Glue for Ray
    Ray


    • Pythonアプリケーションのスケーリングを容易にするオープンソースのライブラリ


    Glue for Ray に含まれる機能


    • Ray Core


    • Pure Pythonコードを分散処理可能にする、Tasks、Actors等の基本機能


    • Ray Data


    • Rayアプリケーション上で分散処理可能な、PyArrowベースのデータセット


    8
    ը૾Ҿ༻IUUQTEPDTSBZJPFOMBUFTUSBZPWFSWJFXJOEFYIUNM

    View Slide

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

    View Slide

  10. Glue for Rayの特徴
    実装


    • Pure Pythonコードに近い記述なので、⽐較的実装しやすい


    • クラスター設定は少ない


    • 関数を分散処理するTasks、クラスオブジェクトを分散処理するActorsが使える


    • ray.datasets は、Pandasのdataframeに似た関数を有しており、Pandasを使ったことがある
    ⽅であれば、⽐較的移⾏が⽤意
    1 0

    View Slide

  11. 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

    View Slide

  12. まずは使ってみよう
    1 2

    View Slide

  13. IAMロール作成
    1 3
    • Glueジョブ⽤のIAMロールを事前に作成しておきます。


    • マネージドポリシー「AWSGlueServiceRole」「AmazonS
    3
    FullAccess」があれば、とりあえ
    ず動作します。

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  18. CloudWatch Logsも⾒てみましょう
    1 8
    • /aws-glue/ray/jobs/ の各種ロググループが⽣成されてます。


    • print() で標準出⼒した結果は、「/aws-glue/ray/jobs/script-log」で確認できます。

    View Slide

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

    View Slide

  20. 以下のことを知っていればとりあえずOK


    • 「ray.init()」で初期化


    • 「@ray.remote」デコレータを、分散処理
    したい関数やクラスに付与


    • 「remote()」メソッドで、分散処理したい
    関数に引数を渡し、Rayクラスタで実⾏


    • 「ray.get()」で、実⾏結果を取得
    Ray の基本的な使い⽅
    2 0

    View Slide

  21. Actor


    • クラスに「@ray.remote」デコレータ



    Task


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

    View Slide

  22. Ray Dataset と Pandas Dataframe
    2 2
    • ETL処理をするなら、Ray Dataの操作をおさえておきましょう。


    • S
    3
    read → データ変換処理 → S
    3
    write の処理は、Pandasの操作とほぼ同じでできます。
    Ray Dataset Pandas Dataframe

    View Slide

  23. Ray Dataset と Pandas Dataframe
    2 3
    • 参考までに、同じRayジョブ内で実⾏して、処理時間を⽐較してみました。


    • Amazon Customer Reviews Dataset の Wireless カテゴリ: 約900万件


    • Ray:
    6 4
    [s]


    • Pandas:
    1 2 5
    [s]


    • RayはPandasのほぼ半分の時間で処理

    View Slide

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

    View Slide

  25. Ray Dataset の構造
    2 5
    • Ray Datasetでは、並列数に応じて「ブロック」単位で処理されます。


    • 「ブロック」毎に部分テーブルを持っているイメージ
    ը૾Ҿ༻IUUQTEPDTSBZJPFOMBUFTUEBUBEBUBJOUFSOBMTIUNM

    View Slide

  26. Ray Dataset の read と write
    2 6
    • read_parquet() 等のデータ読込時に⾃動的に並列数が算出されて、その分のブロック毎に部
    分テーブルを持っています。


    • 「parallelism」オプションで並列数を指定できます。


    • write_parquet() 等のデータ書込時は、ブロック毎にファイル書き込みを⾏うため、並列数と
    同じ数のファイルが作成されます。


    • 書込時にブロック数を変更したい場合は repartition() メソッドを使⽤します。
    ը૾Ҿ༻IUUQTEPDTSBZJPFOMBUFTUEBUBEBUBJOUFSOBMTIUNM

    View Slide

  27. 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ストレージ

    View Slide

  28. 料⾦
    2 8
    • 東京リージョンでの料⾦⽐較です。


    • 秒単位課⾦。最⼩単位は1分。


    • デフォルトDPU構成によって、Python Shell < Ray < Spark の順に費⽤がかかりやすい。
    %16࣌ؒ͋ͨΓ
    ౦ژϦʔδϣϯ

    ࠷খ%16
    σϑΥϧτ
    %16
    1ZUIPO
    4IFMM

    3BZ
    .%16


    4QBSL

    View Slide

  29. 気をつけておくこと
    2 9

    View Slide

  30. Interactive Sessionはまだプレビュー版
    3 0
    • 「Jupyter Notebook」からKernelを「Ray」も選べますが、こちらはまだプレビュー版です。


    • 本資料では、扱いません。

    View Slide

  31. プレビュー版とGA版で同梱ライブラリが異なる
    3 1
    • プレビュー版に同梱されていた 「awswrangler」「modin」が、GAで同梱されていません。


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

    View Slide

  32. PIPライブラリ追加インストール
    3 2
    • ライブラリを追加インストールする必要がある場合、Job parametersにて「--pip-install」を
    指定します。


    • 複数のライブラリをインストールする場合は、カンマ区切りで指定します。

    View Slide

  33. VPCへのプライベートアクセスは不可
    3 3
    • GA時点では、VPCへのプライベートアクセスはできません。


    • RDS等、VPC内のリソースへアクセスしたい場合、パブリックアクセスができる必要がありま
    す。
    Ҿ༻IUUQTEPDTBXTBNB[PODPNHMVFMBUFTUEHFEJUTDSJQUSBZDPOOFDUJPOTGPSNBUTIUNM

    View Slide

  34. まとめ
    3 4

    View Slide

  35. まとめ
    3 5
    • Glue for RayがGAしました。


    • ⽐較的容易に分散処理が記述できるようになっています。


    • ETL処理に関しては、Pandas等と⽐較してほとんど変わらない記述で処理が可能になってい
    ます。


    • まだ成⻑段階のサービスです。今後より使いやすくなっていくことを期待しながら、みなさ
    んで積極的に使っていきましょう。

    View Slide

  36. View Slide

  37. 参考資料
    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

    View Slide