Tutorial: puesta en marcha de motores NLLB 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 el modelo NLLB:

Scaling neural machine translation to 200 languages. Nature, 2024, 630.8018: 841-846.

3. Puesta en marcha del motor NLLB en MTUOC-server

Una vez hemos obtenido el MTUOC-server tendremos que editar dos archivos yaml (recuerda que son archivos de texto y que se puede editar en cualquier editor de textos):

config-server.yaml

MTengine: NLLB
system_name: NLLB

MTUOCServer:
  port: 8000
  type: MTUOC
  #one of MTUOC, Moses, ModernMT, OpenNMT, NMTWizard
  verbosity_level: 2
  #specific configuration when acting as ONMT server
  log_file: log.log
....

En MTEngine tenemos que indicar NLLB. En system_name podemos poner cualquier nombre que queramos.

Y en config-NLLB.yaml:

NLLB:
  model: facebook/nllb-200-distilled-600M
  src_lang: spa_Latn
  tgt_lang: hrv_Latn
  beam_size: 5
  num_hypotheses: 5

En model tendremos que escoger alguno de los diferentes modelos NLLB disponibles en HuggingFace:

  • facebook/nllb-200-distilled-600M
  • facebook/nllb-200-distilled-1.3B
  • facebook/nllb-200-3.3B

Estos modelos se diferencian en el número de parametros (600M, 1.3B y 3.3B) y cuanto más grandes más ocuparán también en disco.

Después tendremos que poner las lenguas de partida y de llegada (recuerda que es un sistema multilingüe que puede traducir desde y hacia unas 200 lenguas).

Después al poner en marcha MTUOC-server, si el modelo no se ha descargado todavía, se descargará automáticamente y se pondrá en marcha para las lenguas seleccionas.

La lista de lenguas y códigos de NLLB es la siguiente:

Lengua (español) Código NLLB
Acholi ach_Latn
Afrikaans afr_Latn
Akan aka_Latn
Amárico amh_Ethi
Aragonés arg_Latn
Árabe ara_Arab
Asamés asm_Beng
Asturiano ast_Latn
Aymara aym_Latn
Azerí aze_Latn
Bambara bam_Latn
Bemba bem_Latn
Bengalí ben_Beng
Bhojpuri bho_Deva
Bielorruso bel_Cyrl
Birmano (Myanmar) mya_Mymr
Bosnio bos_Latn
Bretón bre_Latn
Búlgaro bul_Cyrl
Cabilio kab_Latn
Canarés kan_Knda
Catalán cat_Latn
Cebuano ceb_Latn
Checheno che_Cyrl
Checo ces_Latn
Chichewa nya_Latn
Chino simplificado zho_Hans
Chino tradicional zho_Hant
Cingalés (Sinhala) sin_Sinh
Coreano kor_Hang
Criollo haitiano hat_Latn
Croata hrv_Latn
Danés dan_Latn
Dhivehi (maldivo) div_Thaa
Dogri doi_Deva
Dzongkha dzo_Tibt
Ewe ewe_Latn
Esperanto epo_Latn
Español spa_Latn
Estonio est_Latn
Euskera eus_Latn
Ewondo ewo_Latn
Fang fan_Latn
Farsi (persa) pes_Arab
Fiyí fij_Latn
Finés fin_Latn
Francés fra_Latn
Fulfulde fuv_Latn
Gallego glg_Latn
Ga gaa_Latn
Georgiano (kartuli) kat_Geor
Gilbertense (kiribati) gil_Latn
Griego ell_Grek
Guaraní grn_Latn
Gujarati guj_Gujr
Hausa hau_Latn
Hawaiano haw_Latn
Hebreo heb_Hebr
Hindi hin_Deva
Hiri motu hmo_Latn
Hmong hmn_Latn
Húngaro hun_Latn
Igbo ibo_Latn
Ilocano ilo_Latn
Indonesio ind_Latn
Inglés eng_Latn
Inuktitut iku_Cans
Irlandés gle_Latn
Islandés isl_Latn
Italiano ita_Latn
Japonés jpn_Jpan
Javanés jav_Latn
Kabyle (Cabilia) kab_Latn
Kannada kan_Knda
Kazajo kaz_Cyrl
Khmer (camboyano) khm_Khmr
Kinyarwanda kin_Latn
Kirguís kir_Cyrl
Kurdo kur_Arab
Lao lao_Laoo
Latín lat_Latn
Letón lav_Latn
Lingala lin_Latn
Lituano lit_Latn
Luganda lug_Latn
Luxemburgués ltz_Latn
Macedonio mkd_Cyrl
Maithili mai_Deva
Malabar (malayalam) mal_Mlym
Malayo zsm_Latn
Malgache mlg_Latn
Maltés mlt_Latn
Maorí mri_Latn
Marathi mar_Deva
Mongol mon_Cyrl
Mossi (moore) mos_Latn
Nepalí nep_Deva
Neerlandés (Holandés) nld_Latn
N'ko nqo_Nkoo
Noruego bokmål nob_Latn
Nuer nus_Latn
Nyanja (chichewa) nya_Latn
Occitano oci_Latn
Odia (oriya) ori_Orya
Oromo orm_Latn
Panyabí (gurmukhi) pan_Guru
Pastún pus_Arab
Persa (farsi) pes_Arab
Polaco pol_Latn
Portugués por_Latn
Quechua que_Latn
Romanche roh_Latn
Rumano ron_Latn
Ruso rus_Cyrl
Lengua (español) Código NLLB
Sami septentrional sme_Latn
Samoano smo_Latn
Sango sag_Latn
Sánscrito san_Deva
Sardinés srd_Latn
Serbio (latino) srp_Latn
Serbio (cirílico) srp_Cyrl
Sesotho sot_Latn
Shona sna_Latn
Sindhi snd_Arab
Singalés (cingalés) sin_Sinh
Somalí som_Latn
Sotho del norte nso_Latn
Suajili swa_Latn
Sueco swe_Latn
Suri sur_Latn
Tagalo (filipino) tgl_Latn
Tailandés tha_Thai
Tamil tam_Taml
Tártaro tat_Cyrl
Télugu tel_Telu
Tigrinya tir_Ethi
Tongano ton_Latn
Tswana tsn_Latn
Turco tur_Latn
Turcomano tuk_Latn
Ucraniano ukr_Cyrl
Urdu urd_Arab
Uzbeko uzb_Latn
Vietnamita vie_Latn
Volapük vol_Latn
Xhosa xho_Latn
Yiddish yid_Hebr
Yoruba yor_Latn
Zulú zul_Latn