Как запустить vowpal wabbit в режиме демона

Я хочу запустить vowpal wabbit в режиме обучения демона. Я нашел ссылку stackoverflow Чтение данных из памяти в Vowpal Wabbit? , но не понял, как указать имя файла модели. Что я делаю, так это бегу

vw --save_resume -f ob/e/nsefut/VWDaemon/model.vw --quiet --daemon --port 26542

а потом присылайте примеры. Что я действительно получил из ссылки, так это то, что мне нужно отправить теги, начиная с сохранения, чтобы vw понял, что это обучающие данные. Итак, я отправил его как

 echo '2 save| b:1.0 c:2.8 ' | netcat localhost 26542

Но я не могу найти файл модели. Было бы очень здорово, если бы для этого был какой-нибудь мастер-класс.

редактировать:

Кроме того, между тренировками в режиме демона я также хочу иметь возможность видеть коэффициенты до этого момента.


person DarkHorse    schedule 28.07.2015    source источник
comment
Я предполагаю, что в этой теме есть несколько вопросов: 1. Я не могу найти файл модели - bcs, вы должны отправить save или save_filename в vw, чтобы указать ему сбросить текущее состояние модели. 2. Я хочу запустить vowpal wabbit в обучающем режиме демона. VW всегда работает в режиме обучения, если вы не указали -t в командной строке. 3. Как получить только предсказанные примеры? - отправлять их без меток типа echo ' mytest| b:1.0 c:2.8 ' | netcat localhost 26542 и искать теги mytest в прогнозах (параметр -p)   -  person truf    schedule 30.07.2015
comment
и нужно ли нам запускать n экземпляров vw (режим демона с портом) для обучения n моделей?   -  person DarkHorse    schedule 31.07.2015
comment
да. vw может обучать только одну модель. например только один регрессор с весами признаков. Я предполагаю, что его все еще можно настроить (путем изменения кода C++) для выполнения нескольких различных алгоритмов ML один за другим в каждом примере, который он получает, используя один и тот же регрессор (например, коэффициенты пространства признаков), например, --oaa основан на последовательном вызове GD. Но все равно в итоге будет только одна модель. Итак, один экземпляр = одна модель.   -  person truf    schedule 31.07.2015
comment
Привет @truf, когда я отправляю пример в vw, он возвращает прогноз, но процесс не завершается. Я имею в виду, что после того, как я отправил наблюдение с помощью упомянутой мной команды «netcat», мне нужно нажать ctrl + c, чтобы завершить команду, даже после того, как я получил прогноз. Не могли бы вы указать, что я делаю неправильно?   -  person DarkHorse    schedule 03.08.2015
comment
VW, работающий в режиме демона, не должен прекращать работу после получения тестового примера. Bcs вы можете протестировать множество примеров, затем обучить, затем снова протестировать и т. д. Демон VW должен быть остановлен, как описано в вики github.com/JohnLangford/vowpal_wabbit/wiki/ Ctrl+c тоже подойдет.   -  person truf    schedule 03.08.2015


Ответы (1)


Вы должны использовать echo 'save' | netcat localhost 26542, чтобы проинструктировать vw сбросить текущие коэффициенты регрессора в файл модели. Что касается получения значений coeffs, пожалуйста, обратитесь к этому ответу. Короче: нельзя.

person truf    schedule 28.07.2015
comment
Даже если --readable_model поддерживался в режиме демона, в некоторых случаях его было бы невозможно использовать. В этом режиме vw хранит в ОЗУ строку заголовка для каждой вновь обнаруженной функции. Таким образом, может потребоваться слишком много оперативной памяти, если ваше значение -b велико, а вы играете с -q --cubic --interactions. Я разработал небольшую надстройку для VW, которая позволяет разбирать файлы моделей. В этом режиме VW загружает файл модели, считывает данные поезда, проверяет, имеет ли каждая функция ненулевой вес, распечатывает его и обнуляет вес, если это так. Таким образом, требуется такое же количество оперативной памяти, но 2 пропускают другой набор данных. - person truf; 28.07.2015
comment
А то, что я написал, это правильно? если я отправлю тег, начинающийся с save , они будут единственными, которые будут использоваться в обучении, верно? Те, которые я отправлю без каких-либо тегов или около того, будут использоваться только для прогнозирования. - person DarkHorse; 29.07.2015
comment
save должен быть не тегом, а меткой. Так что это не должно касаться |. Вам не нужно указывать какие-либо данные с сохранением. Просто отправьте сохранить как весь пример. Отправляйте его между примерами всякий раз, когда вам это нужно. Он не будет использоваться для обучения или прогнозирования, так как в нем нет данных. Я подозреваю, что если вы укажете данные с примером, который имеет метку сохранения, то эти данные будут просто проигнорированы. - person truf; 29.07.2015
comment
Итак, команда, которую я выполнил, будет использоваться только для обучения? Скорее мой вопрос: могу ли я использовать одну и ту же команду режима демона vw для обучения и прогнозирования (только для тестирования прогнозирования)? - person DarkHorse; 30.07.2015
comment
Ну, VW легко настроить так, но я не уверен, что он будет так работать из коробки во всех режимах (gd, svm, nn и т.д.). В общем, обучение представляет собой набор следующих шагов: предсказать, сравнить с меткой и получить потери, обновить веса регрессора. А тестирование — это всего лишь один шаг прогнозирования. Если вы отправите пример VW без лейбла, он, конечно, не сможет использовать его для обучения. Так что запускайте vw в режиме поезда и кидайте ему неразмеченные примеры - они будут просто предсказаны. Единственная проблема заключается в том, чтобы получить результаты. Я полагаю, что если вы укажете -p, он сохранит прогнозы как для обучающих, так и для тестовых примеров. Так что вы - person truf; 30.07.2015
comment
возможно, потребуется отфильтровать их по примерам тегов. Вспомните общий формат примера VW: label tag| |namespace feature:weight - person truf; 30.07.2015