OpenLLM-RO se dorește a fi o comunitate de entuziaști care reunește modele LLM românești într-un singur loc.
OpenLLM a lansat o serie de variante ale popularelor LLM-uri LLama 2, LLama 3, Gemma și Mistral ajustate pe 15 seturi de date open source disponibile în limba română. Totuși, trebuie precizat că dimensiunea acestor date este mică, nedepășind 2 MB de date.
Scopul OpenLLM este de a obține o calitate conversațională în limba română ridicată pentru aceste modele, deci vom încerca să testăm capacitatea lor de a face traduceri din limba engleză.
Testarea modelului OpenLLM-RO RoGemma 7B
RoGemma are la bază modelul Gemma 7B Instruct, un model lansat de Google in februarie 2024. Modelul RoGemma are o mărime de aproximativ 22 GB și poate fi utilizat și pe dispozitivele locale.
Testarea a fost făcută cu o placă grafică NVIDIA RTX 6000Ada de 48 GB VRAM si 82 TFLOPS.
Nu există încă nici o versiune GGUF disponibilă pentru a fi rulat direct din LM Studio sau Ollama.
Pentru a testa codul va trebui să instalăm prima dată librăriile necesare:
pip install git+https://github.com/huggingface/transformers
pip install torch
Codul de test este:
from transformers import AutoTokenizer, AutoModelForCausalLM
tokenizer = AutoTokenizer.from_pretrained("OpenLLM-Ro/RoGemma-7b-Instruct")
model = AutoModelForCausalLM.from_pretrained("OpenLLM-Ro/RoGemma-7b-Instruct")
instruction = "Ce jocuri de societate pot juca cu prietenii mei?"
chat = [
{"role": "user", "content": instruction},
]
prompt = tokenizer.apply_chat_template(chat, tokenize=False, system_message="")
inputs = tokenizer.encode(prompt, add_special_tokens=False, return_tensors="pt")
outputs = model.generate(input_ids=inputs, max_new_tokens=128)
print(tokenizer.decode(outputs[0]))
Răspunsul modelului este:
<bos><start_of_turn>user
Ce jocuri de societate pot juca cu prietenii mei?<end_of_turn>
<start_of_turn>model
Există multe jocuri de masă pe care le puteți juca cu prietenii. Unele jocuri populare includ Monopoly, Scrabble, Trivial Pursuit, și Clue.<eos>
Haideți să testăm modelul cu un text în limba engleză:
Destination Abu Dhabi
Abu Dhabi brings its own brand of culture and tradition to the UAE formula of sparkling waterfront, opulent architecture and desert distractions. A world away from the frenetic bright lights of neighboring Dubai, the capital of the Emirates has fostered a somewhat more genteel pace, pouring huge investment into its extravagant outpost of Paris’s Louvre museum and the breathtaking Sheikh Zayed Mosque. There is excitement — the Abu Dhabi Grand Prix is an F1 fixture and theme parks like Ferrari World Abu Dhabi inject some adrenaline — but the best attractions are served at a slower pace: the oasis tranquility of second city Al Ain, the panoramas of Jebel Hafit mountain and the boundless desert dunes of the Rub al Khali Empty Quarter.
Codul devine:
from transformers import AutoTokenizer, AutoModelForCausalLM
tokenizer = AutoTokenizer.from_pretrained("OpenLLM-Ro/RoGemma-7b-Instruct")
model = AutoModelForCausalLM.from_pretrained("OpenLLM-Ro/RoGemma-7b-Instruct")
instruction = "Tradu din limba engleza urmatorul text in limba romana: Destination Abu Dhabi.Abu Dhabi brings its own brand of culture and tradition to the UAE formula of sparkling waterfront, opulent architecture and desert distractions. A world away from the frenetic bright lights of neighboring Dubai, the capital of the Emirates has fostered a somewhat more genteel pace, pouring huge investment into its extravagant outpost of Paris’s Louvre museum and the breathtaking Sheikh Zayed Mosque. There is excitement — the Abu Dhabi Grand Prix is an F1 fixture and theme parks like Ferrari World Abu Dhabi inject some adrenaline — but the best attractions are served at a slower pace: the oasis tranquility of second city Al Ain, the panoramas of Jebel Hafit mountain and the boundless desert dunes of the Rub al Khali Empty Quarter."
chat = [
{"role": "user", "content": instruction},
]
prompt = tokenizer.apply_chat_template(chat, tokenize=False, system_message="")
inputs = tokenizer.encode(prompt, add_special_tokens=False, return_tensors="pt")
outputs = model.generate(input_ids=inputs, max_new_tokens=128)
print(tokenizer.decode(outputs[0]))
iar răspunsul modelului este:
Destinatia Abu Dhabi. Abu Dhabi aduce propria sa marca de cultura si traditie la formula Emiratelor Arabe Unite, compusă din fântâni strălucitoare de pe malul apei, arhitectură opulență și distracții în deșert. Un univers departe de luminirile strălucitoare și frenetice ale Dubaiului vecin, capitala Emiratelor a cultivat un ritm mai elegant, investind enorm în spectaculoasa sa copie a muzeului Louvre din Paris și în impresionanta Moscheea Sheikh Zayed. Există entuziasm — Gran Premiul Abu Dhabi este o atracție importantă de Formula 1 și parcurile tematice ca Ferrari World Abu Dhabi injectează o doză de adrenalină — dar cele mai bune atracții sunt servite la un ritm mai lent: tranquillitatea oasisului din a doua oraș, Al Ain, panorama muntelui Jebel Hafit și dunele nesfârșite ale Deșertului Golfului Rub al Khali.
Timpul necesar executării codului a fost de peste 5 minute, deci costurile de utilizare ale Rogemma sunt destul de ridicate.
Testarea modelului OpenLLM-RO Rollama-3
Rollama-3 are la bază modelul Llama 3 8B Instruct, un model lansat de Meta in aprlie 2024. Modelul Rollama3 are o mărime de aproximativ 26 GB și poate fi utilizat și pe dispozitivele locale.
Testarea a fost făcută cu o placă grafică NVIDIA RTX 5000Ada de 32 GB VRAM si 61 TFLOPS.
Din păcate nici pentru acest model nu există încă nici o versiune GGUF disponibilă pentru a fi rulat direct din LM Studio sau Ollama.
Ca și la Rogemma va trebui să instalăm librăriile necesare:
pip install git+https://github.com/huggingface/transformers
pip install torch
Iar codul de testestare este același, doar modelul și instrucțiunile au fost înlocuite:
from transformers import AutoTokenizer, AutoModelForCausalLM
tokenizer = AutoTokenizer.from_pretrained("OpenLLM-Ro/RoLlama3-8b-Instruct")
model = AutoModelForCausalLM.from_pretrained("OpenLLM-Ro/RoLlama3-8b-Instruct")
instruction = "Tradu din limba engleza urmatorul text in limba romana: Destination Colombia.Rainforest, savannah, steppes, deserts and mountains: Colombia has them all. From the golden sands of the Caribbean and Pacific coastlines, to the verdant hills of the Zona Cafetara coffee region, to the bustling urban centers of the Andean highlands, this is a country with a surprising diversity of landscapes, climates, wildlife and people. Bogotá, the third-highest capital city in the world, is the country's vibrant center, but beyond that there is Medellin, named the City of Eternal Spring for its beautiful weather, the colonial architectural masterpiece that is Cartagena, and countless picturesque pueblos such as Santander's Barichara and Antiquoia's Guatape."
chat = [
{"role": "system", "content": "Tradu textul din engleza in romana."},
{"role": "user", "content": instruction},
]
prompt = tokenizer.apply_chat_template(chat, tokenize=False, system_message="")
inputs = tokenizer.encode(prompt, add_special_tokens=False, return_tensors="pt")
outputs = model.generate(input_ids=inputs, max_new_tokens=128)
print(tokenizer.decode(outputs[0]))
iar răspunsul modelului este:
Destinația: Columbia. Păduri tropicale, savane, steppe, deșerturi și munți: Columbia are toate. De nisipul de aur de pe coasta Caribului și Pacific, până la dealurile verzi ale regiunii cafetiere Zona Cafetera, pânâ la orașele urbane agitate ale munților Ande, acesta este un oraș cu o diversitate surprinzătoare de peisaje, climă, fauna sălbatică și oameni. Bogot
După cum se observă, textul nu a fost tradus integral. RoLLama 3 pare să încerce să traducă cuvintele 1-1 și din acest motiv frazele par să își piardă sensul pe măsură ce au o dimensiune mai mare. Traducerea a fost făcută într-un timp de 45 de secunde, dar țînând cont de resursele folosite modelul are un cost de utilizare relativ mare.
Concluzii
Cele două modele testate au fost ajustate cu un set mult prea mic de date pentru a avea rezultate spectaculoase.
Totuși, OpenLLM-Ro a realizat un prin pas în direcția construirii de LLM-uri capabile să poarte conversații naturale și în limba română și așteptăm cu nerăbdare următoarele modele AI!