パソコン実験工房PC Watch出張所 - Supported by パソコン工房

AI向けPC「DEEP∞」のXeon機で、AI開発環境の構築と映像認識を行なってみた

~箱を開けて数時間でAI開発環境が構築可能

パソコン工房DEEP∞「DEEP-TXAB-XW21-XAX」

 最近は身近になった、というよりも一部の業務では必須、あるいは取り組んでいないことが許されなくなってきた風もあるAI。その実態の主体はCNN(Convolutional Neural Network:畳み込みネットワーク)とかDNN(Deep Neural Network:ディープニューラルネットワーク)になるかと思う。そうしたAI技術を自社の業務なり製品なりに、活かしていくための方策を検討課題として与えられている担当者は少なくないと思われる。

 その一方で、まだまだAIのための技術を習得するのは容易ではない。昨今だととくにビデオカードの入手難に絡んで(これはおもに暗号通貨のマイニング需要が高い事に起因する)環境をそろえるのも一苦労だし、その先の「AIを利用するために必要な環境作り」も一苦労である。担当者がそうした機材調達とか環境構築に慣れ親しんでいるとは限らないわけで、そうでなくてもAI技術の実装で頭を悩ませているのに、さらに過負荷を掛けることになる。

 そうした担当者の強い助けになるのが、「ディープラーニング専用PC」という存在。AIの学習やPoCの実装、実際の環境に実装するための調査や開発などに利用可能な構成をハードウェア/ソフトウェアを含めてまとめて用意してくれる存在だ。少なくともこれを利用することで、機材調達や環境構築に頭を悩ませる必要がなくなる。

 パソコン工房が提供する「ディープラーニング専用PC」である「DEEP∞」(ディープ インフィニティ)シリーズは、まさにこうした環境に向けた構成になっており、AI開発を迅速にはじめたい企業/ユーザーにとってひじょうにありがたい存在となっている。


現行製品としては最高のAI性能を誇るGeForce RTX 3090を搭載

 今回ご紹介するのは、DEEP∞の1モデルである「DEEP-TXAB-XW21-XAX」というモデルだ。

 まずキーポイントになるのが、GeForce RTX 3090(24GB)を搭載していること。昨今だとAI向けアクセラレータもいろいろと出てきてはいるが、現時点でAI用に最も広く利用されているのがNVIDIAのCUDAを利用した環境であることは間違いなく、AIのトレーニングやPoC(Proof Of Concept:概念実証)のレベルで言えばNVIDIAを選択しておくのが一番無難である。

 そのNVIDIAのGPUにしても、ハイエンドであればデータセンター向けの「A100」や、そのA100を搭載したサーバー「DGX-1」などもあるが、こちらはお値段が数百万円のオーダーになる。大規模システムの設計が完成したので本番運用に向けて導入するとか、AIの研究を本格的に行なうという用途であれば悪い選択肢ではないのだが、学習やPoCのレベルで導入するにはちょっとハードルが高い。

 そうなるとコンシューマ向けのGeForce RTX系が選択肢に上がる事になる。DEEP∞ではシステムに搭載し、負荷テスト、排熱のチェックを行なって通過した部品を採用しており、今回のモデルでは、ASUSの「TUF Gaming GeForce RTX 3090 24GB GDDR6X」が搭載されていた。入手できる製品としては最高のAI性能を誇ると言っていい。

GPUにASUSの「TUF Gaming GeForce RTX 3090 24GB GDDR6X」を採用。トリプルファンで長時間の駆動でも安定して運用可能。製品そのものも長寿命を意識した部品や構成をとったものになっている


CPUは、AI向けとしてバランス良く、PCIeが48レーン使えるXeon W-2223を採用

 GeForce RTX 3090を導入する場合、とくにAI用途では、バス(PCI Express)性能と電源、そして放熱がネックになりやすい。前者に関しては、複数枚のGeForce RTX 3090を装着する事を考えると、PCI Express x16レーンを複数取れる構成が望ましい。そこで本製品では、CPUには「Xeon W-2223」を、これと組み合わせるマザーボードにはSuperMicroの「X11SRA」を採用している。

