Skip to content

Release 0.4.0

Compare
Choose a tag to compare
@github-actions github-actions released this 15 Aug 09:43
· 58 commits to main since this release

Added

  • Add support for parallelizing annotation at the batch level. SyntaxDot has
    so far used PyTorch inter/intraop parallelization. This change adds
    support for parallelization at the batch level. Annotation-level
    parallelization can be configured with the annotation-threads
    command-line option of syntaxdot annotate.

  • Add ReLU (relu) as an option as the non-linearity in the feed-forward
    transformer layers. This is much faster for systems where no vectorized
    version of the normal distribution CDF is available (currently Apple M1).

  • The non-linearity that is used in the biaffine feed-forward layers is
    now configurable. For example:

    [biaffine]
    activation = "relu"

    When this option is absent, the GELU activation (gelu) will be used as
    the default.

Changed

  • The license of SyntaxDot has changed from the Blue Oak Model License 1.0
    to the MIT License or Apache License version 2.0 (at your option).

  • SyntaxDot now uses dynamic batch sizes. Before this change, the batch
    size (--batch-size) was specified as the number of sentences per
    batch. Since sentences are sorted by length before batching, annotation
    is performed on batches with roughly equisized sequences. However,
    later batches required more computations per batch due to longer
    sequence lengths.

    This change replaces the --batch-size option by the --max-batch-pieces
    option. This option specifies the number of word/sentence pieces that
    a batch should contain. SyntaxDot annotation creates batches that contains
    at most that number of pieces. The only exception are single sentences
    that are longer than the maximum number of batch pieces.

    With this change, annotating each batch is approximately the same amount
    of work. This leads to approximately 10% increase in performance.

    Since the batch size is not fixed anymore, the readahead (--readahead)
    is now specified in number of sentences.

  • Update to libtorch
    1.9.0
    and
    tch 0.5.0.

  • Change the default number of inter/intraop threads to 1. Use 4 threads for
    annotation-level parallelization. This has shown to be faster for all models,
    both on AMD Ryzen and Apple M1.