Остановите обучение машинному обучению, но сохраните текущее состояние модели с помощью Vowpal Wabbit

В настоящее время я провожу этап обучения, используя vowpal wabbit. Набор данных большой (4 ГБ), и он уже работает целую ночь. Это все еще тренировка, и я не знаю, сколько дней она может длиться.

Знаете ли вы, есть ли способ остановить обучение, но сохранить и сохранить модель в ее текущем состоянии, чтобы проверить ее на реальных данных?


person Stephane Rolland    schedule 21.07.2015    source источник
comment
Просто для уточнения, у вас нет доступа к выходным данным VW на stderr? Обычно очень полезно посмотреть, как работает ваша модель (поле average loss является ошибкой проверки), и посмотреть, как быстро она работает.   -  person ldirer    schedule 21.07.2015
comment
Да, у меня есть доступ к стандартному выводу, кажется. Средний убыток асимптотически застрял примерно на уровне 0,31. Поэтому я убил тренировку, зная, что теперь могу получить этот результат за несколько часов. Но, как было сказано в ответах, я должен учитывать тот факт, что действительно мои тренировки идут медленно, поэтому я сильно что-то меняю.   -  person Stephane Rolland    schedule 22.07.2015


Ответы (2)


Если вы заранее знали, что можете использовать либо --save_per_pass (чтобы модель сохранялась после каждого прохода), либо если вы выполняете только однопроходное обучение, вы можете включить специальные примеры с tag save_filename где имя файла — это путь, по которому должна быть сохранена модель.

Если вы делаете многопроходное обучение и первый проход закончился (поэтому был создан файл кеша), у вас нет возможности включить пример save в обучающие данные, поэтому я боюсь, что у вас нет простого способа сохранить обученную модель. уже.

Я бы сказал, что 4 ГБ — это небольшой набор данных :-). Когда я тренировался на 10GiB (сжатом) наборе данных (который тоже не большой), это заняло два часа (включая создание файла кеша, что занимает большую часть времени, дальнейшие проходы/эксперименты намного быстрее), без какого-либо распараллеливания. Конечно, это зависит от набора данных, онлайн-обучения или пакетного обучения, используемых редукций и параметров и особенно количества проходов и скорости жесткого диска, но «целая ночь» кажется мне слишком долгой для такого небольшого набора данных.

Как сказал @user3914041, проверьте журнал stderr.

person Martin Popel    schedule 21.07.2015

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

Или, возможно, лучший подход — вставить save пример в обучающий набор данных. Если вы запустили VW с параметром -f, вы увидите указанный файл модели, созданный, как только VW достигнет этого примера. Если вы не укажете -f, но у вас есть save_foo| пример в вашем наборе данных, модель будет сохранена в файл с именем "foo". Затем вы можете убить процесс VW.

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

ОБНОВЛЕНИЕ: Добавлено примечание Мартина.

person truf    schedule 21.07.2015
comment
Если вы не укажете -f, но у вас есть save_foo| пример в наборе данных, модель будет сохранена в файл с именем foo. - person Martin Popel; 22.07.2015