Add some optional repeat penalty. (#623)

* Add some optional repeat penalty.

* Add the missing files.
This commit is contained in:
Laurent Mazare
2023-08-27 10:48:45 +01:00
committed by GitHub
parent 5320aa6b7d
commit 6e485f2deb
4 changed files with 42 additions and 17 deletions

View File

@ -1,3 +1,4 @@
pub mod generation;
pub mod models;
pub mod pipelines;
pub mod utils;

View File

@ -0,0 +1,18 @@
use candle::{Result, Tensor};
pub fn apply_repeat_penalty(logits: &Tensor, penalty: f32, context: &[u32]) -> Result<Tensor> {
let device = logits.device();
let mut logits = logits.to_vec1::<f32>()?;
let context: std::collections::HashSet<_> = context.iter().collect();
for (token_id, logit) in logits.iter_mut().enumerate() {
if context.contains(&(token_id as u32)) {
if *logit >= 0. {
*logit /= penalty
} else {
*logit *= penalty
}
}
}
let logits_len = logits.len();
Tensor::from_vec(logits, logits_len, device)
}