>Criteoにおける大規模機械学習の仕組みTweet2015/11/09Criteoの事業の核を担うのは、機械学習です。当社は、広告を表示させたいときの選択や、個別の製品レコメンド、バナーの概観・雰囲気の最適化(当社は、製品カタログを利用している各パートナーに合わせ、当社独自のバナーを自動生成しているため)を、機械学習を使って行っています。Criteoのモットーは、「パフォーマンスがすべて」であり、できる限り良いパフォーマンスを発揮するために、Irmaと呼ばれる大規模な分散機械学習フレームワークを築き上げてきました。Irmaは、モデルの改善を模索する際、稼働中やテスト中にも使用できるものです。図1:当社予測チームのロゴ。Ball)当社が解決できる問題これまでの運用型広告では、クリック予測がすべてでした。それ以来当社は、クリックされたかどうかの予測から、数少ない販売コンバージョンでの予測、売上高での予測に移行してきたのですが、それらはすべて、注意をひくものでした。現在、当社はリアルタイム入札のための広告表示の予想利益を予測するだけでなく、まさに可能性の無限集合の中からバナーの外観や雰囲気の最適化もします(例えば、当社バナーのレイアウトや色の最適化など)。当社は、一度広告枠を落札したあと、どの製品をバナーに表示するかを決めるリアルタイムなレコメンドシステムも作りました。これら全てのソリューションを、Irmaが提供しています。参考までに、当社が扱う規模について、少しご紹介したいと思います。当社の広告は、毎月10億人以上の人々の目に触れており、世界中で1日に300億の入札リクエスト(毎秒50万予測~ピークアクセス時毎秒1500万予測)に対処しています。私たちが通常、リクエストに応えるまでの時間は10ミリ秒かそれ以下ですが、それは、表示したい製品を(無数に可能性のある製品から)選び、バナーの最適な外観と雰囲気を決め、一定のユーザに広告を表示したいかそうでないかを予測する時間です。図2:典型的なCriteoのバナー広告データがすべてまず、「データがすべて」ということです。私たちは25TB以上の未加工データを、毎日世界中から集めます。これが当社の学習用データです!これは「実にたくさんの」データで、実際、あまりに大量なので、研究団体に提供することにしました。2014年9月にKaggleコンテストのデータセットをリリースした後、最近では40億行以上かつ容量1TB以上の新しいデータセットをリリースしました。これはこれまでリリースされた公開機械学習データセットで最も規模が大きいものです。YARNクラスターにホストされた何千ものコアメモリと、数十テラバイトのRAMを使っています。これらは、年中無休で動いています。一度前処理された典型的なトレーニングセットには、5億の実例セットと数百万の独自機能が含まれています。コードをできるだけ高速にするための重労働の後でも、通常、数百におよぶコアメモリを使い新しいモデルを1時間以内に学習することができます。私たちは、規模を拡大して(オフライン部分)継続的に機械学習モデルをトレーニングするため、これらのリソースを使っています。以前書いた通り、機械学習の観点から言えば、ほとんどの場合においてSGDで初期化されたL-BFGS法のソルバーに頼っています。L-BFGS法には、勾配計算をノードに分散することで非常に簡単に並列化できるという素敵なプロパティがあります。Sparkなどの様々なアプローチを試みました。これらは、多重にHadoopのリデュース処理を行った場合、必要に応じてHDFS(Hadoop分散ファイルシステム)にデータを書き込むことなく、(例えば勾配の演算用の)データを順に処理するものです。Irmaが扱うのは分散SGDとL-BFGSを使った標準的なL1/L2回帰だけではありません。当社は、埋め込み式やランク付けを学習する転移学習など、より進んだメソッドも実装して使用しています。Criteoのインフラには、特に当社エンジンの中核を担うIrmaなどのプロジェクトのためにフォールトトレランス(耐障害性)が深く組み込まれています。YARNやZookeeperなどのオープンソースソフトウェアの上に成り立っています。当社が毎日実行する学習ジョブ数や使用データ量に大幅な増加がある割には、失敗した数々の学習ジョブは非常に小規模かつ許容レベルで済んでいますが、このことは当社が解決に向けてまだ取り組んでいる非常に難しい課題です。当社は日常的に規模を拡大して、ユニットテストと大規模な非回帰テストを実行しています。当社は、オフィス中の大型ディスプレイに表示させている本当にたくさんのグラフ(最近graphiteからgrafanaに変更)を使用し、クラスター上でのジョブを監視しています。パフォーマンスがすべて。私たちはそれを真剣にモニターしているのです!図3:Criteoでは、みんなグラフモニタリングでいっぱいのスクリーンが大好き正しい測定基準たくさんの方がコミュニティでご存知の通り、正しい測定基準を用いることは重要です。loss)を好んで使用しています。実際のところ、この測定基準はテストについての洞察を与えてくれますが、完全な分析の実態を示してくれるものではありません。そのため、私たちはこれを、社内で入念に練られた当社秘伝の測定基準を使って改良しました。私たちはこれらをオフライン・テストと組み合わせて頻繁に利用し、考え得るアルゴリズムとソリューションの巨大なデータ空間を調査して、オンラインのABテストでどのソリューションに焦点を当てたいかを決めています。オフラインとオンラインのテストは当社のテスト戦略の二本柱です。オフライン・テストは速く、安く、そして広範囲の検索で効率的です。オンライン・テストは高くつきますが、新しいソリューションが現在製品中で使われているものより良いかどうかを最終的に決定してくれるものです。した測定法の目的は、Criteoのテクノロジーに備わる性能を改善することだけではありません。私たちはCriteoとクライアント両方に見合う価値を高めたいのです。私たちは当社の成長をただの「一時的な成功」ではなく、長続きするものにしたいと考えています。このような理由から、私たちは、パートナーの皆様にとって短期・長期的に高められる価値概念を組み込んだ新しい測定基準のセットを、当社のツールと分析に統合しました。私たちは、特定の発展を展開していくべきかどうかを決めるために、こうした基準を使用しています。このテストを実行するために、私たちは集中型テストフレームワークを設計、構築しました。このフレームワークは当社データセンターのうちの一つで大規模に稼働しており、大量のテストを同時並行できるよう設計されています。このフレームワークは、新機能をテストしているビジネス・アナリストの方でも、新しい学習方法を構築中のコアな機械学習の開発者の方でも、当社モデルの改善に取り組む人なら誰でも使うことができます。私たちの現状についてはお話してきました。私たちはこれからどこに向かっているのでしょうか?Criteoの研究開発では、革新的な基礎研究からより小規模で段階的な方法まで、あらゆる範囲のソリューションを探っています。当社の研究専門チームは前者に重点的に取り組みがちですが、実際は研究者とエンジニアは密結合して働いています。当社が現在検討している課題には、以下のようなものがあります。新しい評価方法:当社は現在、機械学習コミュニティの学習システムにおけるざっくりとした推論研究をもとに、要領ベースのオフラインのABテストを検討しています。当社のテストフレームワークと視覚化ツールに重点を置いた投資も行っています。新しいアルゴリズム:既存のソリューションを超越する新世代の学習アルゴリズムを設計しています。私たちは素晴らしく拡張可能で、非常に限られたレイテンシの制約に収まるソリューションを探していて、これは特に面白い課題だと感じています。新しい機能:機能設計は機械学習において最も複雑な作業の一つです。効率的な方法で、膨大な中から可能性のあるソリューションを探求することに、私たちはかなりの労力を費やしています。Sparkなどの様々なアプローチを試してきました。現在も積極的に新しいアプローチを探しています。・・・そしてこれはCriteoが取り組んでいる数ある素晴らしい課題のうちのほんの一部です。この投稿を読んでワクワクしたあなたに、良いお知らせがあります。当社は今、一流の機械学習エンジニアと科学者を採用募集しています!私たちはパリ(フランス)のダウンタウンとパロアルト(カリフォルニア)にある二つの素敵なオフィスで、複雑な問題の解決を楽しめる、面白くて優秀な方々を探しています。自分に当てはまると思った方、当社の求人票をご覧ください。NIPSやRecsysはもちろんのこと、もし最近のフランスでのICMLやCOLTでお会いできなかった方は、今後のカンファレンスでも当社に引き続き注目していてくださいね!そこであなたとお話できるのを楽しみにしています。(2015-10-29)※元記事の筆者には直接翻訳の許可を頂いて、翻訳・公開しております。NGINXが接続処理に非同期かつイベント駆動のアプローチを用いていることは、よく知られていフルスタックエンジニアを目指すには。バズワードにもなりつつありますが、今、まさに現在進行中で、フルスCrystalの紹介:Cのように速く、Rubyのように滑らか僕は、Rubyistだ。sチーム作業の効率を大幅にアップしてくれるWebサービスまとめチーム作業では、一人で黙々と作業をするのとは違ったスキルやコツが必要。