linux so-vits-svc訓(xùn)練環(huán)境安裝黄选,訓(xùn)練和保存(autodl)

01.選擇實例

可以隨便選一個,然后擴容一下磁盤婶肩,我選擇擴容150g办陷,現(xiàn)在的價格是0.0066 元 gb/天,這樣就是每天固定扣一塊錢律歼。

因為我已經(jīng)提前準備好了數(shù)據(jù)集民镜,包括切片,resample還有生成訓(xùn)練集配置文件险毁,和生成hubert的步驟都在自己的電腦上完成了制圈,然后zip分卷壓縮。處理完的數(shù)據(jù)集有50gb左右畔况。里面有5個角色鲸鹦,每個角色有3個版本。是我拆包了兩個游戲得到的跷跪,這兩個游戲是前后作的關(guān)系馋嗜,算是增加數(shù)據(jù)集的量。

如果只訓(xùn)練一個角色域庇,都沒什么必要租gpu嵌戈,除非數(shù)據(jù)量特別大,不然租感覺很浪費听皿。自己的老顯卡也能訓(xùn)練了熟呛。

這波數(shù)據(jù)集,處理了我一天多時間尉姨,從游戲里面拆包庵朝,寫腳本分類,然后最花時間的是生成hubert的步驟,在我6800h的電腦了執(zhí)行了有10個小時左右九府。然后zip分卷壓縮椎瘟。

一開始是需要搭建環(huán)境的,所以一開始直接關(guān)機侄旬,然后選擇無卡開機肺蔚,無卡開機就是不使用GPU資源開機,只有GPU的情況也可以用來演示儡羔,或者配一下環(huán)境宣羊。不占用GPU資源,現(xiàn)在是1小時0.1元汰蜘。

我一開始搜了一下發(fā)現(xiàn)有別的大佬分享的鏡像仇冯,不過最近一個還是一個月前的,而且它訓(xùn)練的采樣率是48khz族操,我準備好的數(shù)據(jù)是44khz的苛坚,所以就沒用那個。

02.安裝環(huán)境

我一開始用的是這個項目 https://github.com/34j/so-vits-svc-fork 色难,因為svc-develop-team原倉庫的說明文檔上的內(nèi)容泼舱,還有交互方面,還有就是項目依賴安裝莱预,對于第一次玩這種深度學(xué)習(xí)的人來說還是有點復(fù)雜的柠掂。

這個項目把操作都封裝到命令行里了,而且依賴安裝也比較容易依沮,因為他可以通過pip命令一鍵安裝了涯贞,而且還提供了whl文件。

原倉庫的說明對于新手來說是不足的危喉,比如數(shù)據(jù)預(yù)處理宋渔,這位34j大佬的倉庫里面就說明了使用uvr分離人聲,而且切片操作也封裝了命令辜限。

還有就是這個項目做了一個比較好用的gui皇拣,加了實時變聲的功能。

原倉庫雖然有webUI薄嫡,但是說明文檔沒寫氧急,新手不知道,也就不會去用毫深,我也是看了別人的視頻在用吩坝,才發(fā)現(xiàn)是有webUI的

python 版本管理

安裝環(huán)境的第一步就是安裝python,服務(wù)器上提供的是python3.8版本哑蔫,我自己電腦上的是3.9.13钉寝,為了保持一致弧呐,所以要安裝不同版本的python

我首先就想到了用pyenv這個項目,

這里遇到的最大的問題是嵌纲,autodl的服務(wù)器在國內(nèi)俘枫,所以很難訪問github,clone一個倉庫都操作不了逮走。所以這邊安裝折騰了我一段時間鸠蚪。

最后我還是放棄了。

第二個方法就是虛擬環(huán)境师溅,因為我本地用的是pdm管理虛擬環(huán)境邓嘹,結(jié)果發(fā)現(xiàn)pdm安裝也不好安裝。

第三個方案险胰,就是我從本地直接拷貝過去。矿筝。起便。

最后發(fā)現(xiàn)最佳實踐是用conda管理python環(huán)境。

其實我以前就知道這個工具窖维,但是覺得很蠢榆综,安裝包大的一匹,所以裝了一次以后就沒有再裝了铸史。后面管理python版本也是用的pdm鼻疮,我覺得pdm這種和npm比較相似的模式是更合理的。而且pdm有l(wèi)ock文件琳轿,是可以鎖定軟件包版本的判沟。

