Cele mai avansate modele de limbaj mari (LLM-uri) folosesc în mod principal limba engleză, așa că noul model EuroLLM completează foarte bine lipsa utilizării celorlalte limbi europene.
1. Introducere
Modelele de limbaj mari (LLMs) au revoluționat procesarea limbajului natural și inteligența artificială, permițând executarea unui număr mare de automatizări, însă prin favorizarea limbii engleze și utilizarea intensă pentru antrenament a materialelor în limba engleză. acestea au lăsat multe limbi europene subreprezentate.
Această lipsă de diversitate lingvistică creează bariere semnificative pentru vorbitorii non-englezi, limitându-le accesul la capacitățile tehnologiilor de inteligență artificială. Pentru a aborda acestă problemă, o echipă de cercetători de la Unbabel, Instituto de Telecomunicações, Instituto Superior Técnico, Carnegie Mellon University, MICS, CentraleSupelec, Université Paris-Saclay, Illuin Technology, University of Edinburgh, Equall și Aveni introduce proiectul EuroLLM, care vizează dezvoltarea de modele de limbaj multilingv, capabile să înțeleagă și să genereze text în toate limbile oficiale ale Uniunii Europene, precum și în alte limbi relevante, cum ar fi araba, chineza și rusa.
Proiectul EuroLLM urmărește să creeze LLMs care să susțină toate limbile oficiale ale UE, compensând astfel golul lăsat de LLMs open-weight predominant englezești. Proiectul a dezvoltat două modele inițiale: EuroLLM-1.7B și EuroLLM-1.7B-Instruct, care au arătat rezultate promițătoare pe bazele de date multilingv și în sarcinile de traducere automată.
Colectarea și filtrarea datelor Modelele EuroLLM au fost antrenate pe un set de date divers, colectate din multiple surse, pentru a susține toate limbile vizate. Materialul final a fost împărțit în patru categorii: date web, date paralele, date cod/matematică și date de înaltă calitate.
Procesul de colectare a datelor a inclus printre altele eliminarea duplicatelor, identificarea limbii și filtrul heuristic pentru a asigura calitatea.
De exemplu, datele web în engleză au fost folosit ca sursă setul de date FineWeb-edu, în timp ce pentru alte limbi s-a folosit setul de date RedPajama-Data-v2. De asemenea, datele paralele au fost colectate pentru a îmbunătăți alinierea între limbi și a consolida capacitățile modelului de traducere automată.
Engleza a primit 50% din totalul tokenilor în faza inițială de antrenare, iar restul tokenilor fiind distribuit între celelalte limbi și datele cod/matematică. În faza de învățământ, proporția de date englezești a fost redusă la 32,5%, pentru a mări capacitatea multilinguală ale modelului. Amestecul de date a inclus, de asemenea, o cantitate semnificativă de date paralele, stabilite la 20% pentru fiecare limbă, pe baza constatării că acestea îmbunătățesc alinierea între limbi fără a afecta negativ celelalte domenii.
EuroLLM folosește un context de 128k tokeni, utilizând platforma SentencePiece. Modelul a fost antrenat pe 4 trilioane de tokeni, utilizând 256 GPU-uri Nvidia H100. Pentru a permite EuroLLM-1.7B să urmeze instrucțiunile limbajului natural, modelul a fost antrenat și pe baza de date EuroBlocks, care a inclus date scrise de oameni și date sintetice, acoperind o gamă largă de limbi și sarcini.
Rezultate Modelele EuroLLM au fost evaluate pe baze de date generale și în sarcini de traducere automată. Pe bazele de date Hellaswag (inferență comună) și Arc Challenge (întrebări de examen științific), EuroLLM-1.7B a egalat sau a depășit performanța altor modele, cum ar fi Gemma-2b și TinyLlama, pentru majoritatea limbilor, arătându-și astfel capacitățile multilingv sporite. Pentru traducerea automată, EuroLLM-1.7B-Instruct a depășit Gemma-2b și a fost competitiv cu Gemma-7b, în ciuda numărului mai mic de parametri. Aceste rezultate demonstrează eficacitatea modelelor EuroLLM în ceea ce privește înțelegerea și generarea de text în multiple limbi.
2. Utilizarea EuroLLM
Modelul este disponibil gratuit pe platforma HuggingFace și poate fi utilizat folosind inferenta locală prin Python.
Pentru a utiliza python va trebui să instalăm în prealibil câteva librării:
pip install sentencepiece protobuf
Un exemplu de cod este următorul:
from transformers import AutoModelForCausalLM, AutoTokenizer
model_id = "utter-project/EuroLLM-1.7B"
tokenizer = AutoTokenizer.from_pretrained(model_id)
model = AutoModelForCausalLM.from_pretrained(model_id)
text = "English: My name is EuroLLM. Portuguese:"
inputs = tokenizer(text, return_tensors="pt")
outputs = model.generate(**inputs, max_new_tokens=20)
print(tokenizer.decode(outputs[0], skip_special_tokens=True))
Modelul EuroLLM are o dimensiune de aproximativ 3.3 GB.
3. Teste locale
Pentru a verifica capacitățile modelului vom încerca să traducem mai multe texte în limbi de circulație europene.
Vom folosi ca sursă textul unui articol de pe CNN.
Two hikers encountered a rattlesnake. Then they fell in love
Emmanuel Salas heard the snake before he saw it.
“There was that rattle,” Emmanuel, known as Manny, recalls to CNN Travel today. “Immediately, we jumped back.”
Manny tried not to panic, but when the snake came writhing out of a bush and proceeded to unfurl and stand alert, Manny felt the fear kick in.
“It looked like it was kind of aggressive, it was standing up,” he recalls. “We were all freaking out.”
It was early 2019. Manny and two friends were hiking back from the Bridge to Nowhere, a remote structure built for an abandoned 1930s highway project in California’s San Gabriel Mountains.
Twenty-something Manny was born in Mexico but grew up in California, and he was familiar with the state’s more hair-raising wildlife. But it was one thing reading about venomous rattlesnakes, and another thing coming face-to-face with one in the middle of nowhere.
“I’m terrified of snakes,” says Manny. “And we were on this part of the trail where it’s very narrow. On one side you have a clearing, with a bit of a drop and a steep fall. And then on the other side, you just have a whole bunch of bushes, so we couldn’t really go around the snake.”
Vom beneficia de faptul că modelul este de tip instruct și reacționează la comenzile date de utilizator.
Codul utilizat devine:
from transformers import AutoModelForCausalLM, AutoTokenizer
model_id = "utter-project/EuroLLM-1.7B-Instruct"
tokenizer = AutoTokenizer.from_pretrained(model_id)
model = AutoModelForCausalLM.from_pretrained(model_id)
text = '<|im_start|>system\n<|im_end|>\n<|im_start|>user\nTranslate the following English source text to Romanian:\nEnglish: Two hikers encountered a rattlesnake. Then they fell in love.Emmanuel Salas heard the snake before he saw it. There was that rattle, Emmanuel, known as Manny, recalls to CNN Travel today. Immediately, we jumped back.\nRomanian: <|im_end|>\n<|im_start|>assistant\n'
inputs = tokenizer(text, return_tensors="pt")
outputs = model.generate(**inputs, max_new_tokens=100)
print(tokenizer.decode(outputs[0], skip_special_tokens=True))
iar primul răspuns, în limba română este:
Doi cățărători s-au întâlnit cu o șopârlă cu cocoașă. Apoi s-au îndrăgostit. Emmanuel Salas era în căutarea șopârlei cînd a auzit-o, de undeva. Șopârla, de altminteri cunoscută sub numele Manny, își face azi primii mei prieteni cu CNN Travel, îmi povestește acum. L-am sarit
Din păcate textul în limba română suferă evident de coerență.
Pentru al doilea test vom încerca traducerea unui text din limba română în limba engleză:
La o cofetărie, cantitatea de 1632 de kilograme de făină s-a ambalat în lădițe a câte 6 kilograme, iar cantitatea de 936 de kilograme de zahar s-a ambalat în lădițe a câte 2 kilograme. Dacă în depozit erau 830 de lădițe, află câte au mai rămas după ambalarea zaharului și a făinii.
Pune operațiile în ordinea în care trebuie efectuate.
Traducerea este:
In a bakery, 1,632 kilogrames of flour were packed in cases of 6 kilogrames, and 936 kilogrames of sugar were packed in cases of 2 kilogrames. If there were 830 cases in the store, find out how many were there remaining after packing the sugar and flour. List the operations in the order they need to be done.
Traducerea este bună în acest caz. Este evidentă o diferență de calitate mare atunci când folosim o altă limbă decât engleza.
Mai facem o încercare dorind traducerea în limba română din limba franceză:
<|im_start|>system\n<|im_end|>\n<|im_start|>user\nTranslate the following Francaise source text to Romanian:\nFrancais: Avec de la patience et de la determination, des journees passees e pelleter des kilos de cailloux et de sable, e gratter des rochers et e s'en crever les yeux, les passionnes du dimanche peuvent accumuler une pincee de paillettes, exceptionnellement une mini-pepite. Le Graal des chercheurs d'or amateurs, dont l'activite est reglementee par l'Etat. Regie par le Code minier, la pratique de ce loisir doit être declaree chaque annee e la prefecture. Certains departements n'accordent aucune autorisation, comme la Bretagne, region pourtant très aurifère. Officiellement, il s'agit de preserver l'environnement, les zones de vie et de reproduction des salmonides. La police des eaux veille.\nRomanian: <|im_end|>\n<|im_start|>assistant\n
Textul tradus este:
Romanian: Cu multă răbdare și determinare, puteți să depășiți cu bine o zi când a trebuit să pătim în urma unei greve. Cu adevărat extraordinar de obositor au fost să slăbuți kilograme în plus și să vă scăpați la loc câteva pietricele. Pe lângă asta, totul se întâmplă într-un moment în care statul interzice multe alte lucruri. Dacă
Pe lângă faptul că traducerea este cel mult aproximativă, EuroLLM pare să se blocheze atunci când textul utilizatorului este mai lung, chiar dacă am mărit contextul de 500 de tokeni.
3. Concluzii
EuroLLM este constuit pe o intenție bună, dar din păcate, rezultatele pentru limba română sunt dezamăgitoare. Capacitatea de a răspunde în limba română este mult mai mică decât modele de dimensiuni comparabile (care pot fi folosite local) precum Llama 3.2, dar mult mai avansate. Comparația cu modelele consacrate precum Mistral Large sau Claude Sonet pur și simplu nu este posibilă.
Modelul traduce aproximativ textele, dar formulează greșit cuvintele și nu urmărește contextul traducerii. Probabil este nevoie de un antrenament suplimentar pentru textele românești pentru a permite utilizarea acestui model în activitatea de zi cu zi. Recomandarea noastră este să îl evitați deocamdată.