What is LoRA?

    Una técnica de fine-tuning eficiente en parámetros que inyecta pequeñas matrices entrenables de bajo rango en un modelo preentrenado congelado, reduciendo drásticamente la memoria y el cómputo necesarios para adaptar modelos de lenguaje grandes.

    Definition

    LoRA (Low-Rank Adaptation of Large Language Models) es un método de fine-tuning introducido por Hu et al. en 2021 que evita modificar los pesos originales del modelo por completo. En su lugar, congela las matrices de pesos preentrenadas e inyecta pares de pequeñas matrices de descomposición de bajo rango entrenables (típicamente llamadas A y B) en las proyecciones de atención de cada capa transformer. Durante el pase forward, la salida de una capa se convierte en la suma de los pesos originales congelados multiplicados por la entrada más la contribución del adaptador de bajo rango. Debido a que el rango (r) de estas matrices de adaptador es mucho menor que las dimensiones originales, el número de parámetros entrenables cae por órdenes de magnitud — a menudo de miles de millones a solo unos pocos millones.

    Este enfoque tiene dos beneficios prácticos profundos. Primero, hace el fine-tuning accesible en GPUs de consumo y gama media: un modelo de 7B parámetros que requeriría 28 GB de VRAM para fine-tuning completo puede ajustarse con LoRA con tan solo 6 GB cuando se combina con cuantización de 4 bits (QLoRA). Segundo, los pesos del adaptador son diminutos — típicamente de 10 a 100 MB — lo que significa que una organización puede mantener docenas de adaptadores específicos de tarea para un solo modelo base sin multiplicar los costos de almacenamiento.

    LoRA se ha convertido en la estrategia de fine-tuning dominante en el ecosistema open-source de LLM. Es soportado por Hugging Face PEFT, Axolotl, LLaMA-Factory y prácticamente todos los principales frameworks de entrenamiento. Variantes como QLoRA (pesos base cuantizados), DoRA (actualizaciones de pesos descompuestas) y rsLoRA (escalado estabilizado por rango) continúan empujando la frontera de eficiencia y calidad.

    Why It Matters

    Antes de LoRA, ajustar un modelo de lenguaje grande significaba actualizar cada parámetro — un proceso que demandaba múltiples GPUs de gama alta y producía una copia de tamaño completo del modelo para cada tarea. Esto era económica y operativamente prohibitivo para la mayoría de las organizaciones. LoRA democratizó el fine-tuning al reducir los requisitos de hardware de 4 a 10 veces y los requisitos de almacenamiento en 100 veces o más. También introdujo el concepto de adaptadores intercambiables: un solo modelo base puede servir múltiples casos de uso cargando diferentes adaptadores LoRA en tiempo de inferencia, habilitando despliegues multi-tenant donde cada cliente obtiene un modelo personalizado sin duplicar los pesos completos.

    How It Works

    Para una matriz de pesos W dada de dimensiones d x k en el modelo original, LoRA introduce dos matrices: A de dimensiones d x r y B de dimensiones r x k, donde r (el rango) es mucho menor que tanto d como k — comúnmente 8, 16 o 64. Durante el entrenamiento, W se congela y solo A y B se actualizan. El pase forward modificado calcula: output = W·x + (A·B)·x · (α/r), donde α es un factor de escala que controla la influencia del adaptador. En tiempo de inferencia, la contribución del adaptador A·B puede fusionarse en W, añadiendo cero latencia. Los objetivos de entrenamiento son típicamente las matrices de proyección de consulta y valor (q_proj, v_proj) en cada capa de atención, aunque expandir a módulos adicionales (k_proj, o_proj, proyecciones gate, up, down) puede mejorar la calidad con un costo mínimo.

    python
    from peft import LoraConfig, get_peft_model
    from transformers import AutoModelForCausalLM
    
    # Load base model
    model = AutoModelForCausalLM.from_pretrained(
        "mistralai/Mistral-7B-v0.3",
        load_in_4bit=True,  # QLoRA: 4-bit quantized base
    )
    
    # Configure LoRA adapter
    lora_config = LoraConfig(
        r=16,                          # Rank of the low-rank matrices
        lora_alpha=32,                 # Scaling factor (alpha / r)
        target_modules=[
            "q_proj", "v_proj",        # Attention projections
            "k_proj", "o_proj",        # Optional: more modules = better quality
        ],
        lora_dropout=0.05,             # Dropout for regularization
        bias="none",
        task_type="CAUSAL_LM",
    )
    
    # Apply LoRA — only adapter params are trainable
    model = get_peft_model(model, lora_config)
    model.print_trainable_parameters()
    # Output: trainable params: 13,631,488 || all params: 7,248,023,552 || 0.19%
    Configuración de un adaptador LoRA en un modelo Mistral 7B cuantizado a 4 bits usando Hugging Face PEFT. Solo el 0.19% de los parámetros son entrenables.

    Example Use Case

    Una empresa de tecnología legal necesita modelos especializados para tres tareas: extracción de cláusulas de contratos, preguntas y respuestas de cumplimiento regulatorio, y resumen de jurisprudencia. En lugar de ajustar y alojar tres modelos separados de 13B parámetros (requiriendo ~78 GB de almacenamiento y tres asignaciones de GPU), ajustan tres adaptadores LoRA de 50 MB cada uno sobre un solo Llama 2 13B base. En tiempo de inferencia, el adaptador apropiado se carga según el tipo de tarea de la solicitud entrante. Almacenamiento adicional total: 150 MB. Asignación total de GPU: una instancia sirviendo las tres tareas.

    Key Takeaways

    • LoRA congela el modelo original y entrena pequeñas matrices de adaptador de bajo rango, reduciendo los parámetros entrenables en más del 99%.
    • Combinado con cuantización (QLoRA), permite ajustar modelos de 7B o más en una sola GPU de consumo.
    • Los pesos de los adaptadores típicamente son de 10-100 MB, permitiendo múltiples adaptadores específicos de tarea por modelo base.
    • Los adaptadores pueden fusionarse en los pesos base en tiempo de inferencia sin latencia adicional.
    • LoRA es soportado por todos los principales frameworks de fine-tuning y se ha convertido en el enfoque estándar de la industria.

    How Ertas Helps

    LoRA es el método de fine-tuning predeterminado en Ertas Studio. Cuando un usuario configura un trabajo de entrenamiento, Studio automáticamente establece LoRA (o QLoRA para modelos más grandes) con valores predeterminados sensatos para rango, alfa y módulos objetivo — mientras expone estos parámetros para usuarios avanzados que desean control completo. Los pesos de adaptador resultantes se almacenan eficientemente en Ertas Hub, donde pueden versionarse, compartirse y apilarse. En tiempo de despliegue, Ertas Cloud carga el modelo base una vez e intercambia adaptadores LoRA por solicitud en caliente, habilitando inferencia multi-tenant sin duplicar los pesos del modelo.

    Related Resources

    Ship AI that runs on your users' devices.

    Early bird pricing starts at $14.50/mo — locked in for life. Plans for builders and agencies.