class_docstr: [`LogitsProcessor`] enforcing an exponential penalty on repeated sequences.
  This version allows for a separate value for each sample and runs inplace when possible.
  It doesn't validate inputs.
  
  Args:
      repetition_penalty (`List[float]`):
          The parameter for repetition penalty. 1.0 means no penalty. See [this
          paper](https://arxiv.org/pdf/1909.05858.pdf) for more details.
code: def __init__(
      self,
      penalty: List[float],
      dtype: torch.dtype,
      device: torch.device,
  ):
      self.penalty = penalty
      self.penalty_tensor = torch.tensor(
          penalty, dtype=dtype, device=device
      ).unsqueeze(1)
  
imports: import math
  import torch
  from functools import lru_cache
  from typing import Optional, List, Dict, Union
  from transformers import LogitsWarper, LogitsProcessor, TemperatureLogitsWarper, TopKLogitsWarper, TopPLogitsWarper, TypicalLogitsWarper
label_desc: Use image node_id 1 to create a new HeterogeneousRepetitionPenaltyLogitsProcessor object from inherited base classes: LogitsProcessor with example: obj = HeterogeneousRepetitionPenaltyLogitsProcessor(penalty, dtype, device)