Científico de datos o ingeniero de ML, aprender a diseñar sistemas de aprendizaje automático es una de las habilidades más esenciales que necesita conocer. Es el puente entre la creación de modelos y la implementación de soluciones que impulsan los resultados comerciales reales.
La capacidad de convertir ideas de aprendizaje automático en sistemas de producción que ahorren dinero, aumenten los ingresos y creen valor medible determina su crecimiento profesional a largo plazo y su salario.
He creado sistemas de aprendizaje automático que han ahorrado a las empresas más de 1,5 millones de dólares al año, y estas mismas habilidades me han ayudado a conseguir ofertas de trabajo que superan los 100.000 dólares.
En esta guía, explicaré cómo pienso sobre el diseño del sistema ML para que usted pueda hacer lo mismo.
Marco general
A continuación se muestra mi marco sobre cómo abordar el diseño de un sistema de aprendizaje automático:
Nota: Este es el tipo de diseño más común para un sistema de aprendizaje automático aplicado en una empresa de tecnología establecida. Hay otros casos con más matices, como el diseño de infraestructura y el diseño de experimentos de investigación de IA/ML.
Si desea una copia en PDF de esta plantilla, puede obtener acceso mediante este enlace:
https://framework.egorhowell.com
Analicemos estos pasos con un poco más de detalle.
Problema empresarial
El objetivo de este paso es:
Aclare los objetivos: ¿cuál es el problema empresarial o de usuario que intenta resolver y cómo trasladarlo a una solución de aprendizaje automático? Defina métricas: a qué métricas nos dirigimos: precisión, puntuación F1, ROC-AUC, precisión/recuperación, RMSE, etc. y cómo eso se traduce en el rendimiento empresarial. Restricciones y alcance: ¿cuántos recursos informáticos hay disponibles? ¿Queremos predicciones en tiempo real o inferencia por lotes? ¿Necesitamos siquiera aprendizaje automático? Diseño de alto nivel: ¿Cómo será la arquitectura aproximada desde los datos hasta la inferencia?
Datos
Se trata de recopilar y adquirir datos:
Identifique fuentes de datos: bases de datos, API, registros o datos generados por el usuario. Identificar la variable objetivo: ¿Cuál es la variable objetivo y cómo la obtenemos? Control de calidad: ¿en qué estado se encuentran los datos? ¿Existe algún problema legal con el uso de los datos?
Ingeniería de características
Cree funciones novedosas a partir de los datos para abordar el problema específico:
Importancia de la característica: comprender qué características pueden impulsar la variable objetivo. Limpieza de datos: maneje valores faltantes, valores atípicos y entradas inconsistentes. Representación de funciones: codificación one-hot, codificación de destino, incrustaciones y escalado de datos. Muestreo y divisiones: tenga en cuenta conjuntos de datos desequilibrados, fugas de datos y divida correctamente en conjuntos de datos de entrenamiento y prueba.
Diseño y selección de modelos
Aquí es donde demuestras tus conocimientos teóricos sobre modelos de aprendizaje automático:
Punto de referencia: comience con un modelo o heurística simple “estúpido” y luego vaya aumentando la complejidad lentamente. Entrenamiento: validación cruzada, ajuste de hiperparámetros, parada anticipada. Compensaciones: considere compensaciones como la velocidad de entrenamiento, la velocidad de inferencia, la latencia y la interpretabilidad.
Servicio e implementación
Comprender la mejor manera de servir e implementar el modelo en producción.
Infraestructura: elija la nube/local, configure canalizaciones de CI/CD y garantice la escalabilidad. Servicio: punto final de API, modelo de borde, predicciones por lotes frente a predicciones en línea.
Evaluación y seguimiento
La última parte es configurar sistemas y marcos para rastrear su modelo en el entorno de producción.
Métricas: qué métricas seguir con el modelo “en línea” frente al modelo “fuera de línea”. Monitoreo: configure un panel, un cuaderno de monitoreo y alertas de Slack. Experimento: diseña un experimento A/B.
¿Qué aprender?
Déjame contarte un secreto: el diseño de un sistema de aprendizaje automático no es una entrevista de nivel inicial ni un conjunto de habilidades.
Esto se debe a que el diseño del sistema de aprendizaje automático se prueba en los niveles medio y superior.
En ese momento, tendrá conocimientos sólidos en aprendizaje automático e ingeniería de software, y probablemente estará desarrollando una especialidad.
Sin embargo, si desea una lista completa, pero de ninguna manera exhaustiva, esto es lo que necesita aprender.
Teoría del aprendizaje automático
Aprendizaje supervisado: clasificación (regresión logística, máquinas de vectores de soporte, árboles de decisión), regresión (regresión lineal, árboles de decisión, árboles potenciados por gradiente). Aprendizaje no supervisado: agrupación (k-means, DBSCAN), reducción de dimensionalidad, análisis semántico latente. Aprendizaje profundo: redes neuronales, redes neuronales convolucionales y redes neuronales recurrentes. Funciones de pérdida: precisión, puntuación F1, NDCG, precisión/recuperación, RMSE, etc. Selección de características: cómo identificar características esenciales, como análisis de correlación, eliminación de características recursivas, regularización, validación cruzada y ajuste de hiperparámetros. Estadísticas: estadística bayesiana, pruebas de hipótesis y pruebas A/B. Especialidades: series temporales, visión por computadora, investigación de operaciones, sistemas de recomendación. procesamiento del lenguaje natural, etc. Solo se necesitan 1 o 2.
Diseño e ingeniería de sistemas
Nube: la principal es AWS y debes conocer S3, EC2, funciones Lambda y ECS. De todos modos, la mayoría de las cosas son simplemente contenedores de almacenamiento y computación. Contenedorización: Docker y Kubernetes. Diseño de sistemas: almacenamiento en caché, redes, cuantificación, API y almacenamiento. Control de versiones: CircleCI, Jenkins, git, MLflow, Datadog, Weights and Biases. Marcos de implementación y orquestación: Argo, Metaflow, Databricks, Airflow y Kubeflow.
Recursos
Entrevistas sobre diseño de sistemas de aprendizaje automático
Planeo publicar un video más detallado sobre el proceso de entrevista de diseño del sistema de aprendizaje automático más adelante, pero por ahora, me gustaría brindarle una descripción general de alto nivel junto con algunos consejos para ayudarlo a prepararse.
Las entrevistas sobre diseño de sistemas de aprendizaje automático suelen estar dirigidas a ingenieros de aprendizaje automático de nivel medio y superior. En estas entrevistas, normalmente se le presentará un problema amplio y abierto, como diseñar un sistema de recomendación o un filtro de spam.
Si su función implica una especialización particular, como visión por computadora, la pregunta de la entrevista a menudo se centrará en ese dominio específico.
Uno de los mayores desafíos de las entrevistas sobre el diseño de sistemas de aprendizaje automático es su falta de estandarización. A diferencia de las entrevistas de ingeniería de software, que siguen un formato relativamente consistente, las entrevistas de diseño de ML varían ampliamente en estructura. También hay mucho que cubrir: innumerables conceptos, compensaciones y posibles soluciones.
Dicho esto, la mayoría de los gerentes de contratación tienden a evaluar a los candidatos en algunas dimensiones clave:
Traducción de problemas: ¿se puede tomar un problema empresarial y enmarcarlo como una solución de aprendizaje automático? Toma de decisiones: ¿Reconoces las compensaciones y justificas tus elecciones de diseño de manera lógica? Amplitud y profundidad: ¿demuestra una comprensión sólida de la teoría del aprendizaje automático, una variedad de modelos y cómo aplicarlos de manera efectiva en escenarios del mundo real?
Cómo prepararse para las entrevistas
En cuanto a los preparativos, hay una cosa clave que recomiendo.
Resuelva los problemas del pasado.
Aquí hay algunos recursos para encontrar tales problemas:
También recomiendo consultar las publicaciones de blogs de las grandes empresas de tecnología para obtener más información sobre cómo se implementan los algoritmos de aprendizaje automático a escala:
Anteriormente, hablé de cómo las entrevistas de diseño de sistemas ponen a prueba algo más que sus habilidades de modelado.
Pero, ¿cuáles son los fundamentos subyacentes que realmente están probando?
Eso es precisamente lo que cubro en uno de mis artículos anteriores, que le explicará todo lo que necesita saber, junto con los mejores recursos.
La hoja de ruta definitiva de IA/ML para principiantes
¡Otra cosa!
Ofrezco llamadas de coaching 1:1 donde podemos conversar sobre lo que necesites, ya sean proyectos, asesoramiento profesional o simplemente descubrir tu próximo paso. ¡Estoy aquí para ayudarte a seguir adelante!
Llamada de tutoría 1:1 con Egor Howell
Orientación profesional, asesoramiento laboral, ayuda para proyectos, revisión de currículumtopmate.io