0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Hunyuan3D-2をローカルで動かす(何番煎じ?)

Posted at

はじめに

下記記事から刺激をもらい、重い腰を上げて「そろそろローカルPCで手を動かしながらAIを動かすんや」という気持ちなったので、Hunyuan3D-2をローカルPCで動かしたときの備忘録を記事にしました。

Hunyuan3D-2は下記2つのツール上で動かしました:

ネイティブのpython環境でも試してみましたが、 pinokioと大差はないです。
ブラウザで動かすか、専用のスタンドアローンアプリで動かすかの違いぐらいだと思います。

ローカルPC環境

  • Windows 11 Pro
  • NVIDIA GeForce RTX 4090

pinokioで動かす

@yanosen_jpさんの記事を参考にpinokioとモデル(Hunyuan3D-2)をインストールします。
しかし、最新(acda958)だとテクスチャ生成回り(hy3dgen\texgen\custom_rasterizer)でエラーとなりますが、一旦Stopしてまた再開してください。
環境依存な気はします。

無事にモデルが起動できると下記のような表示となります。

pinokioがランチャーアプリ的な立ち位置で 、モデルを一覧で管理できるので便利です。

pinokioのモデルの保存場所は {pinokioルート}\api\{モデル名}となります。

テクスチャ生成

モデル起動後にWarning: Texture synthesis is disable due to ...と表示されると
テクスチャ生成ができません。

色々試したんですが、うまくいかなかったです。
試してみたことを記載しておきます。
もし解決できる方法をご存じの方は教えてくださいw

公式にはfor textureのコマンドの記述があったので試してみました。

pip install -r requirements.txt
pip install -e .
# for texture
cd hy3dgen/texgen/custom_rasterizer
python3 setup.py install
cd ../../..
cd hy3dgen/texgen/differentiable_renderer
python3 setup.py install

pinokio環境だと下記のような感じです。

rem モデルのルートに移動
cd {pinokioルート}\api\{モデル名}\app

rem 仮想環境を有効に
env\Scripts\activate

rem テクスチャ生成モジュールのルートに移動  
cd hy3dgen/texgen/custom_rasterizer

rem モジュールをビルド
python setup.py install

しかし、「モジュールをビルド」コマンドで下記のようなコンパイルエラーとなりました。

D:\AI\pinokio\api\Hunyuan3D-2.git\app\hy3dgen\texgen\custom_rasterizer\lib\custom_rasterizer_kernel\grid_neighbor.cpp(397): error C2398: 要素 '1': 'unsigned __int64' から '_Ty' への変換には縮小変換が必要です
        with
        [
            _Ty=int64_t
        ]
D:\AI\pinokio\api\Hunyuan3D-2.git\app\hy3dgen\texgen\custom_rasterizer\lib\custom_rasterizer_kernel\grid_neighbor.cpp(398): error C2398: 要素 '1': 'unsigned __int64' から '_Ty' への変換には縮小変換が必要です
        with
        [
            _Ty=int64_t
        ]
...
RuntimeError: Error compiling objects for extension

もっとスマートな解決方法があるとは思いつつ、ChatGPT先生の回答で下記のような感じで修正するとコンパイルエラーが解消します。
同様の記述がいくつかあるので、同じように修正します。

hy3dgen\texgen\custom_rasterizer\lib\custom_rasterizer_kernel\grid_neighbor.cpp
    // 修正前
    texture_positions[0] = torch::zeros({seq2pos.size() / 3, 3}, float_options);
    texture_positions[1] = torch::zeros({seq2pos.size() / 3}, float_options);

    // 修正後
    texture_positions[0] = torch::zeros({static_cast<int64_t>(seq2pos.size() / 3), 3}, float_options);
    texture_positions[1] = torch::zeros({static_cast<int64_t>(seq2pos.size() / 3)}, float_options);

上記でコンパイルエラーは解消しますが、次にリンクエラーとなります。

error LNK2001: 外部シンボル "public: long * __cdecl at::TensorBase::data_ptr<long>(void)const "

こちらもChatGPT先生の回答で、下記のような感じで修正するとリンクエラーが解消します。

