Escalabilidad para Machine Learning

Publicado el 04 febrero 2022 por Daniel Rodríguez @analyticslane

El concepto de escalabilidad es algo cada día más importante a la hora de desarrollar nuevas soluciones tecnológicas, incluidas en las que se implementan modelos de Aprendizaje Automático o Machine Learning. De poco sirve disponer del mejor modelo si cuando es necesario no es posible escalar para responder a toda la demanda. Esto es, si no se puede resolver en plazo todas las predicciones solicitadas es casi cómo si no se dispusiese del modelo. Por eso, a la hora de crear e implementar nuevos modelos es necesario tener en cuenta los conceptos de escalabilidad para Machine Learning. Los cuales son los mismos que son tenidos en cuenta en otras soluciones tecnológicas.

¿Qué se entiende por escalabilidad para Machine Learning?

La escalabilidad de un sistema hace referencia a la capacidad de este para aumentar o disminuir su escala. Adaptándose a las necesidades que pueden existir en cada momento. Así, por ejemplo, un sistema de detección de fraude en comercio electrónico ha de ser capaz de adaptarse al incremento o reducción de las operaciones durante las diferentes campañas. Evitando fallar en fechas clave como la campaña de Black Friday en la que las operaciones se pueden multiplicar.

Al hablar de soluciones basadas en software, como los modelos de Machine Learning, la escalabilidad se entiende como la capacidad de poder cambiar el tamaño de estos, generalmente aumentar, en una o varias de las siguientes tres dimensiones:

  • Carga (load)
  • Geografía (geographic)
  • Administrativa (administrative)

Veamos a continuación en qué consiste cada una de ellas.

Carga (load)

Al hablar de escalabilidad de carga se indica la capacidad de aumentar el rendimiento de la solución. Por ejemplo, poder aumentar el número de predicciones por segundo que puede realizar la solución. Lo que se debería poder conseguir aumentar la potencia de cálculo o de recursos del hardware utilizado. Ya que en caso contrario la solución no sería escalable. El aumento de recursos es algo que se puede abordar mediante dos enfoques diferentes que no se abordan exactamente igual:

  • vertical: incrementar los recursos de una máquina como puede ser más procesadores o memoria,
  • horizontal: añadir nuevas máquinas adicionales para aumentar la demanda.

Geografía

La escalabilidad geográfica hace referencia al hecho de que el sistema ha de continuar funcionando independientemente de la distancia física entre el usuario y los servidores. Evitando retrasos en las respuestas provoquen que el sistema no pueda ser utilizado. Siendo algo especialmente relevante cuando se trabaja con usuarios en diferentes países o continentes y son necesarias respuestas en tiempo real. Pudiendo ser necesario replicar los sistemas en varias ubicaciones y mantener estas coordinadas.

Administrativa

En los sistemas que usan más de una organización es necesario garantizar que esta pueda ser gestionada por todos los usuarios. Garantizando además el aislamiento de los datos entre organizaciones. Por ejemplo, cuando la solución es un servicio que se presta a terceros.

Conclusiones

En la entrada de hoy se han visto las tres dimensiones en las que deberíamos fijarnos a la hora de conseguir escalabilidad para Machine Learning. Siendo posiblemente la más importante la de carga. Poder aumentar el rendimiento del modelo a medida que se aumentan los recursos dedicados. Algo muchas veces no se da debido a la existencia de cuellos de botella en el diseño que limita el número de procesos que se pueden ejecutar en paralelo. Las otras dos dimensiones, geográfica y administrativa, también se deben tener en cuenta especialmente en grandes proyectos.

Imagen de Arek Socha en Pixabay