CompressedGemma commited on
Commit
0a9e7db
·
verified ·
1 Parent(s): 20bea07

Auto-load tokenizer for merge rules

Browse files
Files changed (1) hide show
  1. generate_imatrix.py +17 -0
generate_imatrix.py CHANGED
@@ -260,9 +260,26 @@ class SimpleTokenizer:
260
  """Minimal BPE tokenizer from GGUF metadata, with HPC acceleration."""
261
 
262
  def __init__(self, model):
 
263
  self.tokens = model.kv.get('tokenizer.ggml.tokens', [])
264
  self.vocab_size = len(self.tokens)
265
  merges_raw = model.kv.get('tokenizer.ggml.merges', [])
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
266
  self.bos_id = model.kv.get('tokenizer.ggml.bos_token_id', 2)
267
  self.eos_id = model.kv.get('tokenizer.ggml.eos_token_id', 1)
268
 
 
260
  """Minimal BPE tokenizer from GGUF metadata, with HPC acceleration."""
261
 
262
  def __init__(self, model):
263
+ self.model_path = model._f.name
264
  self.tokens = model.kv.get('tokenizer.ggml.tokens', [])
265
  self.vocab_size = len(self.tokens)
266
  merges_raw = model.kv.get('tokenizer.ggml.merges', [])
267
+
268
+ # Override for models (like Mistral v0.3) where gguf merges are missing
269
+ if not merges_raw:
270
+ try:
271
+ import json, os
272
+ model_dir = os.path.dirname(os.path.abspath(self.model_path))
273
+ tok_path = os.path.join(model_dir, 'tokenizer.json')
274
+ if os.path.exists(tok_path):
275
+ with open(tok_path, 'r') as f:
276
+ tok_data = json.load(f)
277
+ merges_raw = tok_data.get('model', {}).get('merges', [])
278
+ if merges_raw:
279
+ print(f" Injected {len(merges_raw)} merges from local tokenizer.json!")
280
+ except Exception as e:
281
+ pass
282
+
283
  self.bos_id = model.kv.get('tokenizer.ggml.bos_token_id', 2)
284
  self.eos_id = model.kv.get('tokenizer.ggml.eos_token_id', 1)
285