使用 Vowpal Wabbit 停止机器学习训练但保持模型的当前状态
Stop a machine learning training but keep current state of the model with Vowpal Wabbit
我目前 运行正在使用 vowpal wabbit 进行训练。数据集很大(4GBytes),已经 运行 一晚上了。还在训练中,不知道能坚持多少天
你知道是否有办法停止训练,但保持并保存模型的当前状态,所以必须在真实数据上测试它?
如果您事先知道可以使用 --save_per_pass
(因此每次通过后都会保存一个模型),或者如果您只进行一次学习,则可以包含带有 [=13 的特殊示例=] save_filename
其中文件名是应保存模型的路径。
如果你做 multi-pass learning 并且第一遍结束(所以创建了一个缓存文件),你没有办法在训练数据中包含 save
例子,所以恐怕你没有简单的方法来保存到目前为止训练的模型。
我会说 4 GiB 是一个小数据集:-)。当我在 10GiB(压缩)数据集(也不是很大)上进行训练时,花了两个小时(包括创建缓存文件,这花费了大部分时间,进一步 passes/experiments 快得多),没有任何并行化.当然,这取决于数据集、在线与批量学习、减少和使用的参数,尤其是遍数和硬盘速度,但 "whole night" 在我看来对于这么小的数据集来说太长了。
如@user3914041 所说,检查 stderr 日志。
无法在任何时候停止 VW 并转储其模型状态。如果你从文件中训练,你可能会尝试估计当前的 VW 进度并删除数据片段,这样 VW 就可以到达数据集的末尾。你应该记住大众使用缓冲读取。
或者,也许更好的方法是将 save
示例插入训练数据集中。如果您使用 -f
参数启动 VW,那么一旦 VW 达到此示例,您将看到创建的指定模型文件。当您没有指定 -f
,但您的数据集中有 save_foo|
个示例时,模型将保存到名为 "foo" 的文件中。然后你可以杀死大众进程。
所有这些建议都是肮脏的技巧,可能有效也可能无效。您最好提前计划何时保存您的模型,并在下次使用 Martin 提出的选项之一。
更新:包括 Martin 的注释。
我目前 运行正在使用 vowpal wabbit 进行训练。数据集很大(4GBytes),已经 运行 一晚上了。还在训练中,不知道能坚持多少天
你知道是否有办法停止训练,但保持并保存模型的当前状态,所以必须在真实数据上测试它?
如果您事先知道可以使用 --save_per_pass
(因此每次通过后都会保存一个模型),或者如果您只进行一次学习,则可以包含带有 [=13 的特殊示例=] save_filename
其中文件名是应保存模型的路径。
如果你做 multi-pass learning 并且第一遍结束(所以创建了一个缓存文件),你没有办法在训练数据中包含 save
例子,所以恐怕你没有简单的方法来保存到目前为止训练的模型。
我会说 4 GiB 是一个小数据集:-)。当我在 10GiB(压缩)数据集(也不是很大)上进行训练时,花了两个小时(包括创建缓存文件,这花费了大部分时间,进一步 passes/experiments 快得多),没有任何并行化.当然,这取决于数据集、在线与批量学习、减少和使用的参数,尤其是遍数和硬盘速度,但 "whole night" 在我看来对于这么小的数据集来说太长了。
如@user3914041 所说,检查 stderr 日志。
无法在任何时候停止 VW 并转储其模型状态。如果你从文件中训练,你可能会尝试估计当前的 VW 进度并删除数据片段,这样 VW 就可以到达数据集的末尾。你应该记住大众使用缓冲读取。
或者,也许更好的方法是将 save
示例插入训练数据集中。如果您使用 -f
参数启动 VW,那么一旦 VW 达到此示例,您将看到创建的指定模型文件。当您没有指定 -f
,但您的数据集中有 save_foo|
个示例时,模型将保存到名为 "foo" 的文件中。然后你可以杀死大众进程。
所有这些建议都是肮脏的技巧,可能有效也可能无效。您最好提前计划何时保存您的模型,并在下次使用 Martin 提出的选项之一。
更新:包括 Martin 的注释。