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

CyberAgent AI Labを支えるCloud実験環境 / ML Experiment Management via Cloud Computing Platform in CyberAgent AI Lab

chck
May 26, 2021

CyberAgent AI Labを支えるCloud実験環境 / ML Experiment Management via Cloud Computing Platform in CyberAgent AI Lab

PyData.Tokyo Meetup #23での発表資料です

chck

May 26, 2021
Tweet

More Decks by chck

Other Decks in Programming

Transcript

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

    View Slide

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

    View Slide

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

    View Slide

  4. AI Labを支えるEcosystem
    4

    View Slide

  5. AI Labを支えるEcosystem
    5

    View Slide

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

    View Slide

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

    View Slide

  8. 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の定義

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  12. 12

    View Slide

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

    View Slide

  14. 14

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  18. 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/

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  30. 30

    View Slide

  31. 31

    View Slide

  32. 32

    View Slide

  33. 33

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide