【Stable Diffusion Web UI】found at least two devices で画像生成できない時の対処方法

Blog

StableDiffusion をセットアップする際、以下のエラーが発生しました。

Expected all tensors to be on the same device, but found at least two devices, cpu and cuda:0! (when checking argument for argument index in method wrapper_CUDA__index_select)

なんかCPUとcuda:0の2つのデバイスがあんじゃん!どっちよ!!って意味かな

異なるGPUを複数搭載してる場合や、グラフィックボードを乗っけているのにCPUの内臓グラフィックが有効になっている場合に発生しそうです。

このエラーが発生したときに、どうやって指定してあげればいいのかわからなくて調べまわったので、対処方法を書いておきます。

前提

インストールしたもの

GitHub - AUTOMATIC1111/stable-diffusion-webui: Stable Diffusion web UI
Stable Diffusion web UI. Contribute to AUTOMATIC1111/stable-diffusion-webui development by creating an account on GitHub...

git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui.git

導入方法

以下の記事を参考にインストールを進めました。

としあきdiffusion Wiki*

エラー発生

起動まではできたものの、いざ呪文を打ち込んでtext2imgで画像生成じゃ!ってタイミングでエラーですよ。
(´・ω・`)ショボーン

Expected all tensors to be on the same device, but found at least two devices, cpu and cuda:0! (when checking argument for argument index in method wrapper_CUDA__index_select)

対処方法

上記の「前提」の通りにインストールしたことを前提に、
クローンしたローカルリポジトリの配下「stable-diffusion-webui」ディレクトリの中にある、
「launchi.py」を編集します。

このlaunch.pyをテキストエディタで編集します。
私はVisualStudioCodeを使いました。

バージョンによって、ここの記載内容は変わっていると思いますが、
import 文など、別モジュールを読み込んだ後の行に以下を追記します。

CUDA_VISIBLE_DEVICES=0

0を代入しているのは、私の環境では0番目が使いたいGPUだったためです。
ここで代入する数値は、自身の環境に応じて変更して下さい。

なお、CPUを使用して画像生成することは、この方法ではできませんので、注意してください。

コメント

タイトルとURLをコピーしました