Tutorial: puesta en marcha de motores OpusMT con MTUOC‐server - mtuoc/tutorials GitHub Wiki
1. Introducción
En este tutorial vamos a aprender a poner en marcha motores de traducción automática neuronal con el servidor MTUOC-server. Este proceso es muy sencillo, ya que cuando se configura correctamente el servidor indicando qué motor neuronal se quiere utilizar, el programa descarga automáticamente el modelo y lo pone en marcha.
Recuerda que puedes obtener MTUOC-server del repositorio: https://github.com/mtuoc/mtUOC-server. El servidor se distribuye en código fuente y también en binarios para Windows y próximamente también para MacOs y Linux. Puedes descargar MTUOC-server directamente de la última Release desde https://github.com/mtuoc/MTUOC-server/releases. Aunque vayas a utilizar las versiones ejecutables, es imprescindible también descargar el código fuente, ya que incluye otros archivos y binarios imprescindibles para el funcionamiento. Una vez descargado y descomprimido el código fuente descarga el binario en el mismo directorio. Si tienes un intérprete de Python versión 3 instalado en tu ordenador, también puedes ejecutar directamente el código fuente, previa instalación de los prerequisitos que están en el archivo requirements.txt de la distribución. Puede ser aconsejable crear un entorno virtual de Pyhton para ejecutar el servidor.
2. Lectura recomendada
Es interesante leer el artículo relacionado con los motores de traducción automática OpusMT:
3. Puesta en marcha de motores bilingües
La mayoría de motores disponibles en OpusMT son bilingües, es decir, traducen de una lengua de partida a una de llegada. En el siguiente apartado veremos que algunos motores son multilingües y cómo ponerlos en marcha.
El servidor MTUOC-server se configura mediante archivos yaml. Los archivos yaml son archivos de texto que se pueden abrir en cualquier editor de textos. En primer lugar tendremos que configurar el archivo config-server.yaml. Si lo abrimos veremos algo como lo siguiente en las primeras líneas:
MTengine: OpusMT
system_name: OpusMT-eng-spa
MTUOCServer:
port: 8000
type: MTUOC
#one of MTUOC, Moses, ModernMT, OpenNMT, NMTWizard
verbosity_level: 2
log_file: log.log
El campo MTengine nos indicará qué tipo de motor de traducción o modelo de lenguaje queremos utilizar. El campo system_name es un nombre que podemos dar a nuestro sistema, que puede ser cualquiera.
En el apartado MTUOCServer indicaremos el puerto (con port) que queremos utilizar. Se puede utilizar cualquier puerto que no esté en uso en el ordenador donde se ejecuta el motor. En type indicaremos el protocolo de comunicación que queremos que utilice el servidor. Las otras dos opciones por ahora no es necesario conocerlas.
Una vez configurado el servidor para que utilice OpusMT tendremos que editar también el archivo config-OpusMT.yaml que contiene los siguientes campos:
OpusMT:
#model_path: fine-tuned-opusmt-EP-es-ca
model_path: Helsinki-NLP/opus-mt-es-fr
beam_size: 5
num_hypotheses: 5
multilingual: ">>por<<"
En model_path tenemos que indicar el modelo que queremos utilizar. Hay dos opciones, indicar el directorio donde se encuentra localmente el motor, o bien indicar la dirección de HuggingFace del motor. La opción que empieza por # está invalidada y el sistema no la tiene en cuenta. En el ejemplo se ha indicado Helsinki-NLP/opus-mt-es-fr lo que significa que la primera vez que utilicemos el modelo se descargará en nuestro ordenador el modelo en https://huggingface.co/Helsinki-NLP/opus-mt-es-fr. Si queremos ver todos los modelos disponibles en HuggingFace de la colección OpusMT podemos consultar https://huggingface.co/Helsinki-NLP, en el apartado Models donde hay más de 1.500 modelos disponibles. Por ahora no es necesario que cambies el beam_size ni el num_hypotheses. La opción multilingual únicamente se utiliza para modelos multilingües, como explicaremos en la siguiente sección.
Una vez puesto configurado el servidor lo podemos poner en marcha. Si queremos utilizar la versión ejecutable para Windows es suficiente hacer doble clic sobre MTUOC-server.exe. Si utilizamos la versión Python, desde un terminal tenemos que escribir:
python3 MTUOC-server.py
(o python dependiendo de cómo se llame a Python 3 desde vuestro ordenador). Una vez se ha puesto en marcha el sistema, se visualizará en el terminal:
2025-04-19 09:24:51.102386 2 MTUOC server started using MTUOC protocol
MTUOC server IP: 192.168.43.40
MTUOC server port: 8000
MTUOC server type: MTUOC
Y el motor estará listo para utilizar en la IP que se indica y el puerto.
4. Puesta en marcha de motores multilingües
Algunos modelos de OpusMT son multilingües, es decir, que pueden traducir desde una o más lenguas a una o diversas lenguas. Podemos distiguir dos grupos de modelos multilingües:
- Los que traducen a diversas lenguas.
- Los que traducen a una única lengua
4.1. Configuración para sistemas que traducen a diversas lenguas
En este tipo de modelos, como por ejemplo el Helsinki-NLP/opus-mt-en-ROMANCE, que traduce del inglés a diversas lenguas románicas, hay que configurar el archivo config-OpusMT.yaml indicando la lengua de llegada que queramos, por ejemplo:
OpusMT:
#use the same configuration for OpusMT
#model_path: fine-tuned-opusmt-EP-es-ca
model_path: Helsinki-NLP/opus-mt-en-ROMANCE
beam_size: 5
num_hypotheses: 5
multilingual: ">>pt_PT<<"
En este caso traducirá del inglés al portugués de Portugal.
4.1. Configuración para sistemas que traducen a una única lengua
Hay modelos multilingües que traducen de diversas lenguas a una única lengua, como por ejemplo el modelo Helsinki-NLP/opus-mt-mul-en que puede traducir de una gran cantidad de lenguas al inglés. En este caso no se tiene que indicar la lengua de llegada y se tiene que poner False en multilingual. Como en el siguiente ejemplo:
OpusMT:
#use the same configuration for OpusMT
#model_path: fine-tuned-opusmt-EP-es-ca
model_path: Helsinki-NLP/opus-mt-mul-en
beam_size: 5
num_hypotheses: 5
multilingual: False
Aunque el modelo sea multilingüe se pone False ya que no es necesario indicar al sistema a qué lengua queremos traducir.
5. Prueba de funcionamiento del servidor
Una vez puesto en marcha el servidor lo podemos probar fácilmente con la aplicación MTUOC-test-server, que se distribuye tanto en versión ejecutable para Windows (que se puede poner en marcha haciendo doble clic sobre la aplicación en el navegador de archivos) o en versión Python, que se puede poner en marcha escribiendo en terminal:
python3 MTUOC-test-server.py
Cuando se pone en marcha la aplicación toma la IP y el puerto del servidor automáticamente y muestra la siguiente pantalla donde podemos escribir un mensaje de prueba y traducirlo:
Si queremos probar un servidor con otra IP y/o puerto podemos cambiarlos en la pestaña Server.