PEFT documentation
GLoRA
GLoRA
La Adaptación de Bajo Rango Generalizada (GLoRA) es un método PEFT que generaliza LoRA y enfoques relacionados. GLoRA descompone las actualizaciones en rutas configurables (A, B, C, D, E), donde cada ruta puede utilizar una parametrización de bajo rango, vectorial, constante o deshabilitada, según la ruta.
Cada ruta admite uno de los cuatro modos de parametrización. Estos equilibran el número de parámetros frente a la expresividad (qué tan rica puede ser la actualización):
"lora": Descomposición de bajo rango (como LoRA estándar). Utilizar * (out + in)parámetros y puede expresar correcciones de rangor. Es la más expresiva y la que más parámetros utiliza."vector": Un vector único (p. ej., forma(out, 1)), transmitido a lo largo de la matriz. UtilizaO(out)parámetros; solo escalado o desplazamiento por canal."constant": Un único escalar compartido entre todos los elementos. Utiliza 1 parámetro; es la opción menos expresiva entre las opciones entrenables."none": Ceros sin parámetros entrenables; deshabilita esa ruta por completo.
No todos los caminos aceptan todos los modos (por ejemplo, config_D_E no admite "lora"). Elegir "lora" en más caminos aumenta la capacidad y los parámetros entrenables; "vector", "constant" o "none" reducen ambos.
GLoRA es especialmente útil para investigación y aplicaciones avanzadas en las que se desea experimentar con patrones de actualización estructurados y combinar múltiples mecanismos de adaptación en una sola capa.
A alto nivel, GLoRA modifica una capa lineal congelada con:
donde cada ruta se parametriza de forma independiente.
GloraConfig
clase peft.GloraConfig
< source >( task_type: Optional[Union[str, TaskType]] = Nonepeft_type: Optional[Union[str, PeftType]] = Noneauto_mapping: Optional[dict] = Nonepeft_version: Optional[str] = Nonebase_model_name_or_path: Optional[str] = Nonerevision: Optional[str] = Noneinference_mode: bool = Falser: int = 8target_modules: list[str] | str | None = Nonebias: str = 'none'modules_to_save: list[str] | None = Noneconfig_A_B: typing.Literal['lora', 'vector', 'constant', 'none'] = 'lora'config_C: typing.Literal['lora', 'vector', 'none'] = 'lora'config_D_E: typing.Literal['vector', 'constant', 'none'] = 'constant'init_weights: bool = True )
Parámetros
- r (
int) — Rango de la descomposición de bajo rango utilizada cuando una configuración se establece enlora. - target_modules (
Optional[Union[List[str], str]]) — Los nombres de los módulos a los que se aplicará Glora. - config_A_B (
str) — Parametrización para las matrices A y B (correcciones multiplicativas y aditivas de peso). Valores válidos:lora,vector,constant,none. - config_C (
str) — Parametrización para la matriz C (acoplamiento de peso a sesgo: b += W0 @ C). Valores válidos:lora,vector,none. - config_D_E (
str) — Parametrización para los escalares D y E (correcciones multiplicativas y aditivas de sesgo). No admiteloraya que D y E son vectores del tamaño del sesgo, no matrices. Valores válidos:vector,constant,none. - init_weights (
bool) — Si es True (por defecto), inicializa GLoRA como una operación nula (ceros). Si es False, usa la inicialización de kaiming para que el adaptador no sea una operación nula.
Esta es la clase de configuración para almacenar la configuración de un GloraModel.
Glora modifica una capa lineal congelada W0 de la siguiente manera: W_eff = W0 + W0 * A + B y b_eff = b0 + b0 * D + E + W0 @ C.
Cada matriz (A, B, C, D, E) puede parametrizarse de forma independiente. Los valores de la configuración controlan cuántos parámetros se utilizan y qué formas pueden expresar:
lora: Descomposición de bajo rangoXd @ Xucon formas(out, r)y(r, in). Utilizar * (out + in)parámetros y puede expresar cualquier corrección de rango r. Igual que el LoRA estándar.vector: un vector de columna de forma(out, 1), que se difunde en toda la matriz. Utilizaoutparámetros; solo realiza escalado o desplazamiento por canal de salida.constant: Un único escalar compartido entre todos los elementos. Utiliza 1 parámetro; es el más restrictivo.none: Ceros, sin parámetros entrenables. Desactiva efectivamente esta ruta.
Opciones de configuración clave
r: Rango utilizado cuando una ruta se configura como"lora"(predeterminado:8).target_modules: Lista o expresión regular de nombres de módulos para adaptar (p. ej.,["q_proj", "v_proj"]).config_A_B: Tipo de ruta para A y B (“lora”, “vector”, “constant”, “none”).config_C: Tipo de ruta para C (“lora”, “vector”, “none”).config_D_E: Tipo de ruta para D y E (“constant”, “vector”, “none”).bias: Manejo del sesgo ("none","all"o"glora_only").init_weights: Si esTrue(valor predeterminado), GLoRA se inicializa como una operación sin efecto. Si esFalse, se utiliza la inicialización de kaiming.
Notas:
config_D_Eno admite"lora".target_modulesse puede omitir para los tipos de modelo compatibles (se usan las mapeaciones predeterminadas de PEFT).
GloraModel
clase peft.GloraModel
< source >( modelpeft_config: Union[PeftConfig, dict[str, PeftConfig]]adapter_name: strlow_cpu_mem_usage: bool = Falsestate_dict: Optional[dict[str, torch.Tensor]] = None )
Crea un modelo Generalized Low Rank Adapter (GLoRA) a partir de un modelo de transformers preentrenado.
- Envuelve un modelo base e inyecta adaptadores GLoRA en los módulos especificados.
- Admite múltiples adaptadores, cambio de adaptadores, fusión/desfusión e inferencia con lotes mixtos.
- Use
set_adapter,merge_and_unloady métodos relacionados para la gestión de adaptadores.
GloraLayer y GloraLinear
clase peft.tuners.glora.GloraLinear
< source >( base_layer: nn.Moduleadapter_name: strconfig**kwargs )
Adaptador GLoRA que envuelve una base_layer densa ~torch.nn.Linear.
GloraLayeres la lógica central para la adaptación de bajo rango generalizada, con soporte para múltiples adaptadores y configuraciones de ruta flexibles.GloraLineares un reemplazo directo parann.Linearcon soporte para GLoRA.- GLoRA actualmente admite capas base
torch.nn.Linearsimples.
Ejemplo de uso
from transformers import AutoModelForCausalLM
from peft import GloraConfig, get_peft_model
model = AutoModelForCausalLM.from_pretrained("your-model-id")
glora_config = GloraConfig(
r=8,
target_modules=["q_proj", "v_proj"],
config_A_B="lora",
config_C="vector",
config_D_E="constant",
task_type="CAUSAL_LM",
)
model = get_peft_model(model, glora_config)
model.print_healthcheck()
# Switch adapters, merge, etc.
model.set_adapter("default")
model.merge_and_unload()Notas
- GLoRA es un superconjunto de LoRA: si se establecen todas las rutas en “lora”, se recupera el LoRA estándar.
- Puede usar diferentes tipos de ruta para A/B/C/D/E para experimentar con nuevas estrategias de adaptación.
- GLoRA admite todas las funciones estándar de gestión de adaptadores PEFT (agregar, eliminar, cambiar, fusionar, etc.).