Перейти к содержанию

Обучите персональный классификатор

Для кого: Для тех, кто хочет научить приложение локальному понятию на собственной разметке. Задача: Пройти от меток проверки до опубликованной оценки классификатора. Тип: Сценарий

Классификатор полезен, когда вы постоянно сортируете треки по личному понятию, которое плохо выражают метаданные и разовые поиски. Вы определяете понятие и даёте примеры. Rhythm Lab учит по ним локальную границу, после чего основное приложение может оценивать совместимые треки.

Бинарный профиль, например, может отделять треки с заметным вокалом от преимущественно инструментальных. Другой профиль может отвечать на вопрос о наличии определённого типа живых инструментов. Эти профили задаёте вы; в новой базе Rhythm Lab их нет автоматически.

Когда обучение оправдано

Используйте классификатор, если:

  • одно и то же решение важно во многих поисках или сетах;
  • надёжные теги ещё не отвечают на вопрос;
  • вы можете разметить понятные положительные и отрицательные либо многоклассовые примеры;
  • вы готовы проверять ошибки и неоднозначные треки.

Если вопрос временный или нужен только один короткий список, выберите MERT, SONARA или CLAP. Обученная модель требует обслуживания: слабая или узкая разметка даёт такую же слабую и узкую оценку.

Что получается в конце

text
ваши метки -> обученная модель-кандидат -> опубликованный профиль -> оценки треков -> CLASS / SET / Hybrid

Итоговая оценка не записывается в аудиотег и не является объективной истиной. Это повторно используемый сигнал ранжирования одного профиля. По нему можно фильтровать фонотеку и направлять SET к понятию или от него. Опубликованный манифест также может открыть эту оценку как диагностический сигнал Hybrid.

Rhythm Lab — рабочее пространство классификаторов. Оно использует основную фонотеку SQLite как контекст, а метки, предсказания, очереди и контрольные точки хранит в собственной базе.

1. Подготовьте исходный анализ

Для комбинированного обучения сначала запустите SONARA, MERT и MAEST:

powershell
dj-sim analyze --models sonara --db .\data\library.sqlite
dj-sim analyze --models maest,mert --db .\data\library.sqlite

Варианты бенчмарка также могут использовать CLAP, если эмбеддинги CLAP уже есть. Варианты SONARA 2.0 читают сохранённые признаки SONARA. Вариант sonara2vocal добавляет vocalness в набор признаков-кандидатов.

Команды выше используют актуальный результат SONARA core, как и значения по умолчанию в CLI и прямом API. timeline, embedding и fingerprint не входят в классификаторы. Точный контракт core становится частью идентичности зависимого артефакта.

2. Запустите Rhythm Lab

Перенос интерфейса React на v7 отложен. Запустите Rhythm Lab напрямую:

powershell
python tools\rhythm-lab\rhythm_lab_cli.py serve --source .\data\library.sqlite --labels tools\rhythm-lab\data\rhythm_lab.sqlite

Откройте:

text
http://127.0.0.1:8777/

3. Выберите тип профиля

  • Бинарный профиль использует одну положительную и одну отрицательную обучающую метку.
  • Многоклассовый профиль использует метки классов; для активного профиля трек может иметь только один текущий класс.

Метки должны отвечать на один ясный вопрос. В бинарном профиле положительная означает «это понятие», отрицательная — «это не понятие». Не присваивайте однозначную метку, если сомневаетесь в треке. Метки проверки и очереди сохраняют пограничные примеры видимыми, не превращая их слишком рано в обучающие.

4. Обучите модель

Соберите достаточно меток активного профиля через Library, Collection или Candidates. Новый профиль начинается с разметки Library или Collection. Проверка кандидатов становится полезной после появления первого обученного артефакта.

powershell
python tools\rhythm-lab\rhythm_lab_cli.py train --profile live_instrumentation --source .\data\library.sqlite --labels tools\rhythm-lab\data\rhythm_lab.sqlite

На вкладке Training кнопка Train переобучает модель по всем текущим меткам и автоматически обновляет кандидатов. Калибровка пока не показана в этом интерфейсе. Используйте API или CLI только при осознанной необходимости калибровки и достаточном числе меток для её порога. Пока калибровка скрыта, публикация из интерфейса игнорирует калиброванные артефакты, поэтому старый некалиброванный победитель безопаснее автоматически созданного калиброванного финалиста.

После обучения прослушайте кандидатов с высокими, низкими и пограничными оценками. Полезные ошибки часто показывают, что понятие или разметку нужно уточнить до публикации.

