ABCABC Tech Catalog

Style-Bert-VITS2 を RTX PRO 1000 Blackwell で動かすのに苦労した話

RTX PRO 1000 Blackwellでsbv2を動かしたい

RTX PRO 1000 Blackwellを購入してStyle-Bert-VITS2を入れようとしたところ、諸々の環境変数にハマってしまいなかなか動かせず苦労しました。

結論から言うと、RTX PRO 1000上で学習を行うことはできず、別の内蔵GPUで動かすことで、学習まで行えるようになりました。

インストール、パッチ適用、アプリ起動までを一括で行うバッチファイルを作成しましたので備忘録として残しておきます。

検証環境

作成したスクリプト一覧

作成したのは下記の5ファイルです。

  • Install-Style-Bert-VITS2-RTX1000.bat
  • patch_requirements.ps1
  • patch_style_gen.ps1
  • patch_worker_127.ps1
  • patch_subprocess.ps1

ひとつずつ詳しく説明していきます。

1. Install-Style-Bert-VITS2-RTX1000.bat

@echo off
REM ============================================================
REM Style-Bert-VITS2 セットアップスクリプト
REM Git の確認/インストール、リポジトリのクローン、
REM Python 環境構築、依存関係インストール、モデル取得まで実行
REM ============================================================

setlocal enabledelayedexpansion
chcp 65001 > NUL
REM UTF-8 でコンソールと Python の入出力を統一
set PYTHONIOENCODING=utf-8

REM PowerShell 5.1 実行用(パッチスクリプト用)
set "PS_CMD=PowerShell -Version 5.1 -ExecutionPolicy Bypass"
REM Portable Git のダウンロード先(Git 未導入時に使用)
set "DL_URL=https://github.com/git-for-windows/git/releases/download/v2.44.0.windows.1/PortableGit-2.44.0-64-bit.7z.exe"
set "DL_DST=%~dp0lib\PortableGit-2.44.0-64-bit.7z.exe"
REM Style-Bert-VITS2 のリポジトリ URL
set "REPO_URL=https://github.com/litagin02/Style-Bert-VITS2"

REM スクリプトの存在するディレクトリに移動
pushd %~dp0
if not !errorlevel! equ 0 ( echo ERROR: Cannot change to script dir. & pause & exit /b 1 )

REM ライブラリ用フォルダがなければ作成
if not exist lib\ mkdir lib

echo --------------------------------------------------
echo Checking Git Installation...
echo --------------------------------------------------
git --version
if not !errorlevel! equ 0 (
	echo Git is not installed. Downloading PortableGit...
	REM Portable Git をダウンロードしてインストール
	curl -L "%DL_URL%" -o "%DL_DST%"
	if not !errorlevel! equ 0 ( pause & popd & exit /b 1 )
	"%DL_DST%" -y
	if not !errorlevel! equ 0 ( pause & popd & exit /b 1 )
	del "%DL_DST%"
	REM インストールした Git を PATH に追加
	set "PATH=%~dp0lib\PortableGit\bin;%PATH%"
	git --version
	if not !errorlevel! equ 0 ( pause & popd & exit /b 1 )
)

echo --------------------------------------------------
echo Cloning repository...
echo --------------------------------------------------
REM Style-Bert-VITS2 リポジトリをクローン
git clone "%REPO_URL%"
if not !errorlevel! equ 0 ( pause & popd & exit /b 1 )

echo --------------------------------------------------
echo Setting up Python environment...
echo --------------------------------------------------
REM Python と venv を lib\python と Style-Bert-VITS2\venv にセットアップ
call Setup-Python.bat ".\lib\python" ".\Style-Bert-VITS2\venv"
if not !errorlevel! equ 0 ( echo Setup-Python.bat failed. & pause & popd & exit /b 1 )

REM クローンしたリポジトリのディレクトリに移動
pushd Style-Bert-VITS2

REM 仮想環境を有効化
call ".\venv\Scripts\activate.bat"
if not !errorlevel! equ 0 ( echo venv activate failed. & pause & popd & exit /b 1 )

echo --------------------------------------------------
echo Installing uv...
echo --------------------------------------------------
REM Python パッケージマネージャ uv をインストール
pip install uv
if not !errorlevel! equ 0 ( pause & popd & exit /b 1 )

