Cómo convertirse en Ingeniero en Machine Learning

El nicho de la ingeniería de software y la ciencia de datos destinado a la producción de código ML

El título de “Ingeniero de machine learning (aprendizaje automático)” se está volviendo cada vez más popular y con eso, hay un interés significativo por parte de las personas que intentan ingresar al campo de la ciencia de datos. ¿Qué tipo de trayectoria profesional es esta y qué conjunto de habilidades debe tener un ingeniero de aprendizaje automático? ¿Es posible definir los pasos a seguir para convertirse en un ingeniero en ML? ¿Puede seguir la capacitación en línea y obtener la certificación? Pensé que escribiría mis ideas sobre el estado del campo y cuán viable es para aquellos que buscan seguir una carrera en él.

El ingeniero de machine learning

Algunos pueden mirar el título del trabajo y esperar que sea un científico de datos que se centra exclusivamente en la construcción de modelos, y eso es todo. Este es un gran no, no; aunque solo sea porque la mayor parte del trabajo de ML Engineering comienza después de que se construye el modelo inicial. Si bien a menudo es parte del trabajo, un ingeniero en machine learning no solo crea modelos. Y honestamente, esa parte solo ocupará del 5 al 10% del trabajo.

Mire esta imagen de todos los componentes que están involucrados en el ecosistema modelo. ¿El cuadrado negro del centro? Ese es el código ML real.

Imagen para publicación
Solo una pequeña parte de lo que comprende un sistema de AA es el código de ML real (cuadrado negro). Tomado del artículo “La deuda técnica oculta en los sistemas de aprendizaje automático” de Scully et al. (2015)

Básicamente, un ingeniero en machine learning es una especie de asistente que lleva modelos a producción de una manera sensata, es capaz de mejorar los modelos del científico de datos y también es, en parte, un arquitecto que abre el camino para el equipo de ciencia de datos. Esto suena increíblemente como una especie de función de ingeniería senior, y sin embargo, no tiene por qué serlo.

Antecedentes comunes de ML Engineering.

La mayoría de los otros ingenieros de ML que he conocido pertenecen a una de dos categorías. El primer grupo tiene un alto nivel educativo, y la mayoría tiene una maestría o incluso un doctorado en Ciencias de la Computación, Inteligencia Artificial, Ciencia de Datos o Ingeniería de Software. Sorprendentemente, muchos son graduados relativamente nuevos, con 1 a 3 años de experiencia en su haber cuando se convirtieron en ingenieros de ML. También hay un segundo grupo que consiste en desarrolladores más experimentados que pasaron a este rol desde campos vecinos como Ingeniería de Software o Ingeniería de Datos y, por supuesto, Ciencia de Datos.

Esto indica que hay un nivel de competencia necesario para ser un ingeniero en ML que podría provenir de cualquiera de las dos direcciones que conforman el rol. Podrías ser un gran ingeniero de software o un fantástico virtuoso del machine learning. ¡Tal vez ambos! Si ya es uno, este podría ser el campo para usted. Si no es así, podría ser una dirección viable hacia la que desarrollarse.

Pero no cometa el error de que los ingenieros de software o los científicos de datos automáticamente son buenos ingenieros de ML. Yo mismo vengo de una experiencia en software y puedo dar fe de que la mayoría de los conceptos y API de ML son absolutamente ajenos a los ingenieros de software. Recuerdo las intensas luchas que tuve para conocer TensorFlow y Theano hace años. Aunque comencé a programar en mi adolescencia, nunca había visto algo así. La experiencia fue humillante.

Un ingeniero de aprendizaje automático de nivel principiante no es un programador principiante. Este es un viaje que siempre se recorre al menos con experiencia. ¿Es entonces imposible conseguir un trabajo de ML Engineering sin experiencia o capacitación?

Por supuesto que no. Sin embargo, las probabilidades están en tu contra. Es mucho más fácil entrar en este nicho cuando tienes antecedentes similares. Sin embargo, hay algo de luz en el horizonte.

