WindowsでYuEGPを使ってみた。

前回、YuEを8bit量子化してロードしてみましたが、効果はなく、その後も色々試していたのですが、あまりうまく行っていなかったところ、XのTLにこんなものが流れてきました。

英語は苦手なのですが、どうやら12GBのVRAMで高速化しそうな感じだったので、確認してみることに。

結論から言えば、2倍ほど高速化ができました。
(とはいえ、2時間が1時間なのでまだまだ実用的とはいい難いのですが…)
また、簡単なWebUIが作られているので、若干ですが使いやすくなっていると思います。

インストール手順は、公式リポジトリのままでいいのですが、簡単に説明します。

まずは、ソースコードのCloneから。

git lfs install
git clone https://github.com/deepbeepmeep/YuEGP/

cd YuEGP/inference/
git clone https://huggingface.co/m-a-p/xcodec_mini_infer

公式リポジトリの記述どおりで問題ありません。

次に、公式リポジトリでは省略されていますが、仮想環境の作成。

cd ..
D:\Users\siouni\AppData\Local\Programs\Python\Python310\python.exe -m venv venv
venv\Scripts\activate

うちの環境ではこんな感じ。
Python3.10がいいと思います。(後述のTritonに関連するため。)
パスは適当に読み替えてください。

次は、公式の記述どおりPyTorchをインストールします。

pip install torch==2.5.1 torchvision torchaudio --index-url https://download.pytorch.org/whl/test/cu124

※なんかURLにtestって入ってるのが気になるけど…まあ、いいか。

なお、PyTorch2.5.1はたまたまなのかわかりませんが、後述のTritonでもこのバージョンが要求されます。

次に依存関係をインストールします。
これも公式リポジトリの記述に従えばOKです。

pip install -r requirements.txt

そして、またまた大問題のFlashAttention2。
これも、基本的には公式の記述どおりで問題ありません。
(VisualStudio2022が必要かも、そのうち別途解説)
時間がかかる場合があるので、その場合は一晩ほど放置すればいいです。

pip install flash-attn --no-build-isolation

一度、インストールされていれば時間はかからないはずです。
(Pythonのバージョンが違う場合は、時間がかかります。)

ひとまずこれでインストールは完了です。

実際に動かすにはいくつか確認することがあります。

  • メインメモリの容量

  • VRAMの容量

私の場合、メインメモリが32GB、VRAMが12GB。
この場合、プロファイル番号4となります。
この辺が、mmgpというメモリ管理ライブラリのソースのコメントと、公式リポジトリの説明が若干食い違ってるような気はします。

ソースのコメント

profile_name : num of the profile:
        HighRAM_HighVRAM_Fastest (=1): at least 48 GB of RAM and 24 GB of VRAM : the fastest well suited for a RTX 3090 / RTX 4090
        HighRAM_LowVRAM_Fast (=2): at least 48 GB of RAM and 12 GB of VRAM : a bit slower, better suited for RTX 3070/3080/4070/4080 
            or for RTX 3090 / RTX 4090 with large pictures batches or long videos
        LowRAM_HighVRAM_Medium (=3): at least 32 GB of RAM and 24 GB of VRAM : so so speed but adapted for RTX 3090 / RTX 4090 with limited RAM
        LowRAM_LowVRAM_Slow (=4): at least 32 GB of RAM and 12 GB of VRAM : if have little VRAM or generate longer videos 
        VerylowRAM_LowVRAM_Slowest (=5): at least 24 GB of RAM and 10 GB of VRAM : if you don't have much it won't be fast but maybe it will work

To run the Gradio app with profile 3 (default profile, a bit slower and the model is quantized to 8 bits but requires 12 GB of VRAM)

公式リポジトリの説明

To run the Gradio app with less than 10 GB of VRAM profile 4 (very slow as this will incur sequencial offloading)

公式リポジトリの説明

もしかしたら、3でも問題ないのかもしれません。(実際動く)
プロファイル番号3はソースのコメントによると、メインメモリ32GB、VRAM24GB(3090、4090)向けの設定のようでした。
共有メモリまで含めれば、足りるといえば足りる。

公式リポジトリの説明や、ソースのコメントからプロファイル番号を決めて、下記のコマンドを実行します。

cd inference
python gradio_server.py --profile 4

ただ、私の環境ではエラーが発生したためソース(gradio_server.py)を修正しました。

with torch.no_grad():
    stage2_output = model.generate(input_ids=input_ids, 
        min_new_tokens=7,
        max_new_tokens=7,
        eos_token_id=mmtokenizer.eoa,
        pad_token_id=mmtokenizer.eoa,
        logits_processor=block_list,
        # session_cache = session_cache, <- ここをコメントアウト 
    )

gradio_server.pyを「session_cache = session_cache」とかで検索してもらったら出てくると思います。
(これがどう影響するかは謎、エラー的にはこのオプションは使われていないというエラーなので問題ないはず?)

一応、私の環境ではこれで動作するようになりました。
ちなみに自動でブラウザにページが表示されたりしないので、コンソールで起動を確認したら、ブラウザに表示されたURLを打ち込んでアクセスしてください。

追記
すっかり忘れてましたが、tritonがあれば--compileオプションで高速化ができるかもしれません。
(私の環境ではいまいちでした。)

Tritonは公式ではWindowsには対応していないので、非公式版のTritonを使用します。
2025/2/8時点で最新版ではエラーになったので、3.1.0を使用しました。

pip install https://github.com/woct0rdho/triton-windows/releases/download/v3.1.0-windows.post5/triton-3.1.0-cp310-cp310-win_amd64.whl

これで、起動時のコマンドに--compileオプションをつけることで、コンパイルされて高速化する…はずです。

お金ないので、もしよかったら購入してくれると助かります。
※有料部分には何もありません。

もしくはこちらから投げ銭など頂けると嬉しいです。

ここから先は

0字

¥ 300

この記事が気に入ったらチップで応援してみませんか?