製品内部。派手さはないが堅実動作を保証してくれるCPUクーラー。この下にXeon W-2223が鎮座する

 Xeon Wを選ぶメリットは、PCI Expressを最大48レーンまで利用できることで、これにより最大で2枚までのGeForce RTX 3090をフルに利用可能となる。これが一般のCoreシリーズ向けマザーボードだと、GPU用のPCI Expressレーンが最大16レーンになるため、2枚装着してもPCI Expressがボトルネックになってその性能が発揮できない。逆に言えばCPU性能そのものはそれほど高くなくても良いわけで、性能と消費電力、価格のバランスの良いXeon W-2223が利用されている。

 これと組み合わせるSuperMicroのX11SRAは、オーバークロック性とかフルカラーLEDなどの派手な機能は一切ないが、Ubuntuを正式にサポートし、ワークステーション向けに「確実に動く」堅実性に振った構成。組み合わせるメモリもKingstonのECCつきDDR4-2933 Registered DIMM×4(Xeon W-2223がDDR4-2666までのサポートの関係で、DDR4-2666動作となる)と安定性が高い。GPUでの処理であればメモリ容量はそれほど必要ないが、CPUでも作業を分配するとか、トレーニングフェーズでCPUを使ってデータを整理する、といったケースでは、DIMMスロットが4つ余っているので、メモリを増設することも容易だ。

AIでもトレーニングになると、数週間動かしっぱなしという事がありうる。こうしたケースで、宇宙線などの影響でメモリエラーが発生すると、作業時間が無に帰すわけだが、ECC保護があればこうしたケースでも問題なく作業を続行できる

 電源は80PLUS Platinum認証を取得した1200W電源がケース下部に搭載される。1GPU構成におけるシステム全体の消費電力は、実測値で230W弱程度(ResNet-50のInference実行時)。GPU単体のピーク消費電力は350W前後であり、デュアルGPU+CPUフル駆動でもまかなえる電力容量である。それでいて80PLUS Platinumだから、消費電力が低いときでも電力効率は高いままである。

下側の黒いカバーの奥にHDDマウントと電源が収められている。冷却風の経路をわけることで、CPU+GPUの熱い排気の影響を受けにくくなっており、結果として電源の長寿命化にもつながる

 そして一番気になるのが放熱対策。DEEP-TXAB-XW21-XAXではケースにSilverStoneのKL07を採用するが、KL07はフロントパネル側には2つの120mmφの吸気ファン、背面に120mmφの排気ファンを装備しており、さらにケースの上端に排気口に用意されているので、複数のGPUカードをフル稼働させても支障はない。

後でHDDを実装する場合、これの冷却用に最下段に吸気ファンを追加することもできる
背面だけだと心もとなく感じるかもしれないが、実際はケース上面の左右にも排気口が用意されており、必要ならさらに上面排気用ファンの取りつけ穴も用意されている

 ケースそのものは、いまではむしろ珍しい地味な構成で、フロントパネルは電源スイッチとLEDのみ、側面もシンプルである。上面にUSB 3.0×2とSound端子が用意されている。

ちょっと見えにくいが、左に入っている縦のスリットの中に電源とLEDが収まっている
最近はここにアクリルあるいは強化ガラスを入れて、なかが見えるようにしたものが多いが、KL07はその代わりに側面パネル内側に吸音材を張り詰めてあり、稼働中も驚くほど静か
机の脇などにおいて使うのに便利である

 ストレージは標準では1TBのNVMe SSDが実装され、ここにOSやアプリがプリインストールされた状態で提供される。データ用のHDDは用意されていないが、ケースの裏側に2.5inch×3、2.5/3.5inch×3の合計6ドライブのマウントが用意されており、マザーボードにもSATA×6とM.2×1、U.2×4が拡張用に用意されている。

搭載されるSSDはWD Blue SN550 1TB。MTTFは175万時間(約200年)、書き込み寿命600TBW(SSD全体を600回書き込み可)の長寿命製品である
ケース下部に配された電源の脇に2.5/3.5inchドライブベイ×3が、マザーボード取りつけ部の左側に2.5inchのドライブベイ×3がそれぞれ配されている
SATAおよびU.2コネクタのすぐ横に、ケーブルを裏に回すための穴が用意されており、取り回しは容易。もちろんケーブル類は付属する

 というわけで将来の拡張性にも配慮しつつ、堅実なパーツの組み合わせで基本機能をしっかり押さえていることがおわかりいただけるかと思う。オフィスなどで運用しても違和感がなく、また騒音も低めに抑えられているので、業務に支障が出ることはないはずだ。


OSはUbuntu。GPUドライバやPythonも導入済み

 電源を入れると、まずはUbuntu 18.04.5 LTSの環境設定が立ち上がる。これは普通にUbuntuの標準的なセットアップなので、言語選択→キーボードレイアウト→時間帯→ユーザー登録を経て、Ubuntuのデスクトップが登場する。これで下準備は完了である。

ほかに、LivePatchやUbuntuのシングルサインオンアカウント設定なども立ち上がるが、前者は利用しなければ必要なく、後者はすでにUbuntuのアカウントを持っていればそれを利用できる(持ってない場合はアカウントを登録しておこう)

 もうこの時点でCUDA 11.1に対応したNVIDIA Driver 455.45.01がインストールされて利用可能になっており、もうやりたいことが自分で決まっているのであれば、すぐはじめることができる。Python 3.6.9も入っているので、あとはpytorchをインストールすれば良い。

