見出し画像

【Flux.1】llama.cppでFlux.1のGGUF変換メモ【safetensors】


はじめに

Flux.1(dev)モデルでgguf形式を扱う事ができるComfyUIのカスタムノード「ComfyUI-GGUF」がありますが、ComfyUIを利用せずにコマンドラインで量子化gguf形式に変換するまでの手順メモを残します。(ちょっと分かりにくかったので)

※ Linux(またはwsl2)での作業です。仮想環境はAnacondaを利用します。

変換手順は次になります。

  1. BF16版safetensorsモデルを入手:ダウンロード

  2. safetensorsモデルをBF16版gguf形式に変換:convert.pyスクリプト利用

  3. BF16版ggufからQ4_K_S量子化ggufに変換:llama-quantizeバイナリコマンド利用

ComfyUI-GGUF

GGUF変換を可能にするComfyUIのカスタムノードのリポジトリはこちら、

仮想環境と設定

まずはAnacondaで仮想環境を作ります。筆者環境ではPython3.12で動作しました。

# 仮想環境作成
conda create -n comfyui-gguf python=3.12

# 仮想環境に入る
conda activate comfyui-gguf

作業ディレクトリを作ります。たぶん一時ファイル保存を含めて60GB以上必要です。

# 作業出ディレクトリ作成
mkdir ~/app/comfyui-gguf
cd ~/app/comfyui-gguf

# リポジトリをクローン
git clone https://github.com/city96/ComfyUI-GGUF.git
cd ComfyUI-GGUF

お決まりのインストールコマンド(comfyui-gguf仮想環境に入っている事を確認)

pip install -r requirements.txt

実際に利用するユーティリティはtoolsディレクトリの中のものです。

cd tools

toolsディレクトリのREADME.mdの手順に沿って進めていきます。

toolsディレクトリで作業します。量子化変換のプログラムエンジンとして、別リポジトリのllama.cppをcloneします。

git clone https://github.com/ggerganov/llama.cpp
pip install llama.cpp/gguf-py

※ ちなみにllama.cppはLLMの量子化ggufにも利用します。

その他変換に必要なpythonパッケージを導入します。

# 変換にCUDAは必要無いはずですが、面倒なので全部導入します(cuda12.6の場合)
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu126

# safetensorsの変換に必要
pip install safetensors

Flux.1のモデルのダウンロード

変換例として次のFlux.1(dev)ベースのモデルをダウンロードします。BF16版の約22GBのものです。

ダウンロードファイル「pixelwave_flux1Dev03.safetensors」を指定してBF16形式ggufに変換します。同じディレクトリ(Downloads)にBF16形式ggufファイルが、ほぼ同じサイズで作成されます。

python convert.py --src ~/Downloads/pixelwave_flux1Dev03.safetensors

llama.cppの設定

Flux.1のモデルに利用するには、特別バージョンのllama.cppを利用する必要があります。(※ Flux.1以外のモデルを利用する場合は、別のtagになります。README参照)

cd llama.cpp

# 特別バージョンにする
git checkout tags/b3600

# パッチを当てる
git apply ..\lcpp.patch
# llama.cppのビルド作業環境の作成
mkdir build
cd build

# cmakeがない場合はsudo apt install cmake
cmake ..

# バイナリコマンド・llama-quantizeをビルドする(8並列)
cmake --build . --config Debug -j8 --target llama-quantize
cd ../..

量子化の実行(Q5_K_Sの場合)

llama.cpp/build/bin/llama-quantize ~/Downloads/pixelwave_flux1Dev03-BF16.gguf ./pixelwave_flux1Dev03-Q5_K_S.gguf Q5_K_S

成功すれば、カレントディレクトリに「pixelwave_flux1Dev03-Q5_K_S.gguf」が作成されます。

動作テスト

せっかくなので、PixelWaveモデルのトップ画面のプロンプトを試します。ここではKrita-ai-diffusionを利用します。※ ggufファイルは、ComfyUIフォルダの「models/unet」に保存します

作成したggufモデルを指定
生成テスト

トップ画面の画像とほぼ同じものが問題なく生成できています。(768x1024解像度)


以下、関連する記事の【PR】です。


いいなと思ったら応援しよう!