echo --------------------------------------------------
echo Installing PyTorch (cu128)...
echo --------------------------------------------------
REM CUDA 12.8 用 PyTorch をインストール
uv pip install "torch==2.7.1" "torchaudio==2.7.1" --index-url https://download.pytorch.org/whl/cu128
if not !errorlevel! equ 0 ( pause & popd & exit /b 1 )

echo --------------------------------------------------
echo Patching requirements.txt...
echo --------------------------------------------------
%PS_CMD% -File "%~dp0patch_requirements.ps1"

echo --------------------------------------------------
echo Patching style_gen.py...
echo --------------------------------------------------
%PS_CMD% -File "%~dp0patch_style_gen.ps1"

echo --------------------------------------------------
echo Patching worker (127.0.0.1)...
echo --------------------------------------------------
%PS_CMD% -File "%~dp0patch_worker_127.ps1"

echo --------------------------------------------------
echo Patching subprocess.py (UTF-8 stderr)...
echo --------------------------------------------------
%PS_CMD% -File "%~dp0patch_subprocess.ps1"

echo --------------------------------------------------
echo Installing dependencies...
echo --------------------------------------------------
REM requirements.txt から依存パッケージをインストール
uv pip install -r requirements.txt
if not !errorlevel! equ 0 ( pause & popd & exit /b 1 )

echo --------------------------------------------------
echo Downloading models (skip default voice models)...
echo --------------------------------------------------
REM 初期化スクリプト実行(デフォルト音声モデルはスキップ)
python initialize.py --skip_default_models

echo --------------------------------------------------
echo Starting Style-Bert-VITS2 Editor...
echo --------------------------------------------------
REM エディタをブラウザで起動
python server_editor.py --inbrowser
pause

popd
popd
endlocal

Style-Bert-VITS2 を一括で取得・セットアップし、最後にエディタを起動する Windows 用インストールバッチです。

公式のbatにパッチの適用などを加えました。

2. patch_requirements.ps1

$path = Join-Path (Get-Location) 'requirements.txt'
$content = @'
accelerate>=0.33.0,<0.36
faster-whisper>=0.12
g2p_en
GPUtil
gradio==5.34.0
jieba
librosa==0.9.2
loguru
nltk<=3.8.1
num2words
numpy<2
onnx
onnxconverter-common
onnxruntime
onnxruntime-directml; sys_platform == 'win32'
onnxruntime-gpu; sys_platform != 'darwin'
onnxsim-prebuilt
protobuf==4.25
psutil
punctuators
pyannote.audio>=3.1.0,<4
pyloudnorm
pyopenjtalk-dict
pypinyin
pyworld-prebuilt
stable_ts
tensorboard
transformers==4.44.2
umap-learn
soxr
'@
[System.IO.File]::WriteAllText($path, $content, [System.Text.UTF8Encoding]::new($false))
Write-Host "Patched requirements.txt for Blackwell/CUDA128 (with version pins)."

RTX50 シリーズで動かしている方の記事を参考にtransformersなどにも修正を加えました。

変更内容は以下のとおりです。

パッケージ元の指定修正後理由・補足
accelerateなし>=0.33.0,<0.36互換性のため範囲指定。
cmudictあり削除本配布では未使用想定。
cn2anあり削除同上。
faster-whisper==0.10.1>=0.12新環境で動かすためバージョン緩和。
gradio>=4.32==5.34.0再現性のため固定。
pyannote.audio>=3.1.0>=3.1.0,<44.x は API 変更の可能性があるため上限設定。
torchtorch<2.4削除bat で cu128 用に別インストール。
torchaudiotorchaudio<2.4削除同上。
transformersなし==4.44.2日本語 BERT トークナイザー等の互換のため固定。
その他soxr を追加音声リサンプリング用。

3. patch_style_gen.ps1

$path = Join-Path (Get-Location) 'style_gen.py'
if (-not (Test-Path -LiteralPath $path)) {
    Write-Error "style_gen.py not found at $path"
    exit 1
}
$c = [System.IO.File]::ReadAllText($path, [System.Text.UTF8Encoding]::new($false))

if ($c -match 'torch\.serialization\.add_safe_globals') {
    Write-Host "style_gen.py: already patched (safe_globals)."
    exit 0
}

if ($c -notmatch 'from pyannote\.audio\.core\.task import') {
    $c = $c -replace '(from pyannote\.audio import Inference, Model)\r?\n', "`$1`nfrom pyannote.audio.core.task import Problem, Resolution, Specifications`n"
}

