Guida al training di RVC V2!
Sommario
- Configurazione del training/allenamento
Assicurati che il tuo dataset sia preparato utilizzando isolamenti o audio di alta qualità che puoi trovare. UVR con i modelli Kim Vocal o MDX B su MVSEP funzioneranno meglio, in generale, per isolare le voci. Successivamente, puoi utilizzare strumenti come il noise gate di Audacity per eliminare il silenzio, se necessario, oppure Adobe Audition se sai come usarlo (mi è stato detto che funziona bene).
Se non stai trainando in locale, apri questo colab di training e esegui le prime celle per l'installazione.
https://colab.research.google.com/drive/1TU-kkQWVf-PLO_hSa2QCMZS1XF5xVHqs?usp=sharing
Se stai utilizzando il colab, assicurati di caricare il tuo dataset come file zip nella cartella /dataset/ del tuo Google Drive (dovrai creare questa cartella prima), e quindi importa il dataset eseguendo questa cella con il nome corretto impostato.
Se tutto è andato bene, verrà visualizzato il messaggio "Dataset loaded successfully!" nel testo di output.
Quindi, nel pannello dei file a sinistra, trova la nuova cartella creata (non il file zip) e fai clic destro per copiare il percorso:
Ora puoi avviare l'interfaccia grafica e passare alla scheda Train.
Nella prima opzione, imposta il tuo nome per il modello.
Di solito mantengo il resto delle impostazioni uguali (in generale, la versione 2 di RVC si traina molto più velocemente ed è ora preferita)
Potrebbe essere necessario ridurre il conteggio dei thread se il training viene eseguito in locale (quindi non su Colab). Il mio era impostato su '20' e ho dovuto impostarlo su 4 per evitare BSOD. Se vuoi stare sul lato sicuro, un valore di 1 o 2 richiederà poco più di tempo rispetto a un valore più alto, poiché ciò si applica solo alla fase di elaborazione iniziale.
Nel primo campo, per "Path to training folder", incolla il percorso del dataset copiato dal colab. Quindi premi "Process data". Aspetta fino al completamento completo (la console di testo del colab indicherà "end pre-process" quando sarà terminato)
(Raramente potresti riscontrare un errore di connessione, anche se è andato a buon fine. Prova a ricaricare la pagina e riprova per verificare)
Crepe (specificamente mangio-crepe, che è la vecchia implementazione e, secondo me, la migliore) è l'opzione migliore concordata per il training di dataset di alta qualità. Gli “hop length” più bassi saranno più precisi in termini di altezza del suono e richiederanno quindi più tempo per trainare, ma personalmente non noto differenze significative tra 128 e 64. È a tua discrezione; il tuo dataset dovrebbe essere configurato in modo che sia privo di rumori importanti se scegli passaggi hop più bassi, poiché aumenta il rischio che i dati di bassa qualità nel tuo dataset vengano messi in evidenza quando hai un'alta precisione dell'altezza, per ovvie ragioni.
Edit: In passato, consigliavamo il metodo Harvest per i dataset di qualità inferiore, ma c'è una buona probabilità che il metodo 'rmvpe' sia migliore sia di mangio-crepe che di harvest per il training (sicuramente è meglio di harvest), anche su dataset di alta qualità. Questa funzione è stata appena aggiunta, quindi ti preghiamo di testarla e verificare.
Due cose che dovresti sapere però:
- MANGIO-CREPE e harvest sono entrambe opzioni decenti. Ho notato che se il tuo dataset non è di alta qualità o è più "rumoroso", Harvest può essere migliore di Crepe, poiché Crepe è più sensibile ai dati, quindi ha una migliore precisione dell'altezza. Non si sa se il training di Crepe con un passaggio hop elevato per una minore precisione (come 256) rende decenti i dataset di qualità inferiore, ma in teoria è così.
- Non utilizzare pm o dio per il training. Dio suona terribile e roco, e pm suona granuloso.
In sostanza:
SE LA QUALITÀ DEL TUO DATASET È ECCELLENTE, PRATICAMENTE PRIVA DI RUMORE: Usa Mangio-Crepe, anche se il nuovo addestramento con il metodo rmvpe sembra promettente in base ai primi test!
SE LA QUALITÀ DEL TUO DATASET NON È ECCELLENTE: Utilizza rmvpe, oppure harvest se ci sono in qualche modo problemi, o utilizza Mangio-Crepe con una dimensione di hop maggiore (ad esempio 256).
La dimensione del batch indica quanti dati vengono elaborati contemporaneamente (opzione di velocità, non una questione di qualità). Questo dipende dalla VRAM della GPU. Quindi, ad esempio, per un RTX 2070 con 8 GB di VRAM, si utilizza una dimensione del batch (batch size) di 8.
Su una GPU di Colab, il valore di 20 è quello che mi è stato consigliato come sicuro per evitare errori, ma mi è stato anche detto che è meglio utilizzare una potenza di 2 (quindi 2, 4, 8, 16, 32). Quindi, su Colab, uso 16.
NON UTILIZZARE ONE-CLICK TRAINING, è buggato. Mantieni sempre impostata l'opzione "Save only the latest ckpt file to reduce disk usage". Fai riferimento ad altri suggerimenti qui se necessario. Imposta un numero di epoch adeguato per coprirti, ad esempio 600. Prima di iniziare, leggi la sezione di training continuato per capire come testare il modello durante il training e come sapere quando stai esagerando nel training. Una volta trainato il feature index (il secondo grande pulsante in mezzo), puoi premere "Train model" per iniziare il training, ma prima, facciamo una panoramica delle funzionalità importanti:
Training continuato.
- Prova il modello mentre stai trainando (questo è importante)
Se abilitato, l'opzione salva il modello come un file .pth nel percorso /weights/ per ogni frequenza di salvataggio (ad esempio, Kendrick_e10, Kendrick_e20 per una frequenza di salvataggio '10'). Per ottenere un'anteprima accurata, genera il feature index (indice delle caratteristiche) prima del training; naturalmente, assicurati di aver seguito i primi due passaggi (elaborazione dei dati + estrazione delle caratteristiche) prima di allenare l'indice. Puoi anche generare l'indice delle caratteristiche successivamente se hai dimenticato di farlo. Avere questa opzione abilitata ti consente di testare il modello ad ogni iterazione dell'epoch, se necessario, o utilizzare un'iterazione precedente se hai allenato troppo a lungo.
- Quante epoch devo impostare? / Come capire se c'è "overtraining" (sovrallenamento)
Utilizza i log di TensorBoard per identificare quando il modello inizia a sovrallenarsi. Vai alla schermata di TensorBoard in colab. Se stai allenando localmente, utilizza il file Launch_Tensorboard.bat nella cartella RVC (se non ce l'hai, aggiorna le correzioni). Fai clic sulla scheda "scalars" e cerca "g/total" in alto. Questo significa "g/total", con una "g". Non "d/total".
(RVC V2 nella scheda di allenamento raggiunge il punto migliore molto più velocemente rispetto a RVC V1)
Una volta trovato il conteggio ideale dei passi, esegui semplici calcoli per determinare il conteggio ideale degli epoch. Ad esempio, diciamo che 10.000 passi è il punto in cui inizia il sovrallenamento. Supponiamo che tu abbia allenato fino a 20.000 passi e che il tuo modello sia attualmente a 600 epoch. Dal momento che 600 epoche corrispondono a 20.000 passi, significa che 10.000/20.000 = 50%. Il 50% di 600 è circa 300 epoch; quindi questo è il valore ideale degli epoch in quel caso.
In alternativa, puoi trovare il timestamp del miglior valore in TensorBoard e quindi controllare il file train.log per il modello nella cartella /logs/ corrispondente per trovare esattamente quale epoca.
Meno epoch in generale significano che il modello sarà meno preciso, piuttosto che necessariamente "suonare peggio" per l'allenamento di RVC v2. Tuttavia, se il tuo dataset non è di alta qualità o manca di molti dati, potresti voler sperimentare in seguito e vedere quale modello di epoca salvata rappresenta il miglior equilibrio tra precisione e buon suono. In alcuni casi più rari, meno epoche potrebbero suonare meglio per le tue orecchie. È un processo di tentativi ed errori per creare un buon modello in questa fase. Se vuoi stare sul sicuro, opterei per un modello "leggermente sottotrainato".
(Osserva che l'opzione di smussatura massima sul lato sinistro è disabilitata e ricorda di fare clic su "refresh" per aggiornarla quando necessario)
Puoi anche cercare il tuo modello specifico per nome, se necessario.
Se vedi che il sovrallenamento inizia e ne sei sicuro, interrompi il server GUI e poi riavvialo. Puoi testare il modello trainato al picco dell'epoca (ad esempio Kendrickv2_e300_s69420) per 300 epoche. Se ti piace come suona ora, rinomina il file più recente nel colab nella cartella /weights/ (trovata nel pannello dei file di colab), rimuovendo "_e100_s1337" dal nome (quindi Kendrickv2_e300_s4000 diventerà Kendrickv2.pth).
Sottolineo che devi modificare il nome all'interno del pannello dei file di colab. Non puoi rinominare il file del drive, altrimenti il passaggio successivo non funzionerà.
Quindi puoi eseguire questa cella:
Il tuo modello finito sarà ora pronto in /RVC_Backup/Finished/ come file zip, pronto per essere condiviso.
Tieni presente che richiediamo di caricare questo su huggingface.co per evitare richieste di rimozione non valide se desideri pubblicarlo nel server AI HUB di Discord in #voice-models.
Google Drive è noto per effettuare rimozioni non valide, anche se i modelli vocali sono legali al 100% da condividere.
Per ulteriori informazioni, consulta: https://discord.com/channels/1089076875999072296/1089329140483764265/1121859324424224818
- Continua l'allenamento di un modello da dove lo hai interrotto
Per gli utenti di Colab: se la sessione scade (cioè Colab si disconnette completamente), devi eseguire nuovamente i passaggi di installazione e quindi procedere normalmente, avviando nuovamente il server GUI.
Durante una nuova formazione, per continuare da dove hai interrotto, utilizza lo stesso identico nome (con la stessa capitalizzazione) e tasso di campionamento (impostazione predefinita 40 kHz se non modificata). Usa le stesse impostazioni che avevi prima per batch size, versione, ecc... rendile corrispondenti.
Non elaborare nuovamente i file e non eseguire nuovamente l'estrazione delle caratteristiche. In sostanza, evita di premere "Process data" o eseguire nuovamente "Feature extraction", perché non vuoi che ripeti l'analisi del pitch che ha già effettuato.
Mantieni solo gli ultimi due file .pth nella cartella /logs/ del modello, in base alla data di modifica. Se nella cartella dei log del modello ci sono un file "G_23333" e "D_23333", rappresentano l'ultimo checkpoint, se hai selezionato "Save only latest ckpt" (che consiglio di fare in precedenza in questa guida). Se ciò non fosse abilitato, per qualche motivo, rimuovi tutti i file .pth nella cartella che non sono gli ultimi, per evitare imprecisioni.
Ora puoi iniziare nuovamente il training premendo 'Train model', con la stessa batch size e le stesse impostazioni di prima. Se il training inizia nuovamente dall'inizio (alla prima epoca anziché all'ultima epoca salvata prima dell'interruzione dell'allenamento), utilizza immediatamente CTRL+C o il pulsante di interruzione se sei su Colab per interrompere il server GUI, e prova a riavviare il GUI.
- (Per i trainer locali) Evita crash / problemi di estrazione delle caratteristiche
Quando si allena localmente, c'è un problema durante l'estrazione delle caratteristiche, dove le persone cercheranno di eseguire l'estrazione delle caratteristiche con il conteggio massimo dei thread (opzione in alto a destra della scheda di allenamento) e si imbatteranno nel fatto che ciò richiede ore o causa un blocco del sistema. Consiglierei di impostare il valore del conteggio dei thread in alto a destra della scheda di allenamento al massimo 5, o scegliere un valore di 2 solo per stare sul sicuro (la fase di preprocessamento non richiederà molto tempo). Il mio valore massimo predefinito è 20 (localmente) e questo non funziona. La gestione dei thread non è ancora decisa automaticamente, ma questa è la parte che richiede molto poco tempo, quindi va bene stare sul sicuro e andare bassi.
Guarda la guida per installare RVC v2 in locale