hy3dgen\texgen\custom_rasterizer\lib\custom_rasterizer_kernel\grid_neighbor.cpp
    // 修正前
    long* nptr = grid_neighbors[i].data_ptr<long>();

    // 修正後
    int64_t* nptr = grid_neighbors[i].data_ptr<int64_t>();

修正後の再ビルド前にpython setup.py clean --allを実行してクリーンにしておきます。
pythonでのC++ビルド周りの知見が乏しいので、「そうなんだ。。。」という感じです。。。

これでビルドが成功するようにはなりました。

differentiable_rendererの方は普通にビルドできました。

cd hy3dgen/texgen/differentiable_renderer
python setup.py install

これでpinokioを起動してみると「Gen Textured Shape」というボタンが見えるようになりました。

だがしかし、Expected reduction dim to be specified ...というエラーで諦めました。。。
「Gen Shape」ボタンの方は動作します。

pythonの環境でも同様にダメそうでした。

ComfyUI Desktopで動かす

基本は下記記事の手順通りで動かすことが可能です。
ComfyUIビギナー(自分)だと情報量が多くて少し迷ったので、そのメモです。

最初にComfyUI Desktopをインストールします。

関連プラグイン/ファイルのインストール

関連プラグインをインストールする

下記2つのプラグインをComfyUI ManagerInstall via Git URLでインストールします。

プラグインインストール時にsecurity levelのエラーが出る場合

下記記事のようにsecurity levelnormalweakに変更する必要があります。
変更は自己責任でお願いします。

変更するファイルはuser\default\ComfyUI-Manager\config.iniです。

config.ini
[default]
...
security_level = weak

テクスチャ生成コンポーネントをインストール

ComfyUI Desktopのターミナルから下記コマンドを実行するだけです。

cd .\custom_nodes\comfyui-hunyan3dwrapper\wheels\
pip install .\custom_rasterizer-0.1.0+torch260.cuda126-cp312-cp312-win_amd64.whl
pip install .\custom_rasterizer-0.1-cp312-cp312-win_amd64.whl 

.whlファイルとは (ChatGPT先生の回答)
.whlファイルは、Python における 「wheel(ホイール)」形式のパッケージファイルです。Python のパッケージを効率的に配布・インストールするための ビルド済みバイナリ形式 のひとつです。

BPT (Boundary Preserving Transform)をインストール(任意)

ComfyUI Desktopのターミナルから下記コマンドを実行します。

cd .\custom_nodes\comfyui-hunyan3dwrapper\hy3dgen\shapegen\bpt\
pip install -r .\requirements.txt

コマンド実行後、重みファイルbpt-8-16-500m.ptをダウンロードして、custom_nodes\comfyui-hunyan3dwrapper\hy3dgen\shapegen\bptにコピーします。

.ptファイルとは (ChatGPT先生の回答)
.pt ファイルは PyTorch フレームワークで使われる形式で、通常は以下の2つの目的で使われます:

  • モデルの重み(weights)torch.save(model.state_dict(), 'model.pt')
  • モデル全体(構造と重み):torch.save(model, 'model.pt')

ComfyUI Desktopのワークフロー(単一視点)を実行

ワークフローファイルを準備

Kijaiさんにご用意してもらっているワークフローファイル(single_view.json)を2.1 ワークフローファイルからダウンロードして、ComfyUI Desktopにドラッグ&ドロップするだけでワークフローがロードできます。

モデルをインストール

モデルHunyuan3D-2_safetensorsをダウンロードして、models\diffusion_modelsにコピーします。

.safetensorsファイルとは (ChatGPT先生の回答)
.safetensorsファイルは、機械学習モデルの重み(パラメータ)を安全かつ効率的に保存するためのファイルフォーマットです。特に最近のAI・ディープラーニングの分野で、モデルの共有に使われることが増えています。

ワークフローを実行

Load Imageノードで画像を選択して、Runボタンを押して実行するだけです。

3. Hunyuan3D 2.0マルチビューワークフローも上記と同じ手順で実行できます。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?