svc 的倉庫里面只有一個requirements.txt,這樣容易出現(xiàn)安裝不了一樣環(huán)境的問題

最佳實踐

vscode-remote

因為jupyter lab其實也不是很好用,還有那個從網(wǎng)頁打開的終端崭篡,也挺難用的挪哄。

目前我認為vscode遠程連接是最方便的,需要先安裝Remote-SSH插件

conda管理python版本

直接用conda安裝python版本

# 構(gòu)建一個虛擬環(huán)境名為:my-env琉闪,Python版本為3.9.13
conda create -n my-env python=3.9.13    

# 更新bashrc中的環(huán)境變量
conda init bash && source /root/.bashrc
# 切換到創(chuàng)建的虛擬環(huán)境:my-env
conda activate my-env

# 驗證
python

退出虛擬環(huán)境

conda deactivate your_env

刪除虛擬環(huán)境

conda remove -n your_env --all
或
conda remove --name your_env --all

安裝訓(xùn)練依賴

然后我們就可以在虛擬環(huán)境下安裝

python -m pip install -U pip setuptools wheel
pip install -U torch torchaudio --index-url https://download.pytorch.org/whl/cu117
pip install -U so-vits-svc-fork

也可以到release頁面下載whl

pip install -r whlname.whl

有一個問題是自帶的華為云鏡像比較舊很多包沒有迹炼,這一步我也折騰了挺久

我建議pip和conda換成清華的鏡像

我后來才發(fā)現(xiàn)autodl有換鏡像的操作,在autopanel上就能換颠毙,比較方便斯入。

從github clone倉庫

如果用官方的倉庫,需要從github下載蛀蜜,但是國內(nèi)服務(wù)器不好訪問刻两。

最好還是本地下載,打包zip傳上去涵防,這樣比較方便闹伪,直接拖到vscode對應(yīng)的目錄就可以沪铭。

還有就是autodl官方提供了鏡像加速,但是我沒從幫助文檔上找到畢業(yè)區(qū)A的加速地址偏瓤。杀怠。。厅克。

然后直接安裝官方依賴赔退。

pip install -r requirements

03.配置文件修改

主要是調(diào)一下batch_size和learning_rate

{
  "train": {
    "log_interval": 200,  //檢查點保存步數(shù)
    "eval_interval": 800,//評估步數(shù),隔多少步評估模型性能
    "seed": 1234,//模型初始化種子证舟,如果訓(xùn)練效果不理想硕旗,可以換一個種子重新訓(xùn)練。不過訓(xùn)練過程中不能再修改
    "epochs": 10000,// 學(xué)習(xí)數(shù)據(jù)集的次數(shù)女责,10000是一個很高的數(shù)字漆枚,一般不用訓(xùn)練到10000次
    "learning_rate": 0.0004,//學(xué)習(xí)率,據(jù)說應(yīng)該和bacth_size成比例調(diào)整
    "betas": [0.8, 0.99],
    "eps": 1e-9,
    "batch_size": 24,// 每次訓(xùn)練的數(shù)據(jù)的量抵知,按照顯存配置墙基,8gb顯存比如1070ti,可以設(shè)為6刷喜,24gb顯存比如3090設(shè)為24残制,這樣才能占滿顯存
    "fp16_run": false,//是否使用半精度訓(xùn)練,能提升訓(xùn)練速度掖疮,可能會影響訓(xùn)練質(zhì)量
    "lr_decay": 0.999875,//學(xué)習(xí)率衰減率
    "segment_size": 10240,
    "init_lr_ratio": 1,
    "warmup_epochs": 0,//預(yù)熱輪數(shù)初茶,預(yù)熱的輪數(shù)內(nèi)學(xué)習(xí)率不會衰減
    "c_mel": 45,
    "c_kl": 1.0,
    "use_sr": true,
    "max_speclen": 512,
    "port": "8001",
    "keep_ckpts": 10 //保存的模型個數(shù),超過的會在訓(xùn)練出新的模型后移除浊闪。因為可能訓(xùn)練途中有參數(shù)比較好的模型恼布,如果不缺存儲空間可以設(shè)為0,那樣就不會刪除搁宾。桥氏。。
  },
  "data": {
    "training_files": "filelists/44k/train.txt",
    "validation_files": "filelists/44k/val.txt",
    "max_wav_value": 32768.0,
    "sampling_rate": 44100,
    "filter_length": 2048,
    "hop_length": 512,
    "win_length": 2048,
    "n_mel_channels": 80,
    "mel_fmin": 0.0,
    "mel_fmax": 22050
  },
  "model": {
    "inter_channels": 192,
    "hidden_channels": 192,
    "filter_channels": 768,
    "n_heads": 2,
    "n_layers": 6,
    "kernel_size": 3,
    "p_dropout": 0.1,
    "resblock": "1",
    "resblock_kernel_sizes": [3, 7, 11],
    "resblock_dilation_sizes": [
      [1, 3, 5],
      [1, 3, 5],
      [1, 3, 5]
    ],
    "upsample_rates": [8, 8, 2, 2, 2],
    "upsample_initial_channel": 512,
    "upsample_kernel_sizes": [16, 16, 4, 4, 4],
    "n_layers_q": 3,
    "use_spectral_norm": false,
    "gin_channels": 256,
    "ssl_dim": 256,
    "n_speakers": 200
  },
  "spk": {
        ...
  }
}

