Tutorial: Cum antrenezi un model open (Llama) cu un dataset Mythos (Claude)

de | iunie 23, 2026

Am ales pentru a acest demers Platforma Nebius si Huggingface pentru inferenta.Platforma ofera un trial de 30 zile care-ti permite sa faci fine tunning pe un adaptor LoRA, in mod gratuit.

Antrenarea unui model AI

Din meniul din stanga Post-training se creeaza un Job de fine tunning care in esenta iti permite sa:

  • alegi un base model (am ales Meta Llama meta-llama/Llama-3.2-3B-Instruct )

In ultima etapa a configurarii Job-ului de fine tunning vei seta o integrare cu Huggingface care iti va permite sa upload-ezi rezultatul jobulu de fine-tunning direct pe Huggingface in sectiunea Modele.

De subliniat, rezultatul acestui Job va fi un adaptor PEFT/LoRA care va trebui aplicat peste un model de bază ( in cazul nostru Llamaa-3.2-3B-Instruct) ca sa functioneze. Deci ce se va incarca in Huggingface va fi un adaptor PEFT/LoRA.

Acest adaptor PEFT/LoRA va contine urmatoarele fisiere:

adapter_config.json
adapter_model.safetensors
chat_template.jinja
checkpoint.meta
tokenizer.json
tokenizer_config.json

Daca aplicam acest adaptor PEFT/LoRA pentru base modelul nostru Llama-3.2-3B-Instruct obtinem un model intreg (format GGUF) care se poate folosi direct.

Inferenta pe Huggingface cu Gradio

Mai departe vom face setarile pe Huggingface necesare pentru a putea utliza acest adaptor PEFT/LoRA peste modelul de baza, direct pe Huggingface.

In primul rand configuram fisierul README.md, setand urmatoarele:

  • base_model: meta-llama/Llama-3.2-3B-Instruct
  • pipeline_tag: text-generation
  • datasets: WithinUsAI/claude_mythos_distilled_25k
  • library_name: peft

Apoi, ne asiguram ca in fisierul adapter_config.json, avem la pozitia „base_model_name_or_path”: „meta-llama/Llama-3.2-3B-Instruct”.

Pentru a putea opera modelul nostru din Huggingface trebuie sa creem un Space ( alegeti Gradio dintre cele 3 optiuni).

In meniul Files creati un fisier numit Requirements.txt cu urmatorul continut:

gradio
transformers
torch
peft
accelerate
sentencepiece
protobuf

Editati continutul app.py pentru a utliza adaptorul nostru PEFT cu modelul de baza Llama-3.2-3B-Instruct, de data aceasta cel hostat de Huggingface. Continutul app.py va trebui sa arate astfel:

import gradio as gr
import torch
from transformers import AutoTokenizer, AutoModelForCausalLM
from peft import PeftModel

ADAPTER_ID = "doreloprisan/Llama-3.2-3B-Instruct-Mythos-distil-Mersi-ai"
BASE_MODEL_ID = "meta-llama/Llama-3.2-3B-Instruct"

tokenizer = AutoTokenizer.from_pretrained(ADAPTER_ID)

base_model = AutoModelForCausalLM.from_pretrained(
    BASE_MODEL_ID,
    torch_dtype=torch.float16 if torch.cuda.is_available() else torch.float32,
    device_map="auto"
)

model = PeftModel.from_pretrained(base_model, ADAPTER_ID)
model.eval()

def chat(message, history):
    messages = []

    for user_msg, bot_msg in history:
        messages.append({"role": "user", "content": user_msg})
        messages.append({"role": "assistant", "content": bot_msg})

    messages.append({"role": "user", "content": message})

    prompt = tokenizer.apply_chat_template(
        messages,
        tokenize=False,
        add_generation_prompt=True
    )

    inputs = tokenizer(prompt, return_tensors="pt").to(model.device)

    with torch.no_grad():
        outputs = model.generate(
            **inputs,
            max_new_tokens=300,
            temperature=0.7,
            top_p=0.9,
            do_sample=True,
            repetition_penalty=1.1,
            pad_token_id=tokenizer.eos_token_id
        )

    response = tokenizer.decode(
        outputs[0][inputs["input_ids"].shape[-1]:],
        skip_special_tokens=True
    )

    return response.strip()

demo = gr.ChatInterface(
    fn=chat,
    title="Llama-3.2-3B-Instruct Mythos distil Mersi AI",
    description="Chat demo pentru adaptorul PEFT/LoRA încărcat pe Hugging Face."
)

demo.launch()

