utils.models

utils.models

Module for models and model loading

Classes

Name Description
ModelLoader ModelLoader: managing all the config and monkey patches while loading model

ModelLoader

utils.models.ModelLoader(
    self,
    cfg,
    tokenizer,
    *,
    processor=None,
    inference=False,
    reference_model=False,
    **kwargs,
)

ModelLoader: managing all the config and monkey patches while loading model

Attributes

Name Description
has_flash_attn Check if flash attention is installed

Methods

Name Description
patch_llama_derived_model Modify all llama derived models in one block
patch_loss_llama Patch loss functions and other optimizations
set_attention_config sample packing uses custom FA2 patch
set_auto_model_loader Set self.auto_model_loader. Defaults to transformers.AutoModelForCausalLM
patch_llama_derived_model
utils.models.ModelLoader.patch_llama_derived_model()

Modify all llama derived models in one block

patch_loss_llama
utils.models.ModelLoader.patch_loss_llama()

Patch loss functions and other optimizations

set_attention_config
utils.models.ModelLoader.set_attention_config()

sample packing uses custom FA2 patch

set_auto_model_loader
utils.models.ModelLoader.set_auto_model_loader()

Set self.auto_model_loader. Defaults to transformers.AutoModelForCausalLM (set at __init__). When using a multimodal model, self.auto_model_loader should be set according to the type of the model.

Functions

Name Description
get_module_class_from_name Gets a class from a module by its name.
load_model Load a model for a given configuration and tokenizer.
load_tokenizer Load and configure the tokenizer based on the provided config.
modify_tokenizer_files Modify tokenizer files to replace added_tokens strings, save to output directory, and return the path to the modified tokenizer.
setup_quantized_meta_for_peft Replaces quant_state.to with a dummy function to prevent PEFT from moving quant_state to meta device
setup_quantized_peft_meta_for_training Replaces dummy quant_state.to method with the original function to allow training to continue

get_module_class_from_name

utils.models.get_module_class_from_name(module, name)

Gets a class from a module by its name.

Parameters

Name Type Description Default
module torch.nn.Module The module to get the class from. required
name str The name of the class. required

load_model

utils.models.load_model(
    cfg,
    tokenizer,
    *,
    processor=None,
    inference=False,
    reference_model=False,
    **kwargs,
)

Load a model for a given configuration and tokenizer.

load_tokenizer

utils.models.load_tokenizer(cfg)

Load and configure the tokenizer based on the provided config.

modify_tokenizer_files

utils.models.modify_tokenizer_files(tokenizer_path, token_mappings, output_dir)

Modify tokenizer files to replace added_tokens strings, save to output directory, and return the path to the modified tokenizer.

This only works with reserved tokens that were added to the tokenizer, not tokens already part of the vocab.

Parameters

Name Type Description Default
tokenizer_path str Path or name of the original tokenizer required
token_mappings Dict[int, str] Dict mapping {token_id (int): new_token_string} required
output_dir str Directory to save the modified tokenizer required

Returns

Name Type Description
str Path to the modified tokenizer directory

Ref: https://github.com/huggingface/transformers/issues/27974#issuecomment-1854188941

setup_quantized_meta_for_peft

utils.models.setup_quantized_meta_for_peft(model)

Replaces quant_state.to with a dummy function to prevent PEFT from moving quant_state to meta device

setup_quantized_peft_meta_for_training

utils.models.setup_quantized_peft_meta_for_training(model)

Replaces dummy quant_state.to method with the original function to allow training to continue