kashif HF Staff commited on
Commit
3e21dd1
·
verified ·
1 Parent(s): 677d844

load chat_template in from_pretrained (vLLM apply_chat_template fix)

Browse files
Files changed (1) hide show
  1. tokenizer.py +26 -19
tokenizer.py CHANGED
@@ -580,22 +580,29 @@ class HybridDNATokenizer(PreTrainedTokenizer):
580
  return (save_directory,)
581
 
582
  @classmethod
583
- def from_pretrained(cls, pretrained_model_name_or_path: str, **kwargs):
584
- k = 6
585
- auto_dna_tags = False
586
-
587
- dna_config_path = os.path.join(pretrained_model_name_or_path, "dna_config.json")
588
- tok_config_path = os.path.join(pretrained_model_name_or_path, "tokenizer_config.json")
589
-
590
- if os.path.exists(dna_config_path):
591
- with open(dna_config_path, "r") as f:
592
- dna_config = json.load(f)
593
- k = dna_config.get("k", 6)
594
- auto_dna_tags = dna_config.get("auto_dna_tags", False)
595
- elif os.path.exists(tok_config_path):
596
- with open(tok_config_path, "r") as f:
597
- tok_config = json.load(f)
598
- k = tok_config.get("k", 6)
599
- auto_dna_tags = tok_config.get("auto_dna_tags", False)
600
-
601
- return cls(base_tokenizer_path=pretrained_model_name_or_path, k=k, auto_dna_tags=auto_dna_tags, **kwargs)
 
 
 
 
 
 
 
 
580
  return (save_directory,)
581
 
582
  @classmethod
583
+ def from_pretrained(cls, pretrained_model_name_or_path, *args, **kwargs):
584
+ # Custom loader: PreTrainedTokenizer.from_pretrained is incompatible with this
585
+ # tokenizer's __init__ (it re-passes bos_token etc.), so construct directly from
586
+ # bio_config/dna_config. That bypasses standard metadata loading, so also read
587
+ # chat_template from tokenizer_config.json (vLLM / apply_chat_template need it).
588
+ import os as _os, json as _json
589
+ cfg = {}
590
+ for _name in ("bio_config.json", "dna_config.json"):
591
+ _p = _os.path.join(pretrained_model_name_or_path, _name)
592
+ if _os.path.exists(_p):
593
+ with open(_p, "r", encoding="utf-8") as _f:
594
+ cfg = _json.load(_f)
595
+ break
596
+ _init = {"base_tokenizer_path": pretrained_model_name_or_path}
597
+ for _key in ("k", "tail", "auto_dna_tags"):
598
+ if _key in cfg:
599
+ _init[_key] = cfg[_key]
600
+ tok = cls(**_init, **kwargs)
601
+ if getattr(tok, "chat_template", None) is None:
602
+ _tc = _os.path.join(pretrained_model_name_or_path, "tokenizer_config.json")
603
+ if _os.path.exists(_tc):
604
+ with open(_tc, "r", encoding="utf-8") as _f:
605
+ _c = _json.load(_f)
606
+ if _c.get("chat_template"):
607
+ tok.chat_template = _c["chat_template"]
608
+ return tok