BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース Booking.comは機械学習のためにどのようにKubernetesを使っているか

Booking.comは機械学習のためにどのようにKubernetesを使っているか

ブックマーク

原文(投稿日:2018/04/01)へのリンク

読者の皆様へ:ノイズを減らすための一連の機能を開発しました。関心のあるトピックについて電子メールとWeb通知を受け取ることができます新機能の詳細をご覧ください。

Booking.comの開発者であるSahil Dua氏は、今年のQCon Londonカンファレンスで、Kubernetesを使用して、顧客に目的地と宿泊施設を推薦するための機械学習(ML)モデルをどのように拡張できるのか説明した。特に、コンテナ上のKubernetesの伸縮性や資源不足回避が、いかに計算(およびデータ)集約的で、並列化が困難な機械学習モデルを実行する助けになっているかを強調した。

Kubernetesの独立性(リソースが競合しないプロセス)、伸縮性(リソース消費に基づいて自動スケールアップ、あるいはダウン)、柔軟性(新しいライブラリやフレームワークを素早く試すことができる)、GPUサポート(KubernetesのNVIDIA GPUサポートはまだアルファではあるが、20倍から50倍の速度向上が可能)は、Booking.comが自身の規模(毎日150万部屋の部屋が予約され、毎月4億人が予約している)で多数のMLモデルを実行する上で重要なポイントである。ポッドがGPUリソースを必要とすることを指定することで、KubernetesにGPUユニットを持つノード内でスケジュールを指示する。

resources:
  limits:
    alpha.kubernetes.io/nvidia-gpu: 1

各モデルはコンテナ内でステートレスアプリとして実行される。コンテナイメージはモデル自体を含んでいないため、起動時にHadoopから取得される。これによりイメージが小さくなり、新しいモデルが作成されるたびに新しいイメージを作成する必要がなくなり、デプロイのスピードアップが可能になる。デプロイされると、モデルはREST APIを介して公開される。そして、Kubernetesは最終的にトラフィックが新しいコンテナに向けられるようになるまで、予測リクエストを受け取る準備のためにコンテナのプロービングを開始する。

Dua氏は、Kubernetesのオートスケーリングとロードバランシングの他に、モデルの待ち時間を最適化するために、Booking.comで使われるいくつかの手法を明らかにした。つまり、モデルをコンテナのメモリにロードし、起動後にウォームアップする(GoogleのMLフレームワークであるTensorFlowに最初のリクエストを出すことで。ただし、一般的には、最初の実行は、それ以降の実行に比べて遅くなる)。しかし、すべての要求が実際のシステムから来るわけではない。場合によっては、予測をあらかじめ計算し、後で使用するために保存することができる。後者の場合、スループット(単位時間あたりの作業量)を最適化することが重要である。要求をバッチ処理して非同期で並列化することで、ネットワークのオーバーヘッドが削減され、スループットが向上するとDua氏は述べた。

MLモデルは、Booking.comが必要とする予測を提供する状態となる前に、事前に選択されたデータセットで訓練を受ける必要がある。プロセスのトレーニング部分も、Kubernetesインフラストラクチャで実行する。トレーニングが行われるコンテナのベースイメージには、必要なフレームワーク(TensorFlowTorchなど)のみが含まれ、実際のトレーニングコードはGitリポジトリから取得される。これもコンテナイメージを小さく保ち、新しいバージョンのコードイメージの拡散を防ぐとDua氏は強調した。トレーニングデータはHadoopクラスタからフェッチされる。モデルが準備完了すると(トレーニングワークロードが終了すると)、Hadoopにエクスポートされる。

 
 

Rate this Article

Adoption Stage
Style
 
 

この記事に星をつける

おすすめ度
スタイル

BT