Slide 1

Slide 1 text

FargateとAthenaで作る、 機械学習システム 2022/8/4(⽊) AKIBA.AWS Online #9 データアナリティクス事業部 鈴⽊ 那由太 1

Slide 2

Slide 2 text

2 ⾃⼰紹介 鈴⽊ 那由太 - nayuts クラスメソッド 株式会社 データアナリティクス事業本部 ⼊社: 2021/05 好きなサービス: Amazon Athena 担当業務:データ分析基盤の構築・運⽤、機械学習システムの検証 ほか: kaggleにノート公開したりしていた。 2022 APN AWS Top Engineers(Analytics)

Slide 3

Slide 3 text

3 本⽇お話ししたいこと

Slide 4

Slide 4 text

4 本⽇お話ししたいこと 内容 • S3・Athena・Fargateでの機械学習システムの構成例 (CPUで動くモデル⽤、バッチ処理、初期段階のイメージ) 課題意識 • 機械学習モデルを作るところまではできたけど、システム化すると き、どの部分にどういう役割を持たせるか難しかった。 • Fargateタスクで動かしてみたかったが、ネットワーク・権限の要件 が多く感じた。

Slide 5

Slide 5 text

5 本⽇お話ししたいこと 想定視聴者 • FargateタスクとS3で機械学習システムを構成してみたい⽅ LTの技術的な要点 • プライベートサブネットでFargateタスクを動かすために必要な要 件 • データを蓄えるところはデータ分析基盤の3層構成にすると当ては めやすい

Slide 6

Slide 6 text

6 LTのテーマ ご紹介する構成・考え⽅

Slide 7

Slide 7 text

7 紹介する構成 前処理・結合 データマート層 データを貯める部分 + 機械学習機能 で構成する。 データレイク層 学習・推論 ワークフロー エンジン データを貯める部分 機械学習部分

Slide 8

Slide 8 text

8 構成の根拠

Slide 9

Slide 9 text

9 構成の根拠 ①データレイク層 ②データウェアハウス層 ③データマート層 No 名前 役割 ① データレイク層 ⽣データを格納しておく。後続のロジック修正時に 再計算できるようにしておく。 ② データウェアハウス層 クレンジングや共通化したいデータを格納する。基 盤が成熟していない場合、無いこともある。 ③ データマート層 ユースケース⽤のデータを格納しておく。 データ分析基盤部分は3層で考えるのが、今は⼀般的です。 ˞ʰ࣮ફతσʔλج൫΁ͷॲํᝦʙ ϏδωεՁ஋૑ग़ͷͨΊͷσʔλɾγεςϜɾώτͷϊ΢ϋ΢ʱΛࢀߟʹ͠·ͨ͠ɻ IUUQTHJIZPKQCPPL

Slide 10

Slide 10 text

10 紹介する構成(再掲) 前処理・結合 データマート層 データを貯める部分 + 機械学習機能 で構成する。 データレイク層 学習・推論 ワークフロー エンジン データを貯める部分 機械学習部分

Slide 11

Slide 11 text

11 難しかったところ

Slide 12

Slide 12 text

12 プライベートサブネットで実⾏する場合 エンドポイント・IAMロールは要件が多めです。 ※NATがないケース

Slide 13

Slide 13 text

13 ワークフローエンジンで実⾏する場合 別のリソースから起動する場合は、追加で必要なものがあります。 ※NATがないケース

Slide 14

Slide 14 text

14 パフォーマンスチューニング CPUの値とメモリの値に許容される組み合わせがある。 ■以下のドキュメントより2022/07/23に抜粋 https://docs.aws.amazon.com/ja_jp/AmazonECS/latest/userguide/task_definition_parameters.html

Slide 15

Slide 15 text

15 実験管理 ■以下ブログより20220730に抜粋 https://aws.amazon.com/jp/blogs/news/machine-learning-managing-your-machine- learning-lifecycle-with-mlflow-and-amazon-sagemaker/ ■以下ブログより20220730に抜粋 https://aws.amazon.com/jp/blogs/machine- learning/visualizing-tensorflow-training-jobs-with- tensorboard/ ⾃分で構築するなら以下の2つの選択肢がありそう。 ① MLFlow ② TensorBoard ① MLFlowの利⽤例 ② TensorBoardの利⽤例

Slide 16

Slide 16 text

16 そのたポイント

Slide 17

Slide 17 text

17 処理単位の分け⽅ 前処理・結合 データマート層 データレイク層 学習実行 学習済みモデル ワークフロー エンジン 学習済みモデル データマート層 推論実行 データマート層 データマート層 実行 処理1:データの作成 処理2:学習 処理3:推論 ⽇毎・⽉毎 に出⼒ 処理内容と周期で分けると整理しやすかったです。

Slide 18

Slide 18 text

18 起動設定やデータの渡し⽅ ワークフロー エンジン 学習または推論 実行 ①スケジュール実⾏ ワークフロー定義内でスケジューリングする。 ②学習・推論に利⽤するデータの指定 タスク定義の環境変数でS3上のどのオブジェクトを使うか指定する。 ワークフローからSDKでFargateタスクを呼び出し、環境変数を 上書きすると使いやすい。 Boto3 documentationより20220730に抜粋

Slide 19

Slide 19 text

19 メリット・デメリット • メリット • RedshiftなどDWH製品に詳しくなくても、とりあえずS3とAthenaを覚えれ ばサーバーレスで実現できる⼿軽さ。 • S3を起点としてFargateからデータを読み出しやすい。 • デメリット • DWH製品とは異なり、ストレージに保存する際に型などのチェックがしにく く、利⽤する際まで異常に気づかないことがある。 • このあたりを使うと良いかも? • Redshift Serverless

Slide 20

Slide 20 text

20 ブログ • 以下のブログにも記載しました。

Slide 21

Slide 21 text

21