[en] Neural networks and their subfield, Deep Learning, have achieved impressive results in areas such as robotics, artificial vision, Natural Language Processing (NLP) and Natural Language Understanding (NLU). For this reason, more and more companies use these tools to improve and automate their processes. These computational models are applicable in settings where large amounts of data are available, the more complex the problem to be solved by the neural network the more data it will need to learn. This learning process is usually long, to obtain a suitable model multiple tests must be carried out, testing different combinations of parameters, different model structures or even different pre-processing of the data. For this reason, the parallelization of these trainings has become a key point today, it is in the interests of companies that highly qualified personnel can carry out their work in the most optimal way possible, without having to wait for these trainings to finish. There are different ways of distributing the execution of the neural network training sessions on multiple machines, in the Python field there is the Horovod library, which by means of small modifications in the code allows to parallelize training sessions in both TensorFlow and PyTorch, the two frameworks most used in the field of Deep Learning today. The objective of this project is to create a tool capable of automating the parallelization process of the training code of a neural network. A \textit{source-to-source} compiler is a compiler that translates from one source language to another with a similar level of abstraction. This compiler will be able to apply the necessary Horovod transformations to codes programmed in TensorFlow.Keras and PyTorch. A tool capable of parallelizing most of the codes written in these libraries could be very useful for the community, since it would save the researcher knowing how Horovod works and having to transform the code manually.

[es] Las redes neuronales y su subcampo, el Deep Learning, han conseguido resultados impresionantes en áreas como la robótica, la visión artificial, el Natural Language Processing (NLP) y el Natural Language Understanding (NLU). Por este motivo cada vez más empresas hacen uso de estas herramientas para mejorar y automatizar sus procesos Estos modelos computacionales son aplicables en ámbitos en los que se dispone de grandes cantidades de datos de muestra, cuánto más complejo sea el problema a resolver por la red neuronal más datos necesitará para aprender. Este proceso de aprendizaje suele ser largo, para obtener un modelo adecuado se deben realizar múltiples pruebas, probando diferentes combinaciones de parámetros, diferentes estructuras del modelo o incluso diferentes pre-procesados de los datos. Por este motivo la paralelización de estos entrenamientos se ha convertido en un punto clave en la actualidad, a las empresas les conviene que el personal altamente cualificado pueda ejercer su labor de la manera más óptima posible, sin tener que esperar a que terminen estos entrenamientos. Existen diferentes maneras de distribuir la ejecución de los entrenamientos de las redes neuronales en múltiples máquinas, en el ámbito de Python existe la librería Horovod, que mediante pequeñas modificaciones en el código permite paralelizar entrenamientos tanto en TensorFlow como en PyTorch, los dos frameworks más usados en el ámbito de Deep Learning en la actualidad. El objetivo de este proyecto es realizar una herramienta, capaz de automatizar el proceso de paralelización del código de entrenamiento de una red neuronal. Un compilador source-to-source, es un compilador que traduce de un lenguaje fuente a otro con un nivel de abstracción parecido. Este compilador será capaz de aplicar las transformaciones necesarias de Horovod a códigos programados en TensorFlow.Keras y PyTorch. Una herramienta capaz de paralelizar la mayoría de códigos escritos en estas librerías podrá resultar de gran utilidad para la comunidad, ya que le ahorraría al investigador conocer el funcionamiento de Horovod y el tener que transformar el código manualmente.