NVIDIA離れしてたMac
M1 Proチップ搭載MacBook Proで生成AIに挑戦しようと思ったけど、あきらめかけてます。
なぜなら、
という事実を知ってしまったからです。
NVIDIAのリリースにはこんなことが書いてありました。
Support for the macOS host client of CUDA-GDB is deprecated. It will be dropped in an upcoming release.
NVIDIA CUDA Toolkit Release Notes
Googleに翻訳してもらうと「CUDA-GDB の macOS ホスト クライアントのサポートは非推奨になりました。今後のリリースでは削除される予定です。」と寂しい言葉。
CUDA(Compute Unified Device Architecture)は、NVIDIAが開発・提供しているGPU向けの並列計算プラットフォームです。
生成AI、特にテキスト生成のLLM(大規模言語モデル)を動かそうとすると、「CUDA」に関するエラーに何度も出くわしました。
現状、生成AIにとって最適な環境は、NVIDIAのGPUハードとCUDAのソフトの組み合わせのようです。
外付けGPUからも距離を置いていた
でもあきらめきれなくて、外付けGPUを付けたらもしや、と期待しましたがそんなに甘くはありませんでした。
Appleのサポートサイトで「Mac で外付けのグラフィックプロセッサを使う」というページを見つけ、少し喜んだものの・・・
Intel プロセッサと Thunderbolt 3 ポート1 を搭載した Mac で macOS High Sierra 10.13.4 以降を実行していれば、eGPU を使えます。Mac のソフトウェアをアップデートする方法については、こちらの記事を参照してください。
support.apple.com
「Intelプロセッサ」と限定していますし、推奨GPUにNVIDIAは入ってません。
「信じられないほど遅い」
しかし、ネットで調べてみると、M1 Macで画像生成AIを実行しているケースがいくつも見つかりました。
ただ、動くけどWindowsより遅いらしいです。
「Stable Diffusion」のユーザーインタフェースとしてよく使われる「AUTOMATIC1111」版の「Stable Diffusion WebUI」。
ここのGitHubにもMacユーザーにとって残念な文章が書いてありました。
Installation on Apple Silicon
GitHub AUTOMATIC1111/stable-diffusion-webui
Find the instructions here.
「here」の先にはこう書いてあります。
Currently most functionality in the web UI works correctly on macOS, with the most notable exceptions being CLIP interrogator and training. Although training does seem to work, it is incredibly slow and consumes an excessive amount of memory. CLIP interrogator can be used but it doesn’t work correctly with the GPU acceleration macOS uses so the default configuration will run it entirely via CPU (which is slow).
GitHub AUTOMATIC1111/stable-diffusion-webuiPublic
日本語に訳すとこうなります。
信じられないほど遅いそうです。
現在、Web UI のほとんどの機能は macOS 上で正しく動作しますが、最も注目すべき例外は CLIP インタロゲータとトレーニングです。トレーニングは機能しているように見えますが、信じられないほど遅く、大量のメモリを消費します。CLIP インタロゲータは使用できますが、macOS が使用する GPU アクセラレーションでは正しく動作しないため、デフォルト設定では完全に CPU 経由で実行されます (これは遅いです)。
設定を変えることで「GPU」を使えるような記述もあるのですが、Pythonの経験が浅い自分には壁が高く感じ、やろうという意欲が湧きません。
一応GPU利用例も出てきている
テキスト生成のLLM(大規模言語モデル)も同様に、Windowsと比べるとMacとの親和性には欠けています。
ただ画像生成AIもそうですが、GPUを使えないわけではないようです。
Appleが提供しているグラフィックス API の「Metal」を使えば、GPUを使った推論が可能になるとのこと。
例えば、Metaが開発したLLMの「Llama」をGPUで処理させる方法も公開されています。
国内での例も見つけました。
でも、多少コードを追加する必要があるなど、自分には少々壁が高く感じます。
もう少し簡単にできる方法が望ましいです。
「改善方法見つけたら教えて」
テキスト生成のAUTOMATIC1111版と呼ばれる「text-generation-webui」についても、Macへの対応遅れを示唆する記述があります。
M1のMacでも動かせたのですが、GPUが働きません。
The installer has been tested mostly on NVIDIA GPUs. If you can find a way to improve it for your AMD/Intel Arc/Mac Metal GPU, you are highly encouraged to submit a PR to this repository.
oobabooga/text-generation-webui
訳すと
インストーラーは主に NVIDIA GPU でテストされています。 AMD/Intel Arc/Mac Metal GPU 向けに改善する方法を見つけた場合は、このリポジトリに PR を送信することを強くお勧めします。
と、これからに期待のようです。
text-generation-webuiをMacで動かし、アクティビティモニタでGPUの状況を見ると、動いてないことがはっきりとわかります。
画像認識もできるLLM「LLava1.5」の130億パラメータバージョン(GGUF形式)を動かしたところ、回答を得るまでに10分近くかかりました。
PyTorch2.xに期待
とはいえ、状況が変わることも期待できそうです。
上記の「Metal」の利用の広がりもその1つ。
その後押しをしたのが機械学習フレームワーク「PyTorch」の「METAL ACCELERATION」のようです。
Until now, PyTorch training on Mac only leveraged the CPU, but with the upcoming PyTorch v1.12 release, developers and researchers can take advantage of Apple silicon GPUs for significantly faster model training.
(これまで、Mac での PyTorch トレーニングは CPU のみを利用していましたが、今後の PyTorch v1.12 リリースでは、開発者と研究者は Apple シリコン GPU を利用して、モデル トレーニングを大幅に高速化できるようになります。)
May 18, 2022
Introducing Accelerated PyTorch Training on Mac
2023年3月に「PyTorch2.0」が正式に発表となり、MacのGPUを使った高速化(ベータリリース)が提供されました。
まだベータのままなのようですが、PyTorchのトップページにはMacへのインストール方法が載っています。
# MPS acceleration is available on MacOS 12.3+
pip3 install torch torchvision torchaudio
MacのGPUの利用範囲が、徐々に生成AI寄りになってきている感じがします。
LLMをMac GPUで動かしたケースも
GPUでtext-generation-webuiを動かした、というケースも出てきました。
下記のように「Miniforge」のインストールなどが加わっています。
Miniforgeは、Pythonと関連ソフトウェアの管理機能を提供するパッケージソフトだそうです。
調べたところ、機械学習用の環境構築によく使われています。
wget https://github.com/conda-forge/miniforge/releases/latest/download/Miniforge3-MacOSX-arm64.sh
bash Miniforge3-MacOSX-arm64.sh
ただ、text-generation-webuiの元のGitHubを見てもMiniforgeを使ったインストールについて触れていません。
Miniforgeを使ったことがない自分には、まだ手を出しにくいです。
MacBook Proでなく(かなり)上位の「Mac Pro」についてですが、こんな記事を見つけました。
GPUへの取り組みについては、変わっていくことを期待します。
このままだと、Windows & NVIDIAへ乗り換えをしてしまいそうです。