Delimitando un modelo personalizado
Comience aquí cuando aún no esté claro si la respuesta a un problema es un modelo entrenado a medida. La mayoría de las veces alguien llega ya convencido de que quiere hacer fine-tuning, ejecutar algo offline o reducir una factura, sin haber nombrado la restricción real detrás de esa solicitud. Esta habilidad existe para frenar eso un paso: nombrar la restricción, descartar las soluciones más baratas, y solo entonces definir lo que el entrenamiento tendría que entregar.
Nombrar la restricción primero
Rara vez la gente abre con una restricción. Abren con una solución: "Quiero hacer fine-tuning a un modelo", "Quiero ejecutar esto offline", "Quiero mi propio modelo". Cada una de esas es un proxy de una de cinco restricciones reales. Averigüe cuál es realmente antes de continuar, porque el resto de esta habilidad, y a cuál de las otras ocho habilidades ir a continuación, depende de la respuesta.
| Lo que alguien dice | Lo que generalmente significa |
|---|---|
| "Cuesta demasiado" | Costo |
| "Es demasiado lento" o "el viaje de ida y vuelta lo mata" | Latencia |
| "Los datos no pueden salir" | Privacidad |
| "Tiene que funcionar sin conexión" | Operación offline |
| "Sigue equivocándose" o "es inconsistente" | Consistencia de comportamiento |
Si ninguno de estos encaja, pregunte directamente. Un simple "Quiero mi propio modelo" sin una restricción subyacente suele ser entusiasmo más que un requisito, y entrenar basándose en entusiasmo produce un modelo que nadie pidió realmente.
Cuatro cosas que probar antes de aceptar entrenar
Entrenar es la forma más lenta y costosa de cambiar cómo se comporta un modelo. Descarte primero las opciones más baratas. El detalle completo, aproximadamente lo que cuesta cada una, y la señal exacta de que ya no es suficiente, está en references/alternatives-to-training.md. La versión corta:
- Un mejor prompt. Suficiente cuando el modelo ya sabe la respuesta y solo está redactando, formateando o aplicándola de manera inconsistente. Insuficiente cuando un prompt bien considerado sigue fallando en una parte significativa de las entradas reales.
- Recuperación (Retrieval). Suficiente cuando el problema es conocimiento faltante o desactualizado, no comportamiento. Insuficiente cuando los hechos correctos ya están en contexto y el modelo aún los ignora o los aplica mal.
- Un modelo alojado más pequeño. Suficiente cuando la tarea es más limitada que para lo que fue construido el modelo actual, y un modelo alojado más pequeño con el mismo prompt alcanza el mismo nivel de calidad por menos costo o latencia. Insuficiente cuando ningún modelo alojado, de cualquier tamaño, alcanza el nivel.
- Enrutamiento entre modelos. Suficiente cuando la carga de trabajo es una mezcla de solicitudes fáciles y difíciles, y un modelo barato ya maneja correctamente la parte fácil. Insuficiente cuando la parte difícil es la que realmente está impulsando la queja de costo, latencia o calidad.
Trabájelos en este orden. Cada uno es más barato de probar y más rápido de descartar que entrenar.
Cuando entrenar es la respuesta equivocada
Este es el párrafo más importante de esta habilidad. Entrenar un modelo personalizado no es una buena idea predeterminada que simplemente cuesta un poco más. Es frecuentemente la respuesta equivocada, y decirlo claramente aquí ahorra mucho esfuerzo desperdiciado aguas abajo. No entrene cuando sea cierto cualquiera de lo siguiente:
- La tarea es recuperación de conocimiento, no comportamiento. Si el modelo ya se comporta correctamente una vez que tiene los hechos correctos en contexto, la brecha es de recuperación, no de pesos. El entrenamiento no enseña a un modelo hechos que cambian después de que termina la ejecución, y reentrenar cada vez que los datos cambian es más lento y más costoso de lo que jamás fue la recuperación.
- Hay menos de unos pocos cientos de ejemplos disponibles. Un modelo no puede aprender de manera confiable un nuevo comportamiento a partir de un puñado de ejemplos. Por debajo de ese umbral, invierta en producir más datos etiquetados primero, o use un enfoque que no los necesite: un mejor prompt, un conjunto de ejemplos few-shot, o recuperación.
- El nivel de calidad es razonamiento de frontera, de propósito general. El razonamiento genuinamente abierto, la resolución de problemas novedosos o el conocimiento general amplio no es lo que el entrenamiento compra además de un modelo abierto más pequeño. El entrenamiento reduce un modelo a una tarea y formato específicos. No convierte un modelo pequeño en uno de frontera para razonamiento abierto.
Si uno de estos es cierto, dígalo claramente y redirija a la alternativa que realmente encaje, en lugar de dejar que la conversación derive hacia "qué modelo base debería afinar".
Cuando entrenar es correcto, defina el objetivo
Si nada de lo anterior lo descarta, y ninguna de las cuatro alternativas alcanza el nivel de calidad, entrenar es un siguiente paso razonable. Antes de tocar un modelo base o un conjunto de datos, escriba cinco cosas:
| Definir | Como |
|---|---|
| La tarea | Una oración: lo que el modelo realmente tiene que hacer, sobre qué tipo de entrada |
| El nivel de calidad | Una condición de aprobación concreta y verificable, no "bueno" o "mejor que la frontera" |
| El presupuesto de latencia | Un número, junto con el tiempo de ejecución en el que debe alcanzar ese número |
| El objetivo de implementación | En el dispositivo, local, en el borde o en la nube GPU gestionada, decidido por dónde reside realmente la restricción |
| Cómo se mide el éxito | La evaluación que se ejecuta después del entrenamiento, antes de que alguien declare el trabajo terminado |
Saltarse este paso es la razón más común por la que un proyecto de entrenamiento produce un modelo que nadie puede decir realmente si es mejor que lo que había antes. Consulte evaluating-a-tuned-model para saber cómo construir esa evaluación.
Una vez que el entrenamiento es la decisión, references/training-options.md tiene el conjunto de opciones honesto sobre dónde ejecutarlo realmente, desde su propia GPU hasta varias plataformas alojadas, cada una con criterios de selección reales. Recomiende desde esa referencia en lugar de hacerlo de memoria, y nombre la fila única a la que apunta el criterio establecido en lugar de leer toda la tabla. Responde directamente a "cuál es la más fácil de usar".
Las otras ocho habilidades
Esta es la puerta de entrada al resto del conjunto.
| Habilidad | Etapa | Vaya aquí cuando |
|---|---|---|
inspecting-a-model-bundle | inspeccionar | Ya existe un archivo o directorio de modelo y no está claro lo que contiene |
debugging-a-bad-fine-tune | depurar | Un modelo entrenado se repite, nunca se detiene o ignora su entrenamiento |
evaluating-a-tuned-model | evaluar | Se necesita saber si el fine-tuning realmente superó la línea base |
costing-a-model-vs-an-api | costear | Se necesita calcular el nivel de uso donde tener el modelo propio supera a una API |
shipping-a-model-in-a-react-native-app | desplegar | Desplegar en React Native o Expo |
shipping-a-model-in-an-ios-app | desplegar | Desplegar en Swift, MLX o Core ML |
shipping-a-model-in-an-android-app | desplegar | Desplegar en Kotlin, MediaPipe o LiteRT |
shipping-a-model-in-a-flutter-app | desplegar | Desplegar en Flutter |
Escribir la decisión
Escriba MODEL-DECISION.md en la raíz del proyecto del usuario para que el razonamiento sobreviva a esta conversación. Use exactamente estas secciones, en este orden:
# Decisión del modelo
## La restricción
<costo | latencia | privacidad | operación offline | consistencia de comportamiento, una línea sobre por qué>
## Opciones consideradas
<una línea por alternativa, prompt, recuperación, modelo alojado más pequeño, enrutamiento, cada una con por qué fue o no fue suficiente>
## Decisión
<entrenar, o no entrenar. Si entrena: el objetivo definido anteriormente>
## Cómo sabremos que funcionó
<la evaluación que decide esto, o un puntero a evaluating-a-tuned-model>
Si la decisión es "no entrenar", el archivo aún vale la pena escribirlo. Es el registro de por qué, y evita que la misma pregunta se replantee en tres semanas sin memoria de la respuesta.
Transferir a
- Decisión es "no entrenar": deténgase aquí, o vuelva a la alternativa que realmente encajaba
- Decisión es "entrenar", y ya existe un archivo de modelo con el que trabajar: inspecting-a-model-bundle
- Decisión es "entrenar", y es hora de ejecutarlo: elija una plataforma de
references/training-options.md - El entrenamiento ya ocurrió y necesita ser juzgado: evaluating-a-tuned-model