Adding override of 32-bit optimization for embedding layer

This commit is contained in:
mrcabbage972
2023-01-09 23:03:29 -05:00
parent 2d4a47dc74
commit 67aeed2cd7
+8 -1
View File
@@ -3,11 +3,11 @@ import os
from distutils.util import strtobool
from typing import Any, Dict, List, Optional, Tuple, Union
import bitsandbytes
import torch
from torch import nn
from transformers import PreTrainedModel, Trainer, TrainingArguments
from transformers.training_args import OptimizerNames
from utils import get_dataset, get_loss, get_model, get_tokenizer, read_yamls
os.environ["WANDB_PROJECT"] = "supervised-finetuning"
@@ -134,6 +134,13 @@ if __name__ == "__main__":
optimizer = OptimizerNames.ADAMW_BNB if training_conf.quantization else None
if training_conf.quantization:
for module in model.modules():
if isinstance(module, torch.nn.Embedding):
bitsandbytes.optim.GlobalOptimManager.get_instance().register_module_override(
module, "weight", {"optim_bits": 32}
)
args = TrainingArguments(
output_dir=f"{training_conf.model_name}-{training_conf.log_dir}-finetuned",
num_train_epochs=training_conf.num_train_epochs,