肉球でキーボード

MLエンジニアの技術ブログです

機械学習システム設計に特化した本「Machine Learning System Design Interview」を読みました

どんな本か

システム設計の本として有名な System Design Interview の著者であるAlex Xu 氏が運営するByteByteGoが監修した、機械学習システム設計面接について書かれた本です。
日本語訳の本ではシステム設計の面接試験が有名かと思います。 bytebytego.com

本書は10個の機械学習システム設計の事例を取り上げ、各種手法などのトレードオフや、設計するシステム特有の議論ポイントをまとめています。
システム設計とはありますが具体的なインフラサービス・ツール名は出てこず、機械学習システムを構成する抽象化された要素を紹介しています。
実際にシステムの実装方法を学びたい方は、テーマごとに紹介されてる関連ドキュメントを深ぼっていく必要があります。

本書は図解が丁寧で、全部で211個の図が使われているようです。
事例ごとに全体のシステム構成がまとめられています。
以下はパーソナライズしたニュースフィードを作成する事例のシステム図の例です。

引用: 10章 Personalized News Feed Systemより

本書の構成

本書は実サービスで運用されている機械学習システムのお題に対して、以下のフレームワークを当てはめてシステム設計を行っていく構成をとっています。

  1. 要件整理
    • ビジネス目標
    • 必要機能
    • データ
    • 技術的制約
    • システムスケーラビリティ
    • システムパフォーマンス
  2. 機械学習タスクの問題定義
  3. データ準備
    • データエンジニアリング
    • 特徴量エンジニアリング
  4. モデル開発
    • モデル選択
    • モデル学習
  5. 評価
    • オフライン評価
    • オンライン評価
  6. モデルサービング
    • 推論パイプライン
  7. 監視とインフラストラクチャ

第2章の画像検索システムの章が無料公開されています。フレームワークに当てはめて、画像のEmbedding Vectorを用いた類似度評価を実現する流れが書かれています。
https://bytebytego.com/courses/machine-learning-system-design-interview/visual-search-system

機械学習システムの事例

  • 画像検索システム
  • Google Street Viewのぼかし機能
  • YouTubeの動画検索
  • 有害コンテンツ検知
  • 動画コンテンツ推薦システム
  • イベント推薦システム
  • ソーシャルプラットフォームでの広告クリック予測
  • Airbnbの類似施設検索
  • News Feedのパーソナライズ
  • ソーシャルネットワークのつながり推薦

学び

有名なサービスで実際に使用されている題材を取り上げているので、推薦と検索を目的とした機械学習問題が多めの印象です。
単に推薦といっても題材によって問題設定が大きく異なることが印象的でした。
例えば動画コンテンツ推薦とイベント推薦では、推薦対象のitemが短期間しか存在しないかという違いがあります。そのため継続的学習やコールドスタート問題への対応の重要性が変わってきます。

モデルや評価指標のトレードオフに関する議論は面白かったです。
例えば広告クリック予測システムの題材では8個のモデルのPros/Consをまとめ、課題設定に則した技術選定を行っています。

  • Logistic Regression
  • Feature crossing + logistic regression
  • Gradient boosted decision trees
  • Gradient boosted decision trees + logistic regression
  • Neural networks
  • Deep & Cross networks
  • Factorization Machines
  • Deep Factorization Machines

時代の流行りに合わせた配慮かもしれませんが、Neural Networkベースの機械学習モデルを採用したシステム構成がメインとなっています。
Learning to Rank(LTR), Approximate nearest neighbor (ANN), Two-tower neural network, multi-task DNN, Graph Neural Network (GNN)などの、聞いたことはあるけど実務レベルで使ったことがないトピックを詳しく取り上げてくれてたので、復習するきっかけができました。

おわりに

@harutoriya さんの退職ブログの中で、有休消化中に読む本として Machine Learning System Design Interview を取り上げていたのを見かけて読んでみることにしました。
株式会社メルカリを退職しました - 迷わず行けよ、行けばわかるさ - | Shunya Ueta

System Design Interviewの日本語版である システム設計の面接試験 を読んだことがある方からすると、本書はこちらの本の内容を機械学習システムに特化した位置付けだと思います。

英語ではありますが労力を払ってでも読む価値があると自分は思ったので、機械学習エンジニアの方は読んでみることをお勧めします。