Criteoにおける大規模機械学習の仕組み

  • このエントリーをはてなブックマークに追加

   

Criteoの事業の核を担うのは、機械学習です。当社は、広告を表示させたいときの選択や、個別の製品レコメンド、バナーの概観・雰囲気の最適化(当社は、製品カタログを利用している各パートナーに合わせ、当社独自のバナーを自動生成しているため)を、機械学習を使って行っています。Criteoのモットーは、「パフォーマンスがすべて」であり、できる限り良いパフォーマンスを発揮するために、Irmaと呼ばれる大規模な分散機械学習フレームワークを築き上げてきました。Irmaは、モデルの改善を模索する際、稼働中やテスト中にも使用できるものです。

Wiz
図1:当社予測チームのロゴ。(photo credits Baba from Dragon Ball

当社が解決できる問題

これまでの運用型広告では、クリック予測がすべてでした。少し前のことです。それ以来当社は、クリックされたかどうかの予測から、数少ない販売コンバージョンでの予測、売上高での予測に移行してきたのですが、それらはすべて、注意をひくものでした。現在、当社はリアルタイム入札のための広告表示の予想利益を予測するだけでなく、まさに可能性の無限集合の中からバナーの外観や雰囲気の最適化もします(例えば、当社バナーのレイアウトや色の最適化など)。また、当社は、一度広告枠を落札したあと、どの製品をバナーに表示するかを決めるリアルタイムなレコメンドシステムも作りました。これら全てのソリューションを、Irmaが提供しています。

参考までに、当社が扱う規模について、少しご紹介したいと思います。当社の広告は、毎月10億人以上の人々の目に触れており、世界中で1日に300億の入札リクエスト(毎秒50万予測~ピークアクセス時毎秒1500万予測)に対処しています。私たちが通常、リクエストに応えるまでの時間は10ミリ秒かそれ以下ですが、それは、表示したい製品を(無数に可能性のある製品から)選び、バナーの最適な外観と雰囲気を決め、一定のユーザに広告を表示したいかそうでないかを予測する時間です。

banner-1-300x245banner-2-300x250
図2:典型的なCriteoのバナー広告

データがすべて

まず、「データがすべて」ということです。私たちは25TB以上の未加工データを、毎日世界中から集めます。これが当社の学習用データです!これは「実にたくさんの」データで、実際、あまりに大量なので、研究団体に提供することにしました。2014年9月にKaggleコンテストのデータセットをリリースした後、最近では40億行以上かつ容量1TB以上の新しいデータセットをリリースしました。これはこれまでリリースされた公開機械学習データセットで最も規模が大きいものです。このデータを高速処理し、予測モデルを教え込むために、当社は世界中にある複数のHadoop YARNクラスターにホストされた何千ものコアメモリと、数十テラバイトのRAMを使っています。これらは、年中無休で動いています。

一度前処理された典型的なトレーニングセットには、5億の実例セットと数百万の独自機能が含まれています。コードをできるだけ高速にするための重労働の後でも、通常、数百におよぶコアメモリを使い新しいモデルを1時間以内に学習することができます。

いや…本当は(分散)アルゴリズムも大切

私たちは、規模を拡大して(オフライン部分)継続的に機械学習モデルをトレーニングするため、これらのリソースを使っています。以前書いた通り、機械学習の観点から言えば、ほとんどの場合においてSGDで初期化されたL-BFGS法のソルバーに頼っています。L-BFGS法には、勾配計算をノードに分散することで非常に簡単に並列化できるという素敵なプロパティがあります。分散を行うにあたり、私たちは、Hadoop AllReduceApache Sparkなどの様々なアプローチを試みました。これらは、多重にHadoopのリデュース処理を行った場合、必要に応じてHDFS(Hadoop分散ファイルシステム)にデータを書き込むことなく、(例えば勾配の演算用の)データを順に処理するものです。しかし、Irmaが扱うのは分散SGDとL-BFGSを使った標準的なL1/L2回帰だけではありません。当社は、埋め込み式やランク付けを学習する転移学習など、より進んだメソッドも実装して使用しています。

さらに、Criteoのインフラには、特に当社エンジンの中核を担うIrmaなどのプロジェクトのためにフォールトトレランス(耐障害性)が深く組み込まれています。Irmaは、できるだけフォールトトレラントでいられるよう、Hadoop YARNやZookeeperなどのオープンソースソフトウェアの上に成り立っています。当社が毎日実行する学習ジョブ数や使用データ量に大幅な増加がある割には、失敗した数々の学習ジョブは非常に小規模かつ許容レベルで済んでいますが、このことは当社が解決に向けてまだ取り組んでいる非常に難しい課題です。当社は日常的に規模を拡大して、ユニットテストと大規模な非回帰テストを実行しています。当社は、オフィス中の大型ディスプレイに表示させている本当にたくさんのグラフ(最近graphiteからgrafanaに変更)を使用し、クラスター上でのジョブを監視しています。パフォーマンスがすべて。私たちはそれを真剣にモニターしているのです!

charts
図3:Criteoでは、みんなグラフモニタリングでいっぱいのスクリーンが大好き

正しい測定基準

たくさんの方がコミュニティでご存知の通り、正しい測定基準を用いることは重要です。当然、私たちは文献に見られる標準的な測定基準(RMSE『平均平方誤差』、log loss)を好んで使用しています。実際のところ、この測定基準はテストについての洞察を与えてくれますが、完全な分析の実態を示してくれるものではありません。そのため、私たちはこれを、社内で入念に練られた当社秘伝の測定基準を使って改良しました。そして、私たちはこれらをオフライン・テストと組み合わせて頻繁に利用し、考え得るアルゴリズムとソリューションの巨大なデータ空間を調査して、オンラインのABテストでどのソリューションに焦点を当てたいかを決めています。オフラインとオンラインのテストは当社のテスト戦略の二本柱です。オフライン・テストは速く、安く、そして広範囲の検索で効率的です。オンライン・テストは高くつきますが、新しいソリューションが現在製品中で使われているものより良いかどうかを最終的に決定してくれるものです。

しかしながら、こうした測定法の目的は、Criteoのテクノロジーに備わる性能を改善することだけではありません。私たちはCriteoとクライアント両方に見合う価値を高めたいのです。さらに、私たちは当社の成長をただの「一時的な成功」ではなく、長続きするものにしたいと考えています。このような理由から、私たちは、パートナーの皆様にとって短期・長期的に高められる価値概念を組み込んだ新しい測定基準のセットを、当社のツールと分析に統合しました。私たちは、特定の発展を展開していくべきかどうかを決めるために、こうした基準を使用しています。

このテストを実行するために、私たちは集中型テストフレームワークを設計、構築しました。このフレームワークは当社データセンターのうちの一つで大規模に稼働しており、大量のテストを同時並行できるよう設計されています。このフレームワークは、新機能をテストしているビジネス・アナリストの方でも、新しい学習方法を構築中のコアな機械学習の開発者の方でも、当社モデルの改善に取り組む人なら誰でも使うことができます。

展望

私たちの現状についてはお話してきました。では、私たちはこれからどこに向かっているのでしょうか?Criteoの研究開発では、革新的な基礎研究からより小規模で段階的な方法まで、あらゆる範囲のソリューションを探っています。当社の研究専門チームは前者に重点的に取り組みがちですが、実際は研究者とエンジニアは密結合して働いています。

当社が現在検討している課題には、以下のようなものがあります。

  • 新しい評価方法:当社は現在、機械学習コミュニティの学習システムにおけるざっくりとした推論研究をもとに、要領ベースのオフラインのABテストを検討しています。また、当社のテストフレームワークと視覚化ツールに重点を置いた投資も行っています。
  • 新しいアルゴリズム:既存のソリューションを超越する新世代の学習アルゴリズムを設計しています。私たちは素晴らしく拡張可能で、非常に限られたレイテンシの制約に収まるソリューションを探していて、これは特に面白い課題だと感じています。
  • 新しい機能:機能設計は機械学習において最も複雑な作業の一つです。効率的な方法で、膨大な中から可能性のあるソリューションを探求することに、私たちはかなりの労力を費やしています。
  • 新しい分配スキーム:上述した通り、私たちは自社の機械学習アルゴリズムを分散するために、Hadoop AllReduceApache Sparkなどの様々なアプローチを試してきました。現在も積極的に新しいアプローチを探しています。

・・・そしてこれはCriteoが取り組んでいる数ある素晴らしい課題のうちのほんの一部です。

この投稿を読んでワクワクしたあなたに、良いお知らせがあります。当社は今、一流の機械学習エンジニアと科学者を採用募集しています!私たちはパリ(フランス)のダウンタウンとパロアルト(カリフォルニア)にある二つの素敵なオフィスで、複雑な問題の解決を楽しめる、面白くて優秀な方々を探しています。自分に当てはまると思った方、当社の求人票をご覧ください。

そしてNIPSRecsysはもちろんのこと、もし最近のフランスでのICMLCOLTでお会いできなかった方は、今後のカンファレンスでも当社に引き続き注目していてくださいね!そこであなたとお話できるのを楽しみにしています。

原文:http://labs.criteo.com/2015/08/large-scale-machine-learning-at-criteo/ (2015-10-29)
※元記事の筆者には直接翻訳の許可を頂いて、翻訳・公開しております。

 -Tech

FAworksではプロのコンサルタントが案件をお探しします

  関連記事

コスパ最強ラップトップ

エンジニア的コスパ最強laptop3選

どうもどうも。 「3度の飯より価格コム」で同じみの私です。 PC買う時ってすごい迷うよね。 CPUの

なぜあなたのインターネットは遅いのか?問題を切り分けて特定するトラブルシューティング

はじめに 家庭、コーヒーショップ、またはオフィスでの作業中に「インターネット(インフラ)にまつわる問

Dockerコンテナのためのテスト戦略

Dockerコンテナのためのテスト戦略

おめでとう!あなたはDockerイメージの作り方を知っていて、わかりやすいアプリケーションで複数のコ

フログラミングって知ってる?エクストリームな環境あれこれ

日々オフィスや自宅のデスクでプログラムを書く日々、なんだか煮詰まる、変わり映えがしない…と思っていま

空の上でも仕事ができちゃう!航空機ITサービス事情~ANA・JAL編~

by abdallahh 皆さん旅行は好きですか? 毎日仕事を頑張ったご褒美に南の島へ・・なんて思っ

エンジニアの作業効率を一気に上げてくれる、無料Google Chrome拡張機能おすすめ20選

ちょっとした時短の積み重ねが作業時間を減らしてくれる 情報収集やブラウザチェック、ルーティーンワーク

エンジニアなら絶対ワクワクしちゃうコンピュータ映画7選

こんにちは!皆さん、映画観てますか?今回は人よりちょっぴり多く映画を観ていると勝手に自負している僕が

Googleはあなたのスマホをいつでもハックできる!?

Googleはあなたのスマホをいつでもハックできる!?

by Don Hankins スマホの位置情報オフにしてますか? FacebookやTwitterに

ITエンジニアならチェックしておきたいおすすめ有名企業テックブログ15選(2015年版)

情報収集にも採用にも繋がるテックブログ 今年も終わりにさしかかり、アドベントカレンダーの時期になりま

フルスタックエンジニアを目指すには。

フルスタックエンジニアを目指すには。

by Shunsuke Kobayashi 習うより慣れろと言うことわざがありますが、 エンジニアで