じつはGeForce RTX 3090ではCUDA 11.1以前はサポートされていないようで、それもあって次に説明するailia-AI-showcaseの動作にはちょっとコツが必要になる
さすがに標準状態ではpytorchはインストールされていなかった


ailia-AI-showcaseをセットアップ

 もう少し「なにができるかを見てみたい」というユーザーのために、axの提供するailia-AI-showcaseがこのマシンの上で利用可能である。これそのものは"showcase"というように、さまざまなAI技術(というか、Network)を利用して「どんなことができるか」を示してくれるもの。標準状態ではCPUのみを利用して稼働するが、ちゃんと設定を行なうとGPUを利用してくれるようになるので、これを利用してGPUを使う事でどの程度高速化できるかをご紹介したい。

これはまだGPUを利用せずに、CPUだけで処理を行なっている段階である

 まずゴミ箱の上に"ailia-AI-showcaseパンフレット"というアイコンがあるが、これを開くと2ページ目にショーケースのダウンロードサイトのURLとパスワードが記載されている(同じ内容を印刷したマニュアルも付属品として用意されている)。ここでマニュアル(これはPDF)とLinux版のダウンロード(ここでパスワードが必要)を行なおう。

 まずはCPUのみで稼働させる方法だが、マニュアル32ページ目のコンテナの記述は無視して、ダウンロード後にローカルディレクトリで

$ tar -zxvf ailia-AI-showcase-1-20.tar.gz
$ cd ailia-AI-showcase-1-20
$ ./ailia-AI-showcase.x86_64

とすれば、画面が立ち上がる。まだCPUのみ(cuDNNは選べない)だし、カメラも選べない(これは単につないでないから)ので、ショーケースに含まれているサンプル動画を対象に推論処理を行なうだけだが、物体認識~個人識別まで10種類のアプリケーションが動くのが確認できるはずだ。

 ちなみに今回CPUのみでやってみたところ、それぞれの所要時間は

  • 物体認識:40ms前後
  • 顔認識:55ms前後
  • 物体抽出:140ms前後
  • 髪抽出:70ms前後
  • 群衆計測:330ms前後
  • 物体識別:60ms前後
  • 骨格検出:100ms前後
  • 超解像:85ms前後
  • 画像加工:114ms前後
  • 個人識別:110ms前後

という結果になった。4コア8スレッドのCPUとしては悪くない数字だと思う。なお、適当なUSBカメラをつなぐと自動で認識されるので、これを利用することも可能だ。

枠がブレてしまっている関係で見にくいが、catの可能性が33.8%とされている。所要時間は変わらず37msほど


NVIDIA GPU Cloudに登録し、ailia-AI-showcaseをGPUで使う

 ではGeForce RTX 3090を利用するための環境づくりをはじめよう。まず必要なのは「NGC」(NVIDIA GPU Cloud)への登録である。NGCとは、NVIDIAが提供するGPU対応のソフトウェアの環境をコンテナのかたちで配布するサイトである。以前はNVIDIAがクラウドサービスとして提供していたが、現在はコンテナとしてソフトウェアやフレームワークなどを提供するかたちになっている。無償だが、利用には登録が必要だ。この作業は、別のマシンで行なっても支障はない。

 NGCへの登録の手順は、やはりデスクトップにある"DeepInfinity_マニュアル200908_2-4GPU"というマニュアルに記載されている(これも同じ内容を印刷したマニュアルも付属品として用意されている)ので、これの 1)の手順に従ってNGCにアカウントを登録する。正常にアカウント登録ができると、カタログ画面になる。

これはターゲットとは別のマシンで実施した。ターゲットマシン上で行なっても差し支えはない

 次いでマニュアルの 2)のAPIキー発行を行なう。こちらはAPIキーをコピーする手間を考えると、ターゲットマシンで実施した方が賢明である。APIキーを入手したら、3)のNGCのDockerへのログインを行なう。これでNGCで提供されるコンテナを自由に利用できる準備が整った。

モザイクが掛けてある部分がAPIキー。これを手入力するのは面倒なので、コピー&ペーストが望ましい(筆者はうっかり別マシンでやってしまい、ちょっと苦労した)
賢明な方はおわかりかと思うが、筆者はAPI Keyの入ったテキストファイルをUSBメモリ経由でコピーするという手間をかける羽目になった

 次はいよいよailia-AI-showcaseをGPUで使うための環境設定である。これはailia-AI-showcaseのマニュアルの28ページ目から記載されている手順になる。具体的には

