
AI日和-#14 Flux.1-GGUFをComfyUI M2 Macで動かしてみる
Flux.1随分と話題なので、ずっとトライしているけれどグラボのないMacは苦戦続き。何か良い手はないかと探していたらこんなYouTube発見。
何でもFlux.1-schnellベースにdevを足した感じで軽いけど、綺麗な画像が出るってことで、なかなかM2-Macでは生成スピードも上がらずなので、藁にもすがる感じでトライすることにしました。
先ずはHugging Faceから色々ダウンロードです。
YouTubeの中では色々あるけど、今日はこれにしますってことで
"flux1-dev-Q4_0.gguf"をダウンロードしてUNETのフォルダーに格納。

それ以外はclip_1.safetensorsとかae.safetensorsは既にインストールしてあるのであとはワークフローをダウンロードします。
YouTubeを見ているとGGUFを動かすためにターミナルで色々やっていますが、よくわからないので、とりあえずStability Matrixを開いて何が足りないか聞いてみることにしました。そうするとInstall Missing Custom Nodeをクリックすると


このCustom Nodeが足りないらしいので、多分これのことだろうとInstall。
これが最初のノードになるみたいです。多分このUnet Loader(GGUF)ってやつなんだと思います。そこにさっきダウンロードしたファイルが入っています。あとはLoad VAEとDualClipLoaderの内容を確認してGo!

かなり早いらしいので、期待していましたがKSamplerで凄い長いエラーが発生して止まっちゃいました。

読んでいくのも面倒なほどのエラーメッセージなので、そのままChatGPTに入れてエラーの内容と解決方法を聞くことにしました。回答はこんな感じ。
*****************************************************************************
### 原因
このエラーは、ComfyUIで使用されているPyTorchの特定の演算子(`aten::__rshift__.Tensor`)が、MPS(Metal Performance Shaders)デバイスでサポートされていないために発生しています。これは、Appleシリコン(M1/M2チップ)などのMacデバイスでPyTorchを使用している場合に見られる一般的な問題です。
### 解決策
#### 1. **環境変数の設定**
エラーメッセージに記載されているように、以下の環境変数を設定して、MPSデバイスでサポートされていない演算子が使用される場合に、CPUフォールバックを使用することができます。
```bash
export PYTORCH_ENABLE_MPS_FALLBACK=1
```
これにより、該当の演算子がMPSで実行できない場合は、CPUにフォールバックして実行されます。ただし、CPUフォールバックはパフォーマンスが低下する可能性があります。
#### 2. **PyTorchの更新**
PyTorchは継続的にアップデートされており、新しいバージョンではMPSのサポートが改善されている場合があります。PyTorchを最新バージョンに更新することを検討してください。
```bash
pip install --upgrade torch torchvision torchaudio
```
#### 3. **別のデバイスで実行**
MPSでの実行に問題がある場合は、CUDA対応のGPUを搭載したデバイスや、CPUでの実行に切り替えることも考えられます。
#### 4. **PyTorchのissueトラッカーをチェック**
エラーメッセージで提案されているPyTorchのissueページ(https://github.com/pytorch/pytorch/issues/77764)を確認し、問題が解決されているか、他のユーザーが提供する回避策を探してみることも有効です。
### 信頼度評価
この解決策の信頼度は高いです。`PYTORCH_ENABLE_MPS_FALLBACK=1`は公式な回避策であり、またPyTorchの更新によってMPSのサポートが向上する可能性もあるため、まずはこれらの方法を試してみることをお勧めします。
*****************************************************************************
どうもやっぱりMプロセッサーのGPUの問題みたいですね。とりあえずPyTrochをアップデートして、MPSを動かせるように
export PYTORCH_ENABLE_MPS_FALLBACK=1
を実施してみましたが、うまくいったのか不透明です。これで動かしてみましたが、やっぱり上手くいかないので、色々考えてCPUだけで動かしてみることにしました。
設定画面からCPUだけで生成するように変えてみました。

これで要約画像が生成できました。しかしNvidiaのグラボが搭載されたマシンだと1分くらいで生成するらしいですが、KSamplerのStep数をデフォルトの4回でやりましたが10分くらいかかってしまいました。

しかも生成された画像はボケボケでイマイチでした。

まあ、だいぶ楽しめたので良しとします。やっぱりグラボが必要なのかとしみじみ思う今日この頃です。
次はGoogle Colabで試してみようと思います。
最後まで読んでくれてありがとうございます。スキやコメントいただけると嬉しいです。そして、下記からコーヒーでもご馳走して貰えるとさらに嬉しいです。
2024/8/23