04.參數(shù)

epoch

表示全部數(shù)據(jù)集訓(xùn)練的次數(shù)

iteration

一個epoch中 數(shù)據(jù)喂給神經(jīng)網(wǎng)絡(luò)的次數(shù)

batch_size

一次扔進神經(jīng)的數(shù)據(jù)個數(shù)

iteration*batch_size等于總的數(shù)據(jù)個數(shù)猛铅。字支。。

batch_size增大奸忽,消耗的顯存也會變大堕伪,

在音頻都在切片10s以內(nèi)的情況下,1070ti(8gb顯存)設(shè)置為6合適栗菜,3090(24gb顯存)設(shè)置為24合適

bacth_size調(diào)到不影響顯存的最大值

步數(shù)的計算方式

步數(shù) = 總輪數(shù)(epoch)*數(shù)據(jù)集大小/批大星反啤(batch size)

05.linux常用操作

解壓數(shù)據(jù)集

數(shù)據(jù)集通過網(wǎng)盤上傳,下載到實例的數(shù)據(jù)盤里

unzip  file.zip

分卷壓縮的情況疙筹,網(wǎng)上說的zip -F 我沒執(zhí)行成功過

可以直接

cat filename.z* > newfile.zip
unzip newfile.zip

powershell安裝

linux的命令不是很會富俄,安裝powershell(至少自帶的命令補全比bash方便)禁炒,這樣就比較習(xí)慣了。

# Update the list of packages
sudo apt-get update
# Install pre-requisite packages.
sudo apt-get install -y wget apt-transport-https software-properties-common
# Download the Microsoft repository GPG keys
wget -q "https://packages.microsoft.com/config/ubuntu/$(lsb_release -rs)/packages-microsoft-prod.deb"
# Register the Microsoft repository GPG keys
sudo dpkg -i packages-microsoft-prod.deb
# Delete the the Microsoft repository GPG keys file 
rm packages-microsoft-prod.deb
# Update the list of packages after we added packages.microsoft.com
sudo apt-get update
# Install PowerShell
sudo apt-get install -y powershell
# Start PowerShell
pwsh

查看磁盤占用

  1. du -sh <目錄路徑>:顯示指定目錄的總大谢舯取(以易讀格式幕袱,如 KB、MB悠瞬、GB 顯示)们豌。
  2. du -h --max-depth=1 <目錄路徑>:顯示指定目錄下一級目錄或文件的大小(以易讀格式顯示)浅妆。
  3. du -a <目錄路徑> | sort -n -r | head -n 10:顯示指定目錄下最大的10個文件的大型(以易讀格式顯示)。

例如凌外,要查看當前目錄下所有文件和子目錄占用空間的情況辩尊,可以使用以下命令:

du -h --max-depth=1

如果要查看指定目錄下最大的10個文件的大小,可以使用以下命令:

du -a <目錄路徑> | sort -n -r | head -n 10

python遞歸遍歷目錄的方法

import os
def recursive_scandir(path):
    for entry in os.scandir(path):
        if entry.is_file():
            print(entry.path)
        elif entry.is_dir():
            recursive_scandir(entry.path)

