講演資料
「次世代の事業の柱」を目指し、柔軟な機械学習基盤を構築
現在DeNAでは「次世代の事業の柱」にすることを目指し、AI技術、特にディープラーニングに力を入れているといいます。Developers Summit 2017に先立って行われたテクノロジーカンファレンス「DeNA TechCon 2017」でも、トラックの1本がAI関連セッションで統一されていたほどです。
DeNAにおける機械学習基盤の話に入る前に、瀬尾氏は「GPU」に関する基礎知識を解説しました。
GPUとは(Graphics Processing Unit:グラフィックス プロセッシング ユニット)の略で、画像処理を担う主要な部品の1つです。並列処理を行うことで高速な演算を実現しており、ディープラーニングの場合、CPUで30日かかる処理を4日で完了してしまうほどです。そのため、ディープラーニングの機械学習基盤は、基本的にGPU基盤であることを前提としています。
よく使われているGPU製品には、NVIDIAのHPC(ハイパフォーマンスコンピューティング)向けシリーズの「NVIDIA Tesla」があります。このシリーズは世代を追うごとにスペックも向上しているため、瀬尾氏は「最新世代のGPUを積極的に使っていくべき」と、性能比較図を交えて解説しました。
AI案件におけるDeNAのGPU基盤には、用途別に3つの環境が用意されています。
1つ目はトライアンドエラーを繰り返す開発で用いる、オンプレミスのGPU専有マシンです。
2つ目はパラメータチューニング用途のマシン。学習させる過程で使用し、パラメータを少し変えて、大量の処理を並列で走らせます。チューニングが終わると不要になるため、オンプレミスのマシンではなくクラウドサービスの利用が適しています。AWSではG2インスタンスとP2インスタンスがGPUに対応しており、DeNAはusリージョンでP2インスタンスを学習時にのみ起動して使っています。また、Google Compute EngineでもGPU環境が提供される予定で、そちらの使用も検討しているそうです。
3つ目はサービス提供環境、つまりプロダクション環境です。機械学習には大きく「学習フェーズ」と「予測フェーズ」の2つのフェーズがあり、前者はその処理量やパフォーマンスからGPUの開発環境が必要となります。しかし後者はそこまで高い処理能力を必要としていません。そのためCPUが採用されており、HTTP APIとして実際のサービスに提供しています。瀬尾氏はディープラーニングのフレームワーク「Chainer」を活用した実例について、構成図を元に解説しました。
さらに、DeNAの機械学習環境を支援するツールとして、内製の「ec2-scale-run」が紹介されました。これはGPUサーバーのオンデマンドオートスケールツールで、必要な分だけGPUサーバーを自動で立ち上げ、学習が終わると「自動で」そのサーバーを落とす仕組みです。学習が終わったサーバー群を落とし忘れてしまい、思わぬところで費用を無駄使いしてしまうケースへの対応策として作成されました。