見出し画像

Pytorchのインストールコマンドについて:Dockerfileを作成する際に無駄な手間をかけていたことに気づいた話・・・・・

今回の内容については、GJLさんの記事を見直すとすでに記載されている内容ですが、私の知識レベルではスルーしていたものです。
おそらく常識レベルの内容だったようで「さらっと」(表題にも)書かれていました。。。。。。。

ということで、このあたりの知識に詳しくないけど、画像生成のためにDockerイメージとか作ってみたい人は参考までに見て頂ければと思います。

<自作のDockerイメージを作成していた流れみたいなもの>

Paperspaceの自作Dockerイメージを作成する際に、それまで使用していた他の方が作成したDockerイメージのコマンドを参考にGPTに投げつつ構築していました。
Dockerfileでは、参考にしたものをほぼ変えず、以下のような感じでpytorch+cuda+cuDNNをインストールしていました。

①cuda12.4をインストール
②cuDNNをインストール
③pytorchを入れる

やってみると分かりまが、①②③全てで時間がかかります。

この後にpythonパッケージをインストールしたりするのですが、バージョンの間違いとかあるとそこでDockerイメージが中断してやり直しということになったりします。

さて、今回Dockerイメージの修正をするにあたってGPT壁打ちをしていたところ、pytorch+cuda+cuDNNのインストールについて無駄な手間をかけていたことが判明しました。

これまでもDockerイメージを作成する前にコマンドについてGPTに聞いていましたが、そういった事については言及してもらえず。。。。。

<Pytorchのインストールコマンド例(③で使用しているもの)>

pip install torch==2.4.1+cu124 torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu124

さて、今回分かったことは、上のようにpip installでpytorchをインストールするコマンドがあり、これを③の段階で使用していました。

調べてみると、どうもこのコマンドでcu124とそれにともなってcuDNNがインストールされるようです。
これは最初に紹介しているリンクの表題の「内装」のことです。。。。。。

ということで①②の作業は無駄に・・・・・・

Dockerイメージを作成する際に①②に結構時間がかかったりしていましたので、これを知った時は徒労感が出てしまいました。
画像生成で言うと、無駄にステップ数をかけて生成していた感じでしょうか。Fluxで言うと、schnellで30ステップで生成してた感じです。
蛇足になりますが、参考にしていたcuDNNが8.9とかでバージョンも古いというおまけつきでした。

<cuDNNのバージョンについて>

さて、Pytorchのインストールコマンドで、cuDNNも一緒にダウンロードされるのですが、cuDNNはバージョンがいくつかあり、どれがインストールされるのかはいまいちよく分かりませんでした。コマンドに書いてないですしね。
GPTに聞いても「自分で試して確認してね」のパターンの返答。

とりあえず試した感じだと、cu124とした場合はcuDNNは9.1.0がインストールされるようです。pytorch2.5.0も同じでした。

最新のcuDNNのバージョンは9.5.0なので若干型落ちになります。
GJLさんの記事は、これを手動でアップグレードするという内容の話でした。

ということで、cuDNNが9.1.0で良いなら、①②の作業はいらなくて、③のみで良いということになります。時間としては1/3ぐらいになります。

cuDNNが9.5.0なら、③のあとに②で9.5.0を入れるという方法が、良いようです(GPT曰く)。

アップグレードの効果は不明ですが、新しいのにはロマンがありますので、個人的には9.5.0を選択したいところです。

そして、cuDNNの9.5.0を使用したDockerイメージのビルドはトライしましたが、GPTに最初に依頼すると違うコマンドが出てエラーになりました。。。。
具体的には、偽のダウンロードリンクを作成してくれました。ハルシネーションというやつでしょうか。

実際は、上のページから、画像のようなパターンの選択をして、ダウンロードのリンクを取得してなんとかインストールにこぎつきました。
これはDocker fileを作成する時の最初の設定部にあったのを参考に選択した感じです。

しかし、この色々と選ぶやつはどれを選ぶのが良いかよくわからないので苦痛ですね。

<結論>

今回のことで、Dockerイメージの作成の過程で無駄な作業をしていること気が付いたので、dockerイメージの容量の減少と、作成の時間が短縮できるようになりました。
今後Dockerイメージの修正をする予定です。




この記事が気に入ったらサポートをしてみませんか?