1. 27 May, 2021 1 commit
    • Nicolas Patry's avatar
      Adding new argument `max_new_tokens` for generate. (#11476) · 80d712fa
      Nicolas Patry authored
      * Adding new argument `max_new_tokens` for generate.
      
      This is a proposal to add a new argument `max_new_tokens` to `generate`.
      This include a `MaxNewTokensCriteria` that enables callers that don't
      know about the token length ahead (like pipelines callers) to manage
      more easily the length of their generated output.
      
      * Adding a test for the user warning when both`max_length` and
      `max_new_tokens` are used together.
      
      * Removed redundant `no_grad`.
      80d712fa
  2. 21 Apr, 2021 1 commit
    • Nicolas Patry's avatar
      Removed `max_length` from being mandatory within `generate`. (#11314) · aad95c7c
      Nicolas Patry authored
      * Removed `max_length` from being mandatory within `generate`.
      
      - Moving on to fully using `StoppingCriteria` for `greedy` and `sample`
      modes.
      - `max_length` still used for `beam_search` and `group_beam_search`
      (Follow up PR)
      - Fixes a bug with MaxLengthStoppingCriteria (we should stop as soon a
      we hit the max_length, the comparison needs to be or equal, that affects
      the tests).
      - Added options to use `logits_processor` and `stopping_criteria`
      directly within `generate` function (so some users can define their own
      `logits_processor` and `stopping_criteria`).
      - Modified the backward compat tests to make sure we issue a warning.
      
      * Fix `max_length` argument in `generate`.
      
      * Moving validate to being functional.
      
      - Renamed `smax_length` to `stoppping_max_length`.
      
      * Removing `logits_processor` and `stopping_criteria` from `generate`
      arguments.
      
      * Deepcopy.
      
      * Fix global variable name.
      aad95c7c
  3. 12 Mar, 2021 1 commit
    • Nicolas Patry's avatar
      Adding new parameter to `generate`: `max_time`. (#9846) · 543d0549
      Nicolas Patry authored
      * [WIP] Adding new parameter to `generate`:  `max_time`.
      
      Generation by tokens number is sometimes a bit clunky because we don't
      know how many tokens are good enough or even how many tokens are in
      the payload (for pipelines users for instance). This leads to hard
      to understand behavior.
      
      This PR proposes a new argument `max_time` which is a float of seconds
      for the allowed time for `generate` to run on.
      Ideally combinations of `max_tokens=None`, `max_time=2` could be used to
      generate as many tokens as possible within time budget.
      
      NB: Another possible approach consists of passing a callback to `generate`
        putting the caller in charge of the actual decision of when to stop
        generating tokens. It opens the door to 'which args should we pass'
        to this callback. It's hard to imagine other use-cases for this
        early stopping behavior than time (that are not already covered by
        parameters of generate)
      
      * Revamp with StoppingCriteria
      
      * Removing deprecated mentions.
      
      * Forgot arguments to stopping criteria.
      
      * Readding max_length it's not just used as a stopping criteria.
      
      * Default value for `stopping_criteria`.
      
      * Address @patrickvonplaten comments.
      
      - More docstrings
      - Actual doc
      - Include in global namespace
      - Remove TF work.
      
      * Put back `max_length` (deprecation different PR).
      
      * Doc quality.
      
      * Fixing old behavior without `stopping_criteria` but with `max_length`.
      
      Making sure we don't break that in the future.
      
      * Adding more tests for possible inconsistencies between
      
      `max_length` and `stopping_criteria`.
      
      * Fixing the torch imports.
      543d0549