最近、LLMの実験やベンチマークを進める中で、Mac環境でのGPU利用について少しハマったポイントがあったので、自分なりに整理してみました。
私は実験やベンチマークにDockerをよく使用しています。Dockerは、隔離された環境を構築でき、メインシステムに一時的な依存関係をインストールする必要がないため非常に便利です。作業終了後は、すべてのライブラリとともにコンテナを簡単に削除できます。しかし、LLMやリソースを大量に消費するタスクの場合、macOS上のDockerはLinuxの仮想マシン上で動作するため、GPU(Metal / MPS)に十分にアクセスできません。その結果、計算効率が下がるだけでなく、コンテナのビルドや依存関係の準備にも時間がかかることがあります。
一方で、Apple Silicon(Mシリーズ)は、Unified MemoryとMetalのサポートにより、MLタスクに適したアーキテクチャとなっています。このような場合、Miniforgeは有効な代替手段となります。
1. コンセプト:仮想化なしの環境分離
Miniforgeは、仮想マシンを使用せずに分離されたPython環境を作成できる環境マネージャーです。
Dockerとは異なり:
- Linuxの仮想化レイヤーが存在しない
- macOS上でネイティブに実行される
- PyTorchなどのライブラリがMPS経由でMetalを利用できる
これにより、GPUを直接活用することが可能になります。
2. Miniforgeのインストール
Miniforge(Apple Silicon向けのarm64版)をダウンロードしてインストールし、以下を実行します:
~/miniforge3/bin/conda init zshターミナルを再起動すると、プロンプトの先頭に (base) が表示されます。これで準備完了です。
現在使用しているシェルが分からない場合:
echo $SHELL/bin/zsh の場合は zsh、/bin/bash の場合は bash を使用します。
3. 環境の作成
新しい環境を作成:
conda create -n env_name python=3.10環境を有効化:
conda activate env_name4. GPU(Metal / MPS)の確認
以下でGPUの利用可否を確認できます:
python -c "import torch; print('GPU (Metal) active:', torch.backends.mps.is_available())"True が表示されれば、GPUが利用可能です。
※ MPSバックエンドは現時点ですべての演算をサポートしているわけではなく、一部はCPUにフォールバックする場合があります。
5. 環境の削除
環境を削除する場合:
conda deactivate
conda remove -n env_name --all
キャッシュの削除:
conda clean --allまとめ
Miniforgeは、macOSにおけるML開発に適したツールです:
- 仮想化なしでの環境分離
- GPU(Metal / MPS)への直接アクセス
- メインシステムを汚さない
Apple Silicon環境での実験、ベンチマーク、AI開発において、有力な選択肢の一つだと考えています。
💬 コメント
Dockerは今でも便利ですが、用途によってはこういう使い分けもありだなと思いました。