En las últimas décadas, el avance de los algoritmos de Aprendizaje Automático (Machine Learning, ML) ha despertado el interés en la búsqueda de estrategias que logren acelerar los procesos de entrenamiento e inferencia típicos de este ámbito, especialmente cuando éstos surgen en servidores con un elevado grado de paralelismo, complejidad y heterogeneidad. Típicamente, estos procesos se realizan a través de entornos de trabajo (frameworks) de propósito específico tales como Tensoflow, Keras, Caffe o Pytorch. A día de hoy, Tensorflow es uno de los frameworks más utilizados por parte de los desarrolladores de algoritmos de ML. Desde el punto de vista de rendimiento computacional, existen entre sus parámetros de configuración diversas opciones de configuración relativas al grado de paralelismo, que pueden ser fijadas a priori, pero no pueden ser reconfiguradas durante el proceso de entrenamiento o inferencia, por lo que se consideran parámetros rígidos. En situaciones en las que múltiples instancias del framework se ejecutan en una misma máquina, dicha rigidez puede derivar en problemas tales como oversuscription, degradamiento del rendimiento del sistema y/o aplicación e infrautilización de los recursos computacionales. Por lo tanto, resulta importante agregar un grado de elasticidad en Tensorflow, permitiendo aumentar la productividad del sistema en entornos dinámicos multiprogramados. Por otro lado, la utilización de contenedores como método de virtualización ligera permite una mejor administración de los recursos y portabilidad. Existen múltiples planificadores que permiten aprovechar los beneficios de los contenedores, pero solo permiten llevar a cabo una asignación estática de recursos en el momento de su creación, y en algunos casos reasignación de recursos en tiempo de ejecución; en cualquier caso, las aplicaciones en ejecución dentro del contenedor no se encuentran preparadas para reaccionar ante dicho evento, y por tanto no se adaptarán en ningún caso a la modificación en los recursos asignados al contenedor. Por todo lo comentado anteriormente, este trabajo propone el diseño e implementación de un mecanismo completo de elasticidad en el uso de recursos computacionales en el framework Tensorflow, permitiendo la reasignación dinámica de núcleos de cómputo durante la ejecución del algoritmo de ML. Además, se extiende el uso de la elasticidad a contenedores con la implementación de un controlador/cliente que permita administrar los recursos computacionales asignados a los algoritmos de ML que ejecutan internamente. Por último, se implementa un planificador de contenedores elásticos con el fin de gestionar dinámicamente los recursos del sistema entre todos los contenedores activos y definir políticas de planificación que favorezcan el rendimiento global del sistema.