Skip to content

Releases: VowpalWabbit/vowpal_wabbit

9.9.0

19 Jul 14:18
9db1f5f
Compare
Choose a tag to compare

This release includes several new reductions including contextual bandits with graph feedback as well as a completely new interaction grounded learning reduction. There are also WASM bindings available for Vowpal Wabbit now.

Contextual Bandits with Graph Feedback

Contextual Bandits (CB) with graph feedback can be used for scenarios where some actions, when taken, reveal information other actions (not taken), or maybe don't reveal any information at all. If there exists prior knowledge of this relationship between actions then that knowledge can be used to make exploration and learning more efficient.

See here for more details.

Contextual Bandits with interaction grounded learning

Interaction grounded learning (IGL) can be used for the scenario where user doesn't have a reward function. It will automatically learn a personalized reward function from user's feedback and optimize directly for the latent user satisfaction

See here for more details

Vowpal Wabbit package in npm

Now that WASM bindings are available, Vowpal Wabbit can be used in JavaScript and TypeScript applications via the npm package. For more details, see here

Click here to see all changes in this release

What's Changed

New Contributors

Full Changelog: 9.8.0...9.9.0

9.8.0

14 Mar 17:30
258731c
Compare
Choose a tag to compare

General Notes

Upgrades to benchmarking, naming conventions, and minor bug fixes.

Click here to see all changes in this release

What's Changed

Features

  • feat: Switch to scalar code for unimplemented interactions in las simd code path. by @zwd-ms in #4487
  • feat: support tags for options by @jackgerrits in #4507
  • feat: [gd] persist ppw extra state by @lalo in #4023
  • feat: [LAS] add example ft hash and cache and re-use rows of matrix if actions do not change by @olgavrou in #4509
  • feat: [LAS] with CCB by @olgavrou in #4520

Fixes

Other Changes

  • refactor: split out 400+ valgrind tests by @bassmang in #4482
  • build: Don't add SSE flags when cross compiling to MacOS universal2 binary by @jackgerrits in #4489
  • refactor: Migrate raw function pointers to std::function by @byronxu99 in #4461
  • refactor: [all] remove cost_sensitive from workspace by @lalo in #4490
  • refactor: [sd] move prog val config to sd by @lalo in #4491
  • chore: update submodules by @bassmang in #4492
  • ci: [epsilon_decay] benchmarks by @bassmang in #4494
  • refactor: register additional metrics at start not at finish by @jackgerrits in #4499
  • chore: force eigen submodule path to output a message if submodule mi… by @olgavrou in #4504
  • refactor: allow any pointer in object_pool by @jackgerrits in #4473
  • chore: [LAS] don't force mtr with LAS by @olgavrou in #4516
  • test: fix pytype issue in test runner and utl by @jackgerrits in #4517
  • refactor: make flat_example an implementation detail of ksvm by @jackgerrits in #4505
  • refactor: automatically set label parser after stack created by @jackgerrits in #4471
  • refactor: add api to set data object associated with learner by @jackgerrits in #4523
  • refactor: dedup dict const by @bassmang in #4525
  • refactor: rename wpp, ppw, ws, params_per_problem, problem_multiplier, num_learners, increment -> feature_width by @bassmang in #4521
  • refactor: remove resize in gd setup by @bassmang in #4526
  • chore: Update Version to 9.8.0 by @bassmang in #4529

Full Changelog: 9.7.0...9.8.0

9.7.0

02 Feb 19:56
dcbcd07
Compare
Choose a tag to compare

Eigen Memory Tree

An Eigen Memory Tree (EMT) is a memory based learning reduction. EMTs will remember previous training examples and use this memory to assign labels to future requested predictions. For more information, see the EMT wiki page

Robust confidence sequence estimator

#4297

Cubic config oracle in automl

We are now able to search over cubic interactions on top of quadratic interactions in automl . Automl

Vector CPU instructions

Vector CPU instructions for faster computation in the CB with Large Action Space reduction. LAS

Predict only models

Ability to save predict only models from some reductions (automl, epsilon-decay).  this removes the reductions from the reduction stack and allows older versions of VW to predict.

Enforce minimum probability for SquareCB

