Clasa AutoTokenizer & apply_chat_template() în Hugging Face Hub & Transformers

Traduce textul uman în secvențe de numere întregi (input_ids) înțelese de modelul neuronal și formatează conversațiile conform șablonului oficial de chat.

Sintaxă & invocare Python
from transformers import AutoTokenizer

tokenizer = AutoTokenizer.from_pretrained('meta-llama/Llama-3.1-8B-Instruct')
prompt = tokenizer.apply_chat_template(mesaje, tokenize=False, add_generation_prompt=True)
inputs = tokenizer(prompt, return_tensors='pt').to('cuda')

Descriere & Utilizare

Rețelele neuronale nu pot citi litere sau cuvinte; ele operează exclusiv cu matrici de numere. Clasa AutoTokenizer.from_pretrained() inspectează fișierul tokenizer_config.json al modelului de pe Hub și încarcă automat algoritmul exact de sub-cuvinte (BPE, WordPiece sau SentencePiece) cu care a fost antrenat acel model.

La apelare, returnează un dicționar ce conține două elemente cheie: input_ids (ID-urile numerice ale fiecărui token din vocabular) și attention_mask (o mască de 1 și 0 care îi indică modelului ce tokeni sunt reali și ce tokeni sunt doar umplutură de aliniere / padding).

Pentru modelele conversaționale moderne (Instruct / Chat), metoda .apply_chat_template() este indispensabilă: adaugă automat tokenii speciali de control (precum <|begin_of_text|>, <|start_header_id|>user sau <|im_start|>) fără să îi scrii manual.

Cum să o reții ușor

💡 Ca un codificator Morse specializat: fiecare familie de modele are propriul său alfabet numeric și propriile semnale de ‘Început de transmisie’ și ‘Recepție’, iar AutoTokenizer încarcă automat dicționarul corect.

Opțiuni și parametri tehnici

  • Împarte șirul de caractere în tokeni și îi mapează la indecșii din vocabular (ex: 128.256 tokeni pentru Llama 3).
  • Cu return_tensors='pt', împachetează listele direct în tensori PyTorch.
  • Metoda inversă tokenizer.decode(output_ids, skip_special_tokens=True) transformă numerele generate de model înapoi în text curat.

Exemple practice și cazuri de utilizare

  • Verificare în câte bucăți se împarte un cuvânt românesc: print(tokenizer.tokenize('inteligență artificială'))
  • Formatare chat standard: mesaje = [{'role': 'system', 'content': 'Ești util.'}, {'role': 'user', 'content': 'Salut!'}]
    text_formatat = tokenizer.apply_chat_template(mesaje, tokenize=False, add_generation_prompt=True)

Sfaturi de configurare & capcane

Multe modele open-source (precum Llama) nu au definit implicit un token de aliniere (pad_token). Dacă faci antrenare sau procesare în batch, setează tokenizer.pad_token = tokenizer.eos_token pentru a evita erorile.

Comenzi și ghiduri înrudite