メインのデスクトップPCにグラフィックボードを導入しました。中古で1か月保障付きで7,980円でした。目的は、PixInsightのTerminator 3兄弟の高速化です。月夜会で導入事例が紹介されたこともあり、ぜひやってみたいと思っていました。
全てのインストールを完了して、さっそくPixInsightで使用してみると、ネットの情報通り、SXT,BXT,NXTは全て3-5倍の速度になっていました。コマンドラインで進捗がどんどん進んでいくのを見ているのは気持ちが良いです。写真表示時間も短縮したように思います。良い買い物をしたと思っています。
今回導入したのは、NVIDIAのGeforce GTX 1050Ti という古い世代のボードです。OEM供給を受けたのかNVIDA以外のメーカー製も存在しているようですが、届いた製品が元々どのメーカー製かは不明です。ラベルが剥がされていました。明細書には、「AUSUS/PLIT/msi他」と書いてありました。
実装前に写真を撮らなかったので、裏からの写真のみですいません。PCI Expressコネクタ1個と、筐体スロット2段必要です。専用電源を必要しないので大変手軽です。ディスプレイ側コネクタは、HDMIが1ポート、DVIが1ポート、ディスプレイポートが3ポート付いています。
実装後電源ONすると、問題無く認識し、自動でこちらのディスプレイ出力が優先になりました。
ネット上では導入記事も散見されますが、ここからは、備忘録として私なりにまとめておきます。
1.NVIDAのミドルウェアインストール
1つ目のCUDA(Compute Unified Device Architecture)は、NVIDIA製のGPUが最適な性能を発揮できる環境を提供するためにNVIDIAが2007年に開発した並列演算処理を可能とするコンピューティングプラットフォームだそうです。
もう一つは、cuDNN(CUDA Deep Neural Network library)です。こちらは、ドキュメントによると、
The NVIDIA CUDA Deep Neural Network library (cuDNN) is a GPU-accelerated library of primitives for deep neural networks. cuDNN provides highly tuned implementations for standard routines such as forward and backward convolution, attention, matmul, pooling, and normalization.
こちらが本命です。AIが使うNeural Networkの演算のために特別にチューンナップされた実装になっているようなことが書いてあります。要はGPU(あるいはボード上の他のLSI)が持っている積和演算回路をPCで効率良く使えるようにしたミドルウェアということなるでしょう。
積和演算というのは、マトリクス要素に重み付けしてさらにマトリクス同士を加算する処理の事です。パターン認識における画像前処理(正規化処理や、XX変換など)や Neural Networkでは多用されます。
CUDA、cuDNNはインストールした時点でボードを認識して最適な設定を自動で実施するようですのでこれらは安易にバージョンアップできません。Ver固定で良いと思います。
ダウンロード先は下記です。
CUDA
cuDNN
これらをインストールしたら、
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v(最新Ver)\bin
に
C:\Program Files\NVIDIA\CUDNN\v(最新Ver)\bin
配下全てをコピーします。
2.zlib.dllのインストール
unix由来の圧縮ツールをインストールします。下記はダウンロード先直リンク
解凍したdllは、上記 NVIDIA GPU Computing Toolkitのbinフォルダにコピーします。
3.tensorflow.dll の差し替え
そして最後にPixInsight側のミドルウェア tensorflow.dllをGPU対応のものに交換します。tensor(テンソル)は数学における多次元空間上の行列と思っておけばとりあえず問題ありません。きっと交換しないと、Terminator3兄弟による積和演算は今まで通りPCのCPUが行うことになるのでしょう。
ダウンロード先は下記RCASTROのサポートページから辿れます。下の方にあります。
PCの環境変数の追加も必要なようです。上記サポートページの最下部に書いてあるものを全て登録します。
ここでPCを再起動します。
4.PixInsightでアップデート
既にtensorflow.dll を差し替えているので、これはやらなくても良い気もするのですが念のためやりました。PixInsightを起動し、次のリポジトリを追加してアップデートをかけます。
https://www.rc-astro.com/TensorFlow/PixInsight/GPU/
updateすると、TensorFlowのビルドソースが山ほどダウンロードされます。どうも当初は、ローカル側でビルドする前提だったようです。
ちょっと手順が長いのですが、これで私の非力なデスクトップ環境では、Terminatior 3兄弟の劇的な高速化を実現できました。