jueves, 18 de julio de 2024

Machine Learning en producción: diferencias con la investigación

Leyendo literatura especializada sobre inteligencia artificial y machine learning, incluyendo libros bastante técnicos e incluso orientados a proyectos, a veces llama la atención el poco énfasis que se pone en el paso a producción.

El ignorado paso a producción


En efecto, los libros técnicos tienden a centrarse en las posibilidades, en el desarrollo, en cómo se hace o entrena un modelo, y cómo se traslada eso al lenguaje o herramienta de que se trate, pero no en cómo, una vez desarrollado, entrenado y probado, ese algoritmo, ese componente o ese programa, se despliega, se pone en producción y se utiliza realmente.

Y si en lugar de literatura técnica, hablamos de divulgación generalista, a veces incluso propagandística, para qué hablar. Es posible que muchos autores de esa divulgación ni siquiera sean demasiado conscientes de la necesidad del paso a producción, de sus métodos y sus implicaciones.

No sólo afecta esta carencia a la inteligencia artificial, eso es cierto, sino a todo el mundo del software. Creo que con la única excepción de la literatura referida a cloud y DevOps, la producción del software es un tema bastante ignorado.

Probablemente es que se trate de un tema más especializado, de público más restringido y, seguramente, menos entretenido, variado y brillante que el desarrollo o la investigación. 


Machine learning en producción


Pero si, el software para que sea funcional, disponible y escalable en entornos profesionales y corporativos, hay que llevarlo a producción, y los modelos de machine learning no son una excepción.

En el caso de los modelos de machine learning, además, hay alguna diferencia entre cómo se trabaja en producción a cómo se hace en desarrollo que me parece especialmente interesante tener clara, sobre todo por lo que tiene que ver con el uso d elos datos y la diferenciación entre entrenamiento en inferencia, entre lo que es la construcción del modelo propiamente dicha, y su uso para hacer predicciones.

Hace unos días, finalicé la lectura del libro 'Artificial Intelligence with Microsoft Power BI' de Jen StirrupThomas J. Weinandy y en él me he encontrado una comparativa entre los modelos de machine learning en investigación (no es exactamente desarrollo, pero me resulta bastante válido) y en producción.

Y los autores destacaban cinco diferencias.


Las cinco diferencias del machine learning en producción frente a investigación


En concreto, las cinco diferencias que señalan es la obra, son las siguientes:


  • Requisitos: En investigación normalmente se busca llegar o superar el máximo estado el 'estado del arte', las máximas prestaciones o resultados utilizando para comparación diferentes 'benchmarks'. En aplicaciones reales y en producción, sin embargo, diferentes clientes pueden tener diferentes requisitos, apuntaría que yo que, con frecuencia, requisitos que pueden ser más prácticos y menos exigentes.

  • Prioridad computacional: En la investigación, el foco se pone sobre todo en la fase de entrenamiento y que ésta sea lo más rápida posible para lo que interesa un muy alto rendimiento ('throughput'). En aplicaciones finales y en producción, lo que importa es la inferencia, no el entrenamiento. Y, en ese caso, es mucho más importante una baja latencia que un alto rendimiento.

  • Datos: En el caso de la investigación, los datos usados suelen ser datasets más o menos estáticos. Sin embargo, en producción la situación es completamente dinámica.

  • Equidad ('fairness'): No suele existir foco en este punto en el caso de la investigación, mientras que en producción sí que se debiera considerar.

  • Interpretabilidad ('interpretability'): Igual que en el caso anterior, no suele ser el foco en la investigación, pero en producción debería tenerse en cuenta.


Hay dos cosas sobre las que me gustaría llamar la atención sobre estas diferencias. En primer lugar, respecto al punto de los datos, cómo es en investigación o desarrollo donde realmente se utilizan grandes cantidades de datos y capacidad computacional, pero como luego en producción (inferencia) normalmente no es así, normalmente hay un comparativamente bajo uso de datos y de capacidad computacional (y, por tanto, de energía). Una diferenciación que creo que no es del todo conocida ni entendida y que, entre otros varios puntos, intenté clarificar, hace ya bastante tiempo, en el post 'La equívoca relación de la inteligencia artificial con los datos'.

Igualmente es relevante comentar los dos últimos puntos, la equidad y la interoperabilidad. que tienen un claro componente ético. En estos dos puntos, y sin contradecir en absoluto a los autores, decir que, en mi percepción, no se tienen todavía tanto en cuenta en producción como se debería (aunque hay un creciente interés, espero que sincero en el tema) y que, aunque puedo comprender que en investigación se les preste algo menos de atención, ya deberían formar parte de los estudios, extendiendo, quizá, lo que denominamos 'etica por diseño, a casi algo que podríamos bautizar como 'etica desde la investigación'.

Por último, solo remarcar que, como el lector avezado se habrá dado cuenta, en realidad no he comentado, desde un punto de vista técnico u operativo, cómo es el paso a producción que comentaba al principio y que quizá ese paso a producción habría que confrontarlo más con el desarrollo que con la investigación. Es cierto, y quizá en algún momento deba tratarlo, pero por ahora, por lo menos creo que resulta interesante esta comparativa y pude ser un punto de partida.


Conclusiones


El trabajo con modelos de machine learning en investigación y desarrollo, presenta algunas diferencias importantes con lo que se hace cuando se lleva a casos prácticos y se despliega en producción.

En este post, hemos visto someramente, cinco diferencias entre una situación y otra.



No hay comentarios:

Publicar un comentario