more fixes

This commit is contained in:
Wing Lian
2023-05-15 14:07:17 -04:00
parent 42410c783c
commit bdbca8fa6c
2 changed files with 11 additions and 7 deletions

View File

@@ -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

View File

@@ -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