レポート

大規模データを扱うための実践的知識を大公開「CyberAgent Data Engineering & Data Analysis Workshop #4 ~春の機械学習祭り~」レポート

この記事を読むのに必要な時間:およそ 4 分

大規模分散深層学習とChainerMNの進歩と課題

最後の登壇者は,ゲストスピーカーであるPreferred Networks(PFN)の秋葉 拓哉氏です。秋葉氏は大規模分散深層学習の研究開発,特にディープラーニングを含むニューラルネットワークの計算を行うためのフレームワーク「Chainer」と,Chainerにマルチノードでの分散学習機能を追加するパッケージ「ChainerMN」の開発に携わっています。本講演は,大規模分散深層学習の動機と問題から,それを解決するアプローチの比較に続き,成果であるChainerMNの紹介までと盛りだくさんの内容でした。

Preferred Networks 秋葉 拓哉氏

Preferred Networks 秋葉 拓哉氏

まず最初に,そもそも大規模分散深層学習がなぜ必要で,どういった点が難しいのかを説明しています。ディープラーニングは,ニューラルネットワークに多数の中間層を持たせることで高い精度を実現できる一方で,学習時の計算量が非常に多いことで知られています。たとえば画像認識では,AlexNetと呼ばれるモデルを提案した論文では2つのGPUで5~6日,VGGを提案した論文では4つのGPUで2~3週間という学習時間を要したことを報告しています。これに対し,Facebookは256個のGPUを効果的に利用する手法を提案し,計算時間の大幅な短縮に成功しました。具体的には,ResNet-50というAlexNetやVGGの倍以上の中間層を持つ複雑なモデルながら,1時間の学習時間でより高い精度を実現しています。これをさらに発展させ,PFNでは1024個ものGPUで効率的に並列計算する手法を提案し,わずか15分の学習時間でほぼ同じ精度を達成したとのことです。

「学習処理の高速化は,競争力に直結するため非常に重要です。なぜなら,高速化によって技術者の試行錯誤サイクルをすばやく回せるようになると同時に,より大規模なデータや複雑なモデルを利用できるようになるためです」⁠秋葉氏)

この結果だけを見ると,単純にノード(GPU)を増やせば学習が早くなるように感じますが,それは誤りだといいます。大規模分散深層学習においては,各ノードにどのように計算を振り分けるか・ノードをどのように協調動作させるか・ノードからの計算結果をどのように統合するかなど,考えるべき問題が多数あります。また,複数のマシンを利用することで生じる通信オーバーヘッドも学習速度に影響するため,マシン間の接続など物理的なレイヤにまで気を配る必要があるそうです。

画像

次に,分散深層学習の2つの方式「同期型」⁠非同期型」について解説し,ChainerMNでも採用している同期型による学習方式がなぜ優れているのかを明らかにしています。現在,分散深層学習においてスタンダードとなっている枠組みは,データ並列(Data Parallel)と呼ばれるアプローチです。これは,学習データを分割してそれぞれのノードに割り振り,各ノードで学習を行って結果を統合する方法です。さらに,データ並列にはノードを協調動作させる2つの方法があります。これが,途中で全ノードの計算を待ち合わせて集計処理を行う「同期型」による方法と,各ノードでそれぞれ独立に計算を進めてParameter Serverと随時通信する「非同期型」による方法です。一見すると,待ち合わせる時間がないため短時間で多くの学習データを処理できる非同期型が優れているように見えます。しかし,非同期型による方法はスループットが高い一方でモデルの改善があまり進まないため,結果として同期型の方が高精度なモデルになるといいます。

「非同期型による方法では,あるノードが計算した勾配を反映しようとしても,すでに別のノードによってモデルが更新されていることがあります。このような勾配をStaleな(新鮮でない)勾配と呼びます。こういった古いパラメータから計算された勾配は,モデルの改善に寄与しないばかりか悪い影響を及ぼすことすらあります。スループットのみを改善するのは容易ですが,我々が本当に必要としているのはスループットではなくより精度の高いモデルであることに注意しなければなりません。このため,現在広く使われている方式は同期型で,ChainerMNでも同期型を採用しています」⁠秋葉氏)

最後にChainerMNを利用する方法を紹介しています。ChainerMNが依存するMPIやNVIDIA NCCLなどのライブラリはあらかじめインストールする必要がありますが,ChainerMN自体の導入は一般的なPythonライブラリと同様 "pip install" コマンドでインストール可能です。ソースコードの変更はより単純で,ワーカー同士の通信を担当するCommunicatorの生成と並列処理に対応したOptimizerへの変更のみで対応できるとのことです。

本セッションの質疑応答では,同期型・非同期型アプローチに関する質問のほか,これから分散深層学習を始める上でのアドバイスを求める質問などが寄せられました。たとえば,どこをチューニングするべきかという質問に対しては,GPUだけでなくインターコネクトと呼ばれるマシン間を接続するインタフェースにも注意してほしいとの回答がありました。遅いEthernet接続では,並列させても学習が早くならないばかりか遅くなることもあるそうです。

まとめ

本稿で取り上げた第4回のCADEDAでは,テーマである機械学習についてさまざまな観点からのお話がありました。機械学習というとセンセーショナルな面に注目が行きがちですが,実際にサービスへの応用を考えると,多くの壁があることに気付きます。たとえば,そもそも機械学習がどのような案件に適用できるのか,また,どのように機械学習システムを保守・運用して行けばよいのか。そして,どのようにデータの増加やモデルの複雑化に対処するかといった点です。今回,実際の開発・運用に携わる3人の登壇者からのお話は,このような疑問に対する答えの一例を示していると感じました。

なお,サイバーエージェントでは,本ワークショップCADEDAを引き続き開催する予定です。今後も機械学習に加え,分散・分析処理基盤やデータ分析などのトピックも取り上げる予定です。開催時には以下のページで告知する予定ですので,興味に近いテーマがありましたらぜひともご参加ください。

CyberAgent - connpass
URL:https://cyberagent.connpass.com/

著者プロフィール

角田孝昭(つのだたかあき)

筑波大学大学院にて博士後期課程を修了後,2016年より株式会社サイバーエージェントに入社。メディア事業における研究開発組織「秋葉原ラボ」にて,自然言語処理を中心としたデータ分析や機械学習システムの開発に従事。特にアメーバブログ(アメブロ)が抱える大量のテキストを活用することで,ブログ検索精度を向上させたりスパム・スプログからの防御を進めたりなど,アメブロの平和を影から支える。

バックナンバー

2018年

バックナンバー一覧