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 #4213
- style: fix some more style issues by @jackgerrits in #4211
- feat: implement serialization and deserialization for model deltas by @jackgerrits in #4222
- chore: update boost_math, fmt, vcpkg, zlib by @bassmang in #4223
- style: another round of style updates by @jackgerrits in #4224
- style: update style and namespacing for constants by @jackgerrits in #4226
- fix: [LAS] don't use shared features during SVD calculation by @olgavrou in #4225
- fix: [LAS] ensure vw prediction makes it to exploration by @olgavrou in #4227
- fix: VW should not add anything to namespace std by @jackgerrits in #4230
- style: update style of label_type_t by @jackgerrits in #4229
- test: [epsilon decay] find champ change in simulator by @bassmang in #4228
- refactor: reduce build time by @jackgerrits in #4232
- feat: [LAS] filter out (potentially) more actions than d based on singular values by @olgavrou in #4234
- build: do not add sse flags when doing MacOS arm cross build by @jackgerrits in #4235
- style: update label type to all caps by @bassmang in #4236
- style: update prediction type to all caps by @bassmang in #4237
- build: allow VW_CXX_STANDARD to be provided by consumer of VW by @jackgerrits in #4238
- refactor: remove beam.h by @jackgerrits in #4241
- style: more style fixes by @jackgerrits in #4240
- style: another round of style updates by @jackgerrits in #4242
- feat: [LAS] sparse Rademacher by @olgavrou in #4243
- chore: [LAS] remove unused implementations and set max actions default by @olgavrou in #4247
- refactor: move LabelDict namespace items into other namespaces, add const by @jackgerrits in #4245
- fix: don't run tests with iterations (and a simulator) with valgrind … by @olgavrou in #4251
- chore: [LAS] remove compile time flag and its own custom CI by @olgavrou in #4249
- fix: don't run tests with iterations with asan and ubsan by @olgavrou in #4253
- fix: [LAS] block size should never be zero by @olgavrou in #4252
- fix: [LAS] always return full predictions by @olgavrou in #4255
- refactor: use model_utils for save_load in las by @jackgerrits in #4263
- refactor: remove unused field in sparse_iterator by @jackgerrits in #4259
- test: add make_args for easier workspace creation in tests by @jackgerrits in #4267
- ci: change caching for benchmark job by @jackgerrits in #4269
- build: resolve cmake version check TODO in DetectCXXStandard.cmake by @jackgerrits in #4268
- fix!: save/load entire tag in flat_example + bump version to 9.6 by @bassmang in #4266
- test: apply make_args across test projects by @jackgerrits in #4272
- fix: This patches a bug with flat_example collision cleanup by @mrucker in #4265
- fix: explore_eval don't learn if logged action not in predicted actions by @olgavrou in #4262
- fix: [LAS] full predictions regardless of learn/predict path by @olgavrou in #4273
Full Changelog: 9.5.0...9.6.0