Irodori-TTSをROCmで動かす(Ubuntu編)

Ubuntu
スポンサーリンク

Amazonのアソシエイトとして、当ブログは適格販売により収入を得ています。

最近YouTubeでちらほら見かけるので、動くのか試してみました。
Ryzen9 7900無印の内蔵GPUで確かめたので、ちょっと環境構築方法が特殊です。
参考にならないかもしれませんが、一応記事にします。

最新のROCmは対応していない

Ryzen9 7900無印の内蔵GPUではROCm6.4までしか対応(公式では、そもそも対応なんてしていませんが)していません。
ROCm正式対応のハードウェアは以下のリンクから確認できます。

System requirements (Linux) — ROCm installation (Linux)
System requirements for AMD ROCm

そしてROCm6.4をインストールするためにはLinuxカーネルを6.14まで戻さなくてはなりません。

Linuxカーネルを6.14に戻す方法はこちらの記事で書いています。

ROCmは「amdgpu-install_6.4.60403-1_all.deb」を使いました。
こちらから探せます。

環境を構築

今回も「uv」を使います。
「uv」についてはこちらで説明しています。

sudo apt update
sudo apt install cmake build-essential

git clone https://github.com/Aratako/Irodori-TTS.git
cd Irodori-TTS

uv venv --python /usr/bin/python3
source .venv/bin/activate

#記事を書いた時点で、torchaudioが抜けていました。
uv pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/rocm6.4

次にrequirements.txtをインストールする前に、

この2つを「#」でコメントアウトします。

uv pip install -r requirements.txt

ここまでで環境の構築は完了です。

音声を生成しよう

公式では、

uv run python infer.py \
  --hf-checkpoint Aratako/Irodori-TTS-500M-v2 \
  --text "今日はいい天気ですね。" \
  --no-ref \
  --output-wav outputs/sample.wav

という感じになっていますが、「uv run」を使うと、なぜかcuda用のpytrochをインストールされてしまいます。
なので、

export HSA_OVERRIDE_GFX_VERSION=10.3.0 #内蔵GPUでROCm6.4を使うため偽装コマンドを使います

.venv/bin/python infer.py \
  --hf-checkpoint Aratako/Irodori-TTS-500M-v2 \
  --text "今日はいい天気ですね。" \
  --no-ref \
  --output-wav outputs/sample.wav

というように「.venv/bin/python infer.py」を使って下さい。
これで生成が始まります。

最後に

事情があって、Ryzen9 7900の内蔵GPUを使っていますが、これだと音声生成に1時間以上かかります。
更に、この内蔵GPUではノイズのみの音声しか生成されませんでした。

皆さんは、普通にROCm対応のRXシリーズとROCm7を使って下さい。

とはいえ、CPUのみの生成だと1分くらいなので、ぶっちゃけGPUはいらないんじゃないかと思います。
CPUなら音声も問題なく生成できます。
ちなみに

.venv/bin/python infer.py \
  --hf-checkpoint Aratako/Irodori-TTS-500M-v2 \
  --text "今日はいい天気ですね。" \
  --no-ref \
  --model-device cpu \
  --codec-device cpu \
  --output-wav outputs/sample.wav

これでCPUで動くようになると思います。

今回は以上です。

追記
Intel Arc対応版を書いていて気づいたのですが、ROCm版の音声のノイズは、もしかしたら「torchcodec」のせいかもしれません。ROCm7で動くようになっていれば良いのですが、もしノイズが消えなかったらごめんなさい。
その時は、Irodori-TTSをIntel Arcで動かす(Ubuntu編)の「inference_runtime.py」を試してみて下さい。

問題の正体はMIOpenでした。
ROCmで公式にサポートされているハードウェアならこのMIOpenが最適な計算方法を持っているのですが、内蔵GPUのようなROCmが使用される想定外のものだとMIOpenが計算方法を見つけ出そうとして暴走してしまうとのことでした。


import time
from collections.abc import Callable
from dataclasses import dataclass
from pathlib import Path

import torch
import torchaudio

#下の2行ほど追加してください
torch.backends.cudnn.enabled = False
torch.backends.cudnn.benchmark = False
# これで、AMD(ROCm)環境でのMIOpenのバグを防ぎ、安全な計算を強制する

from safetensors import safe_open
from safetensors.torch import load_file as load_safetensors_file

inference_runtime.pyの冒頭部分を上のように修正すると、

生成時間も1時間(3600秒)より遥かに早く生成できるようになります(まぁそれでもCPUの方が早いですが・・・)。

ただ、たまにノイズのみの生成で終わることがあります・・・。
まだ、完全な方法ではないですね。


Amazon | 玄人志向 Intel Arc B580 搭載 グラフィックボード GDDR6 12GB 【国内正規代理店品】 AR-B580D6-E12GB/DF | 玄人志向 | グラフィックボード 通販
玄人志向 Intel Arc B580 搭載 グラフィックボード GDDR6 12GB 【国内正規代理店品】 AR-B580D6-E12GB/DFがグラフィックボードストアでいつでもお買い得。当日お急ぎ便対象商品は、当日お届け可能です。アマ...
Amazon | ASUS AMD Dual Radeon RX 9060 XT 16GB GDDR6ビデオカード DUAL-RX9060XT-16G 国内正規代理店品 | ASUS | グラフィックボード 通販
ASUS AMD Dual Radeon RX 9060 XT 16GB GDDR6ビデオカード DUAL-RX9060XT-16G 国内正規代理店品がグラフィックボードストアでいつでもお買い得。当日お急ぎ便対象商品は、当日お届け可能です。...
Palit RTX 5060 Ti 16GB GDDR7 PCIe 5.0 グラフィックボード
Palit(パリット) GeForce RTX 5060 Ti Infinity 3 16GB / NE7506T019T1-GB2061S / グラフィックボードがグラフィックボードストアでいつでもお買い得。当日お急ぎ便対象商品は、当日お...

「Pro B50」やAsRock製の「Pro B60」なんてめずらしいモノが出てますね。
Amazon倉庫からの出荷ではないので、購入する時は自己責任でお願いします。

Amazon | ASRock Intel Arc Pro B60 Creator 24GB グラフィックスカード、Intel Xe2-HPGアーキテクチャ、24GB GDDR6、PCIe 5.0、4X DisplayPort 2.1、ブロワーデザイン、0dBサイレント冷却。 | ASRock | グラフィックボード 通販
ASRock Intel Arc Pro B60 Creator 24GB グラフィックスカード、Intel Xe2-HPGアーキテクチャ、24GB GDDR6、PCIe 5.0、4X DisplayPort 2.1、ブロワーデザイン、0d...
Amazon | Intel 33P6PEB0BB Arc Pro B50 16GB ビデオカード。 | インテル | グラフィックボード 通販
Intel 33P6PEB0BB Arc Pro B50 16GB ビデオカード。がグラフィックボードストアでいつでもお買い得。当日お急ぎ便対象商品は、当日お届け可能です。アマゾン配送商品は、通常配送無料(一部除く)。

コメント

タイトルとURLをコピーしました