В этой статье я расскажу, как использовать мой блокнот в Google Colab для обучения моделей RVCv2. Я постараюсь объяснить всё доступно, избегая сложных терминов и понятий. Также не буду "обсасывать" каждую настроечку.
Полезные ссылки:
- Личные сообщения в Telegram (Если вдруг понадобится помощь)
Важно:
- Статья уже включает подготовленные данные, поэтому информация по подготовке датасета здесь не рассматривается.
- Вся информация актуальна для версии блокнота от 26.03.25 (дата последнего обновления). Вы можете увидеть дату в заголовке блокнота или в названии сайта:
1. Загрузка датасета
Первым шагом является загрузка подготовленных данных (датасет). Проще всего это сделать с помощью Google Диска.
- Заходим на Google Диск
- Создаем папку с именем "dataset"
- Загружаем в эту папку свои аудиозаписи (желательно wav или flac формата)
В будущем, если понадобится обучить другую модель, достаточно будет просто удалить из этой папки старые файлы и загрузить новые.
2. Тренировка модели
После загрузки датасета можно переходить к тренировке. Перейдя в Google Colab вы попадёте в интерфейс моего тренировочного блокнота:
В интерфейсе есть две основные вкладки: «ТРЕНИРОВКА» и «CLI». Поскольку эта статья посвящена тренировке, мы сосредоточимся только на вкладке «ТРЕНИРОВКА».
Слева от заголовка расположена небольшая стрелочка. Нажмите на неё, чтобы развернуть вкладку:
После её открытия вы увидите ещё две вкладки: «ТРЕНИРОВКА МОДЕЛИ» и «ПРОДОЛЖИТЬ ТРЕНИРОВКУ МОДЕЛИ». Также здесь будет указана информация о местонахождении необходимых файлов:
Для начала рассмотрим вкладку «ТРЕНИРОВКА МОДЕЛИ». Открываем эту вкладку так же, как и основную. Здесь мы видим ячейки с кодом, которые будут использоваться для запуска всех скриптов. Пока ничего не запускаем, так как сначала нужно определиться с настройками, чтобы не вносить изменения в процессе выполнения кода.
Первоначальная настройка и последующий запуск позволяют сэкономить драгоценное время, которое на Google Colab ограничено. Каждый день выделяется от 1 до 5 часов, чаще всего 1 час 20 минут. Чем дольше вы ждете, тем больше начисляется квота. Позже мы рассмотрим способ обхода данного ограничения.
1. Установка RVC
Пока пропускаем эту ячейку.
2. Обработка данных
Ячейка кода, отвечающая за обработку набора данных (датасета). Разберем параметры:
- model_name — здесь вы можете ввести название (имя), которое хотите присвоить своей модели. Оно должно быть на английском языке, без пробелов и специальных символов. Например: Model_Name_123.
- dataset_folder — здесь нужно указать путь к папке, где находятся ваши аудиозаписи с голосом. Поскольку мы загрузили файлы в папку dataset на Google Диске, то вводим следующий путь — /content/drive/MyDrive/dataset
- sample_rate — частота дискретизации, в которую преобразуется датасет. В теории, чем выше частота, тем лучше качество. Однако на практике лучше выбирать значение, наиболее близкое к параметрам ваших аудиозаписей. Обычно это 40k.
- f0_method — метод, который используется для извлечения основной частоты тона голоса. На выбор 3 метода: rmvpe+, rmvpe и harvest. Из этих трёх лучшим считается rmvpe. Что касается rmvpe+, то я не могу дать однозначный ответ, так как он является экспериментальным и не прошёл должного тестирования. А метод harvest уже устарел, и в будущем, возможно, я его уберу.
- index_algorithm — алгоритм кластеризации данных. Если простыми словами, то этот алгоритм разбивает предоставленные данные на группы, которые как-либо похожи друг на друга. На выбор также есть 3 алгоритма: Auto, Faiss и KMeans. Наилучшим считается Faiss, однако он не всегда подходит для всех датасетов. Рекомендуется использовать его для датасетов объемом менее 1 часа, в то время как KMeans лучше работает с большими часовыми датасетами. Если не хочется вникать, можно оставить по умолчанию на Auto, он сам подберет лучший алгоритм исходя из объема данных.
3. Тренировка модели
Далее большая ячейка, настраивающая уже саму тренировку модели. Разберем ее параметры:
- epochs — общее количество эпох, в течение которых будет тренироваться модель. Модель будет обучаться либо указанное количество эпох, либо до тех пор, пока Google Colab не отключит вас от своей среды. Если объем вашего датасета более 10 минут, рекомендуется установить этот параметр в 1000. Если же объем датасета менее 10 минут, то можно указать большее количество эпох. Обычно модель готова где-то в пределах 300-600 эпох.
- save_epoch — параметр, определяющий, как часто модели и чекпоинты будут сохраняться в процессе тренировки. Рекомендую установить его в диапазоне от 1 до 10, в зависимости от доступного свободного места на Google Диске и от того, насколько сильно вы хотите найти лучшую модель (но для этого нужно считывать графики TensorBoard). В ином случае можно выбрать значение 25–50.
Сохранение моделей и чекпоинтов занимает место на диске, поэтому рекомендуется иметь как минимум 4 ГБ свободного пространства для успешного обучения.
- optimizer — алгоритм, обновляющий веса модели таким образом, чтобы минимизировать функцию потерь. Он помогает модели «учиться» на данных, настраивая её параметры для более точных предсказаний. На выбор есть 2 оптимизатора: AdamW и RAdam. Если кратко, то: AdamW защищает модель от перетренировки, но при этом может быть менее стабильным. RAdam обеспечивает более стабильное обучение модели, но не имеет защиты от переобучения. На мой взгляд, лучшим алгоритмом является AdamW.
- pretrain — предварительно обученные модели. Претрейны помогают нашей модели учиться быстрее и качественнее, так как они уже содержат необходимые для этого данные. Их можно сравнить с учителями, которые передают свои знания нашей модели, ускоряя процесс обучения. На выбор есть 4 варианта: Default, Snowie v3.1, TITAN-Medium и KLM v4.3 x3. Все они обучены на различных данных и языках: Default и TITAN-Medium лучше всего подходят для английского языка. KLM v4.3 x3 — для азиатских языков. Snowie v3.1 — для русского. Претрейн Default является лучшим, он самый мощный и эффективный. Однако, если вы обучаете русскую модель, рекомендую использовать Snowie v3.1, несмотря на его не самое лучшее качество. Он поможет избавиться от ненужного английского акцента в речи.
- custom_pretrained — этот параметр включает 2 следующих параметра:
- d_pretrained_link и g_pretrained_link — Эти параметры позволяют загружать предварительно обученные модели, которые не указаны в списке pretrain. Для этого необходимо указать ссылки на файлы G и D. Эти файлы можно найти в моём репозитории HuggingFace. После того как вы найдете нужные файлы, обратите внимание на их названия: они должны быть одинаковыми, отличаться только буквами G и D, а также соответствовать частоте дискретизации, указанной ранее в ячейке «Обработка данных». Чтобы скопировать ссылки, выполните следующие действия:
Ссылку на D-файл вставляем в поле d_pretrained_link, а на G-файл — в g_pretrained_link.
- batch_size — количество фрагментов датасета, которые будут обработаны за 1 шаг. Поскольку невозможно заранее предсказать точное количество фрагментов, можно подобрать оптимальное значение исходя из объема датасета. Однако это тоже может быть непросто, поскольку неясно, как именно рассчитать это значение. Исходя из своего опыта, я могу порекомендовать следующие параметры: batch_size 4 — для датасета объемом менее 5 минут; batch_size 8 — для датасета объемом от 5 до 30 минут; batch_size 12 — для датасета объемом более 30 минут.
- fp16_run — режим половинной точности. Когда он активирован, алгоритмы не могут работать на полную мощность, что может привести к менее стабильному обучению. Однако обучение происходит быстрее и с меньшей нагрузкой на систему. При выключении этого режима нагрузка на систему возрастает, обучение замедляется почти в 2 раза, но модель тренируется стабильно и может быть более качественной.
- tensorboard - инструмент, который визуализирует процесс тренировки в виде графиков. С помощью этих графиков можно понять, когда следует остановить обучение и найти наиболее подходящую модель. Более подробную информацию о графиках можно найти в руководстве по TensorBoard. Если не нужно дополнительное окно визуализации, можно отключить этот параметр.
- log_interval - частота логирования информации в графики TensorBoard. Обновляет графики каждую эпоху, по умолчанию: 1
Теперь, когда все параметры настроены, можно приступать к запуску каждой ячейки, начиная с «Установка RVC». Чтобы запустить код, просто нажмите на кнопку «Старт» в каждой ячейке:
После того как вы запустите тренировку, вам нужно будет просто ждать. Примерно через 2-3 часа во время тренировки может появиться капча. Если вы не пройдете её, вас могут отключить от среды Google Colab, и ваша квота будет обнулена.
3. Продолжение тренировки модели
Если после обучения модели и проведения тестов вы пришли к выводу, что она еще не готова, можно продолжить её тренировку. Для этого перейдите во вкладку «ПРОДОЛЖИТЬ ТРЕНИРОВКУ МОДЕЛИ». Здесь вы увидите две основные ячейки для запуска тренировки: «Установка RVC» и «Тренировка модели».
Процесс аналогичен первоначальному запуску тренировки: сначала настройте параметры, а затем запустите ячейки.
Первое, что нас встречает в ячейке «Тренировка модели», — параметр «model_name». Здесь необходимо ввести название модели, для которой мы планируем запустить повторное обучение. В предыдущих примерах я использовал название «Model_Name_123».
Далее параметры epochs и save_epoch. Поскольку значение epochs является общим, вам нужно указать количество эпох, которое вы хотите назначить своей модели, а не прибавить. Например, если вы ранее обучили модель на 1000 эпох и хотите добавить ещё 500, вам следует ввести 1500. Если же модель достигла 670 эпох из 1000 в процессе обучения и вы хотите завершить этот процесс, вам следует указать 1000. Что касается параметра save_epoch, то рекомендуется выбрать то же значение, которое было установлено ранее, как и при первом запуске тренировки.
Настоятельно рекомендуется установить следующие параметры в то же положение, что и при первом запуске тренировки данной модели. Если вы допустите ошибку в какой-либо настройке и выберете параметры, которые отличаются от первоначальных, это может привести к поломке модели или невозможности запуска процесса.
После настройки можно приступить к запуску ячеек и очередному многочасовому ожиданию:
4. Обход ограничений
Как я уже упоминал ранее, существует способ обойти ограничение. Однако для этого необходимо иметь 2 или более аккаунта Google. Первым шагом нужно зайти на Google Диск того аккаунта, с которого была запущена тренировка модели, и выполнить следующие действия:
1. Находим рабочую папку проекта, на момент публикации статьи — это TrainingModel. Нажимаем на иконку «Поделиться» или «3 точки» → «Поделиться» → «Открыть доступ».
2. В открывшемся окне в поле «Добавьте пользователей, группы и мероприятия из календаря» нужно ввести почту 2-го аккаунта.
3. Выдаем нашему 2-му аккаунту доступ «Редактор» и нажимаем «Отправить».
4. Теперь необходимо зайти на Google Диск 2-го аккаунта. Переходим на него и заходим во вкладку «Доступные мне».
В этой вкалдке мы найдем нашу папку TrainingModel.
5. Далее нажимаем напротив этой папки на «3 точки» → «Систематизировать» → «Добавить ярлык».
6. В открывшемся окне переходим во вкладку «Все местоположения» и напротив «Мой диск» нажимаем на кнопку «Добавить».
Ии... Готово! Теперь необходимо на самом Google Colab перейти на этот 2-ой аккаунт и запустить продолжение тренировки точно так же, как описано в разделе «3. Продолжение тренировки модели». Таким образом, можно практически беспрерывно тренировать одну модель, используя различные аккаунты. Важно не запускать тренировки одновременно на нескольких аккаунтах, так как это может привести к блокировке или поломке чекпоинтов и моделей.