Fusión de modelos
importante
En este documento, haremos referencia al “modelo base” como uno de los dos modelos. Puede ser el modelo base original (por ejemplo, Nova Lite 2.0), si no se realizó ningún entrenamiento iterativo, o el resultado del entrenamiento iterativo anterior.
Una vez finalizado el refinamiento, el modelo personalizado pasa por una etapa de fusión de modelos opcional y configurable por el usuario que combina los conocimientos recién adquiridos con las capacidades del “modelo base”. Este proceso garantiza que el modelo final conserve la inteligencia original del “modelo base” y, al mismo tiempo, incorpore el comportamiento especializado aprendido durante la última sesión de entrenamiento de refinamiento. La fusión de modelos mitiga un fenómeno conocido como olvido catastrófico, en el que un modelo pierde los conocimientos adquiridos previamente tras ser refinado con nuevos datos.
Aplicabilidad de la fusión de modelos por tipo de entrenamiento
La fusión de modelos solo se puede configurar para el entrenamiento de tipo SFT. En la tabla siguiente, se resume el comportamiento de la fusión de modelos en cada tipo de entrenamiento:
| Tipo de entrenamiento | Comportamiento de la fusión de modelos |
|---|---|
| Refinamiento supervisado (SFT) | Se aplica la fusión de modelos configurable por el usuario. Puede controlar el peso de la fusión entre el modelo de ajuste fino y el modelo base, tal y como se describe en este documento. |
| Entrenamiento previo continuo (CPT) | No hay fusión de modelos. El punto de control del modelo entrenado se genera directamente como modelo final. No hay ningún modelo base involucrado en el paso de fusión. |
Cuándo usar la fusión de modelos
Debe habilitar la fusión de modelos en los siguientes casos:
-
Las capacidades generales se degradan tras un refinamiento. Si su modelo de ajuste fino pierde rendimiento en tareas ajenas a los datos de entrenamiento (por ejemplo, matemáticas, razonamiento o programación), la fusión vuelve a incluir los conocimientos del modelo base para recuperar esas habilidades.
-
Entrenamiento iterativo/continuo. Al refinar un punto de control personalizado previamente, la fusión resulta esencial para conservar las habilidades aprendidas en las rondas de entrenamiento anteriores. Sin ella, cada nueva ronda podría sobrescribir el aprendizaje de la ronda anterior.
Es posible que no necesite fusionar modelos en los siguientes casos:
-
Solo desea maximizar el rendimiento de la tarea objetivo y la retención de la capacidad general no es una preocupación.
-
Aumento de capacidad. Desea continuar repitiendo el proceso con el mismo conjunto de datos para optimizar aún más el rendimiento de las evaluaciones.
-
Utiliza un refinamiento basado en el razonamiento. Los estudios demostraron que la SFT basada en el razonamiento reduce significativamente el olvido catastrófico.
Cómo configurar los pesos de la fusión de modelos
El valor predeterminado de model_importance_score.fine_tuned_model es 1.0, lo que significa que el punto de control del resultado del entrenamiento utiliza los pesos refinados en su totalidad, sin mezclarlos con los del “modelo base”. El valor predeterminado funciona bien cuando los datos de entrenamiento son integrales y representan fielmente la tarea objetivo.
Puede controlar la forma en que el modelo final equilibra la especialización y los conocimientos generales estableciendo model_importance_score en sus hiperparámetros. Por ejemplo:
training_config: # ... model_importance_score: fine_tuned_model: 0.75 # set value between 0.0 to 1.0 inclusive
Los valores de model_importance_score.fine_tuned_model cercanos a 1.0 hacen que el modelo se decante por los datos refinados, mientras que los valores cercanos a 0.0 conservan más capacidades generales del modelo base. En el ejemplo anterior, el modelo entrenado final se produce combinando el 75 % del modelo de ajuste fino del conjunto de datos específico con el 25 % del “modelo base”.
Si observa que su modelo de ajuste fino pierde capacidades generales (por ejemplo, se reduce el rendimiento en tareas ajenas a los datos de entrenamiento), reduzca
model_importance_score.fine_tuned_model para incorporar más conocimientos del “modelo base”.
nota
Aunque podemos configurar los pesos del proceso de fusión de modelos, el usuario no puede elegir con qué modelos fusionarlos. En otras palabras, siempre estará entre el “modelo base” y el modelo de ajuste fino de la sesión de entrenamiento actual. El “modelo base” puede ser el modelo base original (por ejemplo, Nova Lite 2.0) o el resultado de la sesión de entrenamiento iterativo anterior.
Selección de los pesos de la fusión de modelos
El parámetro model_importance_score.fine_tuned_model controla el equilibrio entre el modelo de ajuste fino y el modelo base. Comience con estas directrices:
| Escenario | Peso inicial recomendado | Justificación |
|---|---|---|
| SFT de una sola ronda con datos de entrenamiento integrales | 1.0 (predeterminado, sin fusión) | Los datos de entrenamiento cubren bien la tarea objetivo. La fusión haría que el comportamiento aprendido se perdiera sin obtener beneficios. |
| SFT de una sola ronda, donde las capacidades generales se degradan | 0.7-0.9 | Incorpora suficientes conocimientos del modelo base para recuperar las habilidades generales (matemáticas, razonamiento, programación) y conserva la mayor parte del rendimiento refinado. |
| SFT iterativa/continua (basada en un punto de control anterior) | 0.3-0.7 | Los pesos más bajos permiten conservar más conocimientos de las rondas de entrenamiento anteriores. Si no se combinan, las rondas posteriores pueden sobrescribir las habilidades aprendidas en las rondas anteriores. |
| Exploratorio o incierto | 0.7 | Un término medio razonable. Ajústelo en función de los resultados de la evaluación. |
Principio general: Los pesos más altos (más cercanos a 1.0) maximizan el rendimiento de la tarea objetivo, pero corren el riesgo de perder las capacidades generales. Los pesos más bajos (más cercanos a 0.0) conservan las habilidades generales del modelo base, pero reducen la especialización. No existe un valor óptimo universal: el peso adecuado depende del tamaño del conjunto de datos, de la superposición de dominios con el modelo base y de las capacidades que se deban conservar.
sugerencia
Si los datos de entrenamiento incluyen rastros de razonamiento (cadena de pensamiento), normalmente puede usar un peso de fusión más alto (u omitir la fusión por completo con 1.0), ya que los datos aumentados por el razonamiento actúan como un regularizador que conserva las capacidades generales.
Evaluación del peso de la fusión
Una vez finalizado el entrenamiento, evalúe el modelo fusionado para confirmar que el peso de fusión es el adecuado. No necesita varias sesiones de entrenamiento: una sola evaluación puede indicarle si debe realizar un ajuste.
-
Rendimiento de la tareas objetivo: Realice una evaluación específica del dominio (precisión, F1, puntuación de extracción, etc.) en un conjunto de pruebas retenido. Compárelo con el modelo base antes de realizar cualquier refinamiento para confirmar la mejora del rendimiento gracias a este proceso. Si la mejora con respecto al modelo base es menor de la esperada, es posible que el peso de fusión sea demasiado bajo, ya que los pesos del modelo base hacen que se pierda lo aprendido durante el entrenamiento.
-
Verificación puntual de la capacidad general: Solicite al modelo fusionado algunas tareas ajenas a su dominio de aprendizaje (por ejemplo, un problema verbal matemático, una solicitud de resumen o una pregunta de programación). Compare las respuestas cualitativamente con el modelo base. Si las respuestas del modelo fusionado son notoriamente peores que las del modelo base (el modelo es incoherente, se niega a responder o no resuelve correctamente las tareas que el modelo base maneja bien), el peso de la fusión es demasiado alto y el modelo ha perdido sus capacidades generales.
Cómo funciona la fusión: Refinamiento de rango completo
El entrenamiento de rango completo produce un conjunto completo de pesos para los modelos. Durante la fusión, cada parámetro se calcula como una combinación ponderada:
# Weighted interpolation Merged Model = (1 - model_importance_score.fine_tuned_model) * Base Model + model_importance_score.fine_tuned_model * Fine-Tuned Model
Por ejemplo, con model_importance_score.fine_tuned_model = 0.3, el modelo fusionado cuenta con un 70 % de conocimiento del “modelo base” y con un 30 % de conocimiento refinado.
Cómo funciona la fusión: Refinamiento de LoRA
LoRa (adaptación de rango bajo) aprende un par compacto de matrices de rango bajo (A y B) que representan la adaptación como una actualización de rango bajo. Durante el proceso de fusión de modelos, cada matriz LoRa A y B se escala según
model_importance_score.fine_tuned_model, como se muestra a continuación. En estas fórmulas,
alpha es el factor de escala de LoRa (peft.lora_tuning.alpha en su fórmula de entrenamiento) y rank es el rango de LoRa. Para conocer los valores
alpha disponibles, consulte la fórmula de entrenamiento de LoRa SFT
Tenga en cuenta que, en este momento, las matrices A y B solo contienen los conocimientos de la última sesión de refinamiento. No tienen conocimientos de las sesiones de entrenamiento anteriores. Los conocimientos de estas sesiones procederán de la fusión del modelo con el “modelo base” o de la fusión del adaptador LoRa en la fase anterior que se describe a continuación.
Scaled_A = sqrt(model_importance_score.fine_tuned_model) * sqrt(alpha/rank) * A Scaled_B = sqrt(model_importance_score.fine_tuned_model) * sqrt(alpha/rank) * B
El entrenamiento con LoRa produce dos artefactos del modelo: un modelo completamente fusionado y un conjunto de adaptadores LoRa fusionados. Conozcamos cada uno de ellos por separado.
Modelo completamente fusionado
La actualización de LoRa se escala y se agrega al “modelo base”:
Merged Model = Base Model + (Scaled_B @ Scaled_A)
Ahora, el Merged Model tiene conocimientos de la sesión de entrenamiento actual y hereda algunos conocimientos del Base Model en función del model_importance_score.fine_tuned_model configurado por el usuario.
Adaptadores LoRa fusionados
La forma en que se fusionan los adaptadores LoRa depende del tipo de entrenamiento que se está realizando, es decir si es de una sola etapa o iterativo.
-
Para el entrenamiento LoRa de una sola etapa (sin entrenamiento iterativo), los adaptadores LoRa refinados se guardan directamente sin necesidad de fusionarlos, ya que no hay un conjunto previo de adaptadores LoRa con el cual fusionarlos.
-
En los flujos de trabajo iterativos basados exclusivamente en LoRa, los adaptadores de cada etapa se fusionan en un solo conjunto:
Merged = Stage1_Scaled_B @ Stage1_Scaled_A + Stage2_Scaled_B @ Stage2_Scaled_ALos adaptadores LoRa
Mergedcontendrán los conocimientos de las iteraciones de entrenamiento anteriores, así como los más recientes provenientes del refinamiento, en función delmodel_importance_score.fine_tuned_modeldefinido por el usuario.Además, preste mucha atención a las restricciones de entrenamiento iterativo a la hora de combinar el entrenamiento de LoRa y el de rango completo.
Estos adaptadores fusionados Merged_B y Merged_A reflejan el historial completo de entrenamiento y se utilizan para realizar inferencias bajo demanda.