llama_sample_token_mirostat method

int llama_sample_token_mirostat(
  1. Pointer<llama_context> ctx,
  2. Pointer<llama_token_data_array> candidates,
  3. double tau,
  4. double eta,
  5. int m,
  6. Pointer<Float> mu,
)

@details Mirostat 1.0 algorithm described in the paper https://arxiv.org/abs/2007.14966. Uses tokens instead of words. @param candidates A vector of llama_token_data containing the candidate tokens, their probabilities (p), and log-odds (logit) for the current position in the generated text. @param tau The target cross-entropy (or surprise) value you want to achieve for the generated text. A higher value corresponds to more surprising or less predictable text, while a lower value corresponds to less surprising or more predictable text. @param eta The learning rate used to update mu based on the error between the target and observed surprisal of the sampled word. A larger learning rate will cause mu to be updated more quickly, while a smaller learning rate will result in slower updates. @param m The number of tokens considered in the estimation of s_hat. This is an arbitrary value that is used to calculate s_hat, which in turn helps to calculate the value of k. In the paper, they use m = 100, but you can experiment with different values to see how it affects the performance of the algorithm. @param mu Maximum cross-entropy. This value is initialized to be twice the target cross-entropy (2 * tau) and is updated in the algorithm based on the error between the target and observed surprisal.

Implementation

int llama_sample_token_mirostat(
  ffi.Pointer<llama_context> ctx,
  ffi.Pointer<llama_token_data_array> candidates,
  double tau,
  double eta,
  int m,
  ffi.Pointer<ffi.Float> mu,
) {
  return _llama_sample_token_mirostat(
    ctx,
    candidates,
    tau,
    eta,
    m,
    mu,
  );
}