$ xhost +local:root
(次のNGC Dockerへのログインはもう完了しているので省略)
$ sudo docker pull nvcr.io/nvidia/cudagl:10.1-runtime-ubuntu18.04
$ sudo docker run --runtime=nvidia -e DISPLAY=$DISPLAY -v /tmp/.X11-unix:/tmp/.X11-unix --privileged --name ailia-container -it --rm nvcr.io/nvidia/cudagl:10.1-runtime-ubuntu18.04 /bin/bash
(これを実施すると、さきに入手したDocker Imageのコンテナが立ち上がり、このコンテナに制御が移るので、プロンプトがrootに切り替わる)
# apt update
# apt install --no-install-recommends libgtk2.0-0 libcanberra-gtk-modules fonts-noto-cjk
(GTK+と、これを利用するLibcanberraのインストール)

となる。

 次に、CUDA 11.1版のcuDNN Runtime Libraryをインストールする必要がある。具体的には

# apt install --no-install-recommends libcudnn8=8.0.5.39-1+cuda11.1

とする必要がある。これが正常に終われば、ailia-AI-showcaseでGPUを利用する環境ができあがりである。

 最後に、コンテナにもailia-AI-showcaseをインストールする。マニュアルの32ページ目にある手順である。まず、いま利用しているコンソールはコンテナに制御が移っているので、別のコンソールを立ち上げ、そこで

$ sudo docker cp ailia-AI-showcase.tar.gz ailia-container:/root/

を実施するとコンテナの/rootにailia-AI-showcase-1-20.tar.gzがコピーされる。続いてコンテナで

# tar -zxvf ailia-AI-showcase-1-20.tar.gz
# cd ailia-AI-showcase-1-20
# ./ailia-AI-showcase.x86_64

とすることで、GPUを利用可能な状態でailia-AI-showcaseが立ち上がる。コンテナに日本語環境をインストールしていないので英語表記に切り替わっているが、実用上の問題はないだろう(気になる方はマニュアル33ページの手順を実施すれば日本語表示になる)。

これは変わらずCPUでの稼働。所要時間は概ね37ms
GeForce RTX 3090対応ドライバだと所要時間14ms
CUDAでFP16を使うと18ms程度。ただこれらの数字は変動があり、おおむねcuDNN-GeForce RTと変わらない印象


Webカメラを使って、猫の物体認識に挑戦

 もちろんカメラも利用可能だ。試しにWebカメラを使い、ウチの猫を対象にResNet50ベースの物体識別を行なってみたところ

所要時間システム消費電力
CPU60ms前後154W
GeForce RTX5~7ms前後226W
GeForce FP165~7ms前後226W

という結果になった。所要時間60msというのは、毎秒16枚程度の認識が可能という意味で、リアルタイムには程遠いのだが、これがGeForce RTX 3090を使うとほぼ10倍の160枚/秒程度の処理が可能になるとしている。その分消費電力は70Wほど増えているのだが、1枚の処理あたりの消費電力を考えると

  • CPUでの処理: 16fps/154W=9.625(W/fps)
  • GPUでの処理:160fps/226W=1.413(W/fps)

となり、GeForce RTX 3090を使う方が7倍近く効率が良い計算になる。小規模な検証であればCPUでもいいかもしれないが、ある程度大規模な検証や開発、学習などをさせるのはやはりGPUを使う方が効果的だろう。

猫であることは間違いないのだが、なぜかTiger cat(ジャガーの仲間)扱いされている
さらにTiger catだと確信を持たれている模様。一応分類としてはtabby catのはずなのだが
これは稼働させているのがGPUとかCPUとかの問題ではなく、Networkの学習の問題である


AIの初期設定は2時間で完了

 今回は、ailia-AI-showcaseを立ち上げるまでの手順をご紹介したが、この先の使い方は各ユーザーの目的によって異なってくる。幸いNGCにはさまざまなコンテナが用意されているので、これらを適時選んで使うで、より深く理解したり、じっさいの運用に役立てたりできるだろう。

 ちなみに筆者の場合、マシンの電源オンから環境の準備までに要した時間は約4時間である。しかもそのうち半分は、「マニュアルを無視してCUDA 11.1版のcuDNN Runtime Libraryを使う」という事を見つけ出すのに費やしている。パソコン工房(ユニットコム)によると、マニュアルは間もなくアップデートされるとの事なので、そこがわかっていれば2時間程度でここまで準備が整うことになる。急いでAI環境を用意する必要がある方には、この時間の短さは貴重だろう。

 今回紹介した以外にも、DEEP∞では、Core i7からXeonデュアル構成まで、さまざまなモデルをラインナップしている。ailia AI showcaseなどのバンドルはシリーズ共通。また、パソコン工房(ユニットコム)では、ailia SDKを社内、組織の開発・研究で利用したい、自社製品やソフトに搭載したいといった相談にも対応しているので、速やかにAI開発を行ないたいユーザーにお勧めしたい。