$nl = [Environment]::NewLine
$block = $nl + "# PyTorch 2.6+ safe_globals for pyannote checkpoint" + $nl + "torch.serialization.add_safe_globals([" + $nl + "    torch.torch_version.TorchVersion," + $nl + "    Specifications," + $nl + "    Problem," + $nl + "    Resolution," + $nl + "])" + $nl + $nl
$c = $c -replace '(config = get_config\(\))\r?\n(\r?\n)*(model = Model\.from_pretrained)', "`$1`n`n$block`$3"

[System.IO.File]::WriteAllText($path, $c, [System.Text.UTF8Encoding]::new($false))
Write-Host "Patched style_gen.py (PyTorch 2.6+ safe_globals for pyannote)."

PyTorch 2.6以降、torch.load()のデフォルト値がweights_only=Trueに変更されたので、許可リストを追加しています。

4. patch_worker_127.ps1

$base = Get-Location
$clientPath = Join-Path $base 'style_bert_vits2\nlp\japanese\pyopenjtalk_worker\worker_client.py'
$serverPath = Join-Path $base 'style_bert_vits2\nlp\japanese\pyopenjtalk_worker\worker_server.py'
$encoding = [System.Text.UTF8Encoding]::new($false)
$pattern = '\(socket\.gethostname\(\), port\)'
$replacement = '("127.0.0.1", port)'

foreach ($path in @($clientPath, $serverPath)) {
    if (-not (Test-Path -LiteralPath $path)) {
        Write-Warning "Not found: $path"
        continue
    }
    $c = [System.IO.File]::ReadAllText($path, $encoding)
    $c = $c -replace $pattern, $replacement
    [System.IO.File]::WriteAllText($path, $c, $encoding)
    Write-Host "Patched: $path (127.0.0.1)"
}

私の環境では、今回のPCではsocket.gethostname()のままだとうまくいかなかったので、アドレスを指定することで解決しています。

5. patch_subprocess.ps1

$path = Join-Path (Get-Location) 'style_bert_vits2\utils\subprocess.py'
$encoding = [System.Text.UTF8Encoding]::new($false)

if (-not (Test-Path -LiteralPath $path)) {
    Write-Error "subprocess.py not found at $path"
    exit 1
}

$c = [System.IO.File]::ReadAllText($path, $encoding)

if ($c -match 'errors="replace"') {
    Write-Host "subprocess.py: already patched (errors=replace)."
    exit 0
}

$c = $c -replace '(encoding="utf-8",)\r?\n(\s+)(check=False,)', "`$1`n`$2errors=`"replace`",`n`$2`$3"

[System.IO.File]::WriteAllText($path, $c, $encoding)
Write-Host "Patched subprocess.py (errors=replace for stderr decode)."

こちらも環境によるかと思いますが、UnicodeDecodeErrorが出てしまうのを防ぐために、UTF-8 として解釈できないバイトだけを Unicode の置換文字に置き換える処理を追加しています。

使用方法

以上で作成したスクリプトの紹介は終了です!

上記で紹介したPowerShellのスクリプトと、デフォルトのSetup-Python.batがあるディレクトリでbatを実行してください。

今回は社内利用のためにデフォルトでのモデルのダウンロードはスキップしています。

必要な方はbatファイルの--skip_default_modelsを削除してから実行してください。

実行結果

file1

無事に学習まで実行できました。

内蔵GPUのIntel(R) Arc(TM) Pro 140T を使用して学習しているのは残念ですが、PyTorchの安定版がBlackwell世代の sm_120に対応していないのが主な原因です。深追いはせず、PyTorchのリリースを待とうと思います。

まとめ

RTX PRO 1000でStyle-Bert-VITS2を動かすべく検証しましたが、結果として学習は別の内蔵GPUで行うことになりました。

アプリが動かないよりはマシなので、ひとまずこの構成で使用して、安定版のリリースがあれば対応しようと思います。

AUTHOR

橋本 隼佑

朝日放送テレビ株式会社 技術局 技術開発部

新卒入社から2年半マスターでTVの運用監視業務を担当。2024年11月にDX・メディアデザイン局 SDチームに配属され周囲のタイピング速度に圧倒され中…

WORK@ABC

技術力を培うための
環境と文化

ABCに昔から根付く「自分たちで開発する」文化を支える環境や取り組みをご紹介します
ABCについてもっと知る