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

クックパッドでの機械学習開発フロー/ml-ops-in-cookpad

開発室Graph
December 12, 2019

 クックパッドでの機械学習開発フロー/ml-ops-in-cookpad

クックパッドでの機械学習基盤のお話です。
https://machine-learning-pitch.connpass.com/event/154343/
にて登壇。質問とそれに対する答えを追記しました。

開発室Graph

December 12, 2019
Tweet

More Decks by 開発室Graph

Other Decks in Research

Transcript

  1. Redshift S3 Python Queuery ③HTTP リクエスト ④unload文で
 ラップ ⑤並列に結果を転送 ⑥Pythonオブジェクト

    21 学習用データ取得フロー Google Sheets Aurora ①HTTP リクエスト ②MySQLとして接続 ⑦モデル
 アップロード
  2. Redshift S3 Python Queuery ③HTTP リクエスト ④unload文で
 ラップ ⑤並列に結果を転送 ⑥Pythonオブジェクト

    22 学習用データ取得フロー Google Sheets Aurora ①HTTP リクエスト ②MySQLとして接続 ⑦モデル
 アップロード
  3. Redshift S3 Python Queuery ③HTTP リクエスト ④unload文で
 ラップ ⑤並列に結果を転送 ⑥Pythonオブジェクト

    23 学習用データ取得フロー Google Sheets Aurora ①HTTP リクエスト ②MySQLとして接続 ⑦モデル
 アップロード Aurora (MySQL) AWS上に展開されたマネージドな RDMBSシステム
  4. Redshift S3 Python Queuery ③HTTP リクエスト ④unload文で
 ラップ ⑤並列に結果を転送 ⑥Pythonオブジェクト

    24 学習用データ取得フロー Google Sheets Aurora ①HTTP リクエスト ②MySQLとして接続 ⑦モデル
 アップロード GitHubレポジトリで
 開発 差分チェック
  5. Redshift S3 Python Queuery ③HTTP リクエスト ④unload文で
 ラップ ⑤並列に結果を転送 ⑥Pythonオブジェクト

    25 学習用データ取得フロー Google Sheets Aurora ①HTTP リクエスト ②MySQLとして接続 ⑦モデル
 アップロード 差分あったら
 Auroraに書き込む
  6. Redshift S3 Python Queuery ③HTTP リクエスト ④unload文で
 ラップ ⑤並列に結果を転送 ⑥Pythonオブジェクト

    26 学習用データ取得フロー Google Sheets Aurora ①HTTP リクエスト ②MySQLとして接続 ⑦モデル
 アップロード 学習ジョブ開始
  7. Redshift S3 Python Queuery ③HTTP リクエスト ④unload文で
 ラップ ⑤並列に結果を転送 ⑥Pythonオブジェクト

    27 学習用データ取得フロー Google Sheets Aurora ①HTTP リクエスト ②MySQLとして接続 ⑦モデル
 アップロード Queuery Redshiftに安全にクエリを発行する
 社内ツール
  8. Redshift S3 Python Queuery ③HTTP リクエスト ④unload文で
 ラップ ⑤並列に結果を転送 ⑥Pythonオブジェクト

    28 学習用データ取得フロー Google Sheets Aurora ①HTTP リクエスト ②MySQLとして接続 ⑦モデル
 アップロード Redshift
 大量データを扱える
 データウェアハウス
  9. Redshift S3 Python Queuery ③HTTP リクエスト ④unload文で
 ラップ ⑤並列に結果を転送 ⑥Pythonオブジェクト

    29 学習用データ取得フロー Google Sheets Aurora ①HTTP リクエスト ②MySQLとして接続 ⑦モデル
 アップロード
  10. Redshift S3 Python Queuery ③HTTP リクエスト ④unload文で
 ラップ ⑤並列に結果を転送 ⑥Pythonオブジェクト

    30 学習用データ取得フロー Google Sheets Aurora ①HTTP リクエスト ②MySQLとして接続 ⑦モデル
 アップロード
  11. Hako •https://github.com/eagletmt/hako •クックパッド内製 (OSS) のデプロイツール •Amazon ECS上で動作する ‣ Fargate上で動作する •アプリケーションの定義を書くだけでよい

    ‣ jsonnetを書いてhako_apps という中央レポジトリにPull Request ‣ Dockerイメージ,環境変数といったタスク定義 38
  12. jsonnetの例 39 { app: { image: '012345678901.dkr.ecr.ap-northeast-1.amazonaws.com/awesome_app', cpu: 4096, memory:

    8192, secrets: [ secret('AWESOME_TOKEN_SECRET'), secret('DB_PASSWORD'), ], env: { QUEUERY_TOKEN: 'thisisatoken', }, }, scripts: [ { type: 'ckpdecs' }, utils.jenkinsTag('awesome-batch'), ], } Dockerイメージ Docker/ECSへの
 パラメータ 秘匿値は
 環境変数で
  13. 構成図 42 ECR Jenkins GitHub
 Enterprise Hako (ECS) Redshift S3

    Queuery Aurora Codebuild GitHubレポジトリで
 開発
  14. 構成図 43 ECR Jenkins GitHub
 Enterprise Hako (ECS) Redshift S3

    Queuery Aurora Codebuild Dockerfileを追加
  15. 構成図 44 ECR Jenkins GitHub
 Enterprise Hako (ECS) Redshift S3

    Queuery Aurora Codebuild Dockerfileを取得 Jenkins: CIのための自動化ツール
  16. 構成図 45 ECR Jenkins GitHub
 Enterprise Hako (ECS) Redshift S3

    Queuery Aurora Codebuild Dockerfileを元に
 ビルド CodeBuild: マネージド型
 ビルドサービス
  17. 構成図 46 ECR Jenkins GitHub
 Enterprise Hako (ECS) Redshift S3

    Queuery Aurora Codebuild ECRにプッシュ EC2 Container Registry
 Dockerコンテナイメージを保存し ているもの
  18. 構成図 47 ECR Jenkins GitHub
 Enterprise Hako (ECS) Redshift S3

    Queuery Aurora Codebuild ジョブ実行命令 Kuroko2
 クックパッド製のジョブ
 スケジューラー・管理ツール
  19. 構成図 48 ECR Jenkins GitHub
 Enterprise Hako (ECS) Redshift S3

    Queuery Aurora Codebuild Dockerイメージ をPull Kuroko2
 クックパッド製のジョブ
 スケジューラー・管理ツール
  20. 構成図 49 ECR Jenkins GitHub
 Enterprise Hako (ECS) Redshift S3

    Queuery Aurora Codebuild 学習済みモデルを Pull Simple Storage Service
 拡張性と堅牢性に優れた
 ストレージサービス
  21. 構成図 50 ECR Jenkins GitHub
 Enterprise Hako (ECS) Redshift S3

    Queuery Aurora Codebuild s3を介して
 データ取得 新しく追加された
 サービスのデータ
  22. 構成図 52 ECR Jenkins GitHub
 Enterprise Hako (ECS) Redshift S3

    Queuery Aurora Codebuild 推論結果の
 書き込み Aurora (MySQL) AWS上に展開されたマネージドな RDMBSシステム
  23. 構成図 53 ECR Jenkins GitHub
 Enterprise Hako (ECS) Redshift S3

    Queuery Aurora Codebuild 日次でS3を介して
 Redshiftへ
  24. 構成図 54 ECR Jenkins GitHub
 Enterprise Hako (ECS) Redshift S3

    Queuery Aurora Codebuild 無事に推論結果を書き込めた
  25. 構成図 55 ECR Jenkins GitHub
 Enterprise Hako (ECS) Redshift S3

    Queuery Aurora Codebuild 使ってもらわないと意味ない
  26. 参考文献 •無理をしない機械学習プロジェクト2
 https://speakerdeck.com/studio_graph/step-or-not2 •DWHを活用した機械学習プロジェクト
 https://speakerdeck.com/studio_graph/ml-with-dwh •クックパッドでの Webアプリケーション開発 2017
 https://speakerdeck.com/eagletmt/web-application-development-in-cookpad-2017 •クックパッドのデータ活用基盤


    https://techlife.cookpad.com/entry/2017/10/06/135527 •データベースドキュメント管理システム dmemo のご案内
 https://techlife.cookpad.com/entry/2016/08/08/103906 •データ活用基盤の今 〜DWH外観図〜
 https://techlife.cookpad.com/entry/2019/10/18/090000 61