Обучите персональный классификатор
Для кого: Для тех, кто хочет научить приложение локальному понятию на собственной разметке. Задача: Пройти от меток проверки до опубликованной оценки классификатора. Тип: Сценарий
Классификатор полезен, когда вы постоянно сортируете треки по личному понятию, которое плохо выражают метаданные и разовые поиски. Вы определяете понятие и даёте примеры. Rhythm Lab учит по ним локальную границу, после чего основное приложение может оценивать совместимые треки.
Бинарный профиль, например, может отделять треки с заметным вокалом от преимущественно инструментальных. Другой профиль может отвечать на вопрос о наличии определённого типа живых инструментов. Эти профили задаёте вы; в новой базе Rhythm Lab их нет автоматически.
Когда обучение оправдано
Используйте классификатор, если:
- одно и то же решение важно во многих поисках или сетах;
- надёжные теги ещё не отвечают на вопрос;
- вы можете разметить понятные положительные и отрицательные либо многоклассовые примеры;
- вы готовы проверять ошибки и неоднозначные треки.
Если вопрос временный или нужен только один короткий список, выберите MERT, SONARA или CLAP. Обученная модель требует обслуживания: слабая или узкая разметка даёт такую же слабую и узкую оценку.
Что получается в конце
ваши метки -> обученная модель-кандидат -> опубликованный профиль -> оценки треков -> CLASS / SET / HybridИтоговая оценка не записывается в аудиотег и не является объективной истиной. Это повторно используемый сигнал ранжирования одного профиля. По нему можно фильтровать фонотеку и направлять SET к понятию или от него. Опубликованный манифест также может открыть эту оценку как диагностический сигнал Hybrid.
Rhythm Lab — рабочее пространство классификаторов. Оно использует основную фонотеку SQLite как контекст, а метки, предсказания, очереди и контрольные точки хранит в собственной базе.
1. Подготовьте исходный анализ
Для комбинированного обучения сначала запустите SONARA, MERT и MAEST:
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 напрямую:
python tools\rhythm-lab\rhythm_lab_cli.py serve --source .\data\library.sqlite --labels tools\rhythm-lab\data\rhythm_lab.sqliteОткройте:
http://127.0.0.1:8777/3. Выберите тип профиля
- Бинарный профиль использует одну положительную и одну отрицательную обучающую метку.
- Многоклассовый профиль использует метки классов; для активного профиля трек может иметь только один текущий класс.
Метки должны отвечать на один ясный вопрос. В бинарном профиле положительная означает «это понятие», отрицательная — «это не понятие». Не присваивайте однозначную метку, если сомневаетесь в треке. Метки проверки и очереди сохраняют пограничные примеры видимыми, не превращая их слишком рано в обучающие.
4. Обучите модель
Соберите достаточно меток активного профиля через Library, Collection или Candidates. Новый профиль начинается с разметки Library или Collection. Проверка кандидатов становится полезной после появления первого обученного артефакта.
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. Сравните варианты
Чтобы сравнить источники признаков активного профиля, запустите бенчмарк:
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 отрицательных. Если порог не пройден, артефакт остаётся некалиброванным и записывает причину в отчёт.
Калибровка обычного обучения:
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Калибровка победителей после абляции:
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:
POST http://127.0.0.1:8777/api/profiles/live_instrumentation/training/calibrate
{"feature_set": "mert+maest"}Обычная публикация из интерфейса игнорирует калиброванные артефакты. Для намеренной публикации калиброванного артефакта используйте требование CLI:
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:
python tools\rhythm-lab\rhythm_lab_cli.py calibration-report --profile live_instrumentation --labels tools\rhythm-lab\data\rhythm_lab.sqlite7. Опубликуйте
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:
dj-sim analyze-classifier live_instrumentation --db .\data\library.sqliteПосле переобучения и публикации того же ключа сбросьте только его старые оценки, затем рассчитайте заново. Клиент API может явно сбросить ключ:
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. Исходное аудио не переписывается.