前回作ったWSL2&Docker&Jupyter環境にCUDAを使えるようにしていきます。

かなりのんびりした趣味の記事ですので、厳密な定義や技術的な話が欲しい方はqiitaで検索してください爆笑

CUDAというのは

CUDA(Compute Unified Device Architecture:クーダ)とは、NVIDIAが開発・提供している、GPU向けの汎用並列コンピューティングプラットフォーム(並列コンピューティングアーキテクチャ)およびプログラミングモデルである。
出典: フリー百科事典『ウィキペディア(Wikipedia)』

難しいですね笑。

ほとんどの方は普段「GPU」を意識して活用していないかと思います凝視
PCゲームをしてたり動画を見ていたら勝手に動いて、それらをしてないときはほぼ動いてません。

CUDAを使えば、意図的に「GPU」を特定の処理に利用できます。
なぜそんなことをするか、記事ネタがてら、もう少し細かい話をしていきましょう昇天

 

GPGPU

もともとグラフィックボードなどに搭載されている「GPU(Graphics Processing Unit)」は読んで字のごとく、グラフィック処理を担当するためのアーキでした。

グラフィックの描画処理というのは、非常に単純ですが、量の多い仕事だと思ってください。

大量の書類にハンコを押すイメージですネガティブ


ゲームのグラフィックを良くしようとすればするほど、大量の押印が必要になります。

「CPU」さんがこの処理に手をつけてしまうと、ハンコ押しが大変すぎて、他の仕事ができなくなってしまいます。

「CPU」さんには他にも大事な仕事が沢山ありますから、その仕事が滞らないように「GPU」さんにお任せするわけですね昇天

では「GPU」さんはなぜ大量書類のハンコ押しが得意かというと・・・。

人海戦術です爆笑

「GPU」さんは大量の人手(コア)を使って一気に同じ仕事をすることに長けています。

昨今ではこの「GPU」さんの猛烈なハンコ能力をほかのことにも使ってみようということで「GPGPU(General-purpose computing on graphics processing units)」という使い方が増えています。

その活用方法の一つが、次回からやろうとしている機械学習ですね。

 

結局CUDAさんは何?

「CUDA」さんは裏で「GPU」さんとコンタクトをとり、我々がやりたい仕事を「GPU」さんに投げてくれます。

要するに「GPU」さんとの橋渡し役というわけですね。

 

Before

さっそくやっていきましょう・・・の前に。
変な日本語ですが、CUDAが「ちゃんと使えないこと」を確認しておきます。

残念・・・(そもそもpytorchすら入ってなかったです爆笑

使えるようになると、「お疲れ様でした。」で返ってくるようになります。
今回の目標はそこですね物申す

 

CUDA入れてみよう

今回は

  1. GPUを...
  2. Windows11上で動かしている...
  3. WSL2(Ubuntu20.04)上で動かしている...
  4. Dockerコンテナ上で動かしている..
  5. Jupyter-labで使わせたい

なので、この1 ~ 5の道筋を通していきます。

 

GPU ~ WSL2

まずは1 ~ 3を通しましょう。

NVIDIAの公式ドキュメントに詳しいこと書いてますので、とくに手順については触れません。

 

この手順でインストールするのは大きく二つ

  • NVIDIAのGPUドライバ(on OS)
  • CUDA(on WSL2)

※公式手順にはWSL2をインストールする手順も含んでいます。

 

登場人物が多いとややこしい・・・魂が抜ける
なんでこんな複雑怪奇な環境にしてるかというと

はい、すいません。面白いからですよだれ

 

WSL2 ~ Jupyter-lab

次にコンテナ上で扱えるようにします。

インストールするのは、

  • nvidia-container-toolkit(on WSL2)

これでDockerコンテナでGPUを使う準備はできました。

 

次に、GPUを扱えるDockerイメージが必要になります。

Dockerについての詳しい説明は省きますが、ゲーム機のエミュレータのようなものだと思ってください昇天
PCの中でゲームの動作(今回はJupyter-labの実行環境)を再現することができます。
幸い公式のDockerイメージがあるので(ベースがubuntu20.04)これを使ってJupyter-lab環境を作ります。


docker-composeに記載するGPUの設定は公式の以下をご参照ください。

 

一応ですが、自分でやってみた「Dockerfile」及び「docker-compose.yml」は以下においてます。

皆さんも是非やってみてくださいませ昇天

 

After

さて、使えるようになりましたかね?驚き

やりましたね!ニコニコ

 

・・・ん?驚き

 

(つづく)