Llama-3.1-Supernova-Lite Llama-3.1-Supernova-Lite

Llama-3.1 Supernova-Lite

ArceeAi a lansat modelul Llama-3.1 Supernova-Lite de 8 miliarde de parametri, care are la bază arhitectura Lllama 3.1 instruct.

1. Introducere

Llama-3.1 Supernova-Lite este o versiune distilată a modelul de 405 miliarde de parametri care păstreză performanța ridicată, oferind totodată un timp de răspuns scăzut dar și capabilități stabile de a urma instrucțiunile utilizatorilor.

Modelul a fost antrenat pe un set de date de 500 milioane de tokeni. Mărimea inițială a datelor de antrenare depășea 2.9 Petabytes, dar datorită capacității hardware limitată acestea au fost reduse la aproximativ 50 GB.

Antrenarea a fost făcută pe un cluster de 32 de plăci grafice H100 timp de 5 zile. Setul de date de antrenare conține peste 76 000 de elemente matematice și de codare obținute din surse publice.

Modelul este dedicat folosirii în cadrul organizațiilor care doresc costuri reduse și totodată calitate înaltă atunci când apelează la AI generativ.

Llama-3.1 Supernova-Lite este disponibil gratuit pe platforma HuggingFace și are o dimensiune de aproximativ 13 GB.

Testele de performanță plasează modelul Llama-3.1-Supernova 70B în fața unor modele mult mai cunoscute:

2. Cum putem utiliza Llama-3.1 Supernova-Lite?

Llama-3.1 Supernova-Lite nu a apărut încă în varianta Ollama, dar poate fi folosit prin inferenta locală sau prin LM Studio.

Modelul AI poate fi descărcat de pe HuggingFace în mod gratuit. Fiind vorba de o mărime de 13 GB, recomand folosirea unei plăci grafice cu o mărime adecvată.

În acest articol am utilizat o placă NVIDIA RTX A5000 cu 24 GB VRAM.

Un exemplu de cod python este următorul:

from transformers import AutoTokenizer, AutoModelForCausalLM

# Load the tokenizer and model
tokenizer = AutoTokenizer.from_pretrained("arcee-ai/Llama-3.1-SuperNova-Lite")
model = AutoModelForCausalLM.from_pretrained("arcee-ai/Llama-3.1-SuperNova-Lite")

# Define the role
role = "You are a helpful assistant."

# Encode the input
input_ids = tokenizer.encode(role, return_tensors="pt")

# Generate a response
output = model.generate(input_ids, max_length=100, num_return_sequences=1)

# Decode the output
response = tokenizer.decode(output[0], skip_special_tokens=True)

print(response)

3. Testare Llama-3.1 Supernova-Lite

În continuare vom verifica capacitatea generativă a modelului în diferite situații, precum creativitate, analiză matematică sau scriere de cod.

3.1 Analiză creativitate

Pentru început am pus modelul să genereze o poveste în stil zen despre gândurile negative:

You are a helpful assistant. Write a short zen story with the theme of not to keep bad thoughts for long time

Pentru acest prompt am setat ca modelul să folosească până în 2048 de tokeni.

Test creativitate Llama-3.1-Supernova-Lite
Test creativitate Llama-3.1 Supernova-Lite

Modelul a răspuns cu următorul text:

A young monk, Kaito, sat in meditation with his master, Haku. As they sat, a dark cloud of anger and resentment formed in Kaito's mind, fueled by a recent argument with a fellow monk.

Haku sensed Kaito's turmoil and gently asked, "What troubles you, young one?"

Kaito shared his story, and Haku listened attentively. When Kaito finished, Haku picked up a small, delicate leaf that had fallen from a nearby tree and began to cradle it in his palm.

"This leaf," Haku said, "holds the essence of the tree, but it does not cling to it. It falls, and in falling, it becomes free. So too must we let go of the thoughts that weigh us down."

Kaito watched as Haku gently released the leaf, which drifted lazily to the ground. Haku then turned to Kaito and said, "Do not keep the darkness of anger and resentment within you. Like the leaf, let it fall, and in its release, find freedom."

Kaito took Haku's words to heart and, with a newfound understanding, let go of his negative thoughts. As he did, the cloud of anger dissipated

3.2. Analiză rezolvare probleme matematice

În articolele anterioare am discutat despre modele specializate pe calcule matematice precum Qwen2-Math, dar trebuie să ținem cont că modelul pe care îl testăm acum este unul generalist și așteptările pe care le avem nu pot fi foarte mari.

Prima problemă matematică este următoarea:

Într-o livađă s-au plantat 55 de caiși și 25 de meri. Știind că s-au plantat câte 10 pomi pe fiecare rând, calculeaza câte rănduri de pomi s-au plantat în livadă.
Calculează, verifică-te și alege răspunsul corect.

Răspunsul dat de Llama-3.1 Supernova-Lite este:

