しかつきかふぇ

ちょっとした休憩時間に

openSUSE 15.5 で CUDA & PyTorch を動かしてみよう

そもそもこの記事の趣旨とは?

お久しぶりです鹿野です。・・・半年ぶり??
その割にレイアウトは変わってるし、なにかやろうとはしてるし、結局なにもできてないし。。

で、今日の記事の目的なんですけど、、、

ぶっちゃけ、Geeko Magazine に載せきれなかったはみ出し記事です!

C102 2日目(8/13 Sun) 西地区 か-09a
サークル名: 日本openSUSEユーザ会

※頑張ってこの画像から脳内変換で薄い本の表紙を想像してみてください(ぇ

Geeko Blog » Geeko Magazine Special Edition 2023夏

で、今回鹿野はいつもの巻末(?)小説、及びそれにちなんだ Stable Diffusion の記事を書いたわけですが、真面目に全部 Stable Diffusion の使い方について書こうとすると、

openSUSE への NVIDIAドライバインストール方法が膨大なページ数になってしまうんじゃ〜!!

というわけで本ブログではその部分を補う形で記事を書くことにしました。
(もちろん Geeko Magazine からは本ブログへの導線をちゃっかり書いておきましたが。。)

そもそも openSUSE って?

一応念のため(?)、最初に openSUSE について簡単に紹介しておきます。

openSUSE とは Linuxディストリビューションの1種で、いわゆる Ubuntu とか Debian とかと同じ類のものとなります。

www.opensuse.org

openSUSE にはリリース形態に2種類あり、

1. Leap: 1年に1度程度のリリース
2. Tumbleweed: ローリングリリース

常に新しいものを使っていきたいという方は Tumbleweed 、新しくなくてもいいのでそれなりに安定したものを使いたいという方は Leap を使用していただけたらと思います。

特徴はなんといっても YaST

Linux というと難しいコマンド操作を覚えなきゃというのがあるかもしれませんが、 openSUSE ではそれを画面操作からやってしまえ!という、ありがたいのか迷惑なのか(?)ややわかりにくいものがあったりするので、特にコマンド操作が苦手な方はまず触れてみるということをしてみてもいいかもしれません。(正直、私個人的には一長一短だと思ってる。便利な箇所は本当に便利だとは思いますよ(?))

PyTorchをGPUで動かすためにNVIDIAドライバをインストールするよ!

Stable Diffusion でも PyTorch でも同じことが言えますが、やはり深層学習の処理を高速に行うためには、GPUの力がどうしても必要になります。 openSUSE で行う場合ももちろん状況は同じで、 GPU の力を借りるには NVIDIA のドライバをインストールする必要が出てきます。

つまり、まずは NVIDIA のドライバーをインストールする必要があるってことですね。

現状、 openSUSE の場合、 Leap15.5 (Leap最新版)と Tumbleweed では、NVIDIAドライバーのインストール手順が異なっています。

1.Tumbleweed or Leap の 15.5 以外の場合

YaST1 click install 機能を使って、手早くワンクリックでインストールできます。

opensuse-community.org

上のリンク先ページの下の方に、 NVIDIA Graphics Card Driver と書かれた箇所が見つかるかと思います。
See supported products のリンクを辿って、対応している GPU を確認しながら、必要な GPU世代のドライバーをインストールしてください。

※通常は、 One click for Geforce 700 series and later と書かれたドライバーで良いかと思います。 10x0〜30x0 は対応。4000番台はまだのようですね・・・

Firefox でクリックすると、自動で YaSTインストーラ画面が開き、インストールが開始されます。

2.Leap 15.5 の場合

Leap 15.5 の場合はまだ上のワンクリックインストールが対応していない(23/8/6 時点)らしく、YaST から手動で NVIDIAリポジトリの追加、及びドライバーのインストールが必要となります。

・・・いやいや、 Supported versions の中に openSUSE Leap 15.5 って書かれてるじゃん!!

と思いたい気持ちは山々なのですが、、ダウンロードされる拡張子 ymp のファイルをテキストエディタで開くと、間違えなく 15.5 の項目がごっそり抜け落ちてしまってます。これではワンクリックインストールも始まりませんね(汗) ※私もふつーに騙されました

というわけで気を取り直し、 openSUSE のメニュー(画面左下の某カメレオンの顔のアイコン)をクリックして、
「設定」>「YaST を開きましょう。

YaST メニューから:
「ソフトウェア」>「ソフトウェアリポジトリ」を選択

画面左下の「追加」をクリック

「コミュニティリポジトリ」を選択して「次へ」をクリック

nVidia Graphics Drivers」を選択して「OK」をクリック

リストの名前の箇所に「nVidia Graphics Drivers」が追加されてることを確認し「OK」をクリック

これで NVIDIAドライバーのリポジトリが追加され、インストールする準備ができました。続けてインストールを行います。

YaST メニューから:
「ソフトウェア」>「ソフトウェア管理」を選択
検索タブを開き、「nvidia-driver」と入力して検索

nvidia-drivers-G06」にチェックを入れて「了解」をクリック

これで NVIDIAドライバーのインストールが始まります。
※10x0〜30x0 はこれでOKですが、必要に応じて 「nvidia-drivers-GXX」の箇所は置き換えて読んでください。

PC再起動後、端末から nvidia-smi と入力し、こんな出力が得られればドライバーのインストールは完了です。

+---------------------------------------------------------------------------------------+
| NVIDIA-SMI 535.86.05              Driver Version: 535.86.05    CUDA Version: 12.2     |
|-----------------------------------------+----------------------+----------------------+
| GPU  Name                 Persistence-M | Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp   Perf          Pwr:Usage/Cap |         Memory-Usage | GPU-Util  Compute M. |
|                                         |                      |               MIG M. |
|=========================================+======================+======================|
|   0  NVIDIA GeForce GTX 1070 Ti     Off | 00000000:01:00.0  On |                  N/A |
|  0%   51C    P0              43W / 180W |   1317MiB /  8192MiB |      3%      Default |
|                                         |                      |                  N/A |
+-----------------------------------------+----------------------+----------------------+
                                                                                         
+---------------------------------------------------------------------------------------+
| Processes:                                                                            |
|  GPU   GI   CI        PID   Type   Process name                            GPU Memory |
|        ID   ID                                                             Usage      |
|=======================================================================================|

うまくいきましたでしょうか???
openSUSE ではこんな具合に YaST からえいやとできる点は心強いですね!

続けて CUDA をインストールしま〜す

CUDA のインストールは Ubuntu などとほぼ一緒です。注意点としましては、、、

PyTorch と TensorFlow では必要な CUDA のバージョンが異なること!!!

でしょうか(汗)

研究分野では自由にカスタマイズしやすい PyTorch が好まれる印象があるのですが、最近では LLM 界隈で Hugging Face が好まれて使用されるケースが増えてきて、ますます PyTorch の勢いが増してきたようにも思えます。
今回コミケのネタ記事として書きました Stable Diffusion も通常は PyTorch を使用しているようです。どうしても TensorFlow でないと困る〜という声もありそうではありますが、今回は PyTorch を使用した方法で紹介しています。

まずは PyTorch に必要な CUDA のバージョンを調べます。

pytorch.org

対応している CUDA のバージョンは 11.711.8 のようですが、 pip3 install torch torchvision torchaudio というコマンドだけでインストールできる方は、 11.7 の方ですね。(23/8/6 時点)
なのでここでは 11.7 のインストール手順を記載していきます。が、基本はバージョンが変更されても同じ手順ですので、読み替えて読んでください。

ちなみに私は「CUDA 11.7」というキーワードで検索して、ダウンロードページを探します。(NVIDIAのサイトから探すとちょっと面倒なので。

CUDA ダウンロードページ:
developer.nvidia.com

ここで注意点というか豆知識(?)。
NVIDIAドライバーは頻繁にアップデートされるのに対し、CUDA のマイナーバージョン(ここでは 11.7 を指します)はよほどのことがない限りバージョンアップされません。

なので私はいつもこんな具合に環境構築しています。

  • NVIDIAドライバー: Linux ディストリビューションのバージョン管理(YaST (or apt)) でインストールする
  • CUDA: アップデートそのものを考慮せず、 runfile(local) からインストールする

注意点として、 runfile で CUDAをインストールする際、絶対に一緒に NVIDIA ドライバーをインストールしないこと!!
CUDAインストール時にインストール対象選択画面が表示されますが、 NVIDIAドライバーのチェックを外してから インストールを開始します。

こうすると Linuxディストリビューション管理のNVIDIAドライバーと、CUDAインストール時に強制上書きしてくる NVIDIAドライバーが競合することなく、安全に CUDA がインストールすることができるはずです。

CUDA 11.7 インストール方法:

wget https://developer.download.nvidia.com/compute/cuda/11.7.0/local_installers/cuda_11.7.0_515.43.04_linux.run
sudo sh cuda_11.7.0_515.43.04_linux.run

いつも環境構築に苦労されてる方々は、この方法で試してみてはいかがでしょうか。 (Dockerが使えればそれが一番楽かもしれませんが。。。)

CUDA がインストールできたらようやく PyTorch のインストールですね

コマンドは上に書きましたがこんな具合です。
venv でも pyenv でも poetry でも何でも構いませんが、試してみてください。

pip3 install torch torchvision torchaudio

PyTorch が無事に動けば、その環境で Stable Diffusion も動くのではないかと。。

以上〜、openSUSE + NVIDIA + PyTorch のお話でした!

最後に。改めてコミケの宣伝!

冒頭にも書きましたが、 C102 2日目(8/13 Sun) 西地区 か-09a で薄い本売ってます!
裏で連載している「エーデルシュティメ」の Geeko Magazine 用書き下ろし小説も載せていますので、ぜひお手にとって戴けたらと。

ちなみにこちらは Stable Diffusion で小説の原稿を描かせてみたもの。(Geeko Magazineにも掲載予定のカラー版)

だからどういう状況だよ!???

こちらもあわせてお楽しみに。