From 6979cec41b2ffa90b8d08888c9707c0e63d71d55 Mon Sep 17 00:00:00 2001 From: Eric Buehler Date: Mon, 19 Aug 2024 21:02:49 -0400 Subject: [PATCH 1/2] Fix n splits duplication handling --- mistralrs-core/src/gguf/content.rs | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/mistralrs-core/src/gguf/content.rs b/mistralrs-core/src/gguf/content.rs index dad17175b..6dc5bad09 100644 --- a/mistralrs-core/src/gguf/content.rs +++ b/mistralrs-core/src/gguf/content.rs @@ -61,9 +61,14 @@ impl<'a, R: std::io::Seek + std::io::Read> Content<'a, R> { .get("split.count") .map(|val| val.to_u64().unwrap()) }) - .collect::>(); + .fold(Vec::new(), |mut accum, x| { + if !accum.contains(&x) { + accum.push(x); + } + accum + }); if n_splits.len() > 1 { - candle_core::bail!("Multiple contents have multiple `split.count` fields"); + candle_core::bail!("GGUF files have `split.count` differing values: {n_splits:?}. Perhaps they do not match?"); } #[allow(clippy::cast_possible_truncation)] if !n_splits.is_empty() && n_readers != n_splits[0] as usize { From d6f84f4900a23e61aa574b39349248ea434e3bdf Mon Sep 17 00:00:00 2001 From: Eric Buehler Date: Mon, 19 Aug 2024 21:05:38 -0400 Subject: [PATCH 2/2] Better logging and errors --- mistralrs-core/src/gguf/content.rs | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/mistralrs-core/src/gguf/content.rs b/mistralrs-core/src/gguf/content.rs index 6dc5bad09..8cebd51d5 100644 --- a/mistralrs-core/src/gguf/content.rs +++ b/mistralrs-core/src/gguf/content.rs @@ -68,13 +68,16 @@ impl<'a, R: std::io::Seek + std::io::Read> Content<'a, R> { accum }); if n_splits.len() > 1 { - candle_core::bail!("GGUF files have `split.count` differing values: {n_splits:?}. Perhaps they do not match?"); + candle_core::bail!("GGUF files have differing `split.count` values: {n_splits:?}. Perhaps the GGUF files do not match?"); } #[allow(clippy::cast_possible_truncation)] if !n_splits.is_empty() && n_readers != n_splits[0] as usize { - candle_core::bail!("Number of readers does not match the number of splits."); + candle_core::bail!( + "Number of GGUF files does not match the number of splits, expected {} files.", + n_splits[0] + ); } else if n_splits.len() == 1 { - info!("Model n splits: {}", n_splits[0]); + info!("GGUF file has been split into {} shards", n_splits[0]); } let mut arch = None;