序文
私がAIとマシンラーニング(ML)で大ブレイクしたのは約20年前のことだ。インターネットがまだ新技術のように感じられた時代だった。自由なコミュニケーションの力には利点だけでなく欠点もあることに世界は気づいていた。迷惑メールは、薬の勧誘や銀行口座情報を求める詐欺など、いたるところで受信トレイを埋め尽くしていた。
電子メールのスパムが猛威を振るっていたのは、利用可能なスパムフィルターが(主に手作業で作られた規則やパターンに基づいていたため)効果がなかったからだ。スパマーは、固定規則が適応しにくい、イントセント!オンなミ$$$スペリングや、その他のハッキングのような、あらゆる種類のトリックでこれらのフィルタを欺いた。当時大学院生だった私は、機械学習と呼ばれるおかしな技術がこのような問題の解決に適しているかもしれないと信じていた研究者のコミュニティの一員となった。私は幸運にも、電子メールのスパムフィルタリングに関する初期のベンチマークコンテストで優勝するモデルを作成することができた。
私がその初期のモデルを覚えている理由は2つある。第一に、シンプルだが非常に柔軟な文字列表現、今でいう文字列の一次元畳み込みの先駆け的なものを使うことでうまく機能していたことが、ちょっとクールだった。第二に、振り返って確信を持って言えるのは、これを本番環境に投入するのは絶対的な混乱だっただろうということだ。それは学術研究のプレッシャーのもとで設計されたもので、信頼性よりも速度が優先され、迅速な修正と一度だけ機能するパッチで十分すぎるほどだった。私はそれ以上のことを知らなかった。MLパイプラインを実運用で動かしている人に実際に会ったこともなかった。当時は、プロダクションとマシンラーニングが同じ文章で使われているのを聞いたことすらなかったと思う。
私が最初に設計・構築した本番システムは、Googleの初期のシステムで、ポリシーに違反した広告(基本的には詐欺やスパムのような広告)を検出して削除するものだった。これは重要な仕事であり、この方法でユーザを守ることに非常にやりがいを感じていた。当時は、MLの本番システムを作成することが、すべてをゼロから構築することを意味していた時代でもあった。PyTorchやTensorFlowよりもずっと前のことで、信頼できるスケーラブルなライブラリはなく、データストレージ、モデル学習、配信などのインフラはすべてゼロから構築しなければならなかった。ご想像の通り、このことは、検証、モニタリング、安全性チェック、ロールアウト計画、更新メカニズム、解約への対処、ノイズへの対処、信頼性の低いラベルの扱い、不安定なデータ依存性への遭遇など、プロダクションMLで考えられるあらゆる落とし穴に直面することを意味した。これらの教訓を学ぶのは大変だったが、この経験は間違いなく印象に残った。
数年後、私はGoogleの検索広告のクリックスルー予測システムを率いていた。当時、このシステムはおそらく世界最大級のものであり、ビジネスの観点からは最も影響力のあるMLシステムであった。そのため、信頼性が最も重要であり、同僚と私が行った仕事の多くは、本番システムの堅牢性を強化することだった。これには、インフラ的な観点からのシステムレベルの堅牢性と、時間の経過によるデータの変化がうまく処理されることを保証する統計的堅牢性の両方が含まれていた。この規模と重要性でMLシステムを稼働させることは、まだ非常に新しいことであったため、私たちはこの多くを自分たちで考案しなければならなかった。そのうちのひとつが、「機械学習」という陽気なタイトルだった:技術的負債という高金利のカード」と題したもので、私たちが学んだことをこの分野の他の人たちと分かち合いたいと願っていた。そして、TensorFlow ...