Restartati Space-ul si va trebui sa functioneze fara probleme.

Nota:

  • Este nevoie sa solicitati acces de la Meta pentru a utiliza modelul Llama
  • Este nevoie sa setati din Settings ale Space-ului creat un Secret numit HF_TOKEN pentru acces la modelul Meta

Alte articole relevante

Cum faci Merge la modelul de baza cu adaptorul PEFT

Poti folosi urmatorul script in Google Colab pentru a face Merge intre base model (Llama-3.2-3B-Instruct) si adaptorul PEFT facut cu Nebius Tokenfactory.

!hf auth login
!pip install --upgrade torchao
import torch
from transformers import AutoTokenizer, AutoModelForCausalLM
from peft import PeftModel

BASE_MODEL = "meta-llama/Llama-3.2-3B-Instruct"
ADAPTER = "doreloprisan/Llama-3.2-3B-Instruct-Mythos-distil-Mersi-ai"
MERGED_OUTPUT = "Llama-3.2-3B-Instruct-Mythos-distil-Mersi-ai-GGUF"

tokenizer = AutoTokenizer.from_pretrained(BASE_MODEL, trust_remote_code=True)

base_model = AutoModelForCausalLM.from_pretrained(
    BASE_MODEL,
    torch_dtype=torch.bfloat16,
    device_map="auto",
    trust_remote_code=True,
)

model = PeftModel.from_pretrained(base_model, ADAPTER)
model = model.merge_and_unload()

model.save_pretrained(MERGED_OUTPUT, safe_serialization=True)
tokenizer.save_pretrained(MERGED_OUTPUT)

In final incarcam modelul (merged) inapoi in Huggingface

!hf upload doreloprisan/Llama-3.2-3B-Instruct-Mythos-distil-Mersi-ai-GGUF

Urmatorul pas este convertirea modelului Merged in format GGUF pentru a fi utilizat local.

Convertirea unui model in format GGUF pentru utilizare locala

Pentru a realiza aceasta conversie Huggingface recomanda Llama.cpp

Primul pas este instalarea Llama.cpp

git clone https://github.com/ggml-org/llama.cpp
cd llama.cpp
pip install -r requirements.txt
cmake -B build
cmake --build build --config Release -j

Ulterior trecem la convertirea modelului. Din interiorul folderului care contine llama.cpp rulam urmatoarea comanda:

python convert_hf_to_gguf.py ../Llama-3.2-3B-Instruct-Mythos-distil-Mersi-ai-GGUF \
  --outfile ../Llama-3.2-3B-Instruct-Mythos-distil-Mersi-ai-f16.gguf \
  --outtype f16

sau daca nu aveti calculator prea puternic:

python convert_hf_to_gguf.py ../Llama-3.2-3B-Instruct-Mythos-distil-Mersi-ai-GGUF \
–outfile ../Llama-3.2-3B-Instruct-Mythos-distil-Mersi-ai-bf16.gguf \
–outtype bf16

Astfel vom obine un fisier GGUF pe care -l incarcam in Huggingface.

Quantizeaza fisierul GGUF intr-un format mai mic

Formate recomandate:

Q4_K_M = cea mai buna alagere
Q5_K_M = calitate mai buna, mai mult RAM/VRAM
Q8_0 = calitatea cea mai buna, necesar de memeorie mult mai mare

Exemplu de comanda pentru Quantizare Q4_K_M

./build/bin/llama-quantize \
  ../Llama-3.2-3B-Instruct-Mythos-distil-Mersi-ai-f16.gguf \
  ../Llama-3.2-3B-Instruct-Mythos-distil-Mersi-ai-Q4_K_M.gguf \
  Q4_K_M

Upload to Huggingface

hf upload doreloprisan/Llama-3.2-3B-Instruct-Mythos-distil-Mersi-ai-GGUF \
Llama-3.2-3B-Instruct-Mythos-distil-Mersi-ai-Q4_K_M.gguf

Testeaza modelul in format GGUF in llama.cpp si Ollama

./build/bin/llama-cli \
-m ../Llama-3.2-3B-Instruct-Mythos-distil-Mersi-ai-Q4_K_M.gguf \
-p „Scrie un cod de functie Python care verifica daca un numar este prim.” \
-n 300

FROM ./Llama-3.2-3B-Instruct-Mythos-distil-Mersi-ai-Q4_K_M.gguf

PARAMETER temperature 0.3
PARAMETER top_p 0.9
PARAMETER num_ctx 8192

ollama create modelul-coder -f Modelfile
ollama run modelul-coder