more fixes
This commit is contained in:
@@ -1,7 +1,6 @@
|
|||||||
import importlib
|
import importlib
|
||||||
import logging
|
import logging
|
||||||
import os
|
import os
|
||||||
import pathlib
|
|
||||||
import random
|
import random
|
||||||
import signal
|
import signal
|
||||||
import sys
|
import sys
|
||||||
@@ -10,7 +9,6 @@ from typing import Optional
|
|||||||
|
|
||||||
import fire
|
import fire
|
||||||
import torch
|
import torch
|
||||||
import transformers
|
|
||||||
import yaml
|
import yaml
|
||||||
from attrdict import AttrDefault
|
from attrdict import AttrDefault
|
||||||
|
|
||||||
@@ -236,7 +234,9 @@ def train(
|
|||||||
logging.info(f"Training Completed!!! Saving pre-trained model to {cfg.output_dir}")
|
logging.info(f"Training Completed!!! Saving pre-trained model to {cfg.output_dir}")
|
||||||
|
|
||||||
# TODO do we need this fix? https://huggingface.co/docs/accelerate/usage_guides/fsdp#saving-and-loading
|
# TODO do we need this fix? https://huggingface.co/docs/accelerate/usage_guides/fsdp#saving-and-loading
|
||||||
model.save_pretrained(cfg.output_dir)
|
# only save on rank 0, otherwise it corrupts output on multi-GPU when multiple processes attempt to write the same file
|
||||||
|
if cfg.local_rank == 0:
|
||||||
|
model.save_pretrained(cfg.output_dir)
|
||||||
# trainer.save_model(cfg.output_dir) # TODO this may be needed for deepspeed to work? need to review another time
|
# trainer.save_model(cfg.output_dir) # TODO this may be needed for deepspeed to work? need to review another time
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
import logging
|
import logging
|
||||||
|
import math
|
||||||
import os
|
import os
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
from typing import Optional, Tuple, TYPE_CHECKING
|
from typing import Optional, Tuple, TYPE_CHECKING
|
||||||
@@ -180,12 +181,14 @@ def load_model(
|
|||||||
tokenizer.add_special_tokens({"pad_token": "[PAD]"})
|
tokenizer.add_special_tokens({"pad_token": "[PAD]"})
|
||||||
os.environ["TOKENIZERS_PARALLELISM"] = "false"
|
os.environ["TOKENIZERS_PARALLELISM"] = "false"
|
||||||
|
|
||||||
if cfg.tokens:
|
if cfg.special_tokens:
|
||||||
for k, v in cfg.tokens.items():
|
for k, v in cfg.special_tokens.items():
|
||||||
tokenizer.add_special_tokens({k: v})
|
tokenizer.add_special_tokens({k: v})
|
||||||
|
if cfg.tokens:
|
||||||
|
tokenizer.add_tokens(cfg.tokens)
|
||||||
|
|
||||||
# this should only be needed if you are messing with new tokens in the vocab
|
embeddings_len = math.ceil(len(tokenizer) / 32) * 32
|
||||||
# model.resize_token_embeddings(len(tokenizer))
|
model.resize_token_embeddings(embeddings_len)
|
||||||
|
|
||||||
if cfg.adapter and load_in_8bit and not cfg.load_4bit:
|
if cfg.adapter and load_in_8bit and not cfg.load_4bit:
|
||||||
logging.info("converting PEFT model w/ prepare_model_for_int8_training")
|
logging.info("converting PEFT model w/ prepare_model_for_int8_training")
|
||||||
@@ -221,6 +224,7 @@ def load_model(
|
|||||||
requires_grad.append(f"{name}: {param.requires_grad}")
|
requires_grad.append(f"{name}: {param.requires_grad}")
|
||||||
if len(requires_grad) == 0:
|
if len(requires_grad) == 0:
|
||||||
logging.warning("there are no parameters that require gradient updates")
|
logging.warning("there are no parameters that require gradient updates")
|
||||||
|
model.config.use_cache = False
|
||||||
|
|
||||||
# TODO resume_from_checkpoint handling
|
# TODO resume_from_checkpoint handling
|
||||||
return model, tokenizer, lora_config
|
return model, tokenizer, lora_config
|
||||||
|
|||||||
Reference in New Issue
Block a user