Recuerde que cuando la ciencia de datos comenzó a hacerse popular, dijimos lo mismo sobre los científicos de datos porque las personas que se dedicaban a la ciencia de datos en ese momento eran algunas de las personas más brillantes y con mayor nivel de educación del mundo. Desde entonces, la ciencia de datos se ha vuelto más accesible y, en verdad, hoy en día puedes ser un gran científico de datos sin necesidad de un doctorado. No estoy seguro de si lo mismo se aplicará plenamente a ML Engineering, pero espero que a medida que nuestro campo madure, las barreras de entrada serán menores.

Imagen para publicación
Ciencia de los datos. Ingeniería de software. Probablemente también algo de álgebra lineal. Estos fueron los ingredientes elegidos para crear el ML Engineer perfecto. 

El cinturón de herramientas del ML Engineer no es simplemente el hijo de una intensa aventura entre el IDE de un Software Engineer y un Data Scientist Jupyter Lab. Tiene muchas herramientas y técnicas que son intrínsecas al campo. Lo que me trae la siguiente sección …

Las habilidades del ingeniero en machine learning

Las listas de habilidades se vuelven obsoletas poco después de ser escritas y, a menudo, cobran vida propia. Y, sin embargo, estoy aquí para redactar una lista no exhaustiva de habilidades y temas para estudiar. El panorama de las herramientas es tan amplio que es poco probable que un ingeniero de ML tenga competencia con todos los idiomas, herramientas y conceptos que existen. Por favor, no considere esto como una especie de lista de elementos que necesita tachar en su viaje de ML Engineering, como le indicarán tantos recursos en línea. Más bien, tome nota y mírelos como temas dentro del campo de la Ingeniería de ML.

Intentaré discutir conceptos más que herramientas específicas. De esa manera, la mayor parte de esto seguirá siendo relevante en un par de meses o años.

Ciencia de los datos

  • Python. Investigue los estándares de codificación y algunas de las cosas interesantes de las versiones recientes de Python. Tener un conocimiento básico de R también es útil y sus científicos de datos se lo agradecerán.
  • Estadísticas.
  • Optimización de modelos.
  • Modelo de validación.
  • Marcos de aprendizaje automático como sci-kit learn
  • Marcos de Deep Learning (aprendizaje profundo) como TensorFlow y PyTorch
  • Aplicaciones de ML como PNL, visión artificial y análisis de series de tiempo.
  • Matemáticas . Implícitamente, usarás mucho álgebra y cálculo lineal.

La razón por la que tomaría Python sobre R o cualquier otro lenguaje es principalmente por el aspecto de producción. Si bien puede hacer mucho con R, a menudo no es compatible tan bien como Python. También está el aspecto del tiempo que juega aquí: a menudo es mucho más rápido producir código en Python que R.

Ingeniería de software

  • Experimente fuera de Python en un segundo lenguaje de programación , como Java, C ++ o JavaScript.
  • Ofertas en la nube . Más sobre eso más tarde.
  • Computación distribuída
  • Diseño de sistemas y arquitectura de software
  • Estructuras de datos y algoritmos.
  • Bases de datos y los lenguajes de consulta que lo acompañan.
  • Containerización (por ejemplo, Docker, KubeFlow)
  • Conceptos de programación funcional
  • Patrones de diseño
  • Desarrollo de API
  • Control de versiones: git
  • Pruebas
  • Gestión de proyectos . Probablemente el elemento más subestimado en cualquier plan de estudios de SE.
  • CI / CD
  • MLOps

Entonces, ¿cómo se aprende sobre todos estos si no está en el trabajo? Los cursos y la capacitación en línea pueden ser excelentes, pero no le enseñarán cómo aplicarlos en un entorno de la vida real. Para cosas como las estadísticas, no importa, pero para los temas técnicos, saber “sobre” es solo la mitad del dominio. No se necesita más que un vistazo rápido a la programación r / learn de Reddit para ver que hay muchas personas que luchan por dar el salto de codificar en el IDE protegido en un curso en línea a codificar sus propios proyectos en su propia máquina.

