Repository URL to install this package:
|
Version:
1.1.3 ▾
|
from typing import List
from ._component_builders import llama3, lora_llama3
from ..modules import TransformerDecoder
from ..modules.peft.utils import LORA_ATTN_MODULES
"""
Model builders build specific instantiations using component builders. For example
the llama3_8b model builder uses the llama3 component builder to create the
Llama3 8B model.
"""
def llama3_8b(gradient_checkpoint: bool) -> TransformerDecoder:
"""
Builder for creating a Llama3 model initialized w/ the default 8b parameter values.
Returns:
TransformerDecoder: Instantiation of Llama3 8B model
"""
return llama3(
vocab_size=128_256,
num_layers=32,
num_heads=32,
num_kv_heads=8,
embed_dim=4096,
max_seq_len=131072,
intermediate_dim=14336,
attn_dropout=0.0,
norm_eps=1e-5,
rope_base=500000,
gradient_checkpoint=gradient_checkpoint,
)
def llama3_70b(gradient_checkpoint: bool) -> TransformerDecoder:
"""
Builder for creating a Llama3 model initialized w/ the default 70B parameter values.
Returns:
TransformerDecoder: Instantiation of Llama3 70 model
"""
return llama3(
vocab_size=128_256,
num_layers=80,
num_heads=64,
num_kv_heads=8,
embed_dim=8192,
max_seq_len=131072,
intermediate_dim=28672,
attn_dropout=0.0,
norm_eps=1e-5,
rope_base=500000,
gradient_checkpoint=gradient_checkpoint,
)
def lora_llama3_8b(
lora_attn_modules: List[LORA_ATTN_MODULES],
gradient_checkpoint: bool,
apply_lora_to_mlp: bool = False,
apply_lora_to_output: bool = False,
lora_rank: int = 128,
lora_alpha: float = 256,
) -> TransformerDecoder:
"""
Builder for creating a Llama3 8B model with LoRA enabled.
The Llama3 defaults are the same as in :func:`~torchtune.models.llama3.llama3_8b`,
while LoRA default params are based on
https://github.com/tloen/alpaca-lora/blob/8bb8579e403dc78e37fe81ffbb253c413007323f/finetune.py#L41-L43.
Args:
lora_attn_modules (List[LORA_ATTN_MODULES]): list of which linear layers
LoRA should be applied to in each self-attention block. Options are
``{"q_proj", "k_proj", "v_proj", "output_proj"}``.
apply_lora_to_mlp (bool): whether to apply LoRA to the MLP in each transformer layer.
Default: False
apply_lora_to_output (bool): whether to apply LoRA to the model's final output projection.
Default: False
lora_rank (int): rank of each low-rank approximation
lora_alpha (float): scaling factor for the low-rank approximation
Returns:
TransformerDecoder: Instantiation of Llama3 8B model with LoRA applied
"""
return lora_llama3(
lora_attn_modules=lora_attn_modules,
apply_lora_to_mlp=apply_lora_to_mlp,
apply_lora_to_output=apply_lora_to_output,
vocab_size=128_256,
num_layers=32,
num_heads=32,
num_kv_heads=8,
embed_dim=4096,
max_seq_len=131072,
intermediate_dim=14336,
attn_dropout=0.0,
norm_eps=1e-5,
rope_base=500000,
lora_rank=lora_rank,
lora_alpha=lora_alpha,
lora_dropout=0.05,
gradient_checkpoint=gradient_checkpoint,
)
def lora_llama3_70b(
lora_attn_modules: List[LORA_ATTN_MODULES],
apply_lora_to_mlp: bool = False,
apply_lora_to_output: bool = False,
lora_rank: int = 8,
lora_alpha: float = 16,
gradient_checkpoint: bool = True,
) -> TransformerDecoder:
"""
Builder for creating a Llama3 70B model with LoRA enabled.
The Llama3 defaults are the same as in :func:`~torchtune.models.llama3.llama3_70b`,
while LoRA default params are based on
https://github.com/tloen/alpaca-lora/blob/8bb8579e403dc78e37fe81ffbb253c413007323f/finetune.py#L41-L43.
Args:
lora_attn_modules (List[LORA_ATTN_MODULES]): list of which linear layers
LoRA should be applied to in each self-attention block. Options are
``{"q_proj", "k_proj", "v_proj", "output_proj"}``.
apply_lora_to_mlp (bool): whether to apply LoRA to the MLP in each transformer layer.
Default: False
apply_lora_to_output (bool): whether to apply LoRA to the model's final output projection.
Default: False
lora_rank (int): rank of each low-rank approximation
lora_alpha (float): scaling factor for the low-rank approximation
Returns:
TransformerDecoder: Instantiation of Llama3 70B model with LoRA applied
"""
return lora_llama3(
lora_attn_modules=lora_attn_modules,
apply_lora_to_mlp=apply_lora_to_mlp,
apply_lora_to_output=apply_lora_to_output,
vocab_size=128_256,
num_layers=80,
num_heads=64,
num_kv_heads=8,
embed_dim=8192,
max_seq_len=131072,
intermediate_dim=28672,
attn_dropout=0.0,
norm_eps=1e-5,
rope_base=500000,
lora_rank=lora_rank,
lora_alpha=lora_alpha,
lora_dropout=0.05,
gradient_checkpoint=gradient_checkpoint,
)