IoT/AIサービスを変革するOSSへの取り組み - NTT12 NTT技術ジャーナル 2017.12...

5
NTT技術ジャーナル 2017.12 10 IoT/AI/SDx時代を支えるOSSへの取り組み 概 要 最初に,近年注目を浴び,活用機会 が増えてきたコンテナ型仮想化技術 (コンテナ技術)について述べます. コンテナ技術は,ソフトウェア実行環 境を仮想化するという点で仮想マシン 技術と対比されるものですが,ハイ パーバイザ型の仮想化技術に比べゲス トOSが介在することで生じるオーバ ヘッドが少ないため,コンテナの起 動 ・ 停止が非常に高速であるという特 長を持ち,機能追加などの改良も活発 に行われています.コンテナ技術は, 実際の利用シーンにおいて同一環境内 で大量のコンテナの生成,削除が頻繁 に行われるため,管理が煩雑になるこ とから,その対応のため管理 ・ 実行基 盤用のオープンソースソフトウェア (OSS)が提案されており,その中から 代 表 的 な も の と し て,Docker, Kubernetes, etcdを紹介します. 次に,AI(人工知能)領域におけ るOSSとして,近年急速に利用が広 がりつつある深層学習の実行環境であ るフレームワークについて述べます. なお,最近ではデータ ・ モデルの大規 模化や,処理の高速化ニーズに対応す べく,フレームワークの並列分散化対 応の動きが活発化しています.本稿で は,代表的な深層学習フレームワーク を紹介した後に,深層学習処理の並 列 分 散 化 を 支 え るGPU(Graphics Processing Unit)や高速インターコ ネクトなどの活用技術について紹介し ます. コンテナ技術 ■コンテナ型仮想化の概略 近年,コンテナ型仮想化と呼ばれる 技術が注目を浴びています.コンテナ 型仮想化では,複数の仮想サーバ間で サービスに必要なアプリケーションの みを個別に保持し,OSカーネルを共 有します(図1 ).ハードウェアエミュ レーションによるハイパーバイザを用 いた仮想化に比べてコンテナ型では, ゲストOSが介在することで生じる オーバヘッドが少ないため,コンテナ の起動 ・ 停止が非常に高速であるとい う特長があります. コンテナの管理 ・ 実行基盤ソフト ウェアの多くは,コンテナを構成する ために必要なソフトウェアを組み合わ せてイメージを生成する仕組みや,生 成したコンテナイメージを実行する機 能を持ちます. ■Dockerに関する取り組み Dockerは,コンテナを管理 ・ 実行 する,代表的なプラットフォームの 1 つです.Dockerfileと呼ばれるコンテ ナの構成内容を記述する設定ファイル を準備し,コンテナイメージを生成し て,そのイメージはDocker Hubと呼 ばれる共有サイト上で配布することが 可能です(図2 ).そのため,Docker には,ユーザ自身や他ユーザが作成し たイメージを組み合わせて,必要とす る機能を含んだサービスを容易に構築 できるといった特長があります.また, Swarm-modeと呼ばれるオーケスト レータ機能を標準で実装しており, ワークロードに応じて複数ノード上で コンテナを分散実行させることも可能 です.また,Dockerfileにより生成さ れたコンテナイメージは汎用性が高 く,KubernetesやMesosな ど ほ か の オーケストレータ上で実行することも できます. NTTソフトウェアイノベーションセン タ(SIC)では2016年11月に,Docker / Moby の日本唯一のメンテナを輩出し コンテナ 深層学習 並列分散処理 Docker/Moby:2017年4月に,Dockerプロジェ クトは,Mobyプロジェクトに移行しています. Docker社による製品開発は,Mobyプロジェク トによるオープンな開発の成果を基に行われて います. IoT/AIサービスを変革するOSSへの取り組み NTT研究所では,NTTソフトウェアイノベーションセンタ(SIC)を中 心にオープンソースソフトウェア(OSS)を取り組みの柱の 1 つとして注 力してきました.中でも,OpenStack, Apache Hadoop等のコミュニティに おける積極的な活動を通して,コミュニティへの貢献はもとより,自らの 技術の研鑽,人材育成を実施し,成果創出につなげてきました.一方で, 仮想化やAI(人工知能)などの新たな領域においてもOSSの波が着実に広 がっており, SICでも取り組みを進め,成果をあげ始めています.本稿では, SICでのOSSへの取り組みについて技術的観点を中心にコミュニティ活動 も織り交ぜつつ紹介します. じゅんや /三 ひとし あきひろ /山 /金 せきとし NTTソフトウェアイノベーションセンタ

