Netflixのゴールは視聴者が視聴する前に何を見たいかを予測することである。これを達成するためにNetflixは毎日多数の機械学習ワークフローを実行している。Mesonはビデオの推薦を補助するパーソナライズアルゴリズムの構築、学習、検証するこれら全ての機械学習パイプラインのライフサイクルを管理するワークフローオーケーストレーションとスケジュールのためのフレームワークである。
Netflixの開発チームは最近Mesonフレームワークについてと、これがどう機械学習パイプラインを補助するかの記事を執筆した。Mesonのゴールの一つはエンジニアにパイプラインの各ステップに好きな技術を使用させながら、アルゴリズムの実験についての速度、信頼性、再現性を高めることである。
Netflixにおける機械学習パイプラインの重要な役割を果たす技術にはSpark MLlib、Python、Rそして Dockerが含まれる。
ビデオの推薦を行う典型的な機械学習パイプラインは以下のステップを含む。
- ユーザの選択
- 特徴量の生成
- モデルの訓練
- モデルの検証
- モデルの公開
ユーザの集合の選択は解析のためのコホートを選択するためのHiveクエリを通じて行われる。それからデータのクレンジングと準備を、並列パスを確保するために2組のユーザセットを作成するPythonスクリプトにより行う。並列パスの中で、片方のパスではApache Sparkを用いてグローバルモデルの構築と解析を行い、一時ストレージとしてHDFSを使用する。もう片方のパスではR言語により地域(国)特有のモデルを構築する。地域の数は解析のために選択されたコホートに基づいて動的に決定される。
モデルの検証はScalaコードによって行われ、二つのパスが収束した時のモデルの安定性をテストする。全体のプロセスはモデルが安定でない場合は繰り返される。最終的に、Dockerコンテナを使用して他のシステムにより収集される新しいモデルを公開する。
Apache Mesosのようなリソース管理ツールを用いて機械学習パイプラインで必要となるリソースを割り当てる。Mesosはタスクの隔離とCPUの抽象化機能、メモリ、ストレージと他の計算資源を提供する。Mesonはこれらの機能を有効活用し、タスクのスケーラビリティとフォールトトレランスを獲得している。
Mesonはスケジューラとエグゼキュータコンポーネントからも構成される
Mesonスケジューラコンポーネントは各種ワークフローの起動、フロー制御、実行環境を管理する。Mesonは実際のリソーススケジュールをMesosに委譲し、メモリとCPUの要件をMesosに伝達する。一旦ステップがスケジュール可能になったら、MesonスケジューラはMesosから提示された適切なリソースを選択し、Mesosマスタにこのタスクを引き渡す。
MesonエグゼキュータはカスタムされたMesosのエグゼキュータであり、Meson により提供された通信チャネルを維持するための群を形成する。これはフレームワークのメッセージをMesonスケジューラに送信する可能性のある、長時間実行されるタスクのために有効である。この仕組みはカスタムされたデータを渡すことも可能とする。
一度にMesosがMesonタスクをスケジュールすると、Mesosは全てのタスクの依存をダウンロードした後にスレーブ上でMesonエグゼキュータを起動する。コアタスクが実行されている間に、エグゼキュータはハートビートや進捗率のパーセンテージ、ステータスメッセージの送信といった他のタスクを受け持つ。
Mesonはカスタマイズされたワークフローの生成を可能とするためにScalaベースのDSLを提供する。Meson内部からSparkジョブ進捗を監視するためにMesonは組み込みでSparkサポートを行っている。また、失敗したSparkのステップをリトライしたり、うまく実行できなかった可能性のあるSparkジョブを終了する機能も持つ。
Netflixチームは来月にMesonをオープンソースにし、関連するコミュニティを立ち上げる計画である。
Rate this Article
- Editor Review
- Chief Editor Action