2021年12月12日日曜日

GPU

仕事の都合上で触ることはあれど、それにあんまりディープに関わることは無いかな〜と思っていたものの、やはり画像を扱う「ブツ」を取り扱っている以上、そこから逃げているわけにもいかず…。

ということで、仕事で扱っているメーカーが、画像認識用のリファレンスデザインをできれば販売したいと考えているとのことで、そのリファレンスデザイン(以下単に「アプリ」)のセットアップを行う必要が出ました。

いっちばん最初はもう2年くらい前で、その時は、メーカー自身がセットアップしたラップトップPC(正確には、ゲーミングノートPC、と言うカテゴリ)を使っていたのだけども、「アプリの次世代ができてるんで、そっちでセットアップしてデモに使ってね」、とメーカーは言う…。


ラップトップPC

 ubuntuにCUDAその他認識で使用するツール一式、何分2年以上前のセットアップなので、ubuntu自体xenialだしcudaも8なので、そこからupdate必要、ということで、まずubuntuはbionicにupgradeで問題なく終わった!と思って再起動してその先に進めていると、何かのはずみにoopsを起こす。
おや???と思っているうちに立ち上がらなくなってしまいました。

このoops、単にプロセスがクラッシュしている旨のメッセージでしかなく、再起動しているうちに、起動できるときとできないときに遭遇することに。
起動できればoops起こさない限り使えてるし、これって、なんかのはずみにsleep状態から抜け出せなくなってんでない?と思ったのが問題解決から遠のく運の尽き。

3週間ほど、もしかしてストレージ(SSD)が壊れた?壊れてない?と、M.2 SSDを着脱、2.5"HDDいれてみたりメモリ全部抜き差しするなどの試行錯誤。

そして、最後の最後に突き止めたのは、8G×2 SODIMMのうち一枚がお亡くなり(なりかけている)、ということ。

メモリって、2枚組ではいっていると、あんまり、一枚ずつさしてみてどうか?って、見ないって事無いですか?

そいつを外してようやく進捗…。
なお、このラップトップにはGTX1080が搭載されています。

CUDA

 現時点で最新のCUDAは11.5だと思いますが、このアプリが要求するのは10.2。これは逆に、他に、そのソフトウエアセットアップを検討しているプラットホームの観点ではbetterな話だと思ったので、10.2インストールに勤しむことに。
しかし、このアプリでは、微妙に古いnvidia-driverが推奨となっており、CUDA vs. nvidia-driverのセットアップに悩むことに。推奨バージョンのnvidia-driverはパッケージとして存在しておらず。もしかして、CUDAはソースからbuildするの???

デスクトップPC

 デモセットアップって、常に私が使えるわけではないので、何か聞かれたときに、同一のアプリをインストールしている類似環境が存在していないと質問に答えられなくなってしまう。
そのため、社内で余剰になっていたデスクトップPCを一台譲り受ける。
当然、そんな業務用のデスクトップにはチップセット内蔵GPUが使われていて、nVidiaのGPUなんて搭載されてない。
ということで、GPU調達をすることになるわけですが、当然「お高い」ので、可能な限りローコスト、とにかく動かせること、レベルをターゲットにして、まずGT1030で、何が起こるかお試しすることに。

GT1030

 こいつはCUDAサポートのリストには無い、ということは知っててあえて試した状況。GDDRメモリバス幅が狭いので、そもそもパフォーマンスは期待できない、とは思ってました。
で。
このボード調達前に、デスクトップにはbionicのセットアップは終わらせてあったので、そこにこのボードを追加、CUDAインストールから試すんですが、この時点で、「あること」を知らずにおり、アプリ推奨に近い版のnvidia-driverインストール後再起動すると、GUIが立ち上がらない、persistencedが動作しない、結果としてCUDAを利用できない、スケジュールも厳しい、という焦りに負けて、3日でgive up、CUDAサポートリストにあるGPUを調達することに。

GTX1650

 土曜に秋葉原に出かけ、GTX1050tiとGTX1650、どちらを選ぶか、1050tiの方が安いなー、ラップトップは1080だから同じ世代だしなー、ではあったんですが、設計古いことから消費電力とコア数で、GTX1650を選定。
「あること」をちゃんとわかってなかったのだけど、週明けにnvidia-driverの比較的新しい版をインストールした状態で、GT1030を試していた時点で残してあったCUDA10.2の組み合わせで、今から思えば不幸にも動いてしまったため、その先に進めることに。

いよいよアプリインストール

 このアプリは2つのアプリで構成されていて、一つ目のアプリが動作した上で、二つ目のアプリをセットアップすることができる。
一つ目のアプリでは、GTX1650で動いてしまった関係で、ラップトップに戻ってセットアップ…すると、動かねー。
ラップトップとデスクトップのセットアップの違いは、GPUの違いに基づくnvidia-driverの違い。つまり、そこで何か間違えたことをやってる、ということ…。

「あること」

 それって、GPUガンガン回すゲームとかAIとかやってる人にはおそらく常識、「nouveauは使わない」、です…。それでラップトップを設定し直し、二つのアプリ、両方とも、デモ可能な状態にできました、まだ調整は必要だけど。
デスクトップの方は、CUDAを使用する他の利用目的もあることと、パッケージをマニュアルで足したり消したり様々試したため、再インストールの予定です。


行き先のなくなったGT1030は…

 過剰になった部品を経費で落とすわけにはいかないこともあり、中古にだすのも気が引けて、引き取ることにしました。
で。以上、確立したインストール手法をもとに今現在、E450でCUDAサンプルをbuild中。動かせるじゃーん、ということで、しかし一方、元々CPUが非力すぎるため恩恵もあまりなく、もしかすると、AI関係のスタディにもっとも寄与してくれる存在になるかもしれません。
Jetson nano、結構安いんで一つ買っても良いかなーとは思ってたんですが、GT1030の方がGPU世代が新しいこともあり(nanoは5.3、1030は6.1)、まー、それもありかな〜、と言うところです。

…、それにしてもGPU高い。ラップトップの価格を考えると、グラボとしてGPU調達するより、ゲーミングノートを買った方が多分効率よいよね…。

0 件のコメント:

コメントを投稿