Transcript of IoT/AIサービスを変革するOSSへの取り組み - NTT12 NTT技術ジャーナル 2017.12...

Page 1: IoT/AIサービスを変革するOSSへの取り組み - NTT12 NTT技術ジャーナル 2017.12 IoT/AI/SDx時代を支えるOSSへの取り組み とのリソースアイソレーションやス

NTT技術ジャーナル 2017.1210

IoT/AI/SDx時代を支えるOSSへの取り組み

概 要

最初に,近年注目を浴び,活用機会が増えてきたコンテナ型仮想化技術

(コンテナ技術)について述べます.コンテナ技術は,ソフトウェア実行環境を仮想化するという点で仮想マシン技術と対比されるものですが,ハイパーバイザ型の仮想化技術に比べゲストOSが介在することで生じるオーバヘッドが少ないため,コンテナの起動 ・ 停止が非常に高速であるという特長を持ち,機能追加などの改良も活発に行われています.コンテナ技術は,実際の利用シーンにおいて同一環境内で大量のコンテナの生成,削除が頻繁に行われるため,管理が煩雑になることから,その対応のため管理 ・ 実行基盤用のオープンソースソフトウェア

(OSS)が提案されており,その中から代 表 的 な も の と し て,Docker, Kubernetes, etcdを紹介します.

次に,AI(人工知能)領域におけるOSSとして,近年急速に利用が広がりつつある深層学習の実行環境であるフレームワークについて述べます.なお,最近ではデータ ・ モデルの大規模化や,処理の高速化ニーズに対応すべく,フレームワークの並列分散化対

応の動きが活発化しています.本稿では,代表的な深層学習フレームワークを紹介した後に,深層学習処理の並列 分 散 化 を 支 え るGPU(Graphics Processing Unit)や高速インターコネクトなどの活用技術について紹介します.

コンテナ技術

■コンテナ型仮想化の概略近年,コンテナ型仮想化と呼ばれる

技術が注目を浴びています.コンテナ型仮想化では,複数の仮想サーバ間でサービスに必要なアプリケーションのみを個別に保持し,OSカーネルを共有します(図 1 ).ハードウェアエミュレーションによるハイパーバイザを用いた仮想化に比べてコンテナ型では,ゲストOSが介在することで生じるオーバヘッドが少ないため,コンテナの起動 ・ 停止が非常に高速であるという特長があります.

コンテナの管理 ・ 実行基盤ソフトウェアの多くは,コンテナを構成するために必要なソフトウェアを組み合わせてイメージを生成する仕組みや,生成したコンテナイメージを実行する機能を持ちます.

■Dockerに関する取り組みDockerは,コンテナを管理 ・ 実行

する,代表的なプラットフォームの 1つです.Dockerfileと呼ばれるコンテナの構成内容を記述する設定ファイルを準備し,コンテナイメージを生成して,そのイメージはDocker Hubと呼ばれる共有サイト上で配布することが可能です(図 2 ).そのため,Dockerには,ユーザ自身や他ユーザが作成したイメージを組み合わせて,必要とする機能を含んだサービスを容易に構築できるといった特長があります.また,Swarm-modeと呼ばれるオーケストレータ機能を標準で実装しており,ワークロードに応じて複数ノード上でコンテナを分散実行させることも可能です.また,Dockerfileにより生成されたコンテナイメージは汎用性が高く,KubernetesやMesosな ど ほ か のオーケストレータ上で実行することもできます.

NTTソフトウェアイノベーションセンタ(SIC)では2016年11月に,Docker / Moby*の日本唯一のメンテナを輩出し

コンテナ 深層学習 並列分散処理

*Docker/Moby:2017年4月に, Dockerプロジェクトは,Mobyプロジェクトに移行しています. Docker社による製品開発は,Mobyプロジェクトによるオープンな開発の成果を基に行われています.

IoT/AIサービスを変革するOSSへの取り組みNTT研究所では,NTTソフトウェアイノベーションセンタ(SIC)を中

心にオープンソースソフトウェア(OSS)を取り組みの柱の 1 つとして注力してきました.中でも,OpenStack, Apache Hadoop等のコミュニティにおける積極的な活動を通して,コミュニティへの貢献はもとより,自らの技術の研鑽,人材育成を実施し,成果創出につなげてきました.一方で,仮想化やAI(人工知能)などの新たな領域においてもOSSの波が着実に広がっており, SICでも取り組みを進め,成果をあげ始めています.本稿では,SICでのOSSへの取り組みについて技術的観点を中心にコミュニティ活動も織り交ぜつつ紹介します.

