SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

【Developers Boost】セッションレポート (AD)

1カ月で7000万件の画像・動画を処理する「家族アルバム みてね」の課題――メディア解析基盤リプレースまでの道のり【Developers Boost】

【A-9】「簡単でつかいやすい」を追求する開発の裏側 〜メディア解析基盤の話〜

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

Amazon SageMakerを活用し、推論処理を最適化

新メディア解析基盤。旧アーキテクチャの抱えていた課題を解決するため、いくつもの設計上の工夫がなされた。
新メディア解析基盤。旧アーキテクチャの抱えていた課題を解決するため、いくつもの設計上の工夫がなされた

 新しいメディア解析基盤は、上図のアーキテクチャとなった。アプリサーバーから独立した、メディア解析専用のサーバーを用意し、そこで解析処理を行う方針だ。機械学習的な推論処理は、Amazonの提供している機械学習用のマネージドサービスAmazon SageMaker(以下、SageMaker)を活用した推論APIにより実施されることとなった。

 「SageMakerを採用したのにはいくつか理由があります。まず、『みてね』の関連ファイルやサーバーはすべてAWS上にあるため、連携がしやすいこと。特に、画像・動画データがAmazon S3に配置されているため、それらとの連携が容易だったことは大きいです。また、SageMakerはマネージドサービスなので運用も楽になります」

 SageMakerによる推論APIは、コンテナ上で稼働するつくりになっている。コンテナ内でREST APIの形でHTTPサーバーを立て、その裏側で推論処理のロジックが動くしくみだ。では、推論処理はどのように実装されているのだろうか。

 「『みてね』で活用している顔検出の解析処理は、研究者の多い領域です。そのため、彼らが公開しているソースコードを流用できます。ただし、それらの実装では処理速度が遅いという欠点があったので、私たちは既存の検出器を高速化して利用しました」

 高速化の手法はいくつかある。「みてね」では、HTTPサーバーが受け取ったジョブをもとに「1.画像ダウンロード」「2.前処理」「3.推論処理」「4.後処理」という順序で解析処理が行われている。前処理の部分でデータ処理用パイプラインのNVIDIA DALIを利用することで、一部の処理をGPUにオフロードしているという。

 推論処理についても、同じくNVIDIA TensorRTを利用し、NVIDIA Tesla V100 + FP16演算に最適化した処理を行っている。これらの施策により、もともとの検出器の速度と比べて10倍以上の高速化を実現したそうだ。

 コンテナイメージのビルドやテスト、デプロイはAWS CodeBuildにより自動化されている。「みてね」のSageMakerインスタンスのスケーリングは、少し変わったルール設定だ。SageMaker推論APIを叩いているジョブキュー側のジョブ数を監視し、その数値をもとにスケールさせるつくりになっている。

 「SageMakerのAWS公式ドキュメントには、APIの実行回数を監視することでスケールさせるのがベストプラクティスであると書かれています。ですが、今回はAPI実行回数を制御できる用途のため、あえて公式ドキュメントの内容を無視したルール設定にしました。これにより、性能をギリギリまで向上させられるようにチューニングしています」

 新しい解析基盤への移行は、2つのフェーズに分けて行われた。第1フェーズでは、旧基盤と新基盤を並行稼働させ、後者の処理結果は破棄する運用方針となった。このフェーズのなかで、新基盤の正常稼働確認やパフォーマンスチューニングなどが実施されたという。安定運用の見通しが立った後、次のフェーズで新基盤への段階的な移行が行われた。

 「移行したことで、アプリサーバーの負荷はかなり軽減されました。解析処理に起因する障害も発生していません。また、運用コストも格段に下がり、オペレーションの手間も大きく軽減されました」

 エンジニアが運用作業から解放されるメリットは大きい。アプリサーバー負荷と運用コストが特に大きかった顔検出の解析基盤については、移行が完了しており、その他人物検出などの解析基盤も順次移行していく予定だ。

お問い合わせ

 株式会社ミクシィ

この記事は参考になりましたか?

  • このエントリーをはてなブックマークに追加
【Developers Boost】セッションレポート 連載記事一覧

もっと読む

この記事の著者

CodeZine編集部(コードジンヘンシュウブ)

CodeZineは、株式会社翔泳社が運営するソフトウェア開発者向けのWebメディアです。「デベロッパーの成長と課題解決に貢献するメディア」をコンセプトに、現場で役立つ最新情報を日々お届けします。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

【AD】本記事の内容は記事掲載開始時点のものです 企画・制作 株式会社翔泳社

この記事は参考になりましたか?

この記事をシェア

  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/11299 2019/01/17 11:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング