機械学習システムデザイン

機械学習システムデザイン ―実運用レベルのアプリケーションを実現する継続的反復プロセス を読み終えたので、感想を記しておく。

背景として自分は3年間のプロダクション環境下での機械学習システム開発経験、3年半のバックエンド開発経験があるので、機械学習システム開発の経験者の視点からのレビューとなる。

転職後は機械学習エンジニアのポジションとして働くので、Chip Huyenさんが2022-06-21 に出版した書籍であるDesigning Machine Learning Systems: An Iterative Process for Production-Ready Applicationsが2023/9/1に日本語訳されていたので良い機会なので読んでみた。4h30mぐらいで全てを読むことができました。

全体的な感想として、流石Chip Huyenさん!!!という書籍の内容でした。著者の豊富な経験を交えつつ、あらゆるところでリファレンスベースでの実例が紹介されているのが特徴で、この書籍を書き上げるのはとても大変だったと思います。論文だけで終わらずに、カンファレンスの講演やネット記事なども収集しているのが良い意味で実践的な事例が収集されています。そのおかげで、この書籍を読めば世界最先端の事例を事例ベースで学ぶことができます。

翻訳の質も非常に高く、この内容を日本語で学べるのはとても貴重ですね。機械学習システムに関する基礎としてはバイブルと言える内容です。仕事で機械学習に携わる人は要所要所で見直しつつ参照すると良さそうです。逆にハンズオン的にコードを書きつつ学ぼうという書籍ではないので、それを求めている人には合わないかも知れません。

目次は以下の通りで、

1章 機械学習システムの概要
2章 機械学習システム設計の概要
3章 データエンジニアリングの基礎知識
4章 訓練データ
5章 特徴エンジニアリング
6章 モデル開発とオフライン評価
7章 モデルのデプロイと予測サービス
8章 データ分布のシフトと監視
9章 実現場での継続学習とテスト
10章 MLOpsにおけるインフラとツール
11章 機械学習の人的側面

機械学習システムのモデリング部分だけではなく、データエンジニアリングや機械学習プラットフォーム、そして、11章では、機械学習チームの構成デザインまで言及されています。

感想

自分にとって興味深かった章をピックアップしながら、感想も書いておく。

  • 1章機械学習システムの概要
    • 「作るまでは偽物(fake-it-til-you make it)」のアプローチがとられます\

      • 裏で人力でシステムを稼働させること fake-it-til-you make itというらしい、面白い!
    • 1.2.1.1 さまざまな利害関係者と要求
      • ここはかなりかなりリアルな利害関係者の様相を表していて面白い。機械学習プラットフォームチームが、モデリングを担当しているチームに対してヘイトを貯めている点とかも追うね、分かるよ!!となったり。
  • 2章機械学習システム設計の概要
    • 2.1 ビジネスと機械学習の目標
      • この節ではバッサリと「スタイリッシュな機械学習の指標には興味がありません … マネージャーはビジネスの指標にしか興味上がりません」と書かれており、システム設計の章の初期でこの問題提起をするのは素晴らしいね。モデルの精度が上がっても、会社にとって意味がある改善に繋がらないと何も意味が無いからね。
      • バックエンド開発と異なり機械学習システムの勘所としての難しさは、モデルの精度がシステムの要求水準に関わってくるところだが、どれくらいの精度になればそれば満たされるかが不明な点が大変な点ですよね。その対処法として Rules of MLでも言及されている通り、まずは機械学習なんてしなくてもヒューリスティックな取り組みで問題解決すれば良いんですよね。機械学習プロジェクトの困難さとして、まず機械学習を使うことが目的化するという副作用もあるので、そもそも何を解決したいのか、何がROI高いのかを常に自己問答していく必要がありますね。
    • 2.4.1.4 さまざまな問題解決方法
      • フレーミング(機械学習システムでいうところの、問題を機械学習でどのように解くか)について取り上げているが、これは面白い!自分はここだけ一箇所の書籍にしてしまってもいいんじゃないかなと思うくらい、奥深い題材だなと思う。
      • こういう効果的なフレーミングは、実務経験とか百本ノック的に知識をため込んで置かないと効率的な落とし込みって難しい気がしている。ある程度経験を積んだ今なら、え、それって本当に現実的?めんどくさすぎでは?と考える癖がついたので、知恵を働かせるのが重要ですね。そういう意味だと トヨタ式鬼十訓を読んだ での知恵を絞り出せは大事な考え方です。
      • Machine Learning System Design Interview も購入してパラパラと眺めてみたんですが、この書籍ではカバーしていない具体的なシステムデザイン集なので次はこれを眺めてみようかなと思います。
  • 4章訓練データ
  • 11章機械学習の人的側面
    • チーム構成 分業制 vs フルサイクル
      • これは正解のないテーマだけど、自分の嗜好性としては圧倒的にフルサイクル支持派です。書籍内で言及されているBeware the data science pin factory The power of the full stack data science generalist and the perils of division of labor through function の記事には自分は共感しかありません。自分が共感する理由として、キャリアの方向性としてResearch scientist を目指しているわけではないし、センスがロックスター並にあるという自負もないので、なおさらこの考えには共感できます。特に前者のERIC COLSONさん(Netflix の元VP Data Science and Engineering) の記事は読んだことがなかったんですが、めちゃくちゃおもしろかったです。主張としては、現在の機械学習プロジェクトは予測して計画するのは難しいし、実践しつついろんなことを学ぶ必要がある。分業制なんかしてたら、学ぶ機会が喪失してしまう、また調整コストや近視眼的な改善が増えてしまうと書かれており、首がもげるほど同意しました。
      • yag_ays さんが書いているこれからの機械学習エンジニアの方向性の記事も同質のトピック妥当思うのでぜひご覧ください 事業会社の機械学習エンジニアのこれから|yag_ays
      • Workshop on Applied Machine Learning Management なんかはまさにドンピシャのワークショップで、このトピックは論文化しづらそうなのにワークショップを開催しているのはKDDは偉大すぎる。でも1枚だけの予稿集しか公開されておらず、内容がつかめないので、可能ならスライドや動画が公開されるともっと嬉しい…

まとめ

LLM以前の機械学習システムを構築するにあたって、機械学習システムデザイン ―実運用レベルのアプリケーションを実現する継続的反復プロセス と、2020年05月時点で自分が実践しているMLOpsの情報収集方法でも言及している Rules of ML:  |  Machine Learning  |  Google for Developers を読んでおけば世界最先端の機械学習実践者たちが実践している機械学習システムへの取り組みを学ぶことができる。 これが母国語で読めるなんて最高ですね。翻訳ありがとうございます!

LLMが出てきたこれからの時代はどうするのという問いについては、 Chip Huyen さんが現在鋭意執筆中の AI Engineering [Book] に期待したい。

この本の名前を AI Engineering という名前にしているのも、非常に共感できる。もうAIって言っていいんじゃなかろうかって自分も思うよ。LLM以前の自分だとこれはAIではなく機械学習ですと心のなかで思ったり、言ったりしてたけど今じゃ世界は変わってしまった。