9.6.0
Large Action Spaces
This introduces the Large Actions Spaces (LAS) feature. LAS is an algorithm that lets exploration happen efficiently when there are a large number of actions in a contextual bandit dataset. The main idea behind it is to eliminate actions that are similar and explore only over the most diverse actions in the dataset. For more information, see the LAS wiki page.
Style Changes
This release introduces additional style changes to make VW code formatting more consistent. Variable and type names are snake_case, constants and macros are UPPERCASE, and the VW::details namespace is used to hide implementation details.
Faster Compile Times
Through @jackgerrits's changes to some header files, VW now builds much faster! On one machine, compile times went from around 30 seconds to 17.
Click here to see all changes in this release
What's Changed
- build: remove FORCE_COLORED_OUTPUT by @jackgerrits in https://github.com/VowpalWabbit/vowpal_wabbit/pull/4213
- style: fix some more style issues by @jackgerrits in https://github.com/VowpalWabbit/vowpal_wabbit/pull/4211
- feat: implement serialization and deserialization for model deltas by @jackgerrits in https://github.com/VowpalWabbit/vowpal_wabbit/pull/4222
- chore: update boost_math, fmt, vcpkg, zlib by @bassmang in https://github.com/VowpalWabbit/vowpal_wabbit/pull/4223
- style: another round of style updates by @jackgerrits in https://github.com/VowpalWabbit/vowpal_wabbit/pull/4224
- style: update style and namespacing for constants by @jackgerrits in https://github.com/VowpalWabbit/vowpal_wabbit/pull/4226
- fix: [LAS] don't use shared features during SVD calculation by @olgavrou in https://github.com/VowpalWabbit/vowpal_wabbit/pull/4225
- fix: [LAS] ensure vw prediction makes it to exploration by @olgavrou in https://github.com/VowpalWabbit/vowpal_wabbit/pull/4227
- fix: VW should not add anything to namespace std by @jackgerrits in https://github.com/VowpalWabbit/vowpal_wabbit/pull/4230
- style: update style of label_type_t by @jackgerrits in https://github.com/VowpalWabbit/vowpal_wabbit/pull/4229
- test: [epsilon decay] find champ change in simulator by @bassmang in https://github.com/VowpalWabbit/vowpal_wabbit/pull/4228
- refactor: reduce build time by @jackgerrits in https://github.com/VowpalWabbit/vowpal_wabbit/pull/4232
- feat: [LAS] filter out (potentially) more actions than d based on singular values by @olgavrou in https://github.com/VowpalWabbit/vowpal_wabbit/pull/4234
- build: do not add sse flags when doing MacOS arm cross build by @jackgerrits in https://github.com/VowpalWabbit/vowpal_wabbit/pull/4235
- style: update label type to all caps by @bassmang in https://github.com/VowpalWabbit/vowpal_wabbit/pull/4236
- style: update prediction type to all caps by @bassmang in https://github.com/VowpalWabbit/vowpal_wabbit/pull/4237
- build: allow VW_CXX_STANDARD to be provided by consumer of VW by @jackgerrits in https://github.com/VowpalWabbit/vowpal_wabbit/pull/4238
- refactor: remove beam.h by @jackgerrits in https://github.com/VowpalWabbit/vowpal_wabbit/pull/4241
- style: more style fixes by @jackgerrits in https://github.com/VowpalWabbit/vowpal_wabbit/pull/4240
- style: another round of style updates by @jackgerrits in https://github.com/VowpalWabbit/vowpal_wabbit/pull/4242
- feat: [LAS] sparse Rademacher by @olgavrou in https://github.com/VowpalWabbit/vowpal_wabbit/pull/4243
- chore: [LAS] remove unused implementations and set max actions default by @olgavrou in https://github.com/VowpalWabbit/vowpal_wabbit/pull/4247
- refactor: move LabelDict namespace items into other namespaces, add const by @jackgerrits in https://github.com/VowpalWabbit/vowpal_wabbit/pull/4245
- fix: don't run tests with iterations (and a simulator) with valgrind … by @olgavrou in https://github.com/VowpalWabbit/vowpal_wabbit/pull/4251
- chore: [LAS] remove compile time flag and its own custom CI by @olgavrou in https://github.com/VowpalWabbit/vowpal_wabbit/pull/4249
- fix: don't run tests with iterations with asan and ubsan by @olgavrou in https://github.com/VowpalWabbit/vowpal_wabbit/pull/4253
- fix: [LAS] block size should never be zero by @olgavrou in https://github.com/VowpalWabbit/vowpal_wabbit/pull/4252
- fix: [LAS] always return full predictions by @olgavrou in https://github.com/VowpalWabbit/vowpal_wabbit/pull/4255
- refactor: use model_utils for save_load in las by @jackgerrits in https://github.com/VowpalWabbit/vowpal_wabbit/pull/4263
- refactor: remove unused field in sparse_iterator by @jackgerrits in https://github.com/VowpalWabbit/vowpal_wabbit/pull/4259
- test: add make_args for easier workspace creation in tests by @jackgerrits in https://github.com/VowpalWabbit/vowpal_wabbit/pull/4267
- ci: change caching for benchmark job by @jackgerrits in https://github.com/VowpalWabbit/vowpal_wabbit/pull/4269
- build: resolve cmake version check TODO in DetectCXXStandard.cmake by @jackgerrits in https://github.com/VowpalWabbit/vowpal_wabbit/pull/4268
- fix!: save/load entire tag in flat_example + bump version to 9.6 by @bassmang in https://github.com/VowpalWabbit/vowpal_wabbit/pull/4266
- test: apply make_args across test projects by @jackgerrits in https://github.com/VowpalWabbit/vowpal_wabbit/pull/4272
- fix: This patches a bug with flat_example collision cleanup by @mrucker in https://github.com/VowpalWabbit/vowpal_wabbit/pull/4265
- fix: explore_eval don't learn if logged action not in predicted actions by @olgavrou in https://github.com/VowpalWabbit/vowpal_wabbit/pull/4262
- fix: [LAS] full predictions regardless of learn/predict path by @olgavrou in https://github.com/VowpalWabbit/vowpal_wabbit/pull/4273
Full Changelog: https://github.com/VowpalWabbit/vowpal_wabbit/compare/9.5.0...9.6.0