加か と う

藤 淳じゅんや

也 /三み た け

嶽  仁ひとし

須す だ

田 瑛あきひろ

大 /山や ま だ

田 英ひ で き

沖お き つ

津 健け ん ご

吾 /金か な い

井 関せきとし

NTTソフトウェアイノベーションセンタ

Page 2: IoT/AIサービスを変革するOSSへの取り組み - NTT12 NTT技術ジャーナル 2017.12 IoT/AI/SDx時代を支えるOSSへの取り組み とのリソースアイソレーションやス

NTT技術ジャーナル 2017.12 11

特集

ています(2017年10月現在).メンテナとは,バグ修正や新機能追加などのソースコード変更提案をレビューし,その採否を決定する権限を持つ開発者のことです.メンテナに相当する役割は,ほかのOSSコミュニティでは「コ

ミッタ」など別の名称で呼ばれることもあります.

メンテナは,コミュニティに対し継続的に貢献してきた開発者の中から,現任のメンテナの合議によって選出されます.SICから輩出したメンテナは,

ファイルシステムに関する問題の解析 ・ 修正や,コンテナのメタデータ管理機能の提案など, 1 年弱に及ぶ継続的な活動を評価され選出されました.メンテナに就任後は,ほかの開発者からの提案のレビューや採否決定を主に担いつつ,新機能などの提案として,コンテナイメージ生成の短縮手法,さらに2017年 7 月に本手法を取り込んだコンテナイメージ生成機能を総合的につくり直すBuildKitプロジェクトの推進も行っています.■Kubernetes, etcdに関する

取り組みKubernetes は,数千台規模の巨大

なクラスタを管理するためのコンテナスケジューラです.ユーザからのタスク作成の要求に応じて,適切なリソースを持ったマシンでコンテナをデプロイするのが主な役割です.Dockerなどのコンテナ技術を活用してタスクご

図 1  仮想マシンとコンテナの違い

サービス

ゲストOS

ハイパーバイザ

ホストOS

物理ハードウェア

サービス

ゲストOS

サービス

ゲストOS

仮想サーバ(VM)

サービス

ホストOS

物理ハードウェア

サービス サービス

仮想サーバ (コンテナ)

(a) ハイパーバイザ型仮想化 (b) コンテナ型仮想化

図 2  Dockerの仕組み

Docker Hub(またはプライベートレジストリ)

マイクロサービス

マイクロサービス

マイクロサービス

Dockerfileでイメージ記述

組み合わせてデプロイ

FROM ubuntuRUN apt install ○○○COPY ○○○.conf /etc…

Page 3: IoT/AIサービスを変革するOSSへの取り組み - NTT12 NTT技術ジャーナル 2017.12 IoT/AI/SDx時代を支えるOSSへの取り組み とのリソースアイソレーションやス

NTT技術ジャーナル 2017.1212

IoT/AI/SDx時代を支えるOSSへの取り組み

とのリソースアイソレーションやスムーズなアプリケーションの配布を実現することや,タスクごとに優先度に基づいた柔軟なスケジューリングを可能にするという特長があります.ユーザからの要求やタスクの終了の通知等のイベントの発生頻度は,用途やクラスタの規模によりますが,巨大なクラスタではかなり高い頻度で発生します.そのため,大規模なクラスタを安定的に運用するためには,タスクの状態を高信頼,高性能なデータベースなどで保持しておくことが必須となります.

タスク状態の保持のため適用される有力なOSSとしてetcdがあります.etcdは,分散合意プロトコルRaftを活用した分散キーバリューストアであり,高い可用性と強い一貫性を特長とし て い ま す.そ の 特 長 を 活 か し,Kubernetesはetcdを内部管理情報の保存に利用しています.

etcdのRaftコンポーネントにかかわるバグの修正による品質向上や,認証機能の設計レベルでの改善を継続的に取り組んだ活動が認められ,2016年6 月にetcdプロジェクトのメンテナがSICから選出されました.etcdプロジェクトのメンテナは世界全体で 7名のみとなっています (2017年10月現在).品質向上には,SICが開発した分散システム向けの試験ツールである Namazuも活用されており,現在ではetcdプロジェクト公式のCI(継続的イ

ンテグレーション,自動テスト環境)に組み込まれています.

