GPUSOROBANさんを使ってみた(1)

この記事では、
GPUSOROBAN で GPU が使える PyTorch 環境を最短で構築するまでの実践ログ
を書いています。

知り合いがYoutubeに投稿していたり、自分でもやってみたいかな、と思うこともあって、例えば映り込んだ人の顔にモザイク入れたりとか、すでにAIを利用したサービスやアプリなんかもきっとあるはずなのですが、ある程度カスタマイズしたり、いろいろ試したりもしたいじゃないですか。

自分の手元の環境は使えそうなGPU環境がない、ということで、一番安価なプランだと従量制で時間50円というGPUSORABANさんを利用することにしてみました。

いつでも止められるので仕様やら何やらはほぼ調べず…笑<アホや

最初dockerを使えるプランを選んだのです。なんだか響きだけで<やっぱりアホ
で、適当に試していたのですが肝心のGPUが使えない…
無論dockerだからというワケではありません。私がダメな奴だったというだけで。

ただその時は原因の切り分けも少ししたくて、s16-1-a-standard-ubs22-i というタイプを選び直しました。スペック・プリインストール情報はこちらを参照ください。

1.まず何にハマったか(TorchとCUDAのバージョン問題)
プログラマーでもないので(言い訳)インストールはpipだろぅ、となんでもpipでインストールしていたわけですが、関連モジュールにtorch関連があると、勝手にバージョンアップしてしまうワケです。
で、バージョンアップしないようにインストール進めて、必要なモジュールを1個ずつずつインストールしていったワケですが…torchのバージョンがアプリが要求するバージョンより古い、とかでGPUを使えない、アプリのバージョンを落としても不足があって使えない、といった感じでやはりGPUを使えない時間が過ぎていき…。
GPUSORABANさんの記事を読み返しました。

ゼロから分かる!PyTorchのGPU設定と実践レシピ

”利用しようとしているPyTorchのバージョンが、どのバージョンのCUDAに対応しているかを事前に確認します。”

ま、まあ、そうですよね。普通のことですよね汗
ということでOSとバージョンに合わせたコマンドの記載がある公式ページから環境にあったコマンドを探して実行してみました。

2.で、実際なにやったか

・GPUSORABANさんのインスタンス作成方法はおそらく勘でも出来るはず…

・Miniconda のインストール
あれ、wgetもインストールしたかも…

$ wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
$ bash Miniconda3-latest-Linux-x86_64.sh

・GPU を検証するための環境を作る
condaで仮想?環境みたいなものを作って他に影響を与えないように。
(Denoiserを試したかったので名前はdenoiserenvにしてみました。)

で、そのまま勢いでcondaを使用しようとすると怒られるので認証?コマンドを

$ conda tos accept –override-channels –channel https://repo.anaconda.com/pkgs/main
$ conda tos accept –override-channels –channel https://repo.anaconda.com/pkgs/r

・仮想環境の作成と仮想環境内へ入る

$ conda create -n denoiserenv python=3.10 -y
$ conda activate denoiserenv

pythonも古めなのは前段に書いた色々失敗した結果です笑

・PyTorch + CUDA 11.7 のインストール
公式に記載があったものをそのまま実行しました。

$ conda install pytorch==2.0.1 torchvision==0.15.2 torchaudio==2.0.2 pytorch-cuda=11.7 -c pytorch -c nvidia

正直このインスタンスではこれ一択なのでは…いや、結果私にはこれ一択ということで。

・MKLの依存回避
こちらも理由を聞かれても困るのですが、RVCだかの環境構築を試していた時に必要で、その他のアプリ導入時も必要だったので、私の環境では必須なのかも。

$ conda install "mkl<2024.1" "intel-openmp<2024.1"

・動作確認

python - << 'EOF'
import torch

print("Torch version :", torch.__version__)
print("CUDA runtime  :", torch.version.cuda)
print("CUDA available:", torch.cuda.is_available())
if torch.cuda.is_available():
    print("GPU:", torch.cuda.get_device_name(0))
EOF

で、
CUDA available: True
とか
GPU: NVIDIA RTX A4000
が表示されて入れば大丈夫、なはず。

共通の環境構築はここまで。仮想環境の入れ物の名前(ここではdenoiserenv)を変えてやればこの流れで環境構築OKです。

”OKです”とか書くとプロの皆さんには鼻で笑われそうですが。。。最終的には
「Miniconda + PyTorch 2.0.1 + CUDA 11.7 を公式手順で入れる」
これだけで GPU が安定して使えるようになりました。

Denoiserの設定や試したことなどは次の機会に。

コメント

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です