不同 Vowpal Wabbit 版本缓存的数据集
Datasets cached by different Vowpal Wabbit releases
由于某些原因,我使用了 2 个不同的 VW 版本:最新的开发版本 (8.1.1) 用于我的实验,"latest stable" 7.10 版本用于生产。所以,问题是:如果我简单地为生产模型指定 -c
标志,同时使用 8.1.1 Vowpal Wabbit 使用的相同数据集进行训练,会发生什么情况?
- 它会从头开始重建缓存吗?
- 它会重复使用之前保存的缓存吗?如果是这种情况,二进制格式是否兼容不同的 VW 版本?
我在docs中碰到了下面这句话:
If the cache exists and is newer than the data-set, it will be used, if it doesn't exist, it'll be created the first time -c is used.
它是否也适用于不同的版本?
当前 VW 将版本信息存储在缓存文件中。在读取时,它检查缓存版本是否与其版本匹配,如果 recreates 缓存文件不相等,则检查缓存文件。因此在一个 VW 版本中创建的缓存文件不能在另一个版本中使用。
根据 source code,如果存储在缓存文件中的版本与当前 VW 版本不同,缓存 将被重建。
我认为缓存格式不会经常更改,所以也许您可以冒险禁用检查。我不确定 8.1.1 和 7.10 缓存兼容性。
另一个问题是经过训练的 模型 的兼容性。这里有一些保持向后兼容性的尝试(较新的 VW 可以读取较旧的模型),我认为除非使用特定功能,否则甚至可以向前兼容。参见 vw_versions.h。至少大众应该检测模型(和缓存)文件是否太旧(两年前它只是崩溃而没有任何提示是什么原因)。
由于某些原因,我使用了 2 个不同的 VW 版本:最新的开发版本 (8.1.1) 用于我的实验,"latest stable" 7.10 版本用于生产。所以,问题是:如果我简单地为生产模型指定 -c
标志,同时使用 8.1.1 Vowpal Wabbit 使用的相同数据集进行训练,会发生什么情况?
- 它会从头开始重建缓存吗?
- 它会重复使用之前保存的缓存吗?如果是这种情况,二进制格式是否兼容不同的 VW 版本?
我在docs中碰到了下面这句话:
If the cache exists and is newer than the data-set, it will be used, if it doesn't exist, it'll be created the first time -c is used.
它是否也适用于不同的版本?
当前 VW 将版本信息存储在缓存文件中。在读取时,它检查缓存版本是否与其版本匹配,如果 recreates 缓存文件不相等,则检查缓存文件。因此在一个 VW 版本中创建的缓存文件不能在另一个版本中使用。
根据 source code,如果存储在缓存文件中的版本与当前 VW 版本不同,缓存 将被重建。
我认为缓存格式不会经常更改,所以也许您可以冒险禁用检查。我不确定 8.1.1 和 7.10 缓存兼容性。
另一个问题是经过训练的 模型 的兼容性。这里有一些保持向后兼容性的尝试(较新的 VW 可以读取较旧的模型),我认为除非使用特定功能,否则甚至可以向前兼容。参见 vw_versions.h。至少大众应该检测模型(和缓存)文件是否太旧(两年前它只是崩溃而没有任何提示是什么原因)。