また,SICでは,Kubernetesの適用性を拡大する活動として,後述の深層学習フレームワークにおいて重要な,ネットワークトポロジを考慮したスケジューラの実現や低レイテンシ(遅延)かつ CPU 効率の良いネットワークプ ロトコルである RDMA(Remote Direct Memory Access) のサポートをめざしています.

深層学習フレームワーク

■既存のフレームワーク近年の深層学習の流行によって,多

くの深層学習フレームワークがOSSとして公開されています(表).深層学習はタスクに応じて定義したモデル

(深層学習で用いるネットワーク構造)のパラメータをデータから学習し,その学習済みのモデルを使って画像や音声などを高精度に認識します.学習の過程ではモデル内の膨大なパラメータの微分値を計算して使いますが,タスクやモデルを変更するたびにこうした学習の計算処理を自ら実装することは非常に煩雑になります.フレームワークは学習に必要な計算処理を自動で行う機能を持っており,ユーザは使用するモデルや学習方法などを定義するだけで簡単に深層学習を使えます.フレームワークは深層学習を牽引する企業が主導して開発しており,例えば 国 外では,GoogleはTensorFlow,

Microsoft は Microsoft Cognitive T o o l k i t(C N T K),A ma z o n はMXNet,そしてFacebookはCaffe2をプロダクト向け,PyTorchを研究向けと位置付けて開発を進めています.TensorFlowの特長はユーザ数とコミュニティが最大である点です.CNTKは高い速度とスケーラビリティを持ち,MXNetは実装などの柔軟性の高さを特長としています.国内 で はPreferred Networks(PFN)がChainer を公開しており,日本語の対応が充実しています.またChainerは,データの処理に伴って自動的にモデルの構造が決定される柔軟な方式を採用しており,この方式は他のフレームワークへ波及していきました.

並列分散化対応については,海外のフレームワークはいずれも対応が進んでおり,国内のChainerも同様に対応を進めているような状況です.PFNは分散学習に対応したChainerMNと いう追加パッケージを公開し,TensorFlowより 6 倍高速だと主張しています(2017年 2 月現在).

これらのフレームワークについて,動作環境や処理に対する考え方など,現時点では,決定打がまだない状況です.そのため,SICでは,さまざまな利用用途に即してフレームワークの検証を進めています.

Page 4: IoT/AIサービスを変革するOSSへの取り組み - NTT12 NTT技術ジャーナル 2017.12 IoT/AI/SDx時代を支えるOSSへの取り組み とのリソースアイソレーションやス

NTT技術ジャーナル 2017.12 13

特集

■技術動向と今後の課題(1) 高性能計算リソースを活用し

た並列分散処理深層学習の高精度化を実現するため

には,一般的にモデルの層を深くする必要があるといわれています.しかし,その結果学習するパラメータ数が増加して計算量が爆発し,学習に数日から数週間かかってしまうという問題が生じます.この問題を解決するために計算能力の高い高性能計算リソースの活用や,複数データに対する計算を並列に実行する並列分散処理技術が検討されており,フレームワーク側でこれらをサポートする動きがみられます.

高性能計算リソースの活用については,GPUの利用が普及しています.GPUは深層学習計算のほとんどを占

める行列演算が得意な演算装置で,現時点のデファクトスタンダードとなっているNVIDIAの製品の場合,CPUの数倍〜数10倍の計算性能を持ちます.各フレームワークではNVIDIAが提供するライブラリであるcuDNNなどを用いて学習部分の計算を記述することにより,GPUの高い性能を活用しています.

並列分散処理技術については,複数GPUを用いた「データ並列」と呼ばれる方式が主に利用されています.データ並列は,同じモデルを複数のGPUにコピーして,異なる学習データに対するパラメータ学習計算を並列に実行した後に,各GPUが通信をしてパラメータを更新する方式です.それまで 1 つのGPUに順々に学習デー

タを入力させてパラメータ学習していたものを並列化するため,大幅な高速化が期待されます.そのため各フレームワークでサポートする動きが活発で, 1 台のマシンに複数搭載されているGPUを利用するマルチGPU対応,複数のマシン上のGPUを利用するマルチノード対応が進められています.

マシン数 ・ GPU数を増加させることでさらなる高速化が期待されますが,並列度を増加させるほどパラメータ更新のための通信が性能上のボトルネックとなることが知られています.各フレームワークではこの問題を解決するため,パラメータデータ配置方法の工夫や,高性能な通信技術の適用などが検討され始めており,今後活発に議論 ・ 実装されていくものと考えられ

表 深層学習フレームワーク一覧

フレームワーク プラットフォーム インタフェース 特 長 主な開発者