Las certificaciones son una bestia similar. Una certificación puede ser particularmente valiosa si se dedica a la consultoría y desea indicar a los clientes que sus habilidades cumplen con ciertos estándares. Tener una certificación que corresponda a la pila de tecnología de un cliente lo coloca inmediatamente al frente del paquete. Sin embargo, una certificación no tiene ningún valor sin las habilidades para respaldar esto en primer lugar. Considere ahora que puede obtener muchas certificaciones sin tener que codificarlas y verá hacia dónde me dirijo. A menudo, es mejor invertir el tiempo dedicado a obtener una certificación simplemente creando aplicaciones.

Dicho esto, hay algunas certificaciones que tienen algún mérito para los ingenieros de ML, particularmente para los proveedores de la nube. A menudo, estos requieren un par de años de experiencia en la implementación de aplicaciones en sus respectivas plataformas , pero cualquiera puede pagar entre $ 100 y $ 300 y registrarse para un examen de certificación. A partir de 2020, hay tres proveedores de nube que vale la pena mencionar: Azure (Microsoft), GCP (Google) y AWS (Amazon). Aquí hay una lista de certificaciones que ofrecen que están en la esfera de interés del ingeniero de ML.

Imagen para publicación
La insignia de nivel asociado de Microsoft Azure otorgada por aprobar exámenes de certificación. Fuente

Microsoft Azure:

Microsoft ofrece certificación de nivel asociado tanto para científicos de datos como para ingenieros de inteligencia artificial, así como alrededor de una docena de otras certificaciones. Algunas certificaciones en realidad requieren varios exámenes, pero este no es (¿todavía?) El caso tanto para el certificado de Data Scientist como para el de AI Engineer. Los temas de certificación son un poco superficiales, pero el examen no debe subestimarse.

Imagen para publicación
La insignia otorgada a los ingenieros de datos certificados. Poder compartir insignias como estas puede ser una buena ayuda para la marca personal. Fuente aquí .

Google Cloud Platform:

Google es el retador cuando se trata de servicios en la nube y el estado de su certificación lo refleja. Por el momento, el examen de ML Engineer está en versión beta y aún no se han otorgado certificaciones. El examen dura cuatro (!) Horas, pero es una lista increíblemente completa de lo que es el trabajo de un ingeniero de ML. Antes de que se introdujera esta certificación, algunos temas de ML se incluían en la certificación de Ingeniero de datos , por lo que muchos ingenieros de ML, incluido yo mismo, en realidad tomaron la pista de certificación de Ingeniería de datos.

También puede consultar la certificación de Google Cloud Architect , Developer o DevOps , pero estos apenas la tocan y pueden agregar un poco de ruido en su currículum que lo alinea para diferentes trabajos. Lo digo como un arquitecto de nube certificado que aprendí esto por experiencia. Por otro lado, podría hacer que su perfil sea un poco más atractivo.

Imagen para publicación
La insignia del machine learning certificado por AWS: especialidad. Tomado de aquí .

AWS :

Amazon tiene rutas específicas para roles analíticos y roles ML. Dado que la certificación de análisis de datos se centra casi por completo en el procesamiento y la presentación de informes de datos, propondría que solo la especialidad de ML es de interés para los ingenieros de ML. Su plan de estudios de Especialidad de máquina de aprendizaje abarca una gran cantidad de temas de ingeniería ML, aunque no es tan exhaustiva como la certificación de Google.

Entonces, ¿cuáles deberías conseguir?

En este momento, Amazon es el líder del mercado, con alrededor del 60% de participación de mercado. Azure se encuentra al 30% y GCP al 10%. Si bien el mercado en general está creciendo mucho, AWS está perdiendo lentamente participación de mercado frente a Google y Microsoft. Google puede parecer un perdedor, pero tiene un historial bastante sólido con innovaciones de inteligencia artificial y su propiedad de TensorFlow . Hablando de eso, también hay un certificado para TF. Si un empleador no le obliga a usar un proveedor de nube sobre otro, le aconsejaría que pruebe los tres con cuentas de prueba e implemente un proyecto favorito. Averigüe cuál le gusta y también observe qué tipo de empresas utilizan estos proveedores de nube.

