Nanobit commited on
Commit
a276c9c
·
unverified ·
1 Parent(s): 7019509

Fix(save): Save as safetensors (#363)

Browse files
Files changed (1) hide show
  1. scripts/finetune.py +10 -5
scripts/finetune.py CHANGED
@@ -257,6 +257,8 @@ def train(
257
  LOG.info("loading model and peft_config...")
258
  model, peft_config = load_model(cfg, tokenizer)
259
 
 
 
260
  if "merge_lora" in kwargs and cfg.adapter is not None:
261
  LOG.info("running merge of LoRA with base model")
262
  model = model.merge_and_unload()
@@ -264,7 +266,10 @@ def train(
264
 
265
  if cfg.local_rank == 0:
266
  LOG.info("saving merged model")
267
- model.save_pretrained(str(Path(cfg.output_dir) / "merged"))
 
 
 
268
  tokenizer.save_pretrained(str(Path(cfg.output_dir) / "merged"))
269
  return
270
 
@@ -280,7 +285,7 @@ def train(
280
  return
281
 
282
  if "shard" in kwargs:
283
- model.save_pretrained(cfg.output_dir)
284
  return
285
 
286
  trainer = setup_trainer(cfg, train_dataset, eval_dataset, model, tokenizer)
@@ -302,7 +307,7 @@ def train(
302
  def terminate_handler(_, __, model):
303
  if cfg.flash_optimum:
304
  model = BetterTransformer.reverse(model)
305
- model.save_pretrained(cfg.output_dir)
306
  sys.exit(0)
307
 
308
  signal.signal(
@@ -342,11 +347,11 @@ def train(
342
  # TODO do we need this fix? https://huggingface.co/docs/accelerate/usage_guides/fsdp#saving-and-loading
343
  # only save on rank 0, otherwise it corrupts output on multi-GPU when multiple processes attempt to write the same file
344
  if cfg.fsdp:
345
- model.save_pretrained(cfg.output_dir)
346
  elif cfg.local_rank == 0:
347
  if cfg.flash_optimum:
348
  model = BetterTransformer.reverse(model)
349
- model.save_pretrained(cfg.output_dir)
350
 
351
  # trainer.save_model(cfg.output_dir) # TODO this may be needed for deepspeed to work? need to review another time
352
 
 
257
  LOG.info("loading model and peft_config...")
258
  model, peft_config = load_model(cfg, tokenizer)
259
 
260
+ safe_serialization = cfg.save_safetensors is True
261
+
262
  if "merge_lora" in kwargs and cfg.adapter is not None:
263
  LOG.info("running merge of LoRA with base model")
264
  model = model.merge_and_unload()
 
266
 
267
  if cfg.local_rank == 0:
268
  LOG.info("saving merged model")
269
+ model.save_pretrained(
270
+ str(Path(cfg.output_dir) / "merged"),
271
+ safe_serialization=safe_serialization,
272
+ )
273
  tokenizer.save_pretrained(str(Path(cfg.output_dir) / "merged"))
274
  return
275
 
 
285
  return
286
 
287
  if "shard" in kwargs:
288
+ model.save_pretrained(cfg.output_dir, safe_serialization=safe_serialization)
289
  return
290
 
291
  trainer = setup_trainer(cfg, train_dataset, eval_dataset, model, tokenizer)
 
307
  def terminate_handler(_, __, model):
308
  if cfg.flash_optimum:
309
  model = BetterTransformer.reverse(model)
310
+ model.save_pretrained(cfg.output_dir, safe_serialization=safe_serialization)
311
  sys.exit(0)
312
 
313
  signal.signal(
 
347
  # TODO do we need this fix? https://huggingface.co/docs/accelerate/usage_guides/fsdp#saving-and-loading
348
  # only save on rank 0, otherwise it corrupts output on multi-GPU when multiple processes attempt to write the same file
349
  if cfg.fsdp:
350
+ model.save_pretrained(cfg.output_dir, safe_serialization=safe_serialization)
351
  elif cfg.local_rank == 0:
352
  if cfg.flash_optimum:
353
  model = BetterTransformer.reverse(model)
354
+ model.save_pretrained(cfg.output_dir, safe_serialization=safe_serialization)
355
 
356
  # trainer.save_model(cfg.output_dir) # TODO this may be needed for deepspeed to work? need to review another time
357