生成AI on Mac(Apple silicon)
Apple siliconは機械学習の夢を見るか 2024年版
去年の記事から早くも一年が経ちました。 こちらApple siliconユーザーより、近況をお届けします。
TL;DR
- mlxが登場してtorchを捨てる選択肢を取れるようになったので、mlxに移植する筋力があればmlxで不具合少なめ最高になれます
- あと、torch自体も一年前に比べれば、やっとautocastが実装されたりバグが減ったりと改善しているので、環境全体として諸々改善していきている感触があります
- とはいえCUDAが使えるNVIDIAのVRAM大量にあるGPU積んだWindows機を用意すれば色々苦労せずに済んで楽なのは相変わらずです
- 結局詰まるポイントはどうしてもあるので、忙しくて時間無い人にはやはりオススメできない
- ご家庭のMacbookがある人はちょっと触ってみると楽しいかも
嬉しいこと
- ワッパ最強ぽいこと。電気代うれしい
- Unified memoryのおかげでRAM=VRAMなこと
つらいこと
-
pytorch on mps(Apple silicon GPU Metal Shader) がバグだらけ-> それなりに改善されました。とはいえ一部非対応APIがあったりするのはやはり非CUDAと言ったところ -
CUDAないとだめで〜すが余りにも多い(変わらず)
- Apple siliconに限らないけど、とにかくCUDA以外の人権が無い
-
CUDA環境に比べて速度が1/8とかで遅い(変わらず)
- その分ワッパはいいよ
- あとmlxに移植すれば多少速くなります
ANE(Apple Neural Engine)どうなの?
- 去年と状況あんま変わってないです。相変わらず扱いづらい
- ただ基本使われずに眠っているので、裏で小さいモデルを回す(CoreML)のにちょうど良い時もあります。スモールモデルで精度を求めず、裏で回したい時にどうぞ
mlxってどうなの?
- unified memoryとか、Apple siliconの嬉しさを最大限に活かすために作られたライブラリです。jaxのApple silicon版といえばわかりやすいでしょうか。torchよりパフォーマンス出る傾向があります
- バグが無い訳では無いけど、torchに比べて稀に〜程度だし、報告すればすぐ修正されるので精神的に辛くない
- 推論は文句なしだけど、学習についてはメモリ消費がtorchに比べてなんか多いのが気になりはします
- fp32以外がちょい精度悪かったりfp64が使えなかったりするので、精度が無いとうまく動作しないものとは相性が悪いです
その他mlxに関する個人的なお話
- mlxには最低限のsdxl実装しかありません。FreeU乗せるぐらいはできたものの、v-predictionとかKSamplerとかやり始めると追加実装ではかなり厳しい。最近はComfyの処理を頑張って移植する作業をコツコツ進めています。やっと欲しい機能が整ってきたところ。ついでに、ちょい工夫して速度を犠牲にディスクオフロードしながらfp16モデルをmax1.8GBぐらいのram消費で走らせるようにしていたりします。それでも速度まぁまぁ出るのがApple siliconのいいところ
-
ちなみに、記事ヘッダはそのmlx移植sdxlでちょい細工したサンプラーを用いるなど、去年の記事の設定に近い構成にした別モデルで生成したものです
- ※スタイリングの目的であえて粗い描写にしているので、これは精度問題とは関係ないです
- mlxなら割と学習頑張れば回りそうなので、Mac Mini買いたくなりました。ただまぁやっぱり高いよね。なんか雑所得で副業したい