Slide 1

Slide 1 text

機械学習がPOCを超えるため の技術基盤 2021 年 7 月 31 日 nakamasato

Slide 2

Slide 2 text

About me ● 那珂将人 ● 2016~2018 年 ByteDance でレコメンドエンジニア ● 2018 年〜今 インフラ → SRE 大規模機械学習システム開発の経験 + Cloud Native な基盤構築・運用経験 → 機械学習システム構築・運用を勉強していきたい !

Slide 3

Slide 3 text

概要 ● 機械学習を、現実の課題を解決するための仕組みとするのは難しい ● 機械学習システムの紹介 今回の話は ● メインはレコメンドシステムをベースとした話 ( 自分の経験による ) ● すべての機械学習に当てはまるとは限らない

Slide 4

Slide 4 text

目的: 機械学習を組み込んだシ ステムの例を紹介して、全 体像を理解する

Slide 5

Slide 5 text

レコメンドシステム

Slide 6

Slide 6 text

レコメンドシステムを使ったサービス Amazon アマゾンの商品レコメンド ユーザへの影響 : ● 購買履歴をもとのユーザがほしいと推定 されるものをレコメンドする YouTube コンテンツレコメンド ユーザへの影響 : ● 閲覧履歴をもとにユーザがほしいと推定 されるものをレコメンドする

Slide 7

Slide 7 text

機械学習アプリケーション開発サイクル 例 1. イベント設計 2. データの前処理 3. データセットの生成 4. モデル学習のプラットフォーム 5. バッチ学習とオンライン学習 6. AB テスト

Slide 8

Slide 8 text

1. イベント設計 1. 入力元データをいじれない場合には不要 2. どんなイベントを集めるか (impression, click, staytime,..) 3. どんな属性を集めるのか (content_id, user_id, device_id…, ...) 4. 何を最大化したいのか ( 滞在時間 ) 5. 新しい人がイベント追加を容易にできるか ( 一覧、名前、コード化、レビュー …)

Slide 9

Slide 9 text

2. Seamlessに入ってくるデータの処理 ● 生データの保存 ● 所謂前処理 ○ ストリームに流す ○ 特徴量の計算 (NLP, 画像解析を通す ) ○ プロファイルの計算 ( ユーザやコンテンツのプロファイル計算 ) 生行動データ 前処理 (id生成、NLP、画像 特徴量の計算など) コンテンツ系データ 前処理 プロファイルなど 2次データ コンテンツ特徴量

Slide 10

Slide 10 text

3. モデル学習に使うデータセットの生成 ● データセットの作成 ○ 各前処理で作成した特徴量を id から取得し、各レコードに特徴量に変換してデータセット生成 ● データセットの保存 ○ データセットをストリームにしてオンライン学習に使えるようにする ○ データセットを分散ストレージに保存しバッチ学習に使えるようにする 生行動データ 前処理 (id生成、NLP、画像 特徴量の計算など) コンテンツ系データ 前処理 ストリーム プロファイルなど 2次データ データセット作成 分散ストレージ コンテンツ特徴量

Slide 11

Slide 11 text

4. モデル学習のプラットフォーム モデル学習フェーズの PDCA サイクルを高速に回すために重要 1. 機械学習エンジニアがモデルを Config ファイルで組める ( 特徴量の指定やモデル ) a. 可視化もできるとさらに 👍 2. Config ファイルの指定とバッチデータによる学習 ( 長い期間のデータに対して学習 を行いモデルの良し悪しを検証する ) a. AUC などの評価を使う b. 大体この段階でボツなモデルは終了 3. 各モデル学習に対し、 Config 、学習期間、 Job へのリンク、 Metrics へのリンクなどが 見れると毎回のサイクルが早くなる

Slide 12

Slide 12 text

5. バッチ学習したモデルをオンライン学習へ バッチ学習が完了すると、学習していた間にも新しいデータが生成されている! 1. バッチ学習したモデル ID とバッチ学習に使ったデータの期間の最終点を指定して オンライン学習を開始 2. オンライン学習は、指定されたモデルと指定された時間点からストリームデータを 使ってモデルのパラメータを更新し続ける ストリーム データセット作成 分散ストレージ バッチ学習 モデル (バッチ) オンライン学習 モデル (オンライン) モデルConfig

Slide 13

Slide 13 text

6. ABテスト モデルを入れ替えるかどうかの判断のために重要な部分 1. AB テストプラットフォーム a. トラフィックの分流定義とパラメータの指定 2. API サーバ a. リクエストごとに分流を行い、 AB テストサービスから対象となる AB テスト変数を読み込み、機械学習 サーバの API をコールする 3. 機械学習サーバ a. AB テストのパラメータによってモデルを選択したり重みを調整したりする 4. 行動ログ a. 行動ログに AB テストパラメータを含めてログに吐き出す 5. 集計 a. AB テストの集計 Job がログから集計して、試験グループとベースグループに対する指標計算を行う

Slide 14

Slide 14 text

6. ABテスト クライアント APIサーバ ABテストサービス 機械学習API モデルA モデルB 行動データ (ABパラメータを含 む) ログ集計 ダッシュボード ABテストプラットフォーム (UI) ① AB テスト設定 ②リクエストを送る ③分流と AB テストパラ メータ取得 ④ AB テストパラメータ を付加してリクエスト ⑤ AB テストパラメータによって モデルから結果を受け取る ⑥結果を返す ⑦結果を返す ⑧ AB テストパラメータを含む行 動ログイベント ⑨ AB テストグループ ごとに集計 ⑨結果を可視化

Slide 15

Slide 15 text

アプリケーションに機械学習を入れる難しさ 1. システムの複雑性が大幅に増す a. 前処理、データセット作成、モデル学習 Job ( バッチ / ストリーム ) 、 AB テストのシステム横断の対応 2. 機械学習の精度の高さだけではない a. ビジネス要件として、機械学習の最適解に人間が干渉する必要がある場合も ( 例 あるコンテンツは 常に Top に配置、 Ads の頻度など ) 3. 機械学習の結果の偏り a. データの偏りが機械学習により助長される ( 例 . ユーザに男性が多い →モデルが男性ウケするものを いいものと学習→男性向けコンテンツばかりになる →女性が入ってきても離脱しやすくなる )

Slide 16

Slide 16 text

次回以降 Open Source や ML サービス 1. Kubeflow 2. Argo workflows 3. AI Platform 4. SageMaker 5. ... どのようにこれらのツールを有効活用してアプリケーション開発やコアの機械学習部分に 注力しつつ、機械学習の価値を届けていけるか