Slide 1

Slide 1 text

CyberAgent AI Labを支える Cloud実験環境 PyData.Tokyo 20210526 Yuki IWAZAKI@chck / CyberAgent AI Lab

Slide 2

Slide 2 text

Hello! I am Yuki IWAZAKI@chck ◦ 2014...Backend Engineer (Ruby/Scala) └2017...ML/DS (Scala/Python) └2018-...Research Engineer in AI Lab ◦ Multimedia (Vision & Language) 2

Slide 3

Slide 3 text

CyberAgent AI Labの規模感 人数(35) 研究領域 3

Slide 4

Slide 4 text

AI Labを支えるEcosystem 4

Slide 5

Slide 5 text

AI Labを支えるEcosystem 5

Slide 6

Slide 6 text

AI Labを支えるEcosystem Data selection ailab-datasets 6

Slide 7

Slide 7 text

tensorflow-datasets Public Datasetのdata loader 7 celeb_a imagenet, cifar10, mnist coco squad iris, movielens, titatic imdb, wiki40b youtube_vis https://www.tensorflow.org/datasets/catalog/overview

Slide 8

Slide 8 text

tensorflow-datasets Public Datasetのdata loader 8 celeb_a imagenet, cifar10, mnist coco squad iris, movielens, titatic imdb, wiki40b youtube_vis https://www.tensorflow.org/datasets/catalog/overview Dataset名を指定 Iterationの定義

Slide 9

Slide 9 text

tensorflow-datasets: load “tensorflow” とあるが, numpyやpandas形式で出力できる 9

Slide 10

Slide 10 text

tensorflow-datasets: load “tensorflow” とあるが, numpyやpandas形式で出力できる 10 tf.data numpy pandas

Slide 11

Slide 11 text

tensorflow-datasets: create tfds cliからtemplateを生成 11

Slide 12

Slide 12 text

12

Slide 13

Slide 13 text

13 Versioning Metadata. カラムの型の定義 データの説明文 引用論文のURL データのダウンロード 分割方法の指定 前処理含むGenerator

Slide 14

Slide 14 text

14

Slide 15

Slide 15 text

15 前処理含むGenerator (apache-beam pipeline)

Slide 16

Slide 16 text

Private dataの課題感 ◦ Private dataの管理にルールがない ◦ 全プロダクトのデータ集約基盤は Researcher向けじゃない ◦ 各々がオレオレJupyterlabで実験 ◦ 前処理の冪等性担保や共有が困難 ◦ とにかく属人的で難解なSQL ◦ Public -> Private dataでの実験 ◦ インターンや新メンバーの学習コスト ◦ 急にDomain知識が必要になる preprocess preprocess preprocess product_a dataset_c product_b 16

Slide 17

Slide 17 text

ailab-datasets ◦ mnist.loadのようにメンテフリーに扱いたい ◦ Domain知識をコード内に埋め込みたい ◦ tensorflow-datasetsのwrapper ◦ Lab共通のPrivate Dataset Loader ◦ 社内githubからpip installで利用 1. Data追加が簡単 2. ProductやTaskの単位でVersioning 3. Apache Beamによる高速な前処理 product_a product_b dataset_c product_a dataset_c product_b ailab-datasets 17

Slide 18

Slide 18 text

ailab-datasets product_a product_b dataset_c product_a dataset_c product_b ailab-datasets 18 ailab_datasets/ ┣products/ ┃┣product_a ┃┗product_b ┣image_classification/ ┗text_generation/

Slide 19

Slide 19 text

PowerfulなDataset Runner Apache BeamによりCPU並列, Worker並列が選択可能 https://towardsdatascience.com/running-an-apache-beam-data-pipeline-on-azure-databricks-c09e521d8fc3 19

Slide 20

Slide 20 text

ailab-datasets -> post-process 利用者がデータ規模に応じて後段の処理を自由に選択可能 20 ailab-datasets Tensorflow Transform tf.data Numpy Pandas Dask-cuDF Distributed GPU CPU Apache Beam

Slide 21

Slide 21 text

AI Labを支えるEcosystem Modeling ailab-model-zoo 21

Slide 22

Slide 22 text

Private modelの課題感 ◦ 似たデータ,似たタスクによるモデルの再発明が多発 ◦ 例えば広告×NLPや広告×CVでpretraining taskが収束してくる ◦ Researcher間で重みシェアしたい欲高まる ◦ 誰がどんな学習済モデルを秘蔵しているかが把握しづらい状況 ◦ Aさんの学習済モデルはBさんに応用できるかも ◦ Public pre-trained modelのprivate版がほしかった ◦ ResNet(on imagenet)やBERT(on ja-wiki)の社内データ版 22

Slide 23

Slide 23 text

ailab-model-zoo (WIP) tensorflow-hubのManaged版であるAI Hub(GCP)を利用 以下3つがPrivateに共有可能: - kubeflow pipeline - notebook - trained model 23

Slide 24

Slide 24 text

ailab-model-zoo (WIP) “tensorflow” とあるが, 実体はuploadしたobjectの検索service Metadataを入力して共有したいobjectをupload tf.hubのself-hostingも可能だが 現状はAI Hubで必要十分 tensorflow/hub/issues/266 24

Slide 25

Slide 25 text

ailab-model-zoo (WIP) 検索機能付きで管理しやすく,Downloadして利用 25 Public model Private model

Slide 26

Slide 26 text

AI Labを支えるEcosystem ailab-mlflow Evaluation 26

Slide 27

Slide 27 text

実験管理の課題感 Teamや個人で実験管理がしたい Free: MLflow, Keepsake SaaS: Neptune.ai, Comet.ml, Wandb MLflowはServer構築が面倒 SaaS系は個人の無料枠を超えると高い 27

Slide 28

Slide 28 text

実験管理の課題感 MLflow Serverを1つ立てて使い回しでもよいが, Experiments枠で各Userの実験を分けると煩雑 個人やチームごとに1MLflowあるとBetter 28 ■ Write ■ Read

Slide 29

Slide 29 text

ailab-mlflow AI Lab共通で使えるMLflow Clusterを構築 OSSのMLflow Tracking ServerをLab PrivateでHosting GCP Resourceで各ユーザはCost/Server管理要らず Gmail Whitelist Accessなので共同研究先との利用にも 29

Slide 30

Slide 30 text

30

Slide 31

Slide 31 text

31

Slide 32

Slide 32 text

32

Slide 33

Slide 33 text

33

Slide 34

Slide 34 text

Cloud IAPによるユーザ認証 34 Not Authorized

Slide 35

Slide 35 text

How to track 1. Terraformで$user endpointを作成 2.Training codeからOAuth Token発行 3.Serverに向けて実験ログを飛ばす 4.${MLFLOW_HOST}/${USER}にアクセス 5.実験結果を自由に管理 35

Slide 36

Slide 36 text

Summary - 実験の流れ - Data (ailab-datasets) - -> Preprocess (tft, tf.data, numpy, pandas) - -> Training (ai platform training) - -> Save model (ailab-model-zoo) - -> Report (ailab-mlflow) OSSを上手くwrapすることで メンテコストを抑えた実験サポート環境を実現 36

Slide 37

Slide 37 text

Future work: ailab-pipeline - 実験の流れ - Data (ailab-datasets) - -> Preprocess (tft, tf.data, numpy, pandas) - -> Training (ai platform training) - -> Save model (ailab-model-zoo) - -> Report (ailab-mlflow) 全体のPipelineもうまいこと管理したいが... Pipeline 37

Slide 38

Slide 38 text

どう布教させるかの話 ResearcherはCloudの新技術とかに拘らない傾向 意外と使ってくれないのでTutorialや事例を地道に増やす, 共著で入るときにこっそり導入してしまう 全体のPipelineを設計して自由度を下げるよりも、まずはパーツ 部分に注力し、利用者側が取捨て選択できるように 38

Slide 39

Slide 39 text

ailab-mlflowの構築方法 近々blog公開するのでぜひ https://cyberagent.ai/blog/research/ 39

Slide 40

Slide 40 text

40 Thanks! Any questions? You can find me at: ◦ github@chck ◦ [email protected]