zotowata commited on
Commit
73c832f
·
verified ·
1 Parent(s): f1b003b

Use SmolLM tokenizer by default and validate vocab

Browse files
Files changed (1) hide show
  1. train_2b.py +17 -1
train_2b.py CHANGED
@@ -119,6 +119,21 @@ _LOCAL_SNAPSHOT_CACHE = {}
119
  _LOCAL_DATA_SUFFIXES = {".parquet", ".jsonl", ".json"}
120
 
121
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
122
  def _resolve_local_dataset_path(dataset_name):
123
  if os.path.isfile(dataset_name) or os.path.isdir(dataset_name):
124
  return dataset_name
@@ -788,7 +803,7 @@ def main():
788
  parser.add_argument("--batch_size", type=int, default=8)
789
  parser.add_argument("--device", type=str, default="cuda")
790
  parser.add_argument("--save_dir", type=str, default="results")
791
- parser.add_argument("--tokenizer", type=str, default="gpt2")
792
  parser.add_argument("--data", type=str, default=None)
793
  parser.add_argument("--model-preset", choices=sorted(MODEL_PRESETS.keys()), default="dev",
794
  help="Architecture preset to use")
@@ -819,6 +834,7 @@ def main():
819
  preset = MODEL_PRESETS[args.model_preset]
820
  config = PCSHOConfig(**preset["config"])
821
  msa_config = MSAConfig(**preset["msa"])
 
822
 
823
  save_root = args.save_dir if os.path.isabs(args.save_dir) else os.path.join(os.getcwd(), args.save_dir)
824
  free_bytes = shutil.disk_usage(os.path.dirname(save_root) or os.getcwd()).free
 
119
  _LOCAL_DATA_SUFFIXES = {".parquet", ".jsonl", ".json"}
120
 
121
 
122
+ def _validate_tokenizer_compatibility(config, tokenizer_name: str) -> None:
123
+ from transformers import AutoTokenizer
124
+
125
+ tokenizer = AutoTokenizer.from_pretrained(tokenizer_name)
126
+ base_vocab_size = tokenizer.vocab_size
127
+ supported_base_vocab = config.vocab_size - 1
128
+ if base_vocab_size > supported_base_vocab:
129
+ raise SystemExit(
130
+ f"Tokenizer '{tokenizer_name}' has vocab_size={base_vocab_size}, "
131
+ f"but this preset only supports up to {supported_base_vocab} base tokens "
132
+ f"(config.vocab_size={config.vocab_size}, mask_token_id={config.mask_token_id}). "
133
+ "Use a compatible tokenizer such as 'HuggingFaceTB/SmolLM2-1.7B' or increase the model vocab."
134
+ )
135
+
136
+
137
  def _resolve_local_dataset_path(dataset_name):
138
  if os.path.isfile(dataset_name) or os.path.isdir(dataset_name):
139
  return dataset_name
 
803
  parser.add_argument("--batch_size", type=int, default=8)
804
  parser.add_argument("--device", type=str, default="cuda")
805
  parser.add_argument("--save_dir", type=str, default="results")
806
+ parser.add_argument("--tokenizer", type=str, default="HuggingFaceTB/SmolLM2-1.7B")
807
  parser.add_argument("--data", type=str, default=None)
808
  parser.add_argument("--model-preset", choices=sorted(MODEL_PRESETS.keys()), default="dev",
809
  help="Architecture preset to use")
 
834
  preset = MODEL_PRESETS[args.model_preset]
835
  config = PCSHOConfig(**preset["config"])
836
  msa_config = MSAConfig(**preset["msa"])
837
+ _validate_tokenizer_compatibility(config, args.tokenizer)
838
 
839
  save_root = args.save_dir if os.path.isabs(args.save_dir) else os.path.join(os.getcwd(), args.save_dir)
840
  free_bytes = shutil.disk_usage(os.path.dirname(save_root) or os.getcwd()).free