Macは生成AIに向いてないらしい

NVIDIA離れしてたMac

M1 Proチップ搭載MacBook Proで生成AIに挑戦しようと思ったけど、あきらめかけてます。

なぜなら、

AppleとNvidiaの関係、終焉へ
すっかりAMD派なAppleですNvidia(エヌビディア)とApple(アップル)の長期的な関係の名残も、まもなく消え去ります。Nvidiaは今週月曜日にCUDAプラットフォームの次期アップデートのリリースノートを公開し、「CUDAアプリ...

という事実を知ってしまったからです。
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向けの並列計算プラットフォームです。

CUDA 12.6 Update 2 Release Notes
The Release Notes for the CUDA Toolkit.

生成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は入ってません。

Mac で外付けのグラフィックプロセッサを使う - Apple サポート (日本)
外付けのグラフィックプロセッサを接続して、グラフィックス性能を向上させる方法をご案内します。

「信じられないほど遅い」

しかし、ネットで調べてみると、M1 Macで画像生成AIを実行しているケースがいくつも見つかりました。
ただ、動くけどWindowsより遅いらしいです。
Stable Diffusion」のユーザーインタフェースとしてよく使われる「AUTOMATIC1111」版の「Stable Diffusion WebUI」。

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...

ここのGitHubにもMacユーザーにとって残念な文章が書いてありました。

Installation on Apple Silicon
Find the instructions here.

GitHub AUTOMATIC1111/stable-diffusion-webui

「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で処理させる方法も公開されています。

llama : Metal inference by ggerganov · Pull Request #1642 · ggerganov/llama.cpp
Add full GPU inference of LLaMA on Apple Silicon using Metal The initial idea was proposed and explained here: Add GPU s...

国内での例も見つけました。

rinna-3.6bをmlc-llmを使ってMacで動かす

でも、多少コードを追加する必要があるなど、自分には少々壁が高く感じます。
もう少し簡単にできる方法が望ましいです。

「改善方法見つけたら教えて」

テキスト生成のAUTOMATIC1111版と呼ばれる「text-generation-webui」についても、Macへの対応遅れを示唆する記述があります。

GitHub - oobabooga/text-generation-webui: A Gradio web UI for Large Language Models.
A Gradio web UI for Large Language Models. Contribute to oobabooga/text-generation-webui development by creating an acco...

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分近くかかりました。

mys/ggml_llava-v1.5-13b · Hugging Face
We’re on a journey to advance and democratize artificial intelligence through open source and open science.

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
Introducing Accelerated PyTorch Training on Mac
In collaboration with the Metal engineering team at Apple, we are excited to announce support for GPU-accelerated PyTorc...

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を動かした、というケースも出てきました。

Apple M1 MacBook Pro LLM(GGUF)がGPUを使って高速に #ChatGPT #LLM #textgenerationwebui | Digital Life Innovator
Apple M1 MacBook Proのローカルで動かしていた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」についてですが、こんな記事を見つけました。

M2 Ultraを搭載したMac Proは外部GPUのサポートがなく最大メモリが192GBに制限されているのでプロが購入しにくいことが報告される
2023年6月6日に開催されたAppleの開発者向け会議「WWDC23」の中で、Appleは独自開発SoCであるMシリーズの最新チップ「M2 Ultra」を発表しました。また、M2 Ultraを搭載したハイエンドPC「Mac Pro」も同じ...

GPUへの取り組みについては、変わっていくことを期待します。
このままだと、Windows & NVIDIAへ乗り換えをしてしまいそうです。

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