5. Сравните варианты

Чтобы сравнить источники признаков активного профиля, запустите бенчмарк:

powershell
python tools\rhythm-lab\rhythm_lab_cli.py benchmark-ablation --source .\data\library.sqlite --labels tools\rhythm-lab\data\rhythm_lab.sqlite --profile live_instrumentation --output tools\rhythm-lab\artifacts\ablation.json

Вкладка Training показывает победителя и позволяет выбрать другой обученный вариант перед публикацией. Матрица по умолчанию включает сочетания только эмбеддингов, исходный набор SONARA, sonara2 и sonara2vocal.

6. Необязательная калибровка

Калибровка — расширенная возможность с явным включением. Используйте её только тогда, когда нужны калиброванные вероятности положительной метки вместо обычной некалиброванной оценки. Она доступна через API и CLI, но не через вкладку Training.

Калибровка требует достаточно данных. Бинарному профилю нужно не менее 100 обучающих меток, включая 20 положительных и 20 отрицательных. Если порог не пройден, артефакт остаётся некалиброванным и записывает причину в отчёт.

Калибровка обычного обучения:

powershell
python tools\rhythm-lab\rhythm_lab_cli.py train --profile live_instrumentation --source .\data\library.sqlite --labels tools\rhythm-lab\data\rhythm_lab.sqlite --calibrate

Калибровка победителей после абляции:

powershell
python tools\rhythm-lab\rhythm_lab_cli.py benchmark-ablation --source .\data\library.sqlite --labels tools\rhythm-lab\data\rhythm_lab.sqlite --profile live_instrumentation --calibrate-finalists --output tools\rhythm-lab\artifacts\ablation-calibrated.json

Калибровка выбранного набора через API Rhythm Lab:

text
POST http://127.0.0.1:8777/api/profiles/live_instrumentation/training/calibrate
{"feature_set": "mert+maest"}

Обычная публикация из интерфейса игнорирует калиброванные артефакты. Для намеренной публикации калиброванного артефакта используйте требование CLI:

powershell
python tools\rhythm-lab\rhythm_lab_cli.py promote --profile live_instrumentation --feature-set 'mert+maest' --require-calibration --labels tools\rhythm-lab\data\rhythm_lab.sqlite

До публикации проверьте выбранный артефакт через calibration-report:

powershell
python tools\rhythm-lab\rhythm_lab_cli.py calibration-report --profile live_instrumentation --labels tools\rhythm-lab\data\rhythm_lab.sqlite

7. Опубликуйте

powershell
python tools\rhythm-lab\rhythm_lab_cli.py promote --profile live_instrumentation --feature-set combined --labels tools\rhythm-lab\data\rhythm_lab.sqlite

Публикация копирует выбранный исполняемый артефакт в неизменяемое поколение внутри models/classifiers/<artifact-prefix>/, а затем атомарно переключает current.json после проверки хэшей модели и манифеста.

8. Рассчитайте оценки через актуальный бэкенд

Используйте CLI:

powershell
dj-sim analyze-classifier live_instrumentation --db .\data\library.sqlite

После переобучения и публикации того же ключа сбросьте только его старые оценки, затем рассчитайте заново. Клиент API может явно сбросить ключ:

powershell
Invoke-RestMethod http://127.0.0.1:8765/api/classifiers/reset -Method Post -ContentType 'application/json' -Body '{"classifier_keys":["live_instrumentation"]}'
dj-sim analyze-classifier live_instrumentation --db .\data\library.sqlite

После ревизии признаков SONARA зависимые оценки основной фонотеки и предсказания Rhythm Lab становятся недействительными, но метки и обратная связь сохраняются. Повторно проанализируйте SONARA, затем переобучите и опубликуйте затронутые профили. Устаревший опубликованный артефакт остаётся заблокированным: подпись его манифеста не позволяет оценивать актуальные треки.

Если изменился контракт исходного анализа, используйте подготовку и пересоздание релиза SONARA.

Рабочая среда принимает манифест версии 2. Текущие опубликованные model.json в models/classifiers/ всё ещё используют версию 1, поэтому они заблокированы до переобучения и новой публикации.

Безопасность

Метки и предсказания Rhythm Lab остаются в tools/rhythm-lab/data/. Опубликованный расчёт записывает только оценки классификаторов в SQLite. Исходное аудио не переписывается.

Документация локального инструмента анализа музыкальной библиотеки.