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 |