【入門】ローカルで利用するAI画像生成ソフトウェア管理のための基礎知識①【Windows】
想定する読者
Stable Diffusion 等のAIソフトウェアをローカルにインストールして使い始めたが、Python の管理や仕組みを理解したいと考えている人
非 Python 開発者、非技術者等の AI ソフトウェア利用中心の人
はじめに
AI画像生成システムをローカルで構築する上で知っておくべき技術的な内容の紹介をします。ただし、Python 開発者や AI 技術向けではなく、「AI ソフトウェアを利用する側」向けの内容になります。
一般的なPCソフトウェアと異なり、変化の速いAI画像生成ソフトウェアはバグが多く、利用するモジュールや環境依存が強いため、ワンクリックインストールが上手くいかなかったり、ある日突然動作しなくなる事も日常茶飯事です。そのような場合は、自分で復旧させる必要があります。本格的に運用するには、避けて通れない道だと思います。
この記事では、AIソフトウェアを管理・保守するための基礎知識を説明します。すでに各所で説明されているような具体的なインストール方法ではなく、できる限り概念や背景的なものに特化したいと思います。
Python の基本
Python
コンピュータ言語 Python です。AIソフトウェアは、Python で記述されています。開発者でない限り、Python の文法を知る必要はありませんが、パッケージ管理の仕組みを理解しなければなりません。なぜなら Python は自由すぎて上位・下位互換は無いに等しく、特定のソフトウェアを利用するためには、利用するライブラリやモジュールをすべてを決め打ちバージョンで揃える必要があるからです。
pip
Python 内蔵のパッケージ管理コマンドです。Python をインストールすれば標準で利用できるコマンドです。(ネット上のPyPIライブラリに登録されたものであれば)Python で記述されたソフトウェアやライブラリをコマンドひとつでインストール・アンインストールするできます。スマホのアプリストアのようなものです。
例えば、
pip install rembg[gpu,cli]
# GPU/CUDA環境がない場合は
pip install rembg[cli]
とすることで、rembg というAIソフトウェアが(決め打ちバージョンの大量のモジュールと共に)インストールされます。背景を除去できるソフトウェアです。
rembg i sample.jpg output.png
正常にインストールできれば、上記コマンドで任意の画像から背景を除去できます。
venv 仮想環境
Python 内蔵の仮想環境ツールです。ただし「仮想環境」といってもハードを仮想化する仮想マシンやエミュレータとは関係ありません。Python 環境を環境変数で分離しているだけです。
たとえば、上記 rembg を pip コマンドでインストールしようとすると、環境によっては失敗する人がいるかもしれません。多くの場合、必要なモジュールのバージョン競合が起こるからです。しかし、決め打ちバージョンである限り、競合がない方が珍しいと言えます。
そこで最近の Python では、一つのソフトウェアや用途に対して一つの仮想環境を作成する文化があります。rembg 専用の仮想環境を用意してやります。
例として、rembg 用の仮想環境を作ります。仮想環境を用意するには、その環境が利用する保存領域が必要になります。
python -m venv rembg
とする事で、rembg フォルダが作成され、フォルダ下に仮想環境でインストールしたライブラリやソフトウェアが収納されていきます。
仮想環境に入るには、(PowerShell ではなく Windows プロンプトの場合)rembg 以下に作成されたコマンドを実行します。
rembg\Scripts\activate.bat
プロンプトの左側に (rembg) と表示されれば、仮想環境内に入った事を意味します。この状態で pip コマンドを利用してインストールすると、このフォルダ以下に保存され、外の環境と独立して利用する事ができます。
(rembg) C:\Users\user0\app>pip install rembg[gpu,cli]
ただし仮想マシンではないので、Python と関係のないファイルやライブラリは他のプログラムと共有することになります。
rembgは rembg\Scripts\rembg.exe にインストールされます。このファイルを直接実行すると、仮想環境側の rembg が実行されます。
rembg 仮想環境を削除する場合は rembg ディレクトリを削除するだけです。
下記の記事では、本記事で紹介した Python 内蔵の管理ツールだけでなく、AI 業界ではデ・ファクト・スタンダードの Anaconda を利用した管理方法で説明しています。
ハードウェア
GPU
Graphics processing unit 、つまりグラフィック・カードです。元々はゲーム等の画像処理の高速化に特化した目的で開発されたものですが、今では応用として、科学技術計算や AI に利用されるようになりました。CPU との違いは、GPU 処理の汎用性は低いものの、限定された演算において最大で100倍程度の速度向上が得られる事です。つまり、基本的に GPU が無くても AI プログラムは動作しますが、処理速度が 1/100 になるというだけの話です。(※ ただし、NVIDIAのライブラリなどが整備されず、ソフトウェア・エミュレータがないものは CPU では実行できません)
GPU はローカル環境でAI画像生成環境を整える際に、もっともお金をかけなければならないパーツです。選ぶ場合は、下記に注意する必要があります。
【実質NVIDIA一択】
株価が物語ってます。現状はAMDやIntel製は実質的に利用できないと考えてもいいです。
【もっとも重要なのは GPU メモリ容量】
ゲームでは FPS 性能が最重要とされますが、AIの場合は圧倒的にメモリ容量です。なぜなら、できるかできないを決めるものだからです。ゲームで例えると、FPS 以前に、動作するか動作しないかを決定づけるものなので、どんなに処理速度が高速でも動作しなければ意味がありません。
最近では、本格的な利用と簡易学習は12Gが最低限で、学習を行う場合は24G。
ただし、ちょっと遊ぶだけなら 4G でも実用的になっています。
【RTX 以上を推奨】
紛らわしいですが、業務用(旧 Quadro)も NVIDIA RTX という名です。ゲーム用は Geforce RTX です。つまり、RTX という名前がついているものです。
理由はAIの計算に利用する tensor コアの有無にあります。無くても(対応コードであれば)実行できますが、メモリが余分に必要になります。動作速度はそれほど変わりません。
筆者も利用している RTX 3060 (12G) はコスパ最高です。ただし8G版もあるので注意が必要です。
【RTX の tensor コアにも世代がある】
最近はFP8(8ビット浮動小数点)対応が出てきていますので、この場合は Geforce RTX 4000番台が必要になります。
tensor コアがなければ FP32、あれば FP16、最新なら FP8と、どんどん精度が悪くなってるじゃないかと思われるかもしれませんが、AIに必要な演算は厳密さにありません。求められるのは省メモリと演算速度(と省電力)です。人間と同じでアバウトな処理でいいわけです。
GPU ドライバー
基本的にはゲーム用の最新バージョンをインストールすればいいのですが、より安定性を求める場合は、NVIDIA 公式サイトの「Game Ready」ではなく「Studio ドライバー」を選択する方法もあります。
開発や特殊なソフトウェア(動的コンパイルを要求する)を利用しない限り、CUDA関係のドライバとライブラリは公式からインストールする必要はありません。必要なライブラリは、pip (や conda コマンド)で導入できます。
GPU の AI 処理占有化
Windows を起動するだけで数百M〜1Gバイトの GPU メモリが利用されます。GPU メモリが 8G 以下の場合にはシステムが占有するメモリ量に大きく影響される事もあります。
特定の GPU をAI処理(CUDA処理)に占有させるもっとも簡単な方法は GPU を二枚刺しにする事です。性能の悪い方に物理的なディスプレイケーブルを接続することで、システムの処理を分離する事ができます。CPU に GPU 機能を内蔵している機種でも同様の事が可能です。
環境変数に番号を指定する事で、実行するプログラムに GPU を指定する事ができます。
SET CUDA_VISIBLE_DEVICES=1
冷却システムの確認
一般に、CUDA や AI 処理の負荷は、ゲーム利用時よりも高くなります。ゲームの場合は、コマ落ち、つまり性能が上限になって FPS が低下した時のみ最大になりますが、AI処理の場合は常に上限の 100% で動作します。NVIDIA が同じコアを利用しているにも関らず、ゲーム用と業務用に分けている”言い訳”です。
実際問題として、熱だけでGeforce GPUが壊れることは稀ですが、ゲームよりも負荷が大きいという点に気をとめておく必要はあると思います。電気代も無視できない時代ですから。