Skip to content

Releases: VowpalWabbit/vowpal_wabbit

8.8.0

07 Dec 15:16
cb914a0
Compare
Choose a tag to compare
  • There has significant work in streamlining and improving support for the Python bindings. Thanks @peterychang! (#1928)
  • The Conditional Contextual Bandit reduction got merged in, this reduction allows you to express problems where there are multiple slots to fill. See here for the wiki page. (#1816) (#1995) (#2078) (#2141)
  • CMake install targets have been added to the build files (#2172) (#2135)
    • Now you can find and link VW easily in other projects:
    find_package(VowpalWabbit REQUIRED)
    add_executable(my_exe main.cpp)
    target_link_libraries(my_exe PRIVATE VowpalWabbit::vw)
  • Slim VW got merged into master. This is an experimental lightweight inference runtime that supports a subset of VW features. (#2028)
  • Bug fixes! (see all changes below)

Internal improvements

We are at work overhauling and modernizing VW, some of the relevant changes on that front are below:

  • Migrate c arrays to std::array (#2094)
  • Make hashing constexpr in C++14 and unify rotl impl (#2093)
  • Make is_example_header const (#2095)
  • Allow constructor arugments for calloc_or_throw (#2070)
  • Learner now holds type erased reduction data (#2060)
  • Use numeric_limits (#2107)
  • Unify throwing of exceptions to use vw_exception instead of bare std:exception (#2171)
  • Cb explore adf atomization (#2069)
  • Refactor cb_adf reduction (#2057)
  • Move cb_sample to be class based (#2087)
  • Atomize topk reduction (#2050)
  • Atomize autolink reduction (#2047)

Other notable changes:

  • --version now includes commit id if available at build time (#1951)
  • Macos added as CI target (#1965)
  • Allow escaped command lines (#2157)
  • Update MSVC Toolchain to v14.1 (#1988)
  • Multiinstance mode for multiline examples (#1934)

All Changes

Click to expand all changes in 8.8.0
  • Fix warning (#2179)
  • Add/exclude new folders in the python MANIFEST (#2180)
  • fix some warnings (#2177)
  • Fixes for Learning2Search Subsystem (#2176)
  • Install rapidjson too (#2174)
  • Use standard save/load functionality for sklearn Python lib (#2142)
  • Default the label for CCB when reading cached labels (#2158)
  • Allow escaped command lines (#2157)
  • Fix header install locations (#2172)
  • Unify throwing of exceptions to use vw_exception instead of bare std::exception (#2171)
  • Disallow combining no_sample and cb_sample (#2148)
  • Fix memory leak in search.cc (#2167)
  • Fix unlabeled sgd examples (#2162)
  • Add deleter for parsed examples (#2153)
  • Fix misinterpreted negative option (#2149)
  • Catalina segfault mitigation (#2152)
  • Implement CCB type binding for Python (#2141)
  • Update test dependencies (#2147)
  • Fix typo: setup.py is not in vowpal_wabbit/python (#2143)
  • Throw instead of silently append nullptr when types don't match (#2139)
  • Fix variadic macro warning (#2138)
  • Create testing harness for cluster operation of VW and add test (#2134)
  • Improve VW support for CMake install process (#2135)
  • Properly support default build type, fix comment, define project version (#2133)
  • Update cluster readme to markdown, cleanup, format code (#2131)
  • Fix slim build and various CMake fixes (#2130)
  • Update CMakeLists.txt (#2127)
  • fixed docker image version (#2126)
  • Fix segfault when ring_size argument is not supplied (#2125)
  • Python: fix deprecated joblib (#2068)
  • forgot to set a parameter (#2114)
  • Add option to turn off sampling for CCB (#2096)
  • Remove redunant copy from CCB reduction (#2112)
  • Fix segfault in CCB - MTR must clean up predictions allocated for cost sensitive examples (#2111)
  • Softmaxpredfile (#2113)
  • Update vw_types.natvis (#2109)
  • Use numeric_limits (#2107)
  • Refactor cb_adf reduction (#2057)
  • Fix an LGTM warning in recommend (#2105)
  • Update CMakeSettings.json (#2104)
  • Remove all usages of "using namespace std" (#2071)
  • Fix lots of warnings and clang-tidy suggestions (#2085)
  • Make hashing constexpr in C++14 and unify rotl impl (#2093)
  • Migrate c arrays to std::array (#2094)
  • Cb explore adf initialize vars (#2102)
  • "-q" as default nc delay option (#2098)
  • Move cb_sample to be class based (#2087)
  • Cb explore adf atomization (#2069)
  • Fix OSX builds when not using Anaconda. (#2097)
  • Mac Os X CI tests fixes (#2035)
  • Make is_example_header const (#2095)
  • Enable use of newer standards (#2092)
  • mitigate clang-cl SIMD issue (#2091)
  • Java Binding Improvements (#2081)
  • fix: softmax can overflow (#2088)
  • Fix type issues and windows version in cmake file (#2084)
  • Atomize topk reduction (#2050)
  • Update badges in Python readme (#2086)
  • pdrop support for cb/ccb dsjson (#2078)
  • Add CMake option to force color codes (#2082)
  • Atomize autolink reduction (#2047)
  • Add forwarding header for commonly used objects in reductions headers (#2080)
  • Fix initilizer (#2073)
  • Force OSX to build .so files for python (#2061)
  • Allow constructor arugments for calloc_or_throw (#2070)
  • Propagate cache reading failures (#2062)
  • Learner now holds type erased reduction data (#2060)
  • Remove unnecessary null checks (#2067)
  • Remove most usages of unsafe sprintf function (#2054)
  • Fix LGTM Java build issues (#2063)
  • Add unit tests to coverage report (#2053)
  • remove copy from closure, and do by reference (#2058)
  • Limit python install parallelisation to number of cpus (#2056)
  • Update noexcept specifier (#2048)
  • Fix memory leak in CCB prediction (#2065)
  • Constrain doxygen input dirs, remove graphs (#2055)
  • vw_slim into master (#2028)
  • DBG helper and new natvis (#2042)
  • Multiinstance mode for multiline examples (#1934)
  • Properly add CCB index feature with stride/offset (#2041)
  • Ataymano/memory leaks fixes (#2020)
  • Implement explicit included actions for CCB (#1995)
  • Add VW-JNI SNAPSHOT publishing to nightly build
  • Fix compile errors on centos (#2005)
  • Install all headers as fix for missing headers in installed library (#1994)
  • Add comment to to tovw to clarify usage (#1999)
  • Add comment to learner.h (#1997)
  • Update MSVC Toolchain to v14.1 (#1988)
  • Remove deprecated projects and old scripts (#1992)
  • fixed command line argument retrieval from parsed model (#1993)
  • Fix implicit fallthrough warning and unused variable warning in GCC (#1984)
  • Replace nanpattern and infpattern with std:: equivalents (#1983)
  • Migrate Travis to migrated Docker image + cleanup old files (#1982)
  • Add Azure pipeline for Linux CI (#1981)
  • Add constexpr and noexcept to some functions, cleanup unused functions (#1985)
  • vw-hyperopt. Passing additional command when training and validating (#1959)
  • Ensure vw object cannot be moved or copied (#1986)
  • Fix building GCOV with Clang (#1980)
  • Update RunTests to be able to find binaries in the build directory (#1979)
  • Test and unify usage of ec_is_example_header (#1970)
  • Remove thread_local_storage from ccb (#1976)
  • Remove hard requirement for git during Windows build (#1977)
  • Action scores print tag (#1971)
  • Fix some warnings (#1973)
  • Remove two makefiles that were missed in Cmake change (#1969)
  • cd_adf: Added importance weight probability clipping for cb_type mtr, ips, dr (#1952)
  • Fix file permissions for macos CI scripts (#1966)
  • Add macos pipeline (#1965)
  • Add LICENSE to the python source package (#1963)
  • Add source info to VW Nuget description, and update copyright years. (#1962)
  • Update new_version script (#1956)
  • Update python README to reflect new build proceedures (#1961)
  • Conditional Contextual Bandit (#1816)
  • Java Maven pom.xml.in update (#1954)
  • Add git commit to output of --version (#1951)
  • cover and regcb: data.counter++ only in learn examples (not predict) (#1950)
  • Spark/JNI multipass fixes and AllReduce quiet support (#1949)
  • cb_explore_adf: fixed bug when resetting cb_type + improvements (#1948)
  • vw-hyperopt (add support for passing namespaces) (#1941)
  • Tau first should count only learn examples (not predict) (#1944)
  • Python distributions (#1928)
  • Enable suppressing NuGet version tag for official builds (#1946)
  • Fix predict path for cb_explore_adf First (#1939)
  • CS simulator v3.0 (#1932)
  • cs/cli/vw_label.h: Avoid to throw for precision issues (#1933)
  • Remove hard-coded version in Windows CI package gen script. (#1936)
  • Fix clear labels the correct way (#1930)

8.7.0

07 Jun 02:59
e63abfb
Compare
Choose a tag to compare
  • The repo has moved to the VowpalWabbit organization
  • The group of core maintainers has been growing with steady improvements

Changes

As always, lots of bug fixes.

Build System

The build system for VW has been overhauled to use CMake. This means, easier dependency resolution, faster build times and easier consumption as a dependency. The old automake + make systems have been replaced by this and eventually the .sln file will be replaced too. (#1624)

Reductions/Learning Algorithms

  • Coin betting (#1903)
  • Contextual Memory Tree (#1799)
  • Warm start for cbify (#1534)
  • Softmax learner for cbadf (#1839)
  • cbify: --cbify_ldf for multiline (csoaa_ldf input datasets (#1681))

Other Improvements

  • The parser has moved to using std types for concurency and has a clearer data production model. You’ll slowly notice more RAII types in VW. (#1731) (#1777)
  • A clang format file was added and the codebase reformatted. This is to keep things more consistent and easy to read. (#1701)
  • The Python bindings can now use JSON as the input format, as long as the VW instance you’re using is configured to be parsing input as JSON (#1809)
  • A new --strict_parse option was added to throw instead of warn for malformed examples (#1906)
  • Bare Java JNI Bindings optimized for Apache Spark (#1798)
  • Add multiclass support for hyperopt utl (#1682)

All Changes

Click to expand all changes in 8.7.0
  • Warm start for cbify (#1534)
  • utl/vw-varinfo: work-around for issue/1547 (#1548)
  • Gramhagen 1538 python make test (#1550)
  • Fixed bug in CLI parsing of --csoaa_ldf multiline (#1551)
  • ksvm lambda fix (#1556)
  • Fixed bug causing to reset dump_interval to 1 when input model -i is provided (#1558)
  • Extract stable_unique to own function for clarity (#1559)
  • Improvements and small fixes to utl (vw-lda, csv2vw (#1580)
  • When parsing dsjson, skip lines not starting with "{" (#1593)
  • Clean windows build and unify output paths (#1599)
  • Remove unused cs_testcommon project and directory (#1606)
  • build instructions: program_options insufficient (#1607)
  • Fixed _labelIndex out of bound error message (#1609)
  • Update Readme with details on installing boost dependencies (#1613)
  • Add caching to appveyor build (#1616)
  • Use a prebuilt docker image for travis build (#1620)
  • CMake build definitions (#1624)
  • VS 2017 fixes (#1628)
  • Further improve build cache by saving packages (#1634)
  • Update Travis and Appveyor badges to reflect organization change (#1642)
  • Fix cb explore adf segfault (#1643)
  • Make VW setup projects buildable from the command-line (#1646)
  • Use nuget restore instead of nuget install in Appveyor build (#1659)
  • Remove unused boost packages from VW (#1664)
  • Replace $(SolutionDir with $(ProjectDir (#1666)
  • Use cerr for parser warnings (#1670)
  • Export vw audit output to .tsv file (#1677)
  • Enable selective CMake configuration, improve messaging (#1678)
  • Fix crash when empty multi_ex is supplied for --cb_explore_adf (#1679)
  • cbify: --cbify_ldf for multiline (csoaa_ldf input datasets (#1681)
  • add multiclass support for hyperopt utl (#1682)
  • bugfix: cb_adf is not including some examples in stats calculation (#1686)
  • Move trace_message from arguments to vw object (#1688)
  • Add bug report issue template (#1693)
  • Fix some VW initialization memory leaks (#1697)
  • Fix memory leak in cb_explore_adf (#1698)
  • vw java 11 compatibility (#1700)
  • Add clang-format (#1701)
  • Fix best constant and best constant's loss calculation when using ksvm (#1704)
  • Update assembly versions to match current version (#1705)
  • options_i command line parsing refactor (#1706)
  • Disable stdin processing for all but single instance CLI. Fixes 1300 (#1708)
  • Use std::exp instead of exp free function (#1709)
  • Fix unused params warnings plus incomplete struct init (done to default values. (#1710)
  • Add check for hash_inv when creating json parser (#1711)
  • Compile fixes (#1713)
  • Change from strcmp to std::string operator== (#1715)
  • Update Dockerfile for TravisCI, define pipeline, upgrade Java (#1716)
  • Change to using a bool_switch for bool options (#1717)
  • Ataymano/mac options types fix (#1718)
  • Add clang-format 7.0.1 to CI image (#1719)
  • Create Windows build scripts and update instructions (#1721)
  • Make cbify reduction respect is_learn parameter (#1722)
  • Add natvis file for v_array and substring (#1723)
  • Remove -DSTATIC_LINK_VW from Ubuntu build instructions (#1727)
  • Fix warnings in Windows MSVC x64 build (#1730)
  • Move to std types for concurrency (#1731)
  • Scripts for running tests and generating NuGet packages (#1732)
  • Fix a small issue and cleanup usage of long long (#1733)
  • Fix file enocding for .rc files (#1734)
  • Fix build scripts forcing Debug builds. Add LTO mode and fix VW default visibility. (#1735)
  • Update README.md (#1737)
  • Update image used in travis (#1738)
  • Fix model file parser for proper treatment of negative-valued options (#1742)
  • shift clang-format to advise (#1744)
  • [tests] Make repeat.py compatible with python 3. (#1747)
  • Do not define BOOST_TEST_DYN_LINK when statically linking (#1750)
  • Fix test 175 (#1751)
  • Convert TopK reduction to be multiline example based (#1752)
  • RunTests: use test label number instead of counter (#1753)
  • Fix static linking (#1758)
  • Small Json parser cleanup (#1759)
  • Type erase json parser context for easier deletion (#1760)
  • Migrate from v_array to std::vector in some places + other changes (#1765)
  • On OSX, we need to catch boost::prog...
Read more

8.6.1

21 Jul 12:52
Compare
Choose a tag to compare

The internal version number now matches the tag number

8.6.0

05 Jul 20:32
9195fa2
Compare
Choose a tag to compare

This version has many bug fixes of course. In addition,
(1) There are many improvements to the contextual bandit code thanks to Alberto Bietti (https://arxiv.org/abs/1802.04064 ).
(2) There are significant improvements to save_resume due to @denik.

Internally,
(a) The argument parsing code has been rewritten to be more consistent throughout the code base via parser_helper.h.
(b) There are significant improvements in the way that multiline examples are handled thanks to @rajan-chari

Note that unlike previous release versions, I've left the "Makefile" build system in place rather than using Automake. Automake is still available if desired, but you'll need to run it manually if you want to use it.

8.5.0

03 Dec 16:36
Compare
Choose a tag to compare

8.5.0 has further improvements, including fully working sparse model support, empirically optimized exploration algorithms, a new cost-sensitive active learning algorithm (https://arxiv.org/abs/1703.01014), and baseline prediction support.

8.4.0

22 Jul 14:24
Compare
Choose a tag to compare

There aren’t many new features since 8.3.0 (better JSON language support, better offline eval, sparse parameter support), so this version simply addresses a number of issues that have shown up over time

8.2.0

21 Jun 18:44
Compare
Choose a tag to compare

Many things added including more sophisticated contextual bandits, the recall tree, and OjaNewton.

7.10

14 Feb 20:39
Compare
Choose a tag to compare

No significant changes from 7.9---primarily bugfixes.

7.9

11 Jan 18:55
Compare
Choose a tag to compare
7.9

Primarily updates to learning reductions modularity.

7.8

07 Dec 02:48
Compare
Choose a tag to compare
7.8

A post with some notes