¿Por qué necesita tecnología en la nube? Bueno, eventualmente el trabajo de ciencia de datos llega a producción y la mayoría de las veces se implementa en una plataforma en la nube. No necesita competir con las habilidades de un ingeniero de nube, pero debe saber cómo implementar proyectos de AA en la plataforma que elija. No suelen enseñar cómo navegar por las consolas en la nube de {proveedor} en un lugar formal como una universidad.

Hay una desventaja de aprender una plataforma en la nube: literalmente, no pasa una semana sin que se anuncie un nuevo producto en la nube sobre uno de estos gigantes. Mantenerse actualizado con las ofertas en la nube es difícil. Tener una amplia gama de certificaciones también pone en duda si realmente estás a la altura de todas ellas.

Es posible que haya notado que, hasta ahora, no vinculé ningún curso o tutorial. Ya existen muchos recursos para eso. Además, mi punto principal es que el camino para convertirse en un ingeniero de ML se recorre haciendo proyectos y adquiriendo experiencia en el campo, ya que no es un trabajo de nivel de entrada.

Variación en lo que constituye el trabajo de AA

Cuando haya hecho todo eso, debe saber que hay un mundo de diferencia entre trabajar en una empresa pequeña y hacer ML que trabajar en FAANG y hacer ML. Asimismo, hay mucha variación entre trabajar en empresas de ‘producto’ o en consultorías. Del mismo modo, un banco y una nueva empresa son mundos aparte en términos de adaptación tecnológica.

Es mucho más probable que sea un experto en todos los oficios en las pequeñas empresas, por ejemplo, que se le pida que realice trabajos de ingeniería de datos, visualización y ciencia de datos como parte de sus actividades diarias. Es más probable que las empresas más grandes contraten personal específico que se enfoque en partes específicas de la cadena de ML, e incluso pueden tener diferentes tipos de ingenieros de ML corriendo. Si está en una empresa que realiza muchos proyectos diferentes, es posible que nunca profundice en ningún marco, pero podrá experimentar muchos tipos de herramientas y dominios. Estas son consideraciones específicas que debe tener en cuenta cuando busque su primer trabajo de ML.

Una lista de lectura para el ingeniero en machine learning

Imagen para publicación
Estantería de un ingeniero de aprendizaje automático. Observe la copia gastada de Álgebra lineal y sus aplicaciones.

Aunque esto de ninguna manera pretende ser una lista completa, aquí hay algunos recursos que creo que beneficiarían a aquellos que quieran entrar en este campo.

Libros:

Documentos:

Otras carreras

Hay un par de otras carreras que deben mencionarse a quienes estén considerando ingresar a este campo.

  • Ingeniería de datos : todo lo que afecte a los datos debe poder manejar transformaciones complejas y de escala. Usted es el especialista en conectar varios elementos de la canalización de datos. A menudo, existe una demanda significativamente mayor de sus servicios que de los del ingeniero de machine learning.
  • Científico de datos: análisis, narración de historias, estadísticas, machine learning y presentación al CEO. Lo tienes todo. Por lo general, este trabajo es más diverso e implica menos programación, pero realmente depende de dónde termine: hay tantos tipos de ciencia de datos que es difícil definirlo como un solo rol y algunos científicos de datos dirigen un departamento completo de datos y análisis por sí mismos.
  • Ingeniería en la nube: especialista en integrar diferentes aplicaciones y mover flujos de trabajo a la nube, es muy buen amigo de los ingenieros de datos y ML.

Conclusión

Un ingeniero en machine learning tiene una amplia gama de temas para comprender tanto del aprendizaje automático como del desarrollo de software. Los cursos y las certificaciones no lo llevan allí a partir de 2020. Aún es deseable una capacitación formal o experiencia en el campo, pero espero que sea más accesible con el tiempo, de manera similar a cómo la ciencia de datos se volvió más abierta a los recién llegados. Con eso en mente, creo que el mejor camino para aquellos que buscan convertirse en ingenieros de ML sin una capacitación formal sería ingresar a la ciencia de datos o la ingeniería de software, y trasladarse desde allí mientras recogen los elementos que componen la ingeniería de ML.