Я хочу отключить сериализацию всех весов модели / состояния в стандартном обучении модели AllenNLP с использованием jsonnet
файлов конфигурации.
Причина в том, что я запускаю автоматическую оптимизацию гиперпараметров с помощью Optuna. Тестирование десятков моделей довольно быстро заполняет драйв. Я уже отключил контрольную точку, установив num_serialized_models_to_keep
на 0
:
trainer +: {
checkpointer +: {
num_serialized_models_to_keep: 0,
},
Я не хочу устанавливать serialization_dir
на None
, так как мне все еще нужно поведение по умолчанию в отношении регистрации промежуточных показателей и т. Д. Я хочу только отключить состояние модели по умолчанию, состояние обучения и запись лучших весов модели.
Помимо параметра, который я установил выше, существуют ли какие-либо параметры тренера или контрольной точки по умолчанию для отключения всей сериализации весов моделей? Я проверил документы API и веб-страницу, но не нашел их.
Если мне нужно самому определить функциональность для такой опции, какие базовые функции из AllenNLP я должен переопределить в моем подклассе модели?
В качестве альтернативы, есть ли у них какая-либо полезность для очистки промежуточного состояния модели после завершения обучения?
РЕДАКТИРОВАТЬ: ответ @petew показывает решение для настраиваемого контрольного указателя, но я не понимаю как сделать этот код доступным для allennlp train
для моего варианта использования.
Я хочу сделать custom_checkpointer вызываемым из файла конфигурации, как показано ниже:
trainer +: {
checkpointer +: {
type: empty,
},
Как лучше всего загружать контрольную точку при вызове allennlp train --include-package <$my_package>
?
У меня есть my_package с подмодулями в подкаталогах, таких как my_package/models
s и my_package/training
. Я хочу разместить собственный код контрольной точки в my_package/training/custom_checkpointer.py
Моя основная модель находится в my_package/models/main_model.py
. Нужно ли мне редактировать или импортировать какой-либо код / функции в моем классе main_model, чтобы использовать настраиваемую контрольную точку?