NDIVIAは先日終了したGPU Tech Conferenceでいくつもの発表を行った。CEOのJensen Huang氏は基調講演で,AIの復活,ディープラーニング,そしてもちろん、コードネームVoltaの次世代GPUと,それによってマシンラーニングのアルゴリズムにおける難題がいかに解決されるかを解説した。
カンファレンスには、基調講演とセッション、ポスター、ハンズオンラボなどがあり、GPU初学者にとっても興味深いものだった。さらに、バーチャルリアリティからコンテナに至るまで,ハイパフォーマンスコンピューティングの領域で最近話題となっているトピックが幅広く取り上げられていた。
InfoQはGregory M. Kurtzer氏に,GPU Tech Conferenceの発展、コンテナ,HPCなどについて話を聞いた。氏はCentosやWarewulf,Singularityなど,多くのオープンソースプロジェクトにリーダやコントリビュータとして参画している人物だ。
InfoQ: GPUはかなり以前からありました。コンテナも同じです。コンテナ内でGPU機能を使用するということで,何が新しいのでしょうか?
Kurtzer: GPU機能をコンテナ内で使用することについて,特別に“新しい”点はありません。以前から“nvidia-docker”などのテクノロジによって実現されていたものです。プライベートリソースをローカルに運用して,コラボレーションやポータビリティの手段としてDockerなどのテクノロジを使用している科学者にとっては、この上なく有用なのですが,汎用目的のHPCや科学用のコンピューティングリソースへの適用という意味では、非常に多くの制限があります。
Singularityは,より広範な科学的ユースケースをサポートし,コンピューティングの再現性とモビリティ(mobility, 可動性)を重視した方法で,HPCリソース上でのコンテナサポートを可能にする,新たな運用パラダイムを提供します。これらすべてを,GPUのネイティブサポートと合わせて実現しているのです!
InfoQ: Dockerやコンテナはあらゆる処理分野に進出していますが,HPCはコンテナ化されたアプリケーションに適しているでしょうか?HPCワークロードの中で,特にコンテナ向きだというカテゴリはあるのでしょうか?
Kurtzer: 答に正確さを期するためには,Dockerとコンテナで質問を分ける必要があると思います。Dockerはコンテナソリューションですが,コンテナソリューションはDocker以外にもいくつもあるからです。
まずDockerについてですが,Dockerは企業向けのマイクロサービス仮想化のための素晴らしいソリューションです。このユースケースのために特に設計されているために優秀なのです。ラップトップやワークステーションを使って構築したワークフローをDockerHubにプッシュする,というように,研究者がローカルでプライベートな科学計算環境などで使用することができます。しかしながら,研究の規模を従来のHPCにまで拡張しようとすると,行き詰まる場合もあるのです。
科学計算,特にHPCでは,Dockerを高く推奨する声が一部にあって,多くの混乱と問題を引き起こしています。この期待に応えられていないがために,すべてのHPCセンタがその対処を強いられているのは残念なことです。そもそもDockerのアーキテクチャとワークフローは,既存のHPCインフラストラクチャには適していないのです。
現在,私と同じようにHPCアプリケーション(密結合され高いスケーラビリティを持つMPベースのアプリケーション)を検討しているのならば,コンテナはあまり適切ではないかも知れません。基盤となっているハードウェアに対してユーザ空間のライブラリスタックを高度にチューニングし,最適化する必要があるからです。これは移植性とのトレードオフになります。
しかし,これら以外にもたくさんある科学計算アプリケーションのエコシステム(いわゆる“科学分野のロングテール”)を対象とするのであれば,ユースケースも豊富にありますし,十分に実用的です。
ここ最近で急増しているユースケースが他にもあります。 それは“計算移動性(mobility of compute)”とも呼べる,計算処理のアジリティです。特定の科学的ワークフローをパッケージ化して,さまざまなホストやリソース上で動作を再現することが可能になります。
InfoQ: Singularityの歴史と,コンテナやHPCとの結び付きについて,簡単に説明して頂けますか?
Kurtzer: Singularityは科学計算の再現性,モビリティ,アジリティ,HPC適合性をユースケースとして重視したコンテナシステムです。
モビリティとアジリティを実現するため,Singularityでは,コンテナイメージとして単一のファイルを使用しています。これは他のコンテナシステムよりも進歩した構造です。カプセル化されたこのイメージには,特定のワークフローのためのソフトウェアスタック全体の再現に必要なオペレーティングシステムと環境,アプリケーション,ワークフローがすべて含まれています。単一イメージファイルなので,ひとつのイメージファイルをコピーさえすれば,そこに含まれるコンテナ環境が,あるシステムから別のシステムへと簡単に利用できるようになります。イメージのブランチもコピーと同様に簡単ですし,共有したい場合であっても,そのファイルのPOSIX権限を開いたり,あるいは電子メールで送信したりすることができます。それと反対に,コンテナ内のデータやライブラリ,あるいはアプリケーションをコントロールしている場合には,通常のアクセス管理とまったく同じ方法でコンテナへのアクセスを制限することが可能です。他のすべてのデータと同じく,コンテナは単なるファイルですから!さらに,単一ファイルを使用することで,並列運用,特にハイパフォーマンスな並行ファイルシステムへの高度な最適化が可能になります。Sigularityイメージ内から特定のジョブを実行することによって,これまでにも相当なスピードアップが実現できています。
従来型の共有HPCリソースのサポートが受けられる点は,Singularityをその他の企業向けコンテナシステムから大きく差別化する部分です。HPCシステムでは通常、信頼されているかどうかに関わらず、どのユーザもコマンドラインシェルを経由してログオンすることが可能です。私たちがコンテナへのアクセスだけでなく、信頼されていない独自コンテナの利用を可能にしたいという対象も、これと同じユーザです。Singularityは、コンテナ内のユーザのシェルに設定された権限に関して、親プロセスとその子プロセスとの連続性を維持します。これによって、信頼されていないユーザによる信頼されていないコンテナの実行に関しても、信頼性を保証することを可能にしています。Singularityではさらに、コンテナ内のユーザが呼び出したユーザと同じであることが保証されています。これを実現したことで、コンテナ内でのユーザ権限を上昇させるような操作をブロックすることが可能になりました。
これは一般的な企業ソフトウェアとはかなり異なる使用モデルです。ホストからコンテナ内にリソースを直接共有できることから、コンテナ内にあるものとホスト上のものとの区別を曖昧なものにすると同時に、コンテナ内のアプリケーションを、リソースマネージャや既存のHPCリソース(ファイルシステム、GPU、高性能インターコネクトなど)と容易に統合できるようになります。
私たちが提案しているこれら機能の必要性には、Singularityの急速な普及が大きく関わっています。私たちは現在,プロジェクトを支援してくれる人たちを(ボランティアと雇用の両方で)募集しています!
InfoQ: NVIDIAはGPUの機能を利用するために、Dockerプラグインの他に、プラグインをベースにした代替CLIも提供していますが、このアプローチとSigularityのアプローチの違いは何ですか?
Kurtzer: NvidiaのDockerソリューションは、デバイスとリマッピングドライバ、ライブラリ、その他Dockerインスタンス実行に必要なものを分離できていないという点で、分離に関するDockerの設計条件に反しています。この方法論はスタンドアロンシステム上で、コンテナ内部からホストのGPUを操作する場合には有効ですが、Dockerと従来型のHPCシステムとの不適合性に関わる多くの問題を解決するものではありません。
Singularityは従来型HPCのユースケースを意識して設計されているだけでなく、管理下にあるソフトウェアやライブラリやデータ(輸出管理、HIPAA、政府機密や営業機密など)もサポートしています。さらに、ホストとコンテナの境界を曖昧なものにすることにより、コンテナ化されたアプリケーションからホストのGPUに簡単にネイティブアクセスすることができます。
InfoQ: コンテナ化されたHPCワークロードに関してSingularityと競合する、他のプラットフォームについて話を聞かせてください。Singularityに対する現在のコミュニティ関与とロードマップについて、特にKumernetesやDocker SwarmといったDockerエコシステムのサポートはどのようになっているのでしょう?
Kurtzer: Singularityのような、単一イメージファイルの使用による非rootユーザの計算再現性やモビリティに着目したコンテナシステムは、他に類を見ません。ですから競合相手はごくわずかです。Signularityはこのニッチにおける唯一の存在なのです。
KubernetesとMesosでSingularityをサポートすることに関しては、多くの関心が寄せられていますが、残念ながらすべてが研究関連からのものであるため、これらのプロジェクトのおもなメンテナからは関心を持たれていません(少なくとも私がこれまで知る限りでは)。そのため、この作業を行なう開発者を雇用するための資金調達を行なっているところです。
ロードマップが示すように、Singularityは信頼性の高い、管理されたワークフローに必要な“トラステッドコンピューティング”などのパラダイムをサポートするという、独自の立場にあります。これはバックグラウンドデーモンプロセスのコンテナ化のサポートや、Singularityが先鞭を付けたデータコンテナの新たなコンセプトと合わせて、ロードマップにおける大きな目標です。
InfoQ: 今回のGPU Tech Conferenceでは、おもにどのような収穫がありましたか?GPUの今後の展望について聞かせてください。
Kurtzer: 会場の大きさには驚きました!ランチサービスの規模と内容にもびっくりしましたね(航空機格納庫のような大きなビルが、どこも人で溢れていているのですから!)。マシンラーニングは金属の足を伸ばして、GPUを次のレベルに引き上げようとしているのです!社会的不安を解決すべく、GTCは成長しました!
NVIDIAのオンデマンドGTC Webサイトでは、基調講演やその他のビデオを入手することができる。
この記事を評価
- 編集者評
- 編集長アクション