Pentru a calcula numarul de randuri de pomi, putem  împărți numarul total de pomi (55 caisi + 25 meri = 80 pomi) la numarul de pomi pe rand (10 pomi).

Numărul de randuri de pomi = Numărul total de pomi / Numărul de pomi pe rand

= 80 pomi / 10 pomi/rand
= 8 randuri

Rationamentul este următorul: dacă s-au plantat 10 pomi pe fiecare rand, atunci pentru a determina numarul de randuri, trebuie să împărțim numarul total de pomi la numarul de pomi pe rand. Astfel, putem determina cu exactitate numarul de randuri de pomi care au fost plantați în livada.

A doua problemă matematică este următoarea:

Într-o sală de cinema sunt 33 de rânduri a câte 40 de scaune. La film au venit 185 de copii, fiecare copil fiind însoțit de doi adulți. Află câte scaune au rămas neocupate.
Calculează și alege rezultatul corect.

Răspunsul este:

Pentru a afla numarul total de scaune din sala de cinema, trebuie sa calculam numarul total de scaune din fiecare rand si apoi sa il multipliem cu numarul de randuri.

Numarul total de scaune din fiecare rand este de 40. 
Numarul de randuri este de 33.

Numarul total de scaune din sala de cinema este: 40 scaune/ rand * 33 de randuri = 1320 scaune.

La film au venit 185 de copii, fiecare fiind insotit de doi adulti. Deci, numarul total de adulti si copii este: 185 copii * 3 (2 adulti + 1 copil) = 555 persoane.

Numarul total de scaune ocupate este egal cu numarul total de persoane: 555 scaune.

Scaunele neocupate sunt: 1320 scaune - 555 scaune = 765 scaune.

3.3. Generare de cod

Modelul Llama-3.1 Supernova-Lite a fost antrenat și pentru generarea de cod și chiar dacă nu este un model de nișă precum Codestral, ar trebui să poată genera cod pentru probleme simple.

Prima problemă pe care i-am dat-o a fost:

Generează codul php care să calculeze și să afișeze toți anii bisecți din perioada 2024- 2048.

Codul generat a fost următorul:

Pentru a calcula și afița toți anii bisecți din perioada 2024-2048, putem folosi urm_torul cod PHP:

```php

<?php

$anulStart = 2024;
$anulSfarsit = 2048;
for ($an = $anulStart; $an <= $anulSfarsit; $an++) {
    if (($an % 4 == 0 && $an % 100!= 0) || $an % 400 == 0) {
        echo "$an este un an bisect.\n";
    }
}
?>
```
Acest cod folosește o condiție pentru a determina dacă un an este bisect sau nu. Condiția este urmîtoarea:
- Dacă anul este împărțit cu 4 fără a lăsa rest și nu este împărțit cu 100 fără a lăsa rest, atunci anul este bisect.

- Dacă anul este împărțit  cu 400 fără a lăsa rest, atunci anul este bisect.

Această condiție este valabilă pentru perioada 2024-2048 și poate fi folosită pentru a determina anii bisecți în orice perioadă.

A doua problemă de programare a fost:

scrie un cod python care citește textul continut in fisierul input.txt si apoi afiseaza cuvintele din text in ordine inversa
Pentru a rezolva problema, putem folosi următorul cod Python:

```python

def citeste_text_si_afiseaza_invers():
    try:
        # Deschidem fisierul input.txt în modul citire
        with open('input.txt', 'r') as fisier:
            # Citim continutul fisierului
            text = fisier.read()
            # Separăm textul în cuvinte
            cuvinte = text.split()
            # Afisăm cuvintele în ordine inversă
            for cuvant in reversed(cuvinte):
                print(cuvant)
    except FileNotFoundError:
        print("Fisierul input.txt nu a fost gasit.")

# Apelăm funcția
citeste_text_si_afiseaza_invers()
```
Acest cod deschide fisierul `input.txt`, citeste continutul, il separa în cuvinte și apoi afiseaza cuvintele în ordine inversă. Daca fisierul nu exista, afiseaza un mesaj de eroare.

4. Concluzii

Llama-3.1 Supernova-Lite a trecut cu succes toate testele noastre. Chiar dacă este un model conversațional generalist a dat răspunsuri corecte și la problemele matematice și la generarea de cod, chiar dacă complexitatea acestora nu a fost prea mare.

Dar a reușit să ne surprindă la creativitate: a generat o poveste conform instrucțiunilor date, o poveste construită pe tema propusă, complet cursivă și ușor de înteles.

Llama-3.1 Supernova-Lite a dat răspunsuri corecte și în limba română în ciuda faptului că aceasta nu este o limbă principală din setul folosit pentru antrenare, iar cuvintele au fost formulate corect, fără greșeli.

În concluzie, Llama-3.1 Supernova-Lite este un model generativ extrem de competiv, cu un cost de utilizare mic.

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *