Slide 1

Slide 1 text

© LY Corporation 複数サービスを支える マルチテナント型 Batch MLプラットフォーム LINEヤフー株式会社データグループDS統括本部5本部ML2部モデル開発3チーム 田邊 拓実

Slide 2

Slide 2 text

© LY Corporation Agenda 01 自己紹介 02 Batch ML プラットフォームとは? 03 Batch ML基盤 の機能 04 Batch ML基盤の規模 05 Batch ML基盤 で提供しているモデル 06 アーキテクチャ 07 まとめ 2

Slide 3

Slide 3 text

© LY Corporation 田邊 拓実 (@ITF_BC) LINEヤフー株式会社データグループ DS統括本部5本部ML2部モデル開発3チーム 3 経歴 • 2023年3月 筑波大学大学院卒業 • 2023年4月 LINE株式会社にMLエンジニアとして新卒入社 学生時代の研究 • ブラックボックス最適化 • 強化学習 業務 • LINEスタンプの推薦 • Batch MLプラットフォームの開発 • LINEニュースの推薦

Slide 4

Slide 4 text

© LY Corporation Batch MLプラットフォームとは? 4

Slide 5

Slide 5 text

© LY Corporation Batch ML vs Online ML Batch MLプラットフォームとは? 5 オフライン (Batch) オンライン (Real-time) 学習 推論 (triton serving) ⚫ オフライン : データがまとまった後に一括で学習/推論を行う ⚫ オンライン : データが入ってくるたびにリアルタイムで学習/推論を行う

Slide 6

Slide 6 text

© LY Corporation Batch ML vs Online ML Batch MLプラットフォームとは? 6 オフライン (Batch) オンライン (Real-time) 学習 推論 (triton serving) ⚫ オフライン : データがまとまった後に一括で学習/推論を行う ⚫ オンライン : データが入ってくるたびにリアルタイムで学習/推論を行う 内製Batch ML基盤

Slide 7

Slide 7 text

© LY Corporation 内製BatchML 基盤 Batch MLプラットフォーム とは? 7 開発環境 本番環境 BatchML 基盤 データベース 学習済みモデル LINEスタンプ LINEニュース LINE公式 アカウント 属性推定 各サービス YAMLファイル YAMLファイル

Slide 8

Slide 8 text

© LY Corporation BatchML基盤 の機能 8

Slide 9

Slide 9 text

© LY Corporation Framework の紹介 Batch ML基盤の機能 9 Input Validation Resource Estimation Parameter Tuning Train / Predict Output Validation Evaluation Output Table Push Metrics データセットの スキーマをチェック データ量のチェック ハイパーパラメータ チューニング モデルの学習/推論 出力のスキーマや 値のチェック 出力の評価 UniqueやNDCG、 Accuracyなど Hive Tableに出力 データ量や 評価結果をロギング

Slide 10

Slide 10 text

© LY Corporation Framework の紹介 Batch ML基盤の機能 10 Input Validation Resource Estimation データセットの スキーマをチェック データ量のチェック

Slide 11

Slide 11 text

© LY Corporation Framework の紹介 Batch ML基盤の機能 11 Parameter Tuning Train / Predict ハイパーパラメータ チューニング モデルの学習/推論

Slide 12

Slide 12 text

© LY Corporation Framework の紹介 Batch ML基盤の機能 12 Output Validation Evaluation Output Table 出力のスキーマや 値のチェック 出力の評価 UniqueやNDCG、 Accuracyなど Hive Tableに出力

Slide 13

Slide 13 text

© LY Corporation Framework の紹介 Batch ML基盤の機能 13 Push Metrics データ量や 評価結果をロギング

Slide 14

Slide 14 text

© LY Corporation 入力の形式 Batch ML基盤の機能 14

Slide 15

Slide 15 text

© LY Corporation 入力の形式 Batch ML基盤の機能 15 メタデータの指定

Slide 16

Slide 16 text

© LY Corporation 入力の形式 Batch ML基盤の機能 16 データセットの指定

Slide 17

Slide 17 text

© LY Corporation 入力の形式 Batch ML基盤の機能 17 評価項目の指定

Slide 18

Slide 18 text

© LY Corporation 入力の形式 Batch ML基盤の機能 18 使用するモデルやリソースの指定

Slide 19

Slide 19 text

© LY Corporation 入力の形式 Batch ML基盤の機能 19 モデルパラメータの指定

Slide 20

Slide 20 text

© LY Corporation 本番環境での利用方法 Batch ML基盤の機能 20 pre-process train post-process Hive Table Model Storage Hive Table Hive Table predict Batch ML基盤

Slide 21

Slide 21 text

© LY Corporation Batch ML基盤の規模 21

Slide 22

Slide 22 text

© LY Corporation リクエスト数/day 約600 提供先のサービス 19サービス モデル数 76種類 22 Batch ML基盤の規模

Slide 23

Slide 23 text

© LY Corporation リクエスト数/day 約600 提供先のサービス数 19サービス モデル数 76種類 23 Batch ML基盤の規模

Slide 24

Slide 24 text

© LY Corporation LINE アプリの様々な場所でのスタンプ推薦に利用 • スタンプショップ ホームタブ • スタンプショップ プレミアムタブ • スタンプ詳細ページのitem to itemレコメンド • トーク画面 • 新年スタンプ LINEスタンプの推薦 24

Slide 25

Slide 25 text

© LY Corporation LINE アプリの様々な場所での公式アカウント の推薦に利用 • LINE公式アカウントホームタブ • LINE公式アカウント検索 • 詳細画面でのitem to itemレコメンド • 不正公式アカウントの検知 LINE公式アカウントの推薦 25

Slide 26

Slide 26 text

© LY Corporation 提供先のサービス数 19サービス リクエスト数/day 約600 モデル数 76種類 26 Batch ML基盤の規模

Slide 27

Slide 27 text

© LY Corporation 提供先のサービス数 19サービス モデル数 76種類 リクエスト数/day 約600 27 Batch ML基盤の規模

Slide 28

Slide 28 text

© LY Corporation Batch ML基盤で提供しているモデル 28

Slide 29

Slide 29 text

© LY Corporation モデルの紹介 Batch ML基盤 で提供しているモデル 29 モデルタイプ 説明 主な用途 モデル数 recommendation インタラクションのログからアイテムの レコメンドを生成する。 多くのモデルはtwo-towerモデルを採用。 Two-stage recommendで の1段階目で使用 12 ranker ユーザーごとのアイテムの並び替えを行う。 LightGBM on SparkやNN rankerがある。 Two-stage recommendで の2段階目で使用 9 embedding-mapping 画像やテキストからembedding vector を生成するモデル。 CB2CF*1レコメンドでのCB modelで使用 5 regression 回帰モデル。 ユーザーの年齢推定などで 使用 10 classification 分類モデル。 ユーザーの属性推定などで 使用 7 knn-search ベクトルデータを元にK近傍法で似ている アイテムやユーザー、おすすめアイテムを探索 する。 CB2CFレコメンドでのレコ メンド生成時に使用 4 1: https://arxiv.org/abs/1611.00384

Slide 30

Slide 30 text

© LY Corporation Recommendation model Batch ML基盤で提供しているモデル 30 embedding 年齢, 閲覧履歴, … ジャンル, 価格, … 購入/clickの履歴

Slide 31

Slide 31 text

© LY Corporation MaskNet Model (User Tower) 31 Batch ML基盤で提供しているモデル Recommendation model Input Features EmbeddingBag • “MaskNet: Introducing Feature-Wise Multiplication to CTR Ranking Models by Instance-Guided Mask“*1で提 案 • 特徴量の相互作用を効率的に求められる • Feature importanceも求められる • X (旧Twitter)社のレコメンドシステムでも Heavy Rankerとして採用*2 *1: https://arxiv.org/abs/2102.07619 *2: https://github.com/twitter/the-algorithm-ml/blob/main/projects/home/recap/README.md

Slide 32

Slide 32 text

© LY Corporation MaskNet Model (User Tower) 32 Batch ML基盤で提供しているモデル Recommendation model Input Features EmbeddingBag EmbeddingBagで各特徴量のID集合を埋め込みベクトル に変換 (weighted sum pooling) • レコメンドデータによく見られるID数が多いsparse性の 高いデータに強い • 出現回数や TF-IDF weight なども簡単に反映できる • pytorch.EmbeddingBagを使うことで 少ないkernelで計算可能 • Sparse gradients にも対応できるので計算効率がいい LINEスタンプ LINEニュース LINE OA LINEマンガ 属性推定 広告

Slide 33

Slide 33 text

