diff --git a/src/model_io/gguf_reader_ext.h b/src/model_io/gguf_reader_ext.h index f02fe3c6f4..bf183f7488 100644 --- a/src/model_io/gguf_reader_ext.h +++ b/src/model_io/gguf_reader_ext.h @@ -60,7 +60,12 @@ class GGUFReader { if (count > remaining_bytes_ / element_size) return false; uint64_t size = count * element_size; - fin.seekg(static_cast(size), std::ios::cur); + // Seeking discards the read buffer, making arrays of short tokenizer strings expensive to skip. + if (size <= 64 * 1024) { + fin.ignore(static_cast(size)); + } else { + fin.seekg(static_cast(size), std::ios::cur); + } if (!fin.good()) return false; remaining_bytes_ -= size;