生成AI on Mac(Apple silicon)
Apple siliconは機械学習の夢を見るか
画像生成たーのしー。This Waifu Does Not Exist、stylegan時代はもう昔、pixivで画像を探すぐらいの感覚でハイクオリティな画像を生成できるようになりましたね。皆さんは、CUDA環境をお使いでしょうか? こちらApple siliconユーザーより、近況をお届けします。
TL;DR
- かなりマシにはなったものの相変わらず不具合多め
- エラー自己解決する筋力が必要
- CUDAが使えるNVIDIAのVRAM大量にあるGPU積んだWindows機を用意すれば色々苦労せずに済んで楽
- デバッグは沼に沼を極めるので忙しくて時間無い人には素直にオススメできない
- このために買うことはないけど、ご家庭のMacbookがある人はちょっと触ってみると楽しいかも
嬉しいこと
- ワッパ最強ぽいこと。電気代うれしい
- Unified memoryのおかげでRAM=VRAMなこと
つらいこと
-
pytorch on mps(Apple silicon GPU Metal Shader) がバグだらけ
- 最新のnightlyではだいぶマシになったけど未だこんなバグが残ってたりする始末
- 何ならMacOSのMetal Shader自体のバグでOSの更新対応待ちみたいなのも結構ある
-
CUDAないとだめで〜すが余りにも多い
- Apple siliconに限らないけど、とにかくCUDA以外の人権が無い
-
CUDA環境に比べて速度が1/8とかで遅い
- その分ワッパはいいよ
ANE(Apple Neural Engine)どうなの?
- pytorchは使用率CPU10%:GPU90%:ANE0%みたいな感じの挙動をする, そう使われない
- その他フレームワークも同様にだいたいCPU/GPUしか使わない
- Sonomaでちょっと頑張ってGPU処理ANEで動かそうと頑張ろうとするけどバグがあってpytorchではその機能無効化されてたりする
-
なーんで?
-
APIが公開されてなくて直で使えない(主にこれ)
- CoreMLのライブラリを経由でうんとかしなきゃ駄目
-
APIが公開されてなくて直で使えない(主にこれ)
-
CoreMLで動かしてみるとどう?(apple/ml-stable-diffusion)
-
コンパイル/warmupにくっそ時間かかる
- コンパイル済みモデルでもPCごとに固有の最適化が走ってSD1.5モデルのロードに数十分掛かるのま?終わってます
-
CPU_AND_NEで走らせると、読み込みさえ終わればGPU使わずにm1だとpytorchの倍速で推論できる
- 裏で無限に回すのにはいいかもね
- もう最近LCMとかSDXL-Turboとかで早くなったしコードやモデルごとに毎回CoreMLに変換して頑張る手間に見合わないから、、私は見捨てました。ばいばい。
-
コンパイル/warmupにくっそ時間かかる
おまけ: ブラウザでlatentsデコード
- TASEDをonnxにして動かしてみたけど遅くて使い物になる感じではない。既存画像フォーマットでいいやって感じがする。
- ちょい話違うけど(モデル出力を)latentsで保存しとくのはエコでいいと思う。おすすめ。いわゆるrawフォーマットだしそういうメリットもある。