06.測試模型效果

還是用官方的webui比較方便康辑,我懶得再開一個虛擬環(huán)境对省,

所以把模型下載下來,在本地查看效果了晾捏,用cpu推理會很慢,基本上4分鐘的歌要推理4分鐘的樣子哀托,用1070ti的話30秒之內(nèi)能搞定惦辛。。仓手。

據(jù)說訓(xùn)練到10000setp胖齐,就能有不錯的效果

我實際測試也感覺是有點效果了,可能是數(shù)據(jù)集太多了嗽冒,后面我訓(xùn)練到26000step(11 epoch)的時候測試了一下呀伙,感覺應(yīng)該跟很多網(wǎng)上發(fā)的視頻差不多水平了。用au把一些奇怪的音修一下應(yīng)該就能有不錯的成品了

07.遇到的問題

torch.load報錯

可能是我之前解壓完后添坊,沒有刪除壓縮包剿另,后面訓(xùn)練的數(shù)據(jù)占滿存儲空間,導(dǎo)致贬蛙,保存的時候文件損壞吧雨女。(因為我本地也在用1070ti跑,運行了一個epoch阳准,是正常的)

這里報的是讀取*.spec.pt

最后我寫了python腳本氛堕,遍歷所有*.spec.pt,找到受損的文件刪掉就okl

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末野蝇,一起剝皮案震驚了整個濱河市讼稚,隨后出現(xiàn)的幾起案子括儒,更是在濱河造成了極大的恐慌,老刑警劉巖锐想,帶你破解...
    沈念sama閱讀 206,602評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件帮寻,死亡現(xiàn)場離奇詭異,居然都是意外死亡痛倚,警方通過查閱死者的電腦和手機规婆,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,442評論 2 382
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來蝉稳,“玉大人抒蚜,你說我怎么就攤上這事≡牌荩” “怎么了嗡髓?”我有些...
    開封第一講書人閱讀 152,878評論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長收津。 經(jīng)常有香客問我饿这,道長,這世上最難降的妖魔是什么撞秋? 我笑而不...
    開封第一講書人閱讀 55,306評論 1 279
  • 正文 為了忘掉前任长捧,我火速辦了婚禮,結(jié)果婚禮上吻贿,老公的妹妹穿的比我還像新娘串结。我一直安慰自己,他們只是感情好舅列,可當我...
    茶點故事閱讀 64,330評論 5 373
  • 文/花漫 我一把揭開白布肌割。 她就那樣靜靜地躺著,像睡著了一般帐要。 火紅的嫁衣襯著肌膚如雪把敞。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,071評論 1 285
  • 那天榨惠,我揣著相機與錄音奋早,去河邊找鬼。 笑死赠橙,一個胖子當著我的面吹牛伸蚯,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播简烤,決...
    沈念sama閱讀 38,382評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼剂邮,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了横侦?” 一聲冷哼從身側(cè)響起挥萌,我...
    開封第一講書人閱讀 37,006評論 0 259
  • 序言:老撾萬榮一對情侶失蹤绰姻,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后引瀑,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體狂芋,經(jīng)...
    沈念sama閱讀 43,512評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,965評論 2 325
  • 正文 我和宋清朗相戀三年憨栽,在試婚紗的時候發(fā)現(xiàn)自己被綠了帜矾。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,094評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡屑柔,死狀恐怖屡萤,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情掸宛,我是刑警寧澤死陆,帶...
    沈念sama閱讀 33,732評論 4 323
  • 正文 年R本政府宣布,位于F島的核電站唧瘾,受9級特大地震影響措译,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜饰序,卻給世界環(huán)境...
    茶點故事閱讀 39,283評論 3 307
  • 文/蒙蒙 一领虹、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧求豫,春花似錦塌衰、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,286評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽均唉。三九已至是晨,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間舔箭,已是汗流浹背罩缴。 一陣腳步聲響...
    開封第一講書人閱讀 31,512評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留层扶,地道東北人箫章。 一個月前我還...
    沈念sama閱讀 45,536評論 2 354
  • 正文 我出身青樓,卻偏偏與公主長得像镜会,于是被迫代替她去往敵國和親檬寂。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 42,828評論 2 345

推薦閱讀更多精彩內(nèi)容