NTTは2019年6月にドイツで開催された高性能コンピューター(いわゆるスーパーコンピューター)技術の学会「ISC High Performance 2019」で、大規模深層学習を大幅に高速化する光インターコネクト技術を発表した。NTTは光通信技術の開発を長年牽引してきたが、実はスーパーコンピューターのインターコネクトはこれまで手掛けていなかったという。「これまでは長距離通信をいかに大容量にするかに注力していた」(NTT)。今回、その技術をインターコネクトに向けることで、その分野でいきなり先頭に立つ可能性が出てきた。

NTTの分散深層学習向けアクセラレーター。ボードの奥左側の送受信モジュール2つは、100Gビット/秒の光リンク。黒い台に見えるのはサーバーの筐体(写真:NTT)
[画像のクリックで拡大表示]

流れ作業で待ち時間をなくす

 開発したのは「NTT-Allreduce」という、大規模な深層学習を高速に実行するためのアクセラレーター。データを他のサーバーに高速伝送するインターコネクトの機能と一体になっている。

 一般に、大量の演算を高速化しようとする際、処理の並列化が効果的だ。ただ、その効果が上がりにくい例もある。深層学習はその典型。深層ニューラルネットワーク(DNN)を並列に切り分けることは原理上できないからだ。そこで、「分散深層学習」という手法が開発されている。これには「AllReduce」と呼ぶアルゴリズムを利用する(図1(a))注1)。具体的には、並列処理する数だけ、同じDNNを用意し、学習データを分割して学習させる。ただし、これだけでは各DNNは一部のデータしか学習していないため、学習結果(具体的には得られたDNNの各層の重みデータなど)をDNN間で集約して加算・平均化し、それを再び各DNNに分配して共有する、といった手続きをとる。

図1 リング型接続で分散深層学習の通信遅延を大幅低減
深層学習を並列処理する際の基本的な手法「AllReduce」とその課題(a)を示した。ただしこの手法では、並列度が高まると集約(reduce)と分配(gather)の際の通信オーバーヘッドが非常に大きくなる課題がある。これを解決するのが、リング型のAllReduce(b)。NTTはreducerを、サーバーのCPUやGPUではなく、リング型の光インターコネクトを担うアクセラレーターに実装する形で通信オーバーヘッドの大幅低減を実現した。
[画像のクリックで拡大表示]

注1)「AllReduce」という表現は、大規模並列計算のプロトコル「Message Passing Interface(MPI)」で使われる用語。演算器1つに演算結果を集約(reduce)した後、残りの演算器すべてに結果を分配することを「AllReduce」と呼ぶ。ちなみに、分配は「gather」。すべての演算器にデータを分配することは「AllGather」という。

 しかし、この手法は学習データを集約、分配する際の通信オーバーヘッドが非常に大きく、並列度が高いと有効性が低い課題があった。

 一方、NTT-Allreduceでは、サーバー間の接続トポロジーをリング状にした上で、加算や分配といったデータ処理をサーバー機のCPUコアやGPUとは切り離してアクセラレーターで実行する注2)。リング上のアクセラレーター全体で、加算や分配などのデータ処理をパイプライン(流れ作業)化することで通信オーバーヘッドを隠蔽している。

注2)分散深層学習向けリング型AllReduceは2017年2月に中国Baiduが発表しているが、NTTは今回の技術を独自に開発したものだとする。「リング型のAllReduce自体、大規模並列計算機の世界では以前からあったもの。今回の技術はBaiduとは実装レベルで大きく違う」(NTTの坂本氏)。例えば、Baiduはツリートポロジーを持つInfiniBandの上に論理的なリングをソフトウエア(ライブラリー)で実現した。一方、NTTはハードウエア(アクセラレーター)を使い、しかも物理的なリングを構築した。また、Baiduは比較的大きなデータの加算と分配を逐次的に処理しているため、そのデータのリング2周分の遅延が発生するが、NTTは数Kバイトという小さいデータを基に、加算と分配を逆回りの並列処理にすることで遅延がずっと少ない、といった点だ。

この先は有料会員の登録が必要です。今なら有料会員(月額プラン)が2020年1月末まで無料!

日経 xTECHには有料記事(有料会員向けまたは定期購読者向け)、無料記事(登録会員向け)、フリー記事(誰でも閲覧可能)があります。有料記事でも、登録会員向け配信期間は登録会員への登録が必要な場合があります。有料会員と登録会員に関するFAQはこちら