メインコンテンツへスキップ
見出し画像

uvを使った超効率的ComfyUI・Forge Neo環境の超高速構築

    Pythonパッケージ管理ツールとして「uv」が広く使われるようになってから1年以上が経過しています。uvはpipよりも数十倍高速であると言われていますが、ComfyUIやForge Neo等の画像生成・動画生成環境の構築・管理ではまだあまり使われていないように思います。

    もっとも、uvが最大限に効果を発揮するのは複数のPythonやvenv環境を利用したり、頻繁にPythonパッケージを追加・更新したりするような場合です。たとえば1つのComfyUI環境でしかvenvを使ってない場合は、uvを使っても大きなメリットがないため無理に使う必要はありません。

    その辺りも理解できるよう以下について解説します。

    • uvの概要、導入方法、仕組み

    • uvを使ったComfyUIとForge Neoのインストール手順

    • 実機によるuvの性能確認

    ちなみにStability Matrixは同梱のuvを使っているので、Stability Matrixを使っている人も知っておいて損はありません。


    2026/9/1: 「考察」にStability Matrixについて追記

    対象読者や前提など

    読者として以下のような人を対象としています。

    • 開発者ではなく、ComfyUI・Forge Neo・Stability Matrix等の画像生成・動画生成ツールのためにPython環境を扱うライトユーザー

    一方で以下のような知識があることを前提としています。簡単には解説しますが、分からないことや詳細は個別に調べるかAIに尋ねてください。

    • Python, venv, pipの基本的な操作方法や知識

    • OSの環境変数に関する基本的な知識

    • ハードリンクやシンボリックリンク等に関する基本的な知識

    • ソフトウェアのファイルキャッシュに関する基本的な知識

    環境としてはWindowsとNvidia GPUを前提にしています。LinuxやmacOS、Nvidia以外のGPUでは実装や手順が異なる部分があります。

    uvとは

    uvの概要・長所

    uvは、Astral社が開発したPythonパッケージ管理ツールです。

    多くの機能があり解説記事も多いですが、開発者向けにフルスペックの解説をしているものが多くライトユーザーには理解できないような内容が多いです。ComfyUI、Forge Neo、Stability Matrix等で利用するだけなら、以下の特徴や長所を理解しておけば十分だと思います。

    1. Python本体をインストールしていなくても、任意のPythonバージョンのvenvを簡単に作成できる

    2. venvをアクティベートせずに操作できる

    3. "uv pip" 等をpipの代わりにを使うことで以下のメリットがある

      • Pythonパッケージのインストールやアップデートが超高速化される

      • 複数venv利用時にストレージ節約が見込める

    特に重要なのは3.の超高速化とストレージ節約です。解説記事でよく出てくる "uv sync", uv.lock, pyproject.toml などはとりあえず理解しなくても大丈夫です(この記事でも触れません)。

    なお、高速化されるのはpip等によるPython環境操作です。画像生成や動画生成が高速化されるわけではありません、念のため。

    uvの短所

    逆に以下のような短所があります。

    1. キャッシュが大きくなりやすい

    2. pipと完全に同じものではない

    uvの高速化とストレージ節約はキャッシュに依存する部分が大きく、キャッシュが数十GB~百GB超と大きくなりやすいです。ただしハードリンクを活用しており、見た目どおりの容量を消費しているわけではありません(後述)。
    そういった部分も含めてpipと異なる部分もあるため、pipでの知識のまま使っているとuvの長所を損なう場合があります。

    uvの導入

    uvのインストール

    uvのインストールはPowerShellを利用するのが一般的です。

    • PowerShellを起動してインストールする方法

    irm https://astral.sh/uv/install.ps1 | iex
    • コマンドプロンプトを起動してインストールする方法
      コマンドプロンプトや「ファイル名を指定して実行」でPowerShellを呼び出してインストールすることもできます。いずれでも同じことです。

    powershell -c "irm https://astral.sh/uv/install.ps1 | iex"

    uvのフォルダ構成

    通常、uvの関連ファイルは以下のフォルダに配置されます。

    • 実行ファイル
      C:\Users\ユーザー名\.local\bin

    • キャッシュファイル
      C:\Users\ユーザー名\AppData\Local\uv\cache
      環境変数UV_CACHE_DIRで変更可能

    • Pythonインストールファイル
      C:\Users\ユーザー名\AppData\Roaming\uv\python
      環境変数UV_PYTHON_INSTALL_DIRで変更可能

    • ツールインストールファイル
      C:\Users\ユーザー名\AppData\Roaming\uv\tools
      環境変数UV_TOOL_DIRで変更可能

    レジストリは使わないので、uvをアンインストールする場合はこれらを削除すればよいです。
    なお、仕組みや設定に対する知識がないうちは環境変数は設定しないほうがよいです。特にUV_CACHE_DIRをシステムドライブと別ドライブに設定するとuvのパフォーマンスに大きく影響します。

    uvの主な仕組み

    uvには高速化やストレージ節約を実現するための多くの仕組みがあります。そのうち分かりやすいもの、知っておいたほうがよいもののみを解説します。

    処理自体が高速、かつ並列で実行

    pipでは順番に直列で実行していた処理を、uvでは並列に処理します。また処理そのものも最適化されており超高速です。

    下図はuvとpipそれぞれを使ったPythonパッケージのインストールにおいて大量のwhlファイルをダウンロードしているところです。

    画像
    uvで並列ダウンロードしているところ
    画像
    pipで直列ダウンロードしているところ

    uvではダウンロード対象のパッケージが複数表示され並列でダウンロードバーが伸びていく様子、pipでは1個ずつダウンロードが進みメッセージが流れていく様子がわかります。

    なおダウンロードは回線速度がネックになるため、個々のファイルサイズが大きい場合は並列化しても効果が少ない場合もあります。メッセージ出力が分かりやすいため例として取り上げましたが、あくまで高速化技術のうちの一つでしかありません。

    キャッシュとハードリンクの活用

    uvは様々な処理でキャッシュを活用します。
    下表は主なキャッシュ対象についてpipと比較したものです(すべてを網羅したものではありません)。

    キャッシュ対象 uv pipHTTPレスポンス ✓✓ダウンロードしたwhl ✓✓インストールデータ ✓N/A\begin{array} {l|c|c} \bf{キャッシュ対象} & \bf{uv} & \bf{pip} \\ \hline \text{HTTPレスポンス} & \text{✓} & \text{✓} \\ \hline \text{ダウンロードしたwhl} & \text{✓} & \text{✓} \\ \hline \text{インストールデータ} & \text{✓} & \text{N/A} \\ \end{array}

    PyPI等から取得したデータやwhlをキャッシュし、同じwhlを使用する場合に再ダウンロードしないようにしているのは共通です。uvはそれだけでなく、インストールデータとして展開した状態でキャッシュします。そしてインストール時はそれらをファイルコピーではなくハードリンクでvenvへ配置するため一瞬で完了し、ストレージを消費しません。

    このキャッシュとハードリンクが、超高速化とストレージ節約を実現する大きな要素になっています。下図はそのイメージ図です。

    画像

    ※ ハードリンクの超簡単な解説

    ライトユーザーでも使用することが多いシンボリックリンクやショートカットと比べると、ハードリンクはあまり使われることがありません。またエクスプローラーではまったく区別することができないため、ライトユーザーには馴染みがなく理解しづらい技術だと思います。

    下表はハードリンクとシンボリックリンクの特性の比較です。

    ハード シンボリックリンク リンクリンクと 区別なし区別ありターゲットの区別 エクスプローラー 普通のファイルリンクは左下にでのアイコン表示 と同じ矢印マークありエクスプローラー 同じサイズ、リンクはでのサイズ計算 重複して計算0バイトターゲットの リンクへのリンクが移動や削除 影響なし切れるリンクの総数や 可能不可能他リンクの確認\begin{array} {l|c|c} & \bf{ハード} & \bf{シンボリック} \\ & \bf{リンク} & \bf{リンク} \\ \hline \text{リンクと} & \text{区別なし} & \text{区別あり} \\ \text{ターゲットの区別}  \\ \hline \text{エクスプローラー} & \text{普通のファイル} & \text{リンクは左下に} \\ \text{でのアイコン表示} & \text{と同じ} & \text{矢印マークあり} \\ \hline \text{エクスプローラー} & \text{同じサイズ、} & \text{リンクは} \\ \text{でのサイズ計算} & \text{重複して計算} & \text{0バイト} \\ \hline \text{ターゲットの} & \text{リンクへの} & \text{リンクが} \\ \text{移動や削除} & \text{影響なし} & \text{切れる} \\ \hline \text{リンクの総数や} & \text{可能} & \text{不可能} \\ \text{他リンクの確認} \\ \end{array}

    シンボリックリンクやショートカットは下図のようにエクスプローラーで区別することができるのはご存じだと思います。

    画像
    シンボリックリンクのプロパティ

    ハードリンクはfsutil等を使わなければ区別できません。またハードリンクを含むファイル・フォルダの物理使用量はDisk Usage (DU) 等を使わなければ計算できません。

    >fsutil hardlink list simpleeval.py
    \uv\cache\archive-v0\evhRqTMuGBG0PjyT\simpleeval.py
    \uv\comfyui1\.venv\Lib\site-packages\simpleeval.py
    \uv\comfyui2\.venv\Lib\site-packages\simpleeval.py

    uvを使ったComfyUIインストール

    Comfy-Org公式の手順(README、公式ドキュメントサイト)はuvを利用しない手順になっています。以下はuvを利用する手順に変更しています。
    gitとuvはインストール済みであることが前提です。

    1.git cloneでComfyUI本体をダウンロード

    git clone https://github.com/comfy-org/comfyui

    リポジトリ名と同じcomfyuiというフォルダにファイルがダウンロードされます。フォルダ名を指定する場合は末尾に好きなフォルダ名を追記します。

    2.uvでvenvを作成

    cd comfyui
    uv venv --python 3.13

    uvを使います。
    導入対象のPythonを自分で準備する必要はありません。uvが自動でPython (CPython) をダウンロードしてくれます。
    uv venvは標準で ".venv" という先頭にドットが付いたフォルダ名でvenvを作成します。"venv" というフォルダ名ではありませんので注意してください。

    3.uvでPythonパッケージをインストール

    uv pip install torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu130
    uv pip install -r requirements.txt
    uv pip install -r manager_requirements.txt

    uvを使います。
    uv pipは標準で.venvを操作するため、アクティベートは必要ありません。

    4.uvでComfyUIを起動

    uv run main.py --enable-manager

    uvを使います。
    uv runは標準で.venv内のpython.exeを使うため、python.exeのパス指定やvenvのアクティベートは必要ありません。

    5.ComfyUI Managerのuse_uvオプションを有効にする

    ComfyUIインストールフォルダの "user\__manager\config.ini" ファイルをエディタで開き、user_uvをTrueに設定します(一度ComfyUIを起動しないとuserフォルダが作成されません)。

    use_uv = True

    これによりComfyUI Managerを使ったカスタムノードの初期セットアップ・更新・削除などのPythonパッケージ操作でuvが使われるようになります。


    2.においてuvで作成したvenvにpipが含まれていないため、実は "use_uv = False" のままでも以下の起動メッセージが出力され、ComfyUI Managerはpipではなくuvを使用するようフォールバック動作します。

    [WARNING] [ComfyUI-Manager] python -m pip not available. Falling back to uv.

    ただし設定どおりの動作ではありませんし、WARNINGメッセージが出力され気持ち悪いためキチンと設定しておくことを推奨します。
    ちなみに2.において--seedオプションを付けてvenvを作成するとpipもインストールされます。そのほうがuvに問題があったときにpipを使うことができるため安全かもしれません。

    uvを使ったForge Neoインストール

    Forge Neoはuv利用を推奨しているため、READMEのインストール手順通りに実行すればよいです。
    gitとuvはインストール済みであることが前提です。

    1.git cloneでForge Neo本体をダウンロード

    git clone https://github.com/Haoming02/sd-webui-forge-classic sd-webui-forge-neo --branch neo

    "sd-webui-forge-neo" はフォルダ名の指定なので、好きなフォルダ名に変更してもよいです。

    2.uvでvenvを作成

    cd sd-webui-forge-neo
    uv venv venv --python 3.13 --seed

    uvを使います。
    導入対象のPythonを自分で準備する必要はありません。uvが自動でPython (CPython) をダウンロードしてくれます。

    uv標準では.venvと、先頭にドットが付いたフォルダ名になりますが、互換性のためにドットを付けないpip標準のフォルダ名 "venv" を指定します。
    また--seedを付けpip, setuptools, wheelをインストールします。拡張機能やバッチがpipを直接使う可能性があり、付けておいたほうが安全ということです。

    3.Forge Neoのuvオプションを有効にする

    Forge Neoインストールフォルダ直下のwebui-user.batをエディタで開き、COMMANDLINE_ARGSに--uvを追加します。これによりForge Neoや拡張機能の初期セットアップ・更新・削除などのPythonパッケージ操作でuvが使われるようになります。

    --sage, --flash, --cuda-malloc, --cuda-stream, --pin-shared-memoryなど、必要なオプションがあれば一緒に追加しておきます。uv関連では他に--uv-symlink, --uv-local-cacheというオプションがありますが、使わない方が無難です。

    set COMMANDLINE_ARGS=--uv

    4.Forge Neoを起動(セットアップ)

    webui-user.bat

    初回起動時にPythonパッケージのインストール等のセットアップが実行されます。COMMANDLINE_ARGSに--uvを追加しているとuvが利用されます。

    Stability Matrixでのuv利用について

    Stability MatrixにはData\Assets\uvフォルダにuvが同梱されており、Forge NeoやComfyUIを新規インストールする際は自動でそのuvが使われます。

    基本的にはそのまま使うのが無難ですが、さらに最適化する場合は以下の設定も可能です。いずれもuvがシステムにインストールされているか、またはData\Assets\uvのパスを環境変数Pathに追加しておくことが前提です。

    uvキャッシュを集約する設定

    Stability Matrix同梱のuvは、システムにuvがインストールされていたとしても標準ではStability Matrix内の独立したキャッシュ(Data\Assets\uv\cacheフォルダ)を使います。一般的にはキャッシュが分散していると効率が低下しますので、Stability Matrix以外でもuvを多用している場合は、uvの環境変数UV_CACHE_DIRを設定すればStability Matrix同梱のuvもそちらを使うようになります。

    ただしStability Matrixをシステムドライブと別ドライブにインストールしている場合は集約しないほうがよいかもしれません。利用状況によりますので、uvキャッシュの仕組みを理解して自分で考えるかAIに相談してください。

    ComfyUI Managerでuvを使う設定

    ComfyUIインストールフォルダ(Data\Packages\ComfyUI等)の "user\__manager\config.ini" ファイルをエディタで開き、user_uvをTrueに設定します。

    use_uv = True

    Forge Neoでuvを使う設定

    Launch OptionsのExtra Launch Argumentsに "--uv" を追加します。

    画像
    Forge NeoのLaunch Options

    ComfyUI Portable版へのuvに導入ついて

    ComfyUI Portable版はEmbedded Python (Embeddable Package) を同梱しており、完全に独立した環境をzip展開するだけで即利用できることが利点です。uvの利点と相反しており、ComfyUI Portable版にuvを導入するというのは意味不明です。
    uvを利用するのであれば、まずPortable版ではなく手動インストール版、Comfy Desktop、Stability Matrixを利用することを検討してください。

    実機によるuvの性能確認

    uvとpipそれぞれを使って実機にComfyUIをインストールすることで性能を確認します。

    確認方法

    uvとpipを使って下図のような環境を構築します。

    C:\
    ├─ uv\             ※uvが使用、構築するフォルダ
    │ ├─ cache\          ※UV_CACHE_DIRで設定
    │ ├─ comfyui1\
    │ │  └─ .venv\
    │ └─ comfyui2\
    │   └─ .venv\
    └─ pip\             ※pipが使用、構築するフォルダ
      ├─ cache\          ※PIP_CACHE_DIRで設定
      ├─ comfyui3\
      │  └─ venv\
      └─ comfyui4\
        └─ venv\

    Python・CPython本体はダウンロード・インストール済み、キャッシュは全削除した状態から以下を順番に実行します。

    1. uvでcomfyui1にインストール(キャッシュが削除された状態)

    2. uvでcomfyui2にインストール(1.のキャッシュがある状態)

    3. pipでcomfyui3にインストール(キャッシュが削除された状態)

    4. pipでcomfyui4にインストール(3.キャッシュがある状態)

    それぞれの実行時間と、uv、pip各フォルダの物理使用量をDUで確認します。

    uvとpipのバージョンはそれぞれ以下のとおりです。

    • uv 0.12.5

    • pip 25.3

    なおダウンロード速度はタスクマネージャーの目視で平均600Mbpsほどでした。

    結果

    • 実行時間

    画像
    画像
    • 物理使用量

    画像

    考察

    お分かりいただけただろうか・・・
    数値についての細かい説明は不要でしょう。

    もちろんこれは各venvのパッケージ構成がバージョンまで完全に同じで、すべてキャッシュヒットしハードリンクで処理されたためです。

    同じパッケージ構成でもバージョンが異なれば、ここまで高速化されストレージ使用量が圧縮されることはありません。しかしそれでもpipよりも圧倒的に高速でストレージ使用量を節約できることは分かると思います。

    またエクスプローラーでのサイズ表示が当てにならないことも分かると思います。そしてここまでの内容を完全に理解しているなら、uvのキャッシュが肥大化しているからといって無闇に全削除するとこの構成が壊れてしまうことも理解できると思います。
    キャッシュ削除の詳細については別記事に書いています。


    2026/9/1追記:
    Stability Matrixでも、「パッケージの追加」でComfyUIやForge Neoを同じ設定で連続インストールすると2回目以降は短時間で完了し、ストレージの空き容量がほとんど減らないことを確認できます。内部でuvが使用されている効果です。

    まとめ

    Pythonパッケージ管理ツール「uv」と、uvを使ったComfyUI・Forge Neo・Stability Matrixのインストールや設定方法について解説しました。

    環境が一つしかなく、カスタムノードや拡張機能も含めてPythonパッケージの追加や変更をほとんどしないならuvを使っても大きなメリットはありませんが、私のようにComfyUI環境をいくつも作ったり、最新モデルを追いかけて環境を壊しては作り直したりするマニアは絶対にuvを使うべきです。

    このような感じで、技術的な内容を分かりやすく基本無料で解説しています。「スキ」「フォロー」「チップ」で応援よろしくお願いします。質問がありましたら遠慮なく「質問箱」へどうぞ。


    本記事の文章・画像等の無断転載・複製・改変・盗用を禁じます。
    発見した場合は黙認せず対応します。これらの行為を発見された方は、相手ではなく私までお知らせください。

    あなたへのおすすめ