Metoda model.generate() & TextStreamer în Hugging Face Hub & Transformers

Execută bucla autoregresivă de generare a răspunsului, oferind control fin asupra strategiei de decodare (Greedy, Sampling, Beam Search) și afișare în timp real.

Sintaxă & invocare Python
from transformers import TextStreamer

streamer = TextStreamer(tokenizer, skip_prompt=True)
output_ids = model.generate(
    **inputs,
    max_new_tokens=512,
    do_sample=True,
    temperature=0.7,
    top_p=0.9,
    streamer=streamer
)

Descriere & Utilizare

După ce ai încărcat tokenizatorul și modelul, metoda model.generate() este cea care produce efectiv textul nou. Parametrul esențial pe care trebuie să îl setezi întotdeauna este max_new_tokens (câți tokeni noi are voie să scrie modelul peste lungimea promptului).

Strategia de alegere a cuvintelor este controlată de do_sample:

– Dacă do_sample=False (Greedy Decoding), modelul alege mecanic doar cuvântul cu probabilitatea maximă (determinist, ideal pentru extragere de date sau matematică).

– Dacă do_sample=True, activezi eșantionarea creativă controlată de temperature (ex: 0.7), top_p (ex: 0.9) și repetition_penalty (ex: 1.1 pentru a preveni repetarea acelorași fraze).

Atașând un obiect TextStreamer(tokenizer), vezi cuvintele curgând în consolă pe măsură ce sunt calculate.

Cum să o reții ușor

💡 Ca reglajele de cutie de viteze ale mașinii: poți merge pe șine fixe fără nicio abatere (`do_sample=False`) sau poți activa modul dinamic (`do_sample=True` cu `temperature`), ajustând cât de spontan să vireze conversația.

Opțiuni și parametri tehnici

  • Rulează pasul de Prefill pe tensorul input_ids și populează memoria KV Cache.
  • La fiecare pas de decodare, calculează distribuția de probabilitate peste vocabular, aplică filtrele (Temperature, Top-P, Top-K) și adaugă noul token la secvență.
  • Se oprește când întâlnește tokenul eos_token_id sau când atinge max_new_tokens.

Exemple practice și cazuri de utilizare

  • Extragere doar a tokenilor noi generați (fără promptul de intrare): generated_ids = output_ids[0][inputs['input_ids'].shape[-1]:]
    raspuns = tokenizer.decode(generated_ids, skip_special_tokens=True)
  • Generare deterministă reproductibilă: model.generate(**inputs, max_new_tokens=200, do_sample=False)

Sfaturi de configurare & capcane

Folosește întotdeauna max_new_tokens în locul vechiului parametru max_length. max_length include și lungimea promptului tău, ceea ce duce la tăierea bruscă a răspunsului când trimiți un prompt lung!

Comenzi și ghiduri înrudite