TensorFlow Linux, macOS, Windows, Android, iOS

Python, Java, C++, Go, Julia, C#, R, Haskell

最大のコミュニティTensorBoardによる可視化 Google

MXNet Linux, macOS, Windows, Android, iOS

Python, R, Julia, Scala, Go, Matlab, Javascript

タスクに合わせて柔軟に実装可能多数のプラットフォーム

Amazon,Baidu,Carnegie Mellon Univ

CNTK Linux, Windows, Python, C++ 高速(特にRNN)高スケーラビリティ Microsoft

Chainer Linux Python 自然言語処理などに有効な実装方式 PFN

PyTorch Linux, macOS Python TorchとChainerから派生し自然言語処理などに有効

Facebook,Twitter,Salesforce

Caffe2 Linux, macOS, Windows, Android, iOS C++, Python 多数のプラットフォーム

高速,省メモリ,高スケーラビリティ Facebook

Page 5: IoT/AIサービスを変革するOSSへの取り組み - NTT12 NTT技術ジャーナル 2017.12 IoT/AI/SDx時代を支えるOSSへの取り組み とのリソースアイソレーションやス

NTT技術ジャーナル 2017.1214

IoT/AI/SDx時代を支えるOSSへの取り組み

ます.SICでは,実際の問題を対象として,

どのような構成が最適なのか,今後検証する予定です.

(2) 並列分散処理を支える通信処理技術

通信高速化のアプローチとして,HPC (High Performance Computing)分野で広く採用されているInfiniBandなどの高速インターコネクトの活用が有効とみられています.高速インターコネクトを最大限活かして低遅延通信を実現するためには,一般的なTCP/IPによる通信ではなく,CPUを介さずにリモートマシンのメモリを読み書きすることができるRDMAを利用します.一般的な通信プログラムはS o c k e t A P I ( A p p l i c a t i o n Programming Interface)で記述しますが,RDMAによる通信プログラムはVerbsと呼ばれる低レベルAPIで記述する方法や,HPC分野で広く用い ら れ て い る 並 列 計 算 の イ ン タフェースであるMPI (Message Passing Interface)を使って記述する方法があります.

TensorFlowでは,2017年 4 月にはVerbsに よ るRDMA通 信 が 実 装 され(1),2017年 8 月 に はGPU Direct RDMAが実装される(2)など,着々とRDMAのサポートが進んでいます.また,ChainerMNでは,ノード間の通信にMPIを用いて分散処理を実現しています(3). MXNetやCNTK(4)に

おいても一部実装やコミュニティ内での議論が始まっており,今後ますますRDMAの活用が重要になっていくとみられます.

RDMAは,実際に使用する場合,一般的なTCP/IPに比べて通信手順が複雑なため,SICでは現在,RDMA通信の普及展開に必要なAPIの抽象化により簡易な実装が可能となるよう検討を進めています.

今後の展開

本稿では,SICの取り組む新たなOSSとして,コンテナ型仮想化技術と,深層学習フレームワークについて紹介しました.

システム設計 ・ 構築において,仮想化は必須の手法であることから,実行環境を軽量に仮想化可能なコンテナ技術は今後も適用範囲を拡大していくものと考えられます.また,深層学習フレームワークは,今後も並列分散化対応が進められることでしょう.

NTT研究所は,引き続き,これらの技術に関する研究開発を進めていきますが,自ら使うアプローチを重視していきます.例えば,コンテナクラスタ上で並列分散深層学習フレームワークを構築し,実際に使って評価することで,AI研究に資するだけでなく,幅広い課題抽出につながるものと期待しています.

■参考文献(1) https://github.com/tensorflow/tensorflow/

pull/8943(2) https://github.com/tensorflow/tensorflow/

pull/11392(3) https://research.preferred.jp/2017/05/

chainermn-beta-release/(4) https://github.com/Microsoft/CNTK/wiki/

CNTK_2_0_RC_2_Release_Notes

(上段左から) 三嶽  仁/ 須田 瑛大/ 加藤 淳也

(下段左から) 山田 英樹/ 沖津 健吾/ 金井 関利

仮想化やAIなどの領域において,コンテナ技術の適用範囲の拡大や深層学習フレームワークの並列分散化に向け,OSSコミュニティと連携を深め,今後も着実に研究開発を進めていきます.

◆問い合わせ先NTTソフトウェアイノベーションセンタ 分散処理基盤技術プロジェクト

TEL 03-6712-9340FAX 03-6712-8372E-mail kato.junya lab.ntt.co.jp