[SquareCB] (https://github.com/VowpalWabbit/vowpal_wabbit/wiki/Contextual-Bandit-Exploration-with-SquareCB)

Support for probabilities for PLT

Added support for probabilities output for the PLT reduction + fix it in version 9+.

Target rate added to explore eval

The goal of explore eval is to evaluate different exploration algorithms using the data from a logged policy. Explore Eval

VW refactors

  • Improved finish_example in all reductions
  • Parsers for different formats moved into their own libraries
  • Namespacing of library fixed - all things under VW
Click here to see all changes in this release

What's Changed

Features

  • feat: explore eval example target rate by @olgavrou in #4277
  • feat: [gd] invert_hash readeable model with hexfloat by @lalo in #3999
  • feat: explore eval target rate by @olgavrou in #4285
  • feat: Add explicit simd implementation for one pass svd in large action spaces. by @zwd-ms in #4261
  • feat: Add avx2 implementation for one pass svd in large action spaces. by @zwd-ms in #4281
  • feat: Handle ignore_linear in las simd and throw on unsupported interactions. by @zwd-ms in #4282
  • feat: spin off automl predict_only_model to standard cb model by @bassmang in #4279
  • feat: add mix with uniform impl by @jackgerrits in #4301
  • feat: Enforce minimum probability for squarecb and update impl by @jackgerrits in #4298
  • feat: add unique_ptr support to model_utils by @jackgerrits in #4341
  • feat: use strong type for no pred by @jackgerrits in #4343
  • feat: use strong type for no label by @jackgerrits in #4342
  • feat: Adding EMT reduction. by @mrucker in #4264
  • feat: [automl] trace to csv files by @lalo in #4355
  • feat: robust confidence sequence estimator by @bassmang in #4297
  • feat: [automl] config oracle cubic on top of quadratic by @lalo in #4351
  • feat: update for probabilistic label tree reduction (#2766) - support for --probabilities option and fixed compatibility with VW 9+ version by @mwydmuch in #4138
  • feat: constexpr uniform_hash and type fixes by @jackgerrits in #4415
  • feat: Enable learner type checks at build. by @zwd-ms in #4411
  • feat: stabilize unique_ptr based initialize function by @jackgerrits in #4438
  • feat: Added new CCB predict benchmark by @rajan-chari in #4421
  • feat: [CB_GF] CB with graph feedback text input by @olgavrou in #4392
  • feat: [epsilon_decay] predict_only_model by @bassmang in #4458

Fixes

  • fix!: resolve csoaa_ldf prediction return correctness by @jackgerrits in #4395
  • fix!: [LAS] las + squarecb to re-use squarecb gamma by @olgavrou in #4479
  • fix!: [py] use full word for namespace and add test by @lalo in #4485
  • fix: [Explore_eval] fix threshold for adaptive multiplier by @marco-rossi29 in #4168
  • fix: Add pragma once to merge.h by @byronxu99 in #4284
  • fix: [epsilon_decay] process models in descending order when shifting by @bassmang in #4286
  • fix: [CI] check for missing args consistently in forwards/backwards compat by @olgavrou in #4289
  • fix: [CI] backwards compat don't fail if model file is missing by @olgavrou in #4291
  • fix: silence unused warning when las simd not enabled by @jackgerrits in #4299
  • fix: Build las simd on x86 only and rename command line flag. by @zwd-ms in #4300
  • fix: [automl] update champ score when it matches labelled_action by @lalo in #4326
  • fix: fix get_features function returning dangling pointer by @jackgerrits in #4328
  • fix: [automl] config oracle edge cases by @lalo in #4327
  • fix: remove type numpy aliases as they are now removed upstream by @jackgerrits in #4363
  • fix: fix loop binding to temporary by @jackgerrits in #4379
  • fix: [automl] update print logic for new oracle by @lalo in #4384
  • fix: exception safety in learner builder by @jackgerrits in #4429
  • fix: remove cerr from cs_robust by @bassmang in #4441
  • fix: [automl/epsilon_decay] brentq optimization by @bassmang in #4449
  • fix: pydocs formatting by @bassmang in #4464
  • fix: invert_hash for coin/ftrl by @bassmang in #4465
  • fix: Account for | in make_valid_name() by @darwinyip in #4468
  • fix: [LAS] LAS not a cb adf common reduction, fixes metrics with LAS bug by @olgavrou in #4476
  • fix: [automl] allow multiple models underneath automl by @bassmang in #4463
  • fix: include t, min and max label in model merging by @jackgerrits in #4483

Other Changes

Read more

9.6.0

08 Nov 18:53
16e9114
Compare
Choose a tag to compare

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

Full Changelog: 9.5.0...9.6.0

9.5.0

14 Oct 11:04
9496a6d
Compare
Choose a tag to compare

Style Changes

This release includes some improvements to the style and naming conventions in VW. This includes using snake_case for all variable and class names, and converting most structs to classes. These style changes will be standardized and enforced in later releases.

Confidence Sequence Estimator

Confidence sequences have become the default estimators when evaluating policies in multi-model reductions such as AutoML and Epsilon Decay.

Click here to see all changes in this release

Changes

Features

  • feat: integrate confidence sequences in automl and epsilon_decay by @bassmang in #4125
  • feat: add experimental to python by @bassmang in #4165
  • feat: Improve large actions multithreading. by @zwd-ms in #4158
  • feat: [epsilon decay] add initial epsilon option by @bassmang in #4170
  • feat: Model merging with delta objects by @byronxu99 in #4177
  • feat: Add ftrl to dump_weights_to_json and compat CIs by @bassmang in #4193

Fixes

Other Changes

Full Changelog: 9.4.0...9.5.0

9.4.0

13 Oct 16:48
ebf709f
Compare
Choose a tag to compare

We tagged 9.4.0 a few weeks ago but a few delays caused the rest of the release to only be completed now. The contents of these release notes and all associated artifacts correspond to the 9.4.0 tag on September 15.

DotNet Core

DotNet core support is here! It works if you manually import dependencies, but it will become automatic in the upcoming 9.4.1.

Native CSV Parser

As part of RLOS Fest this year @HollowMan6 implemented Native CSV parsing support. It is currently disabled by default but is available using a CMake option (VW_BUILD_CSV). This feature makes it possible to download CSV datasets and process them without any extra steps. @HollowMan6 also created a tutorial to explain how to use the feature on the well known iris dataset. Thanks for all of your hard work!

Click here to see all changes in this release

Changes

Features

Fixes

  • fix: [automl] multiple fixes by @lalo in #4089
  • fix: [las] unit-test-fails to link by @lalo in #4118
  • fix: dump_options typo by @bassmang in #4119
  • fix: [automl] call process_example before predict by @lalo in #4122
  • fix: [automl] generate challengers on first example by @lalo in #4123
  • fix(csv): default label regardless of if label column present by @jackgerrits in #4127
  • fix: Fix minor typos in large action space benchmarks by @zwd-ms in #4128
  • fix: add one_of to csoaa_ldf by @bassmang in #4130
  • fix: Only create launch_vs target if it does not already exist by @byronxu99 in #4135

Other changes

  • refactor: [automl] split config oracle out by @lalo in #4107
  • refactor: [automl] move files to details dir by @lalo in #4108
  • refactor: [automl] small refactors by @lalo in #4109
  • refactor: clear labels before reading from cache by @bassmang in #4113
  • refactor: [automl] template for oracle by @lalo in #4111
  • chore: [las] separate spanners and remove aatop SVD impl by @olgavrou in #4116
  • test: [automl] add unit tests for oracle & refactor by @lalo in #4115
  • refactor: [automl] remove estimator dependency from oracle by @lalo in #4117
  • refactor: [automl] prepare aml_estimator for other estimator impl by @lalo in #4114
  • test: add csv parser to throughput measurement tool by @jackgerrits in #4110
  • ci: check all runtests models for forwards model compatibility by @olgavrou in #4126
  • ci: clang-tidy only errors by @lalo in #4129
  • ci: Build and test with AddressSanitizer by @byronxu99 in #4103
  • refactor: [automl] iterator based config generators by @lalo in #4121
  • perf: [LAS] speedup by removing branch from hot path by @olgavrou in #4136
  • test: Resolve gtest loading issues on Windows by @jackgerrits in #4131
  • docs: pin theme to 0.9.0 to resolve missing TOC by @jackgerrits in #4139
  • ci: Fix pytype error by @byronxu99 in #4142
  • build: fix windows.h GetObject issue by @jackgerrits in #4143
  • refactor: [automl] allow_override for selected options by @bassmang in #4144
  • test: [LAS ] add spanner tests and test file separation by @olgavrou in #4146
  • test: [LAS] calculate num of non-degenerate singular values by @olgavrou in #4147
  • docs: [LAS] add some comments in the code explaining one-pass SVD by @olgavrou in #4148
  • refactor: one_of for wap_ldf and cbzo, clean rank options by @bassmang in #4145
  • chore: Update Version to 9.4.0 by @lokitoth in #4151

Full Changelog: 9.3.0...9.4.0

9.3.0

10 Aug 13:59
36e2335
Compare
Choose a tag to compare

This release includes a new experimental feature to merge VW models and bug fixes.

Click here to read the full release notes.

9.2.0

12 Jul 20:47
3b0af16
Compare
Choose a tag to compare

This release includes a large refactoring of the library structure, support for learn and predict directly from a string in Java, access to model weights in Python, and many more small features and bug fixes.

Click here to read the full release notes.

9.1.0

06 Apr 14:28
bd4998c
Compare
Choose a tag to compare

This release includes a new way to output readable weights, removal of the Boost Program Options dependency, a new loss function and plenty of bug fixes.

Click here to read the full release notes.

9.0.1