© LY Corporation MaskNet Model (User Tower) 33 Batch ML基盤で提供しているモデル Recommendation model Input Features EmbeddingBag 複数のMaskBlockがembedding vectorからマスクを 生成し、embedding vectorを要素ごとにスケーリング 各MaskBlockの出力をconcatした後にMLPに通して user embeddingを得る

Slide 34

Slide 34 text

© LY Corporation その他の学習時の工夫 Positive sampling • 一部の正例を特徴側に残し残りを学習候補にする • frequencyの低いアイテム (レアなアイテム) の サンプリング確率を調整可能にするパラメータ導入 一部の特徴量のドロップアウトでの過学習の抑制 Follow The (Proximally) Regularized Leader*1 (FTRL) optimizerの利用 34 Batch ML基盤で提供しているモデル Recommendation model *1 https://dl.acm.org/doi/10.1145/2487575.2488200

Slide 35

Slide 35 text

© LY Corporation Recommendation model (backend) Batch ML基盤で提供しているモデル 35 Transfer Manager ZMQ Parquet Data Parquet Data process process process process process process process process process process process process CPU pod CPU pod CPU pod CPU pod GPU pod GPU pod MPI MPI MPI Transfer Manager preprocess inference postprocess

Slide 36

Slide 36 text

© LY Corporation Recommendation model (backend) Batch ML基盤で提供しているモデル 36 リソース • Preprocess, inference, postprocessで複数 pod/processをOpenMPIで並列化 • CPU podの数や1 podあたりのプロセス数 を変えた複数のリソースタイプをタスクの 規模に応じて使い分ける Parquet 読み込み • MPIによる並列読み込み • Shuffling • repeat

Slide 37

Slide 37 text

© LY Corporation Recommendation model (backend) Batch ML基盤で提供しているモデル 37 ZMQ (ZeroMQ) • Preprocess pod  inference pod inference pod  postprocess pod のpod間通信に使用 • Transfer ManagerがProducer, Consumer, Controllerの状態やコネクションを管理 • producer がデータを送信するとZMQで複 数のconsumerにデータを振り分け

Slide 38

Slide 38 text

© LY Corporation アーキテクチャ 38

Slide 39

Slide 39 text

© LY Corporation 概要 アーキテクチャ 39 ユーザー Argo Workflows (Framework) k8s cluster Model Config (ConfigMap) Model Store (ConfigMap) GPU Cluster MLflow S3 Storage リクエスト HDFS

Slide 40

Slide 40 text

© LY Corporation 開発/運用 アーキテクチャ 40 Model Repository Docker/Helm Registry k8s cluster Manifest Repository ConfigMap Secret ArgoCD Workflow Template Model開発者 Cluster 管理者 • モデルやフレームワークの実装を入れる Modelリポジトリとcluster独自の設定 (keytab, MLflow endpoint, model version, etc..) を入れる Manifestリポジトリを分離 • Modelリポジトリからモデルや フレームワークのDocker imageをpush • Manifestリポジトリでclusterに適用するdocker imageを指定することで 週次のモデルのリリースや更新を行う

Slide 41

Slide 41 text

© LY Corporation マルチテナント運用 アーキテクチャ 41 Model Repository Docker/Hel m Registry Manifest Repository ConfigMap Secret ArgoCD Workflow Template Manifest Repository ConfigMap Secret ArgoCD Workflow Template k8s cluster A k8s cluster B • LINE系のサービスで使っていたBatch ML基盤を ヤフー系のサービスで導入してもらいやすくする • アクセス権限が厳しいデータがあるなどの理由で 自分たち独自でBatch ML基盤をデプロイしたい • Argo workflows templateをhelm chart化して管理、 新規 cluster にBatch ML基盤を簡単にデプロイ可能 • cluster 独自の設定はhelm chartのパラメータや ConfigMap/Secretとして管理 Cluster A 管理者 Cluster B 管理者 Model 開発者

Slide 42

Slide 42 text

© LY Corporation まとめ 42

Slide 43

Slide 43 text

© LY Corporation オフラインでの学習/推論を中心に対応。Triton servingとしてオンライン推論にも対応 ユーザーはYAMLファイルを入力することで、モデルの学習、推論、評価、サービングなどに対応 YAMLファイルのスキーマは全環境で一緒なので開発環境とプロダクション環境のギャップが少ない LINEスタンプやLINE公式アカウントを含めた19のサービスに対応 Argo Workflows Templateのhelm chart化で複数のclusterに簡単にデプロイ可能 43 まとめ