En este tutorial, creamos un canal de aprendizaje automático tabular de nivel de producción utilizando AutoGluon, tomando un conjunto de datos de tipo mixto del mundo real desde la ingesta sin procesar hasta los artefactos listos para la implementación. Entrenamos conjuntos apilados y embolsados de alta calidad, evaluamos el rendimiento con métricas sólidas, realizamos análisis de nivel de características y subgrupos y luego optimizamos el modelo para inferencia en tiempo real utilizando refit-full y destilación. A lo largo del flujo de trabajo, nos centramos en decisiones prácticas que equilibran la precisión, la latencia y la capacidad de implementación. Consulta los CÓDIGOS COMPLETOS aquí.
Configuramos el entorno instalando las bibliotecas necesarias e importando todas las dependencias principales utilizadas a lo largo del proceso. Configuramos advertencias para mantener los resultados limpios y garantizar que las utilidades numéricas, tabulares y de evaluación estén listas. Consulta los CÓDIGOS COMPLETOS aquí.
Cargamos un conjunto de datos de tipo mixto del mundo real y realizamos un preprocesamiento ligero para preparar una señal de entrenamiento limpia. Definimos el objetivo, eliminamos columnas con muchas fugas y validamos la estructura del conjunto de datos. Luego creamos una división tren-prueba estratificada para preservar el equilibrio de clases. Consulta los CÓDIGOS COMPLETOS aquí.
Detectamos la disponibilidad de hardware para seleccionar dinámicamente el ajuste preestablecido de entrenamiento de AutoGluon más adecuado. Configuramos un directorio de modelo persistente e inicializamos el predictor tabular con una métrica de evaluación adecuada. Consulta los CÓDIGOS COMPLETOS aquí.
Entrenamos un conjunto de alta calidad utilizando embolsado y apilado dentro de un presupuesto de tiempo controlado. Confiamos en la búsqueda automatizada de modelos de AutoGluon para explorar de manera eficiente arquitecturas sólidas. También registramos el tiempo de capacitación para comprender el costo computacional. Consulta los CÓDIGOS COMPLETOS aquí.
Evaluamos los modelos entrenados utilizando un conjunto de pruebas disponible e inspeccionamos la tabla de clasificación para comparar el rendimiento. Calculamos predicciones probabilísticas y discretas y derivamos métricas de clasificación clave. Nos brinda una visión integral de la precisión y calibración del modelo. Consulta los CÓDIGOS COMPLETOS aquí.
Analizamos el comportamiento del modelo a través de la división del rendimiento de subgrupos y la importancia de las características basadas en permutaciones. Identificamos cómo varía el rendimiento entre segmentos significativos de los datos. Nos ayuda a evaluar la solidez y la interpretabilidad antes de la implementación. Consulta los CÓDIGOS COMPLETOS aquí.
def bench_infer(nombre_modelo, df_in, repeticiones=3): veces = []
para _ en rango (repeticiones): t1 = time.time() _ = predictor.predict(df_in, model=model_name) times.append(time.time() – t1) return float(np.median(times)) small_batch = test_df.drop(columnas=[target]).head(256) lat_best = bench_infer(best_model, small_batch) print(f”\nMejor modelo: {best_model} | latencia mediana de predicción() en 256 filas: {lat_best:.4f}s”) si candidatos_completos: lb_full_sorted = lb_full.sort_values(by=”score_test”, ascending=False) best_full = lb_full_sorted[lb_full_sorted[“model”].str.endswith(“_FULL”)].iloc[0][“model”]
lat_full = bench_infer(best_full, small_batch) print(f”Mejor modelo COMPLETO: {best_full} | latencia mediana de predicción() en 256 filas: {lat_full:.4f}s”) print(f”Factor de aceleración (mejor/completo): {lat_best / max(lat_full, 1e-9):.2f}x”) try: t0 = time.time() distill_result = predictor.distill( train_data=train_df, time_limit=4 * 60, augment_method=”spunge”, ) t_distill = time.time() – t0 print(f”\nDestilación completada en {t_distill:.1f}s”) excepto excepción como e: print(“\nEl paso de destilación falló”) print(“Error:”, repr(e)) lb2 = predictor.leaderboard(test_df, silent=True) print(“\n=== Tabla de clasificación después del intento de destilación (top 20) ===”) display(lb2.head(20)) predictor.save() reloaded = TabularPredictor.load(save_path) sample = test_df.drop(columns=[target]).sample(8, random_state=0) sample_pred = reloaded.predict(sample) sample_proba = reloaded.predict_proba(sample) print(“\n=== Comprobación de cordura del predictor recargado ===”) print(sample.assign(pred=sample_pred).head()) print(“\nProbabilidades (head):”) display(sample_proba.head()) artefactos = { “ruta”: save_path, “presets”: presets, “best_model”: reloaded.get_model_best(), “model_names”: reloaded.get_model_names(), “leaderboard_top10″: lb2.head(10).to_dict(orient=”records”), } con open(os.path.join(save_path, “run_summary.json”), “w”) como f: json.dump(artifacts, f, sangría=2) print(“\nResumen guardado en:”, os.path.join(save_path, “run_summary.json”)) print(“Listo.”)
Optimizamos el conjunto entrenado para la inferencia colapsando modelos empaquetados y comparando mejoras de latencia. Opcionalmente, destilamos el conjunto en modelos más rápidos y validamos la persistencia mediante comprobaciones de guardar y recargar. Además, exportamos artefactos estructurados necesarios para el traspaso de producción.
En conclusión, implementamos un flujo de trabajo de un extremo a otro con AutoGluon que transforma datos tabulares sin procesar en modelos listos para producción con una mínima intervención manual, al tiempo que mantiene un fuerte control sobre la precisión, la solidez y la eficiencia de la inferencia. Realizamos un análisis de errores sistemático y una evaluación de la importancia de las características, optimizamos conjuntos grandes mediante reacondicionamiento y destilación, y validamos la preparación para la implementación mediante evaluaciones comparativas de latencia y empaquetado de artefactos. Este flujo de trabajo permite la implementación de modelos tabulares de alto rendimiento, escalables, interpretables y adecuados para entornos de producción del mundo real.
Consulta los CÓDIGOS COMPLETOS aquí. Además, no dude en seguirnos en Twitter y no olvide unirse a nuestro SubReddit de más de 100.000 ML y suscribirse a nuestro boletín. ¡Esperar! estas en telegrama? Ahora también puedes unirte a nosotros en Telegram.