RunPod移行ガイド:はじめに
【更新状況】
2024年12月24日(火)
記事ページを公開しました。
この記事では
✔︎ クラウドGPUサービスの「RunPod」を初めて使う方
✔︎ Google ColaboratoryでRVC WebUIを使われていた方
を対象に
・RunPodの導入方法
・RVC WebUIを使うにあたっての「Google Colaboratory」と「RunPod」の操作の違い
などについて解説していきます。
尚、RVC WebUIを初めて使い始める方の場合には、このページの情報で基本的なことを理解した上で、以下のチュートリアル記事
:【RVC v1モデル対応版】RunPod編:日本人のためのRVC WebUIの使い方(設定詳解)
を参照いただくと、RVC WebUIの使い方に対する理解が深まるのではないかと思います。
【動画で解説】移行ガイド:RunPodでRVC WebUIの使う方法
【移行ガイド】RunPod編 – RVC WebUIの使い方入門:AIボイスチェンジャー
RVC WebUI with RunPod – AI Voice Changer Tutorial
視聴時間:1時間14分37秒
文字情報だけでは理解しにくい場合などにご活用ください。
一度動画を視聴いただき、手順の全体像のイメージを作ってから、記事の内容に沿って手順をすすめていただけると、つまずきにくいかと思います。
【動画の内容:移行ガイド – RunPodでRVC WebUIの使い方】
0:00 オープニング
0:39 はじめに
2:39 RunPodでRVC WebUIを実行する手順
3:55 RunPodの登録手順
5:40 RunPodの課金方法
8:30 ポッドの設定
22:04 JupyterLabの起動
25:02 RVC WebUIの起動
42:10 実行コード:RVC WebUIの起動
47:15 RVC WebUIで学習
54:43 RVC WebUIでモデル推論
59:11 聴き比べ:4パターンのRVC WebUI
1:01:37 ディスク容量を管理する方法
1:07:41 ポッドを停止・削除する方法
1:08:59 ディスク容量の変更方法
1:10:09 GPUの数を変更する方法
1:13:08 おわりに
RunPodでRVC WebUIを実行する手順
①ファイルのダウンロード:
ノートブックのファイルをダウンロードされていない方は、以下のページ
ダウンロード:RVC v1モデル – オリジナル版RVC WebUIチュートリアル用のノートブック
のノートブック(ipynbファイル)をダウンロードします。
②RunPodのウェブサイトへ:
その後、RunPodに「Login」(ログイン)します。
登録がまだの方は「Sign up・Sign in」(サインアップ・サインイン)します。
確認時点の情報では、RunPodでは、2024年12月31日までベータ版として「Referral Program」(紹介プログラム)を実施中のようです。
紹介リンクから、新規登録をしていただくと
・Pod(ポッド)利用料の3%のクレジット
* Pod:利用するコンピュータの1単位
* クレジット:RunPodのサービス内のみで使えるお金
が紹介者に還元される仕組みになっています。
過去の海外のチュートリアルなどを参照してみると、紹介リンクから新規登録してくださった方にも
・RunPod上で使えるクレジットがいくらか付与される
という情報も見かけましたが、2024年11月時点では、新規登録してくださった方への特典はRunPodの公式サイト上には明記されていませんでしたので、RunPodに問い合わせをしてみました。
2024年11月時点で頂いた回答としては
・紹介者のみの特典
ということで、新規登録してくださった方への特典はないとのことでした。
新規登録してくださった方への特典はありませんが、もし、このサイトの運営者の活動をご支援いただける心の器の大きな方は、こちら
RunPod紹介リンク:
RunPod – 子供プログラマー(RehabC – デジタルで、遊ぶ。)の紹介リンク
から新規登録をしていただけますと幸いです。
ご支援いただいたクレジットは、RVC WebUIを起動するためのプログラムの保守・点検や、GPUを活用したRVC WebUIをはじめとした新たなAIプログラムのチュートリアル・コンテンツ作成に向けた検証の際などにご活用させていただきます。
また、そういうのはちょっと…
という方は、こちら
RunPodリンク:
RunPod
の通常のRunPodへのリンクや、ご自身で検索したRunPodのページから新規登録をしてみてください。
③RunPodの登録手順:
RunPodへの登録はGoogleアカウントでもできます。
以下は、Eメールアドレスを使った登録方法の手順です。
登録方法は、まず
・Eメールアドレス
・パスワード
を入力後に「Continue」(続ける)をクリックします。
画面が以下の表示に変わります。
その後、登録したEメールアドレスに「Sign up Link」(サインアップリンク)が送られてくるので、送られてきたメール内の
・「Sign up to RunPod」(サインアップRunPod)
のボタンをクリックすると認証(Verify)されます。
認証後に表示される画面の「Terms of Service」(利用規約)画面内にある
・「Terms of Service」(利用規約)
のテキストリンク先で利用規約を確認後に
・I have read and agree to the RunPod Terms of Service.
(私はRunPodの利用規約に同意します)
にチェックを入れます。
RunPodのニュースレターの希望有無である
・Subscribe to newsletter for latest news from RunPod.
(RunPodの最新ニュースのニュースレターのメール配信を希望する)
は、お好みに応じてチェックを入れます。
チェックを入れた場合には、ニュースレターが配信されます。
チェックができたら「Agree」(同意)をクリックします。
これで、RunPodへの新規登録は完了です。
④RunPodへの課金方法:
クラウドGPUサービスを使うには、RunPodへの課金が必要です。
RunPodは事前支払い制ですので、思いのほか計算量を使い過ぎてしまった場合に意図しない支払いを防げます。
課金するには
・ダッシュボードの左側の「Billing」(課金)
・ダッシュボード右上の「$0.00」(0ドル)
などをクリック後に表示される画面の「Add Credit」(クレジットを追加する)の「Amount」(課金金額)の所で課金する金額を入力します。
課金はドル計算で
・最低10ドル
から指定できます。
その後
・Pay with Card(クレジットカード・プリペイドカードで支払いする)
・Pay with Crypto(仮想通貨Cryptoで支払いをする)
で、支払方法を選択します。
クレジットカード・プリペイドカードで支払いする場合には
・Pay with Card(クレジットカード・プリペイドカードで支払いする)
と表示されている状態でボタンをクリックします。
Cryptoという仮想通貨で支払いをする場合には
・Pay with Crypto(仮想通貨Cryptoで支払いをする)
と表示された状態でボタンをクリックします。
「Pay with Crypto」(仮想通貨Cryptoで支払いをする)を選択した場合の支払いは、Cryptoのアプリ
を介して支払いを行います。
「Pay with Card」(クレジットカード・プリペイドカードで支払いする)を選択した場合の支払いは「stripe」(ストライプ)というサービスを介して行われます。
「通貨を選択」で日本円を選択後に、必要情報を入力後に
・「支払う」
* 両替手数料も含まれるようでした
(2024年10月時点では「2%」の手数料・2024年11月時点では「4%」の手数料)
ボタンをクリックします。
カード支払いの場合、「カード保有者の名称」はカードに記載されているローマ字の名前を入力すれば大丈夫でした。
プリペイドカードで支払いを行われる方の注意点としては
・その時点で「100ドル」換算のお金がチャージされていないと拒否される
ことです。
100ドルのチャージが満たされていないと
・カードが支払い拒否されました。別のカードをお試しください。
と表示されます。
支払日のレートで100ドル換算のお金をチャージした後に支払いをすると課金ができるようでした。
課金がうまくいけば「Billing」(課金)のページの表示の
・Balance(残高)
に課金額が反映されます。
これで、RunPodを使うための最低限の準備ができました。
以下に、事前にダウンロードしたノートブックを使ってRVC WebUIを起動するまでの方法を解説していきます。
⑤RunPodでGPUのコンピュータの構成を設定:
RunPodでGPUをレンタルするには管理画面の左側の「Pods」をクリック後に表示される画面の
・「+ Deploy」
・「Deploy a Pod」
をクリックします。
「Select an Instance」(インスタンスの選択)の設定で
・GPU
を選択しておきます。
次に、「Cloud Type」(クラウドの種類)の選択メニューで
・Secure Cloud(セキュア・クラウド:安全なクラウド)
* 信頼できるパートナーによってT3/T4データセンターで実行。緊密なパートナーシップにより、冗長性、セキュリティ、およびダウンタイムを軽減する高速応答時間を備えた高い信頼性が実現。機密性の高い環境を求める方は、Secure Cloudがお勧め。
を選択します。
特に、セキュリティ面を気にされない方は
・Community Cloud(コミュニティ・クラウド)
* RunPodの招待制で、RunPod社の基準を満たした方を採用。電力とネットワークの冗長性はそれほど高くないが、品質と手頃な価格を兼ね備えた優れたサーバーを提供。機密性は求めないが、安価なサーバーを求める方向けのサービス。
の利用も検討してみてください。
また、一部の高性能GPUに限られますが「Global Networking」(グローバル・ネットワーキング)というオプションもあります。
「Global Networking」を有効化すると、ポッドの管理画面に「Global Network Hostname: 〜.runpod.internal」(グローバル・ネットワークのホストの名前:〜.runpod.internal)というDNSレコードの項目が追加されます。
同じローカル ネットワーク上にあるかのようにポッドが相互に通信できるようになるとのことです。
説明ページの情報を参考に、ターミナルで試行錯誤してみましたが、使い方はわかりませんでした…
このチュートリアルでは、この機能は使わずに手順を進めていきます。
続いて、具体的なGPUを選択していきます。
GPUは「NVIDIA製のGPU」を使います。
一般的にRVC WebUIに必要なGPUとしては
・GPUメモリ(VRAM) 6GB以上
という情報があります。
ただ、これまでに報告されている情報や個人的な経験値を考慮すると、ある程度の「データセットの規模」や「バッチサイズ」で学習させる際には、おそらく
・最低でもGPUメモリは16GB
はないと、現状では厳しいのではないかと推測しています。
【参考例】
1〜3秒の音声ファイル100個で100回学習させた際には
「バッチサイズ 20 → GPUメモリの消費量 12GB台」
* Google ColaboratoryのGPUメモリ:NVIDIA Tesla T4 16GBの例
そのため、チュートリアルでは試しに
・RTX A4000(16 GB VRAM)
* NVIDIA製GPU(Previous gen:前世代)
を選択してみます。
GPUに関しては、「データセットの規模」や「バッチサイズ」によって要求される容量が変わりますので、何回か使う中で、個々の方にとっての(コストパフォーマンス的に)最善のGPUを探してみてください。
【参考情報】
「RVC v1モデル – オリジナル版RVC WebUIチュートリアル用のノートブック」(「CUDA:11.6」を利用)に対応しているRunPodのGPUの一覧です。
NVIDIA Previous Gen(前世代のNVIDIAのGPU)
- A100 SXM 80GB
- A100 PCIe 80GB
- A40 48GB
- RTX A6000 48GB
- RTX A5000 24GB
- RTX 3090 24GB
- RTX A4500 20GB
- RTX A4000 16GB
GPUを選択する際に参考にしてみてください。
「Configure Deployment」(デプロイの設定)では、はじめに
・Pod Template(ポッドのテンプレート)
を選択します。
「RVC v1モデル – オリジナル版RVC WebUIチュートリアル用のノートブック」を使うためには、このサイトの運営者が作成した以下のRunPodのテンプレート
・Ubuntu 20.04 – Python 3.10 – CUDA 11.6 – 30GB
注:Container Disk 30GB・Volume Disk 30GB:合計 60GB
・Ubuntu 20.04 – Python 3.10 – CUDA 11.6 – 60GB
注:Container Disk 60GB・Volume Disk 60GB:合計 120GB
・Ubuntu 20.04 – Python 3.10 – CUDA 11.6 – 100GB
注:Container Disk 100GB・Volume Disk 100GB:合計 200GB
をご活用ください。
RunPodで使えるテンプレートの作成に難渋しましたが、試行錯誤を繰り返すうちに、ようやくオリジナル版のRVC WebUIのための環境を構築できるテンプレートの作成に成功しました。
テンプレートでは「RVC v1モデル – オリジナル版RVC WebUI」を使うためのコンピュータの構成(Linux OS・Python・CUDAバージョンの指定)と、RunPod上でRVC WebUIを使うために必要なポート番号を設定してありますので、テンプレートの選択で間違えないように注意してください。
チュートリアルでは
・Ubuntu 20.04 – Python 3.10 – CUDA 11.6 – 30GB
を選択しています。
ここで、ディスク容量に関して、違いを理解しにくいかと思いますので、簡単に解説しておきます。
「Container Disk」(コンテナディスク領域)は一時的な保存領域であり、そこに保存したものはすべてポッドを停止するとリセット(削除)されます。
一方、「Volume Disk」(ボリュームディスク領域)は永続的な保存領域で、ポッドを停止後も保持されます。ポッドを削除するとリセット(削除)されますので、ポッドを削除する前に、必要なファイルなどはローカル環境(自分のパソコンなど)にダウンロードしておいてください。
また、「Network Volume」(ネットワークボリューム)というオプション(別途料金)もあります。
暫定的に容量を設定しておきましたが、RVC WebUIを使う中で、必要に応じて容量を変更することもできますので、容量の変更方法に関しては、「RunPodでディスク容量の変更方法」の項目で、後ほど解説させていただきます。
【参考情報】
オリジナル版のRVC v1モデルのRVC WebUIを起動するために必要な容量の目安
・「Container Disk」(コンテナディスク領域:一時保存領域)
:2.6GB・「Volume Disk」(ボリュームディスク領域:永続保存領域)
:12GB
*「Volume Disk」は「workspace」フォルダ内の情報が保持される仕組みのようです。
GPUを搭載する数を設定する
・GPU Count(GPUの数)
では、GPU数を指定できます。
チュートリアルでは、「RTX A4000(16 GB VRAM)」のGPUを1つだけ使いますので
・16GB × 1 = 16GB
ということで合計「16GB」のGPUメモリでRVC WebUIを使っています。
割り当てられるコンピュータにもよるようですが、GPUの数に関しても後ほど幾らかは調整できるようでしたので、こちらも後ほど「RunPodでGPUの数を変更する方法」の項目で解説させていただきます。
「Instance Pricing」(インスタンスの価格)では
・On-Demand(オンデマンドプラン)
* 使用者の意思で終了しない限り、基本的に使用中のポッドを使い続けることができるプラン。秒単位で課金されます。
・Savings Plan(セービングプラン:お値打ちプラン)
* 所定の期間中(例:1週間分)の料金が一括で要求されますが、24時間使い続ける方の場合には「On-Demand」(オンデマンドプラン)よりはお値打ちになるプラン。
・Spot(スポットプラン)
* 余剰分のGPUを安価で使える分、余剰のGPUがなくなった場合に、使用者の意思に反して突然、使用中のポッドが使えなくなることもあるプラン。秒単位で課金されます。
のプランから選択できます。
チュートリアルでは、コンピュータを使った分だけ、支払いが発生し、安定的に使える
・On-Demand(オンデマンドプラン)
を選択していきます。
「Spot」(スポットプラン)を試した感じでは、RVC WebUIを起動するための依存関係をインストール中に突然終了してしまうことがありましたので、RVC WebUIを使う方にはお勧めしません。
数分程度でできる、ちょっとした、GPUを使うプログラムを使いたい場合には便利かもしれません。
「Savings Plan」(セービングプラン:お値打ちプラン)は、24時間常時プログラムを動かし続けている方にとってはいいかもしれませんが、RVC WebUIを自分で使う分には、「On-Demand」(オンデマンドプラン)が妥当ではないかと思われます。
「Encrypt Volume」(ボリュームの暗号化)では、ボリュームを暗号化するかどうかを設定できます。
表示される説明を読んでみると
【Encrypt Volumeの説明】
Encrypted volumes provide better data security but will incur a performance penalty and CANNOT be resized later.
日本語訳:
暗号化されたボリュームは、より良いデータセキュリティを提供しますが、パフォーマンスペナルティが発生し、後でサイズを変更することはできません。
ということのようです。
おそらく「Volume Disk」(ボリュームディスク領域:永続保存領域)のことかと思いますが、チュートリアルでは「この機能はオフ」にしておきます。
RVC WebUIを使う中で、適正なボリュームの容量がわかってきたら必要に応じて再度RVC WebUIの環境を構築し直して、この機能をオンにするといいかもしれません。
注意点として「Encrypt Volume」(ボリュームの暗号化)の「機能をオン」にすると「Pods」の管理画面上で「Volume Disk」(ボリュームディスク領域:永続保存領域)の現在の使用率が表示されなくなるようでした。
「機能をオン」にした場合に、「Volume Disk」(ボリュームディスク領域:永続保存領域)の容量を確認できるコードを【残りのディスク容量の確認方法】の項目に掲載しておきましたので、必要時にご活用ください。
ここまでの設定を行うと、最後に以下のサマリー
・Pricing Summary(価格の要約)
・Pod Summary(ポッドの構成の要約)
が確認できます。
確認時点の「Pricing Summary」(価格の要約)では
GPU Cost: $0.32 / hr
Running Pod Disk Cost: $0.008 / hr
Stopped Pod Disk Cost: $0.008 / hr
ということで
・GPU使用量はポッド “起動中” に “1時間あたり0.32ドル” を秒換算で請求
・容量の使用量はポッドの “起動・停止問わず” に “1時間あたり0.008ドル” を秒換算で請求
とのことでした。
注意点としては、容量の使用料金は、事前に設定した容量の確保量
・「Container Disk」(コンテナディスク領域:一時保存領域):30GB
*「Running Pod Disk Cost」(ポッド稼働中の使用料)に反映
・「Volume Disk」(ボリュームディスク領域:永続保存領域):30GB
*「Running Pod Disk Cost」(ポッド稼働中の使用料)「Stopped Pod Disk Cost」(ポッド停止中の使用料)に反映
に依存するという点です。
ポッド停止中の料金を支払いたくない場合には、「Volume Disk」(ボリュームディスク領域:永続保存領域)を「0GB」にします。
ただ、今回の「RVC v1モデル – オリジナル版RVC WebUIチュートリアル用のノートブック」では
・「workspace」フォルダ内にRVC WebUI起動用の開発環境を整える
ので「Volume Disk」(ボリュームディスク領域:永続保存領域)を「0GB」にすると
・次回起動時に、再度、1から環境を整える必要
がありますので、用途に応じてどうするか検討してみてください。
「Volume Disk」(ボリュームディスク領域:永続保存領域)を「30GB」とした場合に
・0.008ドル × 24時間 × 31日 = 5.952ドル/月
* 価格は一例です。
ということで、維持費に月換算で約「6ドル」(一例)かかります。
「30GB」を「60GB」に変更した場合には約2倍の維持費になりますので、あまり費用をかけたくない場合には、
・適宜ファイルをローカル環境にダウンロードし、不要となった学習モデルのファイルやログフォルダを削除する
などの対応をするといいかと思います。
「RVC v1モデル – オリジナル版RVC WebUIチュートリアル用のノートブック」にも、ファイルやフォルダ削除用の参考コードを「RunPodでディスク容量を管理する方法」の項目に記載しておきましたので、必要な方は適宜ご活用いただけますと幸いです。
サマリーを確認し、料金やコンピュータの構成に問題がなければ
・Deploy On-Demand
をクリックし、コンピュータを起動させます。
何度か試した範囲では「Pod Summary」(ポッドの構成の要約)
Pod Summary
1x RTX A4000 (16 GB VRAM)
20 GB RAM • 5 vCPU
の情報の一番下の構成「20 GB RAM • 5 vCPU」(一例)が、「Deploy On-Demand」を実行後に変更されることがあるようでしたので、あくまで参考程度に捉えていただくといいかもしれません。
「Spot」(スポットプラン)で検証中に経験した例としては、コンピュータのメモリ(上の例では「20 GB RAM」)が「512MB」となった場合には、RVC WebUIの依存関係をインストール中にメモリオーバー(メモリの容量越え)となりRVC WebUIの起動まで到達できないことも経験しました。
「On-Demand」(オンデマンドプラン)の場合には、コンピュータのメモリの兼ね合いでRVC WebUIの起動に至らないといったことはありませんでしたので、そいった点からも「Spot」(スポットプラン)ではなく、「On-Demand」(オンデマンドプラン)を利用するのが無難かもしれません。
⑥RunPodでGPUクラウドに接続:
先ほどの手順を実施後に、設定した構成でコンピュータが構築されます。
処理の経過を確認するには、右端の丸いボタンをクリックします。
準備が完了するまでしばらく待ちます。
ビルド完了までの時間は、主に、割り当てられたコンピュータの回線の「下り速度」(データ受信の通信速度:ダウンロードに関係)に左右されるようでした。
何回か試した範囲の情報では、今回のコンピュータの構成(Secure Cloud・RTX A4000・On-Demand)の場合には
・2000Mbps(メガビット/秒)
* 8で割るとMB/秒の単位になる
台の回線が割り当てられる傾向がありました。
「2000Mbps」あたりだと「4分前後」で処理が完了するようでしたので、準備が完了するまでしばらく待ちます。
稀に「10000Mbps」あたりの下り速度の回線が割り当てられることがありましたが、1分程度で準備ができることもありました。
ただ、RunPod自体やダウンロード先の回線の混み具合なども影響するのか、必ずしも「下り速度」(データ受信の通信速度:ダウンロードに関係)が速いからといって環境構築が速いとは限らないようでした。
コンピュータの準備ができたので、GPUクラウドに接続してRVC WebUIを起動していきましょう。
⑦RunPodでJupyterLabを起動する:
今回の方法では、RVC WebUIを起動するためには、まずは、JupyterLabを起動する必要があります。
それでは、GPUクラウドに接続して、JupyterLabを起動する手順を一緒にやっていきましょう。
GPUクラウドに接続するには
・Connect(接続)
ボタンをクリックします。
JupyterLabで「RVC v1モデル – オリジナル版RVC WebUIチュートリアル用のノートブック」を使うための「token」(トークン:パスワード)を取得するために、まずは、「Web Terminal」(ターミナル)を起動しておきます。
「Web Terminal」(ターミナル)を起動するには
・Start Web Terminal(ウェブターミナルを開始)
のボタンをクリックします。
その後、画面に表示される
・Connect to Web Terminal(ウェブターミナルに接続)
のボタンをクリックします。
クリック後に、新規のタブで「Web Terminal」(ターミナル)を使えるようになります。
続いて、ノートブックを使えるようにするために、JupyterLabを起動します。
JupyterLabを起動するには
・Connect to HTTP Service【Port 8888】(HTTPサービスに接続:ポート 8888)
をクリックします。
クリック後に表示される新規のタブの画面上に表示されている以下のコマンド
コピー&ペースト用コード
jupyter server list
をコピーして、先ほど起動しておいた「Web Terminal」(ターミナル)に貼り付け、コードを実行(「enter」キーを押す)します。
コードを実行後に
出力結果:(一例)
[JupyterServerListApp] Currently running servers:
[JupyterServerListApp]http://localhost:8888/?token=q06robe87acwalzpkddp::
などと表示されるので「token=」〜「::」の間の文字をコピーします。
(上記の例では「q06robe87acwalzpkddp」の部分をコピーしています。)
JupyterLabが起動しているタブに戻り、コピーしたトークンを
・Password or token:(パスワード または トークン)
の入力欄に貼り付けて「Log in」(ログイン)をクリックします。
これで、JupyterLabが起動できました。
ここまでの手順、お疲れ様でした。
英語環境の上に初めての作業のため、かなりお疲れではないかと思います。
ここからは、既にGoogle ColaboratoryでRVC WebUIを使ったことがある方であれば、それほど難しくはないかと思いますので、もう少し、お付き合いいただけますと幸いです。
⑧RunPodでRVC WebUIを起動する:
まずは、事前にダウンロードしておいたノートブック
・RunPod-v1-RVC-WebUI-Historical-Legacy-for-Japanese-AI-beginners.ipynb
をJupyterLabにアップロードします。
アップロード方法は簡単で
・JupyterLabの左側の枠の中にファイルをドラッグ&ドロップ
するだけです。
JupyterLabを起動直後の環境では
・「workspace」フォルダ
内に、ノートブックのファイルがアップロードされます。
アップロードされたノートブックを開くには
・「ファイルをダブルクリック」または 「ファイルを選択した状態で “enter” キーを押す」
とノートブックを画面上に表示させることができます。
後は、基本的に、ノートブックに記載されている手順を実行していただければ大丈夫です。
ここからは、ポイントを絞って解説していきます。
【手順0:JupyterLabの日本語化】
今回指定しているRunPodのテンプレートには、日本人の方が開発環境の操作で困らないように、事前にJupyterLabを日本語化するために必要なファイルをインストールしておきました。
英語の環境のままで大丈夫な方は、ここの手順は飛ばしてください。
個人的には、やはり日本人ですので、日本語にすると安心感があります。
JupyterLabを日本語化するには、画面上部の「Settings」(設定)をクリック後に表示される「Language」(言語)の所で
・Japanese(Japan)- 日本語(日本)
をクリックします。
その後、画面に表示される
・Change interface language?(インターフェイスの言語を変更しますか?)
で
・Change and reload(言語を変更し再起動する)
のボタンをクリックします。
未保存の状況など日本語化を実行するタイミングによっては、ページから移動するか?聞かれるので、問題がなければ
・「このページから移動する」
をクリックします。
再起動後に、JupyterLabが日本語化されます。
JupyterLabの日本語化の設定は、一度ポッドを停止させると、言語の設定がリセットされるようでしたので、ポッドを再度使う際に、一番初めにJupyterLabを日本語化するようにしてみてください。
【手順1:GPU・各種バージョンの確認】
ここの手順はコードを実行します。
ここで、Google Colaboratoryとの操作の違いに戸惑う方もいるのではないかと思いますので、以下に解説しておきます。
コードを実行するにはJupyterLab上で以下の
・実行コードを選択した状態
で
・ノートブックの画面の上にある「▶︎」(三角マーク)をクリック
するか
・【Windowsの場合のショートカットキー】「Ctrl」+「enter」キーを押す
・【Macの場合のショートカットキー】「command」+「enter」キーを押す
と選択したコードを実行できます。
コードを実行中は、コードが記載されている枠の左上に
・[*](アスタリスク)
が表示されます。
コードの実行が完了すると
・[1]
などとコードを実行した順番を表す数字が表示されます。
GPUは「NVIDIA製」(エヌビディア製)のものを選択しておきます。
RunPodのテンプレート「Ubuntu 20.04 – Python 3.10 – CUDA 11.6」を使う場合には、出力結果の表示が
・CUDA:11.6
・cuDNN:8.5.0.96
・Linux OS:Ubuntu 20.04.6 LTS(Focal Fossa:debian)
・Python:3.10.x(2024年12月時点:3.10.15)
・PyTorch:torch 2.0.0+cu117
になるかと思います。
実行コード
# @title 実行コード
# GPUの情報を確認
print("CUDAのバージョン確認")
!nvidia-smi
!nvcc -V
!free -h
print("\n\n")
print("cuDNNのバージョン確認")
!pip show nvidia-cudnn-cu11
print("\n\n")
print("Linux OSのバージョン確認")
# Linuxのバージョン確認
!cat /etc/os-release
print("\n\n")
print("Pythonのバージョン確認")
# Pythonのバージョン確認
!python3 --version
print("\n\n")
print("PyTorchのバージョン確認")
import torch
print('PyTorch' + torch.__version__)
出力結果
[1]
CUDAのバージョン確認
〜
+-----------------------------------------------------------------------------------------+
| NVIDIA-SMI 550.90.07 Driver Version: 550.90.07 CUDA Version: 12.4 |
|-----------------------------------------+------------------------+----------------------+
| GPU Name Persistence-M | Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap | Memory-Usage | GPU-Util Compute M. |
| | | MIG M. |
|=========================================+========================+======================|
| 0 NVIDIA RTX A4000 On | 00000000:04:00.0 Off | Off |
| 41% 35C P8 14W / 140W | 2MiB / 16376MiB | 0% Default |
| | | N/A |
+-----------------------------------------+------------------------+----------------------+
+-----------------------------------------------------------------------------------------+
| Processes: |
| GPU GI CI PID Type Process name GPU Memory |
| ID ID Usage |
|=========================================================================================|
| No running processes found |
+-----------------------------------------------------------------------------------------+
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2022 NVIDIA Corporation
Built on Tue_Mar__8_18:18:20_PST_2022
Cuda compilation tools, release 11.6, V11.6.124
Build cuda_11.6.r11.6/compiler.31057947_0
total used free shared buff/cache available
Mem: 125Gi 7.7Gi 4.6Gi 16Mi 113Gi 117Gi
Swap: 0B 0B 0B
cuDNNのバージョン確認
Name: nvidia-cudnn-cu11
Version: 8.5.0.96
Summary: cuDNN runtime libraries
Home-page: https://developer.nvidia.com/cuda-zone
Author: Nvidia CUDA Installer Team
Author-email: cuda_installer@nvidia.com
License: NVIDIA Proprietary Software
Location: /usr/local/lib/python3.10/dist-packages
Requires: nvidia-cublas-cu11
Required-by: torch
Linux OSのバージョン確認
NAME="Ubuntu"
VERSION="20.04.6 LTS (Focal Fossa)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 20.04.6 LTS"
VERSION_ID="20.04"
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
VERSION_CODENAME=focal
UBUNTU_CODENAME=focal
Pythonのバージョン確認
Python 3.10.15
PyTorchのバージョン確認
PyTorch2.0.0+cu117
出力結果の右上に表示されている
・「CUDA Version: 12.4」
というのは、今回使わせていただいているGPUの
・NVIDIA RTX A4000(16GB)
が対応している
・互換性のある最高バージョンのCUDA
* CUDA(Compute Unified Device Architecture):クーダ
* NVIDIAが開発・提供しているGPU向けの汎用並列コンピューティングプラットフォーム・プログラミングモデル
を示しています。
その他にも、GPUの種類とCUDAバージョンの関係について調べてみると
・GPUの世代によって「互換性のある最低バージョンのCUDA」がある
* アーキテクチャの世代
ということがわかりました。
参考までに、2024年11月時点でRunPod上で表示されているNVIDIA製のGPUを世代ごとに列挙し、互換性のある最低バージョンをあてはめてみると、以下のようになります。
【NVIDIA Latest Gen】(最新世代のNVIDIAのGPU)
・アーキテクチャ名:
Hopper(ホッパー)・互換性のある最低バージョンのCUDA:
CUDA 12・GPU名:
H100 NVL 94GB
H100 SXM 80GB
H100 PCIe 80GB
・アーキテクチャ名:
Ada Lovelace(エイダ・ラブレス)・互換性のある最低バージョンのCUDA:
CUDA 11.8・GPU名:
LA40S 48GB
L40 48GB
RTX 6000 Ada 48GB
RTX 4090 24GB
L4 24GB
RTX 4000 Ada 20GB
RTX 2000 Ada 16GB
【NVIDIA Previous Gen】(前世代のNVIDIAのGPU)
・アーキテクチャ名:
Hopper(ホッパー)・互換性のある最低バージョンのCUDA:
CUDA 12・GPU名:
H200 SXM 143GB
・アーキテクチャ名:
Ampere(アンペア)・互換性のある最低バージョンのCUDA:
CUDA 11.1・GPU名:
A100 SXM 80GB
A100 PCIe 80GB
A40 48GB
RTX A6000 48GB
RTX A5000 24GB
RTX 3090 24GB
RTX A4500 20GB
RTX A4000 16GB
これらの情報から、今回利用しているテンプレートの設定である「CUDA 11.6」の環境では
・「NVIDIA Previous Gen」(前世代のNVIDIAのGPU)の「Ampere」(アンペア)
のGPUを使う必要があることがわかります。
具体的には、以下のGPU
・「CUDA:11.6」に対応しているGPU
- A100 SXM 80GB
- A100 PCIe 80GB
- A40 48GB
- RTX A6000 48GB
- RTX A5000 24GB
- RTX 3090 24GB
- RTX A4500 20GB
- RTX A4000 16GB
を使うようにします。
これからオリジナル版のRVC WebUIをRunPodで使う予定の方は、GPUを選択する際に上記の情報を参考にしながらGPUを選択してみてください。
今回のコンピュータの環境(使用しているテンプレート)では「CUDA:11.6」に設定してありますので「12.4」以下に互換性があるという表示ですので
・「NVIDIA RTX A4000(16GB)」は、「CUDA:11.1〜12.4」に対応
ということで「NVIDIA RTX A4000(16GB)」は使えるということがわかります。
【手順2:RVC WebUIのリポジトリをクローン】
ここも、【手順1】と同様にコードを実行します。
コードを実行するとGitHubから「Retrieval-based-Voice-Conversion-WebUI」のプログラムをRunPodのこのポッドにコピーされます。
(実行コードは省略)
処理が完了後に
・「Retrieval-based-Voice-Conversion-WebUI」フォルダ
を「ダブルクリック」または「フォルダを選択した状態で “enter” キーを押す」操作をして、フォルダの中身を表示させます。
前のフォルダの場所に戻りたい場合には
・「現在のフォルダ」が表示されている「1つ前のフォルダをクリック」
すると、直前のフォルダに移動することができます。
RVC WebUIを使うにあたっては
・「workspace」フォルダに行ける(戻れる)
こと
・「Retrieval-based-Voice-Conversion-WebUI」フォルダ内でファイル操作ができる
ことが求められます。
ここまでのファイル操作の手順が理解できれば、Google Colaboratoryを使ってきた方にとっては、JupyterLabの操作は概ね大丈夫なのではないかと思います。
【手順3:事前学習済みモデルなどの準備】
ここも、【手順1】【手順2】と同様にコードを実行します。
(実行コードは省略)
ダウンロードする処理速度は主に
・割り当てられたコンピュータの回線の「下り速度」(データ受信の通信速度:ダウンロードに関係)に左右
されます。
その他にも、RunPod自体やダウンロード先の回線の混み具合なども影響するかと思いますので、進む速度が遅い場合には気長に待ってください。
【手順4:RunPod内にデータセットと音声変換させたい音声ファイルを準備】
今回利用しているノートブックでは
・「/workspace/Retrieval-based-Voice-Conversion-WebUI/datasets/dataset」
*「workspace」フォルダ内の「Retrieval-based-Voice-Conversion-WebUI」内にある「datasets」フォルダの中に「dataset」フォルダ
に「dataset」フォルダが配置されています。
音声ファイルをアップロード前に、「dataset」フォルダが現在のフォルダになるように移動しておきます。
JupyterLabへは、フォルダ自体をアップロードすることができないので、
・アップロードしたい音声ファイルを全選択した状態
で、「dataset」フォルダ内にドラッグ&ドロップしてアップロードします。
JupyterLabへのアップロードは、主に、
・割り当てられたコンピュータの回線の「下り速度」(データ受信の通信速度:ダウンロードに関係)に左右
されますので、「2000Mbps」あたりの「下り速度」が割り当てられた方の場合には、「数百MB(メガバイト)台」の容量をアップロードされる場合には時間がかかります。
「2000Mbps」あたりの「下り速度」ですと、【手順5:RVC WebUIの起動】でも時間がかかりますので、アップロード待ちと並行して【手順5:RVC WebUIの起動】を実行していただいてもいいかと思います。
【参考コード】
Google ColaboratoryでRVC WebUIを使われていた方は、Google Driveからファイルを操作できるようにされていた方が主体かと思います。
ノートブックには、参考コードとして、Google Drive の「MyDrive」内のファイルを扱えるようにするコードも掲載しておきました。
JupyterLabにドラッグ&ドロップでアップロードする場合には、「数百MB(メガバイト)台」の容量の場合には、かなりの時間がかかります。
一方で、既にGoogle Driveにある同量のファイルを以下の実行コードでアップロードして頂ければ、より速くアップロードできるのではないかと思います。
手順①:
事前にGoogle Drive上でフォルダの共有設定で「リンクを知っている全員」に設定しておきます。
手順②:
共有フォルダのリンクを取得して以下のコード内の「共有フォルダのURL」のところを書き換えます。
【セル内でペーストを実行する方法】
JupyterLabのコードを記載するセル内では、右クリックを利用した「ペースト」(貼り付け)ができないようでしたので、ショートカットキーを利用して、「ペースト」(貼り付け)を実施します。
以下、パソコンのOS別の「ペースト」(貼り付け)のショートカットキーです。
・【Windowsの場合】「Ctrl」+「V」キーを押す
・【Macの場合】「command」+「V」キーを押す
その他にも「コピー」のショートカットキーも知っておくと便利です。
・【Windowsの場合】「Ctrl」+「C」キーを押す
・【Macの場合】「command」+「C」キーを押す
実行コード
# @title 実行コード(Google Driveからファイルをコピー)
# カレントディレクトリ(作業フォルダ)を「Retrieval-based-Voice-Conversion-WebUI」フォルダに設定
%cd /workspace/Retrieval-based-Voice-Conversion-WebUI
# gdownをインストール
!pip3 install --root-user-action=ignore gdown==5.2.0
# Google Driveにアップロードした音声ファイルのフォルダをRunPodにアップロードすることもできます
# 手順①:事前にGoogle Drive上でフォルダの共有設定で「リンクを知っている全員」に設定しておきます
# 手順②:共有フォルダのリンクを取得して以下の「共有フォルダのURL」のところを書き換えます
# コード例:!gdown --folder https://drive.google.com/drive/folders/〜?usp=drive_link -O /workspace/Retrieval-based-Voice-Conversion-WebUI/datasets/datasetDRIVE
#「workspace/Retrieval-based-Voice-Conversion-WebUI/datasets」内に「datasetDRIVE」という名前のフォルダを作成
!mkdir /workspace/Retrieval-based-Voice-Conversion-WebUI/datasets/datasetDRIVE
# 以下に指定したGoogle Driveの「共有フォルダのURL」から共有フォルダ内のファイルを「datasetDRIVE」フォルダ内にダウンロード
!gdown --folder 共有フォルダのURL -O /workspace/Retrieval-based-Voice-Conversion-WebUI/datasets/datasetDRIVE
# 手順③:ここのコードを実行後に「/workspace/Retrieval-based-Voice-Conversion-WebUI」フォルダ内にRunPodにアップロードが完了したら、必要に応じて共有フォルダのリンクを共有設定を「制限付き」に戻しておきます
1回目の実行であれば「共有フォルダのURL」の記載のところを実際のURLに変更していただければ「datasets」フォルダ内の「datasetDRIVE」フォルダに音声ファイルがアップロードできると思います。
他にも追加で新たなデータセットをアップロードしたい場合には、
・「!mkdir /workspace/Retrieval-based-Voice-Conversion-WebUI/datasets/datasetDRIVE」
のコードの
・「datasetDRIVE」
という名前を、半角英数で違う名前(例:「datasetDRIVE2」)にしていただき
・!gdown –folder 共有フォルダのURL -O /workspace/Retrieval-based-Voice-Conversion-WebUI/datasets/datasetDRIVE
のコードの
・「datasetDRIVE」
という名前を、「!mkdir 〜」のところで変更した名前と同じ名前(例:「datasetDRIVE2」)に変更してコードを実行すれば、新たなデータセットフォルダにデータセットをアップロードできるのではないかと思います。
実行コード(2回目の例:「datasetDRIVE2」フォルダにアップロード)
# @title 実行コード(Google Driveからファイルをコピー)
# カレントディレクトリ(作業フォルダ)を「Retrieval-based-Voice-Conversion-WebUI」フォルダに設定
%cd /workspace/Retrieval-based-Voice-Conversion-WebUI
# gdownをインストール
!pip3 install --root-user-action=ignore gdown==5.2.0
# Google Driveにアップロードした音声ファイルのフォルダをRunPodにアップロードすることもできます
# 手順①:事前にGoogle Drive上でフォルダの共有設定で「リンクを知っている全員」に設定しておきます
# 手順②:共有フォルダのリンクを取得して以下の「共有フォルダのURL」のところを書き換えます
# コード例:!gdown --folder https://drive.google.com/drive/folders/〜?usp=drive_link -O /workspace/Retrieval-based-Voice-Conversion-WebUI/datasets/datasetDRIVE2
#「workspace/Retrieval-based-Voice-Conversion-WebUI/datasets」内に「datasetDRIVE2」という名前のフォルダを作成
!mkdir /workspace/Retrieval-based-Voice-Conversion-WebUI/datasets/datasetDRIVE2
# 以下に指定したGoogle Driveの「共有フォルダのURL」から共有フォルダ内のファイルを「datasetDRIVE2」フォルダ内にダウンロード
!gdown --folder 共有フォルダのURL -O /workspace/Retrieval-based-Voice-Conversion-WebUI/datasets/datasetDRIVE2
# 手順③:ここのコードを実行後に「/workspace/Retrieval-based-Voice-Conversion-WebUI」フォルダ内にRunPodにアップロードが完了したら、必要に応じて共有フォルダのリンクを共有設定を「制限付き」に戻しておきます
また、推論(音声変換)を試してみたい音声ファイル(WAV形式 or MP3形式)もアップロードしておきます。
このノートブックでは
・「 /workspace/Retrieval-based-Voice-Conversion-WebUI/voice」
*「workspace」フォルダ内の「Retrieval-based-Voice-Conversion-WebUI」内にある「voice」フォルダ
に音声ファイルをアップロードします。
【手順5:RVC WebUIの起動】
ウェブインターフェース上で、学習や推論(音声変換)を実施します。
以下のコード
実行コード
# @title 実行コード
# カレントディレクトリ(作業フォルダ)を「Retrieval-based-Voice-Conversion-WebUI」フォルダに設定
%cd /workspace/Retrieval-based-Voice-Conversion-WebUI
# 仮想環境を有効化しRVC WebUIを起動
!bash webui.sh
を実行後に表示される
Running on local URL: http://0.0.0.0:7865
のURLが表示されたら、RunPodの「Pods」の管理画面の「Connect」(接続)をクリック後に表示される画面で
・Connect to HTTP Service [Port 7865](HTTPサーバーのポート7865に接続)
をクリックするとRVC WebUIが使えます。
【参考情報】
初回実行時には「PyTorch」をはじめとした、依存関係のインストールがありますので、かなりの時間がかかります。
以下は、初回実行時の所要時間の目安です。
下り速度:↓2452 Mbps(データ受信・ダウンロードの速度)の一例
・Create and activate python venv…
(仮想環境を構築中)
:1分以内・Installing torch and torchaudio etc..
(PyTorchなどをインストール中です…)
:7分・Requirements are being installed and checked…
(RVC WebUI起動に必要な依存関係をインストール&チェック中です…)
:17分
処理が完了する時間は、下り速度以外にも、RunPod自体やPython Package Index(PyPI)のサイトの回線の混み具合なども影響してくるのではないかと思います。
初回実行時は、数十分単位で、ある程度の時間がかかるので、不具合かと思わずに焦らずに待ってください。
2回目以降は、依存関係のインストールがありませんので、1分以内にはRVC WebUIが起動すると思います。
Google Colaboratoryとの違いとして、RunPodの場合には、一度ここまでの手順を実行していただければ、特定のポッドと契約中の永続的な保存領域である「Volume Disk」(ボリュームディスク領域)を確保している場合には、ポッドを停止後も現在の環境が保持されます。
そのため、2回目以降のポッドの起動時には
・【手順0:JupyterLabの日本語化】(任意)
・【手順5:RVC WebUIの起動】
の手順を実行するだけで大丈夫です。
【RVC v1モデル – オリジナル版RVC WebUIの外観】
【重要:ファイル・フォルダのパスを入力する際の注意点】
Google Colaboratoryの仕様と違う点として、JupyterLabの画面上で該当ファイル・フォルダを右クリック後に表示される「パスをコピー」を使って、パスを貼り付けると
JupyterLabで「パスをコピー」:「dataset」フォルダの例
workspace/Retrieval-based-Voice-Conversion-WebUI/datasets/dataset
となります。
RVC WebUIの「Train」(学習)で、データセットへのパスを入力するには
RVC WebUIの正しいパスの入力方法:「dataset」フォルダの例
/workspace/Retrieval-based-Voice-Conversion-WebUI/datasets/dataset
と入力する必要があります。
そのため、適宜、貼り付けたパスの先頭に半角英数で
・「/」(スラッシュ)
を追加していただく必要がありますので注意してください。
以下は、「Model Inference」(モデル推論)で音声変換したい音声ファイルへのパスを入力する例です。
ダメな例:「originalvoice.wav」の音声ファイルを使う例
workspace/Retrieval-based-Voice-Conversion-WebUI/voice/originalvoice.wav
正しい例:「originalvoice.wav」の音声ファイルを使う例
/workspace/Retrieval-based-Voice-Conversion-WebUI/voice/originalvoice.wav
【学習モデル・indexファイルの出力先】
学習モデル(pthファイル)は「weights」フォルダの中に出力されます。
また、indexファイルなどは
・「logs」フォルダ内に出力される該当フォルダの中
*「Input experiment name」(実験名)を「mi-test0」とした例
にあります。
JupyterLabの画面上で該当ファイルを右クリック後に表示される「ダウンロード」をクリックするとファイルをダウンロードできます。
その他にも、該当ファイルを右クリック後に表示される「現在のフォルダーをアーカイブとしてダウンロード」をクリックすると表示中のフォルダ(の中身)を圧縮ファイルにしてダウンロードできるようでした。
【モデル推論後の音声ファイルの出力先】
特定のフォルダに出力されませんので、その都度、RVC WebUIの画面上からダウンロードします。
ブラウザの種類によってはRVC WebUI上にダウンロードできる機能が反映されないようでしたので
のブラウザを使うようにしてください。
上記以外のプラウザでRVC WebUIを起動後も、一度割り当てられた以下のようなRVC WebUIのURL
・https://〜-7860.proxy.runpod.net/
* 現在のポッドと契約中は、同じURLが割り当てられます。
* 現在のポッドを削除すると、新規作成したポッドのURLは変更されます。
を、他のブラウザで閲覧すると、【手順5:RVC WebUIの起動】のコードを実行中の状態であれば、起動中のRVC WebUIを操作できます。
必要に応じて、上記のブラウザに切り替えて「Model Inference」(モデル推論)を実行してみてください。
* 注:オリジナル版のRVC WebUIの場合にはFireFoxでも、表示がわかりにくいですがダウンロードできるようになっていました。
【RVC WebUIを終了(停止)する方法】
RVC WebUIを終了(停止)するには
・ノートブックの画面の上にある「■」(四角マーク)をクリック
し、【手順5:RVC WebUIの起動】のコードを停止させます。
RunPodでディスク容量を管理する方法
以下の操作は【手順5:RVC WebUIの起動】のコードを停止(RVC WebUIを終了・停止)してから実行してください。
RVC WebUIが起動中は【手順5:RVC WebUIの起動】のコードが処理中の扱いになるため、ノートブック上の他のコードを実行できませんので注意してください。
【残りのディスク容量の確認方法】
「GPUのコンピュータの構成を設定」の際に「Encrypt Volume」(ボリュームの暗号化)の「機能をオフ」
にした場合には、ポッドを停止するとリセット(削除)される一時的な保存領域の「Container Disk」(コンテナディスク領域)と、特定のポッドと契約中の永続的な保存領域である「Volume Disk」(ボリュームディスク領域)を「Pods」の管理画面上で
・「Disk Utilization:Container」(ディスク使用率:コンテナ)
・「Disk Utilization:Volume」(ディスク使用率:ボリューム)
として割合(パーセンテージ)を確認できます。
しかし、「Encrypt Volume」(ボリュームの暗号化)の「機能をオン」にした場合には、特定のポッドと契約中の永続的な保存領域である「Volume Disk」(ボリュームディスク領域)がどの程度使われているのか?を確認できる仕様ではないようでした。
「Volume Disk」は「workspace」以下のフォルダの容量をカウントしているようです。
そのため、コードを実行すると確認できるようにしておきました。
以下のコードを実行すると現在の「Volume Disk」の使用量を確認できます。
*「Container Disk」「Volume Disk」のディスク容量は「Pods」の管理画面上の左端の3本線をクリックした際に表示される「Edit Pod」(ポッドを編集)で変更することができます。変更する際には、ポッドを一旦停止後に編集・保存するようにします。
使用状況に応じて調整してみてください。
実行コード
# @title 実行コード(「Volume Disk:永続保存領域」容量の確認)
# カレントディレクトリ(作業フォルダ)を「workspace」フォルダに設定
%cd /workspace
# 現在の「Volume Disk」(ボリュームディスク領域:永続保存領域)の使用量の表示
!du -sh /workspace 2>/dev/null
出力例
# 表示例:8.9GB利用中
8.9G /workspace
RunPodでは、学習の途中で「Volume Disk」(ボリュームディスク領域)の容量がオーバーになるとRVC WebUIの処理がエラーとなるようでした。
ノートブック上のエラー出力例(ddPn08版 RVC v2モデルのRVC WebUIの例):
Traceback (most recent call last):
File “/workspace/rvc-webui/venv/lib/python3.10/site-packages/torch/serialization.py”, line 441, in save
_save(obj, opened_zipfile, pickle_module, pickle_protocol)
File “/workspace/rvc-webui/venv/lib/python3.10/site-packages/torch/serialization.py”, line 668, in _save
zip_file.write_record(name, storage.data_ptr(), num_bytes)
RuntimeError: [enforce fail at inline_container.cc:471] . PytorchStreamWriter failed writing file data/10: file write failed
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File “/workspace/rvc-webui/venv/lib/python3.10/site-packages/gradio/queueing.py”, line 407, in call_prediction
output = await route_utils.call_process_api(
File “/workspace/rvc-webui/venv/lib/python3.10/site-packages/gradio/route_utils.py”, line 226, in call_process_api
output = await app.get_blocks().process_api(
File “/workspace/rvc-webui/venv/lib/python3.10/site-packages/gradio/blocks.py”, line 1550, in process_api
result = await self.call_function(
File “/workspace/rvc-webui/venv/lib/python3.10/site-packages/gradio/blocks.py”, line 1199, in call_function
prediction = await utils.async_iteration(iterator)
File “/workspace/rvc-webui/venv/lib/python3.10/site-packages/gradio/utils.py”, line 519, in async_iteration
return await iterator.__anext__()
File “/workspace/rvc-webui/venv/lib/python3.10/site-packages/gradio/utils.py”, line 512, in __anext__
return await anyio.to_thread.run_sync(
File “/workspace/rvc-webui/venv/lib/python3.10/site-packages/anyio/to_thread.py”, line 56, in run_sync
return await get_async_backend().run_sync_in_worker_thread(
File “/workspace/rvc-webui/venv/lib/python3.10/site-packages/anyio/_backends/_asyncio.py”, line 2441, in run_sync_in_worker_thread
return await future
File “/workspace/rvc-webui/venv/lib/python3.10/site-packages/anyio/_backends/_asyncio.py”, line 943, in run
result = context.run(func, *args)
File “/workspace/rvc-webui/venv/lib/python3.10/site-packages/gradio/utils.py”, line 495, in run_sync_iterator_async
return next(iterator)
File “/workspace/rvc-webui/venv/lib/python3.10/site-packages/gradio/utils.py”, line 649, in gen_wrapper
yield from f(*args, **kwargs)
File “/workspace/rvc-webui/modules/tabs/training.py”, line 248, in train_all
train_model(
File “/workspace/rvc-webui/lib/rvc/train.py”, line 345, in train_model
training_runner(
File “/workspace/rvc-webui/lib/rvc/train.py”, line 961, in training_runner
utils.save_state(
File “/workspace/rvc-webui/lib/rvc/utils.py”, line 135, in save_state
torch.save(
File “/workspace/rvc-webui/venv/lib/python3.10/site-packages/torch/serialization.py”, line 440, in save
with _open_zipfile_writer(f) as opened_zipfile:
File “/workspace/rvc-webui/venv/lib/python3.10/site-packages/torch/serialization.py”, line 291, in __exit__
self.file_like.write_end_of_file()
RuntimeError: [enforce fail at inline_container.cc:337] . unexpected pos 72960 vs 7291
RVC WebUI上のエラー出力例(ddPn08版 RVC v2モデルのRVC WebUIの例):
File Save Error for RunPod_v2_RVC_WebUI_ddPn08_Historical_Legacy_for_Japanese_AI_beginners.ipynb
Unexpected error while saving file: workspace/RunPod_v2_RVC_WebUI_ddPn08_Historical_Legacy_for_Japanese_AI_beginners.ipynb [Errno 122] Disk quota exceeded
その後、JupyterLab上の操作ができなくなりますが、表示されるウインドウの「Dismiss」(却下する)ボタンをクリック後に、RunPodの管理画面で「Volume Disk」(ボリュームディスク領域)の容量を増やすと、再度JupyterLab上の操作ができるようになります。
【フォルダを削除する方法】
何度も「Train」(学習)をするとファイルが増えて容量を圧迫してしまいます。
不要になったファイルは、フォルダごとまとめて削除すると容量を軽減できます。
必要なファイルをローカル環境(自分のパソコン)などにダウンロード後に、不要となったフォルダを削除します。
基本的に、ファイルが配置されているフォルダは手動では削除できないようですので、こちらのコードを使ってフォルダを削除してください。
例:
・不要となった「dataset」フォルダ
・「Train」(学習)後に出力される不要となった「logs」フォルダ内の学習ログフォルダ
実行コード
# @title 実行コード
# カレントディレクトリ(作業フォルダ)を「workspace」フォルダに設定
%cd /workspace
# コード「!rm -r ⚪︎」の⚪︎の部分にフォルダのパスを入力してコードを実行します
#「dataset」フォルダを削除する例
!rm -r /workspace/Retrieval-based-Voice-Conversion-WebUI/datasets/dataset
# 実行後に特に何も出力はありません。コードの実行が完了後に該当フォルダが消えます
# その他の例
# import shutil
# # コード「shutil.rmtree('⚪︎')」の⚪︎の部分にフォルダのパスを入力してコードを実行します
# #「dataset」フォルダを削除する例
# shutil.rmtree('/workspace/Retrieval-based-Voice-Conversion-WebUI/datasets/dataset')
【ファイルを削除する方法】
特定のファイルを削除したい場合には、以下のコードを実行します。
基本的に、JupyterLabの画面上で該当ファイルを右クリック後に表示される「削除」でも削除できます。
画面上の操作で削除できない場合などに以下のコードを実行すると削除できます。
例:
・「Train」(学習)後に出力される「weights」フォルダ内の学習モデル(pthファイル)
・「Train」(学習)後に出力される「logs」フォルダ内の学習ログフォルダにあるチェックポイントファイル(「D_〜.pth「G_〜.pth」ファイルが容量を圧迫する原因です。再学習させたい場合には一番数字の大きな「D_〜.pth「G_〜.pth」ファイルを残しておくだけで大丈夫です)
実行コード
# @title 実行コード
# カレントディレクトリ(作業フォルダ)を「workspace」フォルダに設定
%cd /workspace
# コード「!rm ⚪︎」の⚪︎の部分にファイルのパスを入力してコードを実行します
#「dataset」フォルダ内の「audio.wav」(ファイル名は一例)ファイルを削除する例
!rm /workspace/Retrieval-based-Voice-Conversion-WebUI/datasets/dataset/audio.wav
# その他の例
# import os
# # コード「os.remove('⚪︎')」の⚪︎の部分にファイルのパスを入力してコードを実行します
# #「dataset」フォルダ内の「audio.wav」(ファイル名は一例)ファイルを削除する例
# os.remove('/workspace/Retrieval-based-Voice-Conversion-WebUI/datasets/dataset/audio.wav')
RunPodで使用中のコンピュータ(Pod)を停止・削除する方法
RVC WebUIのために構築したコンピュータの環境を停止するにはRunPodの「Pods」の管理画面の
・「■」(四角マーク)をクリック
します。
ポッドを停止した状態では
・「Volume Disk」(ボリュームディスク領域:ポッド契約中の永続的な保存領域)
の請求が発生します。
ポッドを削除する場合には、ポッドを停止後に表示される
・ゴミ箱マークをクリック
し、その後の指示
に従い、ポッドを削除します。
ポッドを削除すると、これまでに構築・保存したデータは全て失われますが、ポッドに対する費用は発生しません。
注:オプションの「Network Volume」(ネットワークボリューム)を利用されている方は、「Network Volume」自体を削除しないと、「Network Volume」上で作成したポッドを削除しても「Network Volume」の容量の確保分の利用料が発生しますので注意してください。
RunPodでディスク容量の変更方法
RunPodでテンプレートのディスク容量を変更するには、ポッドを停止した状態で、RunPodの「Pods」の管理画面の
・3本の横線マークをクリック
後に表示されるメニュー内の
・Edit Pod(ポッドを編集)
をクリックします。
テンプレートの編集画面で
・お好みのディスク容量に変更し、「Save」(保存)をクリック
すると設定が反映されます。
【参考】
・「Container Disk」(コンテナディスク領域)は一時的な保存領域。ポッドを停止するとリセット(削除)されます。
・「Volume Disk」(ボリュームディスク領域)は永続的な保存領域。ポッドを停止後も保持されます。ポッドを削除するとリセット(削除)されます。
尚、「Volume Disk」(ボリュームディスク領域:ポッド契約中の永続的な保存領域)を「0GB」に設定した場合には、ポッドを停止する機能は表示されず
・ボッドを削除
する機能のみ表示される仕様のようでした。
RunPodでGPUの数を変更する方法
RVC WebUIの場合は、主に「Train」(学習)を実行中にGPUメモリが消費される傾向があります。
Google Colaboratoryに比べるとGPUの使用量・使用率の詳細の確認がしにくいのですが、RunPodの「Pods」の管理画面上に
・現在のGPUの使用状況
が反映される仕様となっているようでしたので、GPUの使用率が100%あたりになり
・学習が正常にできない、または、何かしらのエラーとなる
ようでしたら、GPUのメモリ数を調整するようにしてみてください。
一度設定したGPUの数を変更するには、RunPodで作成したポッドを一旦停止
します。
RunPodの「Pods」の管理画面の起動させるボタン
・「▶︎」(三角マーク)をクリック
すると、初期設定の時に比べると選択できる数は少なくなりますが、GPUの数を設定
できる場合がありますので、必要に応じて変更してみてください。
尚、1つだけGPUを利用していた時に比べて、2つGPUを利用する際には、GPUの時間あたりの利用料が2倍になります。
費用を確認し、問題がなければ
・「Start」(ポッドの起動)
をクリックし、指定したGPUメモリ数でポッドを起動させます。
これまで試した範囲の情報では、割り当てられたコンピュータによっては、GPU数を再設定することができないことも経験していますので、必ずしも変更できるわけではなさそうです。必要に応じてポッドを再構築してGPUの数を調整してみてください。
GPUの数が「1つ」の場合には、RVC WebUI上の設定で
【Train】(学習)
Step2b & Step3:
Enter the card numbers used separated by -, for example 0-1-2 use card 0 and card 1 and card 2
(ハイフン[-]で区切って使用するカード番号を入力してください(例:0-1-2はカード0、カード1とカード2を使用)
0
になっています。
GPUの数を「2つ」にした場合には、説明に書かれているように、RVC WebUI上の設定で
【Train】(学習)
Step2b & Step3:
Enter the card numbers used separated by -, for example 0-1-2 use card 0 and card 1 and card 2
(ハイフン[-]で区切って使用するカード番号を入力してください(例:0-1-2はカード0、カード1とカード2を使用)
0-1
と半角英数で「–」「1」を付け足します。
GPUの数を「3つ」にした場合には、同じように
【Train】(学習)
Step2b & Step3:
Enter the card numbers used separated by -, for example 0-1-2 use card 0 and card 1 and card 2
(ハイフン[-]で区切って使用するカード番号を入力してください(例:0-1-2はカード0、カード1とカード2を使用)
0-1-2
と半角英数で「–」「1」「–」「2」を付け足します。
RunPod移行ガイド:おわりに
Google ColaboratoryでRVC WebUIを使われていた方に対してRunPodへの移行ガイドの作成を思い立ち、当初は
・要点だけなので短い記事になるのかな?
と思ったら….
最終的に、とても長い移行ガイドになってしまいました…
これだけの情報があれば、元々RVC WebUIを使われていた方なら、RunPodでも(おそらく?)気軽にRVC WebUIを使い始められるのではないかと思います。
長文になってしまいましたが、一連の情報が、RVC WebUIを再開したい音声AI領域に関心の高い日本人の方の参考になることがありましたら幸いです。
あまりにも長い文章になってしまうため、この記事では設定の解説はしていませんが、これからRVC WebUIを始めてみたい方は、
「 RVC WebUIの設定が意味不明・・・」
と思われているのではないかと思います。
以下のチュートリアル記事
:【RVC v1モデル対応版】RunPod編:日本人のためのRVC WebUIの使い方(設定詳解)
では、RVC WebUIの使い方や設定の詳細の解説に焦点を当てて記事を書いていますので、まだ、RVC WebUIについてよくわからない方は、今回の記事と併せてご活用いただけますと幸いです。
by 子供プログラマー
:【RunPod編】RVC WebUIをはじめよう – AIボイスチェンジャー(一覧)