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

機械学習システムアーキテクチャ入門 #1

機械学習システムアーキテクチャ入門 #1

機械学習システムのアーキテクチャを検討する上で考慮すべき課題について調査しまとめた資料です。Money Forward 社内で開かれた MLOps についての勉強会のために作成しました。

## Reference

### 大規模なデータを扱う難しさ

- Architecture Evolution in Repro https://speakerdeck.com/joker1007/architecture-evolution-in-repro
- Sidekiq to Kafka ストリームベースのmicro services https://speakerdeck.com/joker1007/sidekiq-to-kafka-sutorimubesufalsemicro-services
- ReproのImport/Exportを支えるサーバーレスアーキテクチャhttps://speakerdeck.com/joker1007/exportwozhi-erusabaresuakitekutiya
- Next.js + Railsでリニューアルした社内ニコカレシステムの技術スタックを公開します - Fusic Tech Blog https://tech.fusic.co.jp/posts/2021-07-15-nicole-renewal/
- Repro における Presto の安定化・パフォーマンス改善の歩み / Repro Tech Meetup #9 https://speakerdeck.com/a_bicky/repro-tech-meetup-number-9
- MySQL/InnoDB の裏側 / Rails Developers Meetup 2018 Day 1 - Speaker Deck https://speakerdeck.com/a_bicky/rails-developers-meetup-2018-day-1
- AWS 導入事例:株式会社マネーフォワード | AWS https://aws.amazon.com/jp/solutions/case-studies/moneyforward/
- 組織と事業の急拡大に立ち向かうためのマルチテナント Amazon EKS クラスタ/マルチアカウントアーキテクチャ / Multi-tenant EKS Muti-account architecture at Money Forward https://speakerdeck.com/0gajun/multi-tenant-eks-muti-account-architecture-at-money-forward
- O'Reilly Japan - データ指向アプリケーションデザイン https://www.oreilly.co.jp/books/9784873118703/

### 機械学習システムの難しさ

- Vertex Model Monitoring で活用する、Google の MLOps 監視手法 | Google Cloud Blog https://cloud.google.com/blog/ja/topics/developers-practitioners/monitor-models-training-serving-skew-vertex-ai
- A brief introduction to Training/Serving Skew https://zenn.dev/asei/articles/e593da33c53ee4

### 大規模なデータを扱うためのアーキテクチャ

- Big Data + Fast Data = ラムダアーキテクチャー! | NTTデータ先端技術株式会社 https://www.intellilink.co.jp/column/bigdata/2015/041500.aspx
- ビッグ データ アーキテクチャ - Azure Architecture Center | Microsoft Docs https://docs.microsoft.com/ja-jp/azure/architecture/data-guide/big-data/#lambda-architecture
- O'Reilly Japan - データ指向アプリケーションデザイン https://www.oreilly.co.jp/books/9784873118703/
- Data preprocessing for machine learning: options and recommendations  |  Cloud Architecture Center  |  Google Cloud https://cloud.google.com/architecture/data-preprocessing-for-ml-with-tf-transform-pt1
- The Dataflow Model: A Practical Approach to Balancing Correctness, Latency, and Cost in Massive-Scale, Unbounded, Out-of-Order Data Processing – Google Research https://research.google/pubs/pub43864/)
- The Beam Model [model evolution and details, ~45 min] - Google スライド https://docs.google.com/presentation/d/1SHie3nwe-pqmjGum_QDznPr-B_zXCjJ2VBDGdafZme8/edit#slide=id.g12846a6162_0_4764
- Streaming 101: The world beyond batch – O’Reilly https://www.oreilly.com/radar/the-world-beyond-batch-streaming-101/
- From Lambda to Lambda-less: Lessons learned | LinkedIn Engineering https://engineering.linkedin.com/blog/2020/lambda-to-lambda-less-architecture
- MOVの機械学習システムを支えるMLOps実践 https://www.slideshare.net/takashisuzuki503/movmlops
- beam/wordcount.py at master · apache/beam https://github.com/apache/beam/blob/master/sdks/python/apache_beam/examples/wordcount.py#L80-L90
- Quotas & limits  |  Cloud Dataflow  |  Google Cloud https://cloud.google.com/dataflow/quotas#compute-engine-quotas

Asei Sugiyama

June 19, 2022
Tweet

More Decks by Asei Sugiyama

Other Decks in Technology

Transcript

  1. Repro の歩み (1/3) Ruby on Rails で Google Analytics のようなシステム

    を組んでいた Joker さんの資料が 詳しい Architecture Evolution in Repro - Speaker Deck
  2. Repro の歩み (3/3) Rails アプリケーションとは 別にデータの集計を行うバ ックエンドを構築 大規模集計用に Apache Cassandra,

    Hive を採用 リアルタイムな集計を行う ように Apache Kafka によ るストリーム処理
  3. 補足: なんで遅くなるの? レコード数が多くなると計算量が増 える SELECT: (要 index) JOIN: (NLJ, index

    なし) サービスが成長するにつれて、結合 するテーブル数もテーブル内のカラ ムも増える O(log N) O(MN) MySQL/InnoDB の裏側 / Rails Developers Meetup 2018 Day 1 - Speaker Deck
  4. 注意: RDB = 悪ではない 開発しやすいことは立上げ 期において重要 プロダクトが拡大していく と要件が変わっていく プロダクトの状況に合わせ てアーキテクチャの変更が

    必要 組織と事業の急拡大に立ち向かうためのマルチテナント Amazon EKS クラスタ/ マルチアカウントアーキテクチャ / Multi-tenant EKS Muti-account architecture at Money Forward - Speaker Deck
  5. トランザクションシステムと 分析処理システム (1/2) オンライントランザクショ ン処理 (OLTP): ユーザーの 入力をインタラクティブに 処理 オンライン分析処理

    (OLAP): 大量のレコードを 処理 Martin Kleppmann 著 斉藤 太郎 監訳 玉川 竜司 訳 データ指向アプリケーション デザイン―― 信頼性、拡張性、保守性の高い分散システム設計の原理 https://www.oreilly.co.jp/books/9784873118703/
  6. データレイク・データウェアハウ ス・データマート プロダクトとは別に分析用シス テムを作成する データレイク: データを集約 データウェアハウス: 集めたデー タを整形 データマート:

    使いやすいデータ を提供 Martin Kleppmann 著 斉藤 太郎 監訳 玉川 竜司 訳 データ指向アプリケーションデザイン ―― 信頼性、拡張性、保守性の高い分散システム設計の原理 https://www.oreilly.co.jp/books/9784873118703/
  7. モデルの訓練と推論 モデルの訓練は OLAP 的な 特性を持つ モデルの推論は OLTP 的な 特性を持つ この2つは特性が違うので別

    のシステムとしたい Martin Kleppmann 著 斉藤 太郎 監訳 玉川 竜司 訳 データ指向アプリケーション デザイン―― 信頼性、拡張性、保守性の高い分散システム設計の原理 https://www.oreilly.co.jp/books/9784873118703/
  8. ラムダアーキテクチャ 同一のデータソースを2つの パスで処理 Hot path: 精度を犠牲に素早 く処理 Clod path: すべてのデータ

    を対象にバッチ処理 ビッグ データ アーキテクチャ - Azure Architecture Center | Microsoft Docs
  9. Dataflow (2/2) 信じがたいが本当に作った (MilWheel) Google CLoud でサービス 化した (Dataflow) ストリーム処理を書きやす

    いような SDK を作成し OSS にした (Apache Beam) The Beam Model [model evolution and details, ~45 min] - Google Slide
  10. TensorFlow Transform + Apache Beam (2/2) どんな前処理でもできるわ けではないので要検証 Google Cloud

    のドキュメン トは一読の価値あり Data preprocessing for machine learning: options and recommendations | Cloud Architecture Center | Google Cloud
  11. 非機能要件に注意する (2/2) できる限り SLA を低くでき るように交渉する Mov: 機械学習バッチが正常 に完了しない場合のフォー ルバック先を用意

    m3: 機械学習 API が正常に 動作しない場合の処理をプ ロダクトに実装 MOVの機械学習システムを支えるMLOps実践
  12. Apache Beam のプログラムの例 読めますか? # The pipeline will be run

    on exiting the with block. with beam.Pipeline(options=pipeline_options) as p: # Read the text file[pattern] into a PCollection. lines = p | 'Read' >> ReadFromText(known_args.input) counts = ( lines | 'Split' >> (beam.ParDo(WordExtractingDoFn()).with_output_types(str)) | 'PairWithOne' >> beam.Map(lambda x: (x, 1)) | 'GroupAndSum' >> beam.CombinePerKey(sum)) beam/wordcount.py at master · apache/beam
  13. マネージドサービス を用いる場合であっ ても、十分に検証を 行う クォータにより無 限にはスケールし ない Dataflow はノード に

    IP が必要で、利 用できる IP の数は 意外と少ない Quotas & limits | Cloud Dataflow | Google Cloud
  14. Reference 大規模なデータを扱う難しさ (1/2) Architecture Evolution in Repro - Speaker Deck

    Sidekiq to Kafka ストリームベースのmicro services - Speaker Deck ReproのImport/Exportを支えるサーバーレスアーキテクチャ - Speaker Deck Next.js + Railsでリニューアルした社内ニコカレシステムの技術スタック を公開します - Fusic Tech Blog
  15. 大規模なデータを扱う難しさ (2/2) Repro における Presto の安定化・パフォーマンス改善の歩み / Repro Tech Meetup

    #9 - Speaker Deck MySQL/InnoDB の裏側 / Rails Developers Meetup 2018 Day 1 - Speaker Deck AWS 導入事例:株式会社マネーフォワード | AWS 組織と事業の急拡大に立ち向かうためのマルチテナント Amazon EKS ク ラスタ/マルチアカウントアーキテクチャ / Multi-tenant EKS Muti- account architecture at Money Forward - Speaker Deck O'Reilly Japan - データ指向アプリケーションデザイン
  16. 大規模なデータを扱うためのアーキテクチャ (1/2) Big Data + Fast Data = ラムダアーキテクチャー! |

    NTTデータ先端技術 株式会社 ビッグ データ アーキテクチャ - Azure Architecture Center | Microsoft Docs O'Reilly Japan - データ指向アプリケーションデザイン Data preprocessing for machine learning: options and recommendations | Cloud Architecture Center | Google Cloud The Dataflow Model: A Practical Approach to Balancing Correctness, Latency, and Cost in Massive-Scale, Unbounded, Out-of-Order Data Processing – Google Research
  17. 大規模なデータを扱うためのアーキテクチャ (2/2) The Beam Model [model evolution and details, ~45

    min] - Google スラ イド Streaming 101: The world beyond batch – O’Reilly From Lambda to Lambda-less: Lessons learned | LinkedIn Engineering MOVの機械学習システムを支えるMLOps実践 beam/wordcount.py at master · apache/beam Quotas & limits | Cloud Dataflow | Google Cloud