Préparer l'ajustement fin

Introduction aux LLM avec Python

Jasmin Ludolf

Senior Data Science Content Developer, DataCamp

Pipelines et classes Auto

Pipelines : pipeline()

  • Simplifie les tâches
  • Sélection automatique du modèle et du tokenizer
  • Contrôle limité

Pipelines de Hugging Face Transformers

Classes Auto (AutoModel class)

  • Personnalisation
  • Réglages manuels
  • Prend en charge l'ajustement fin

Classe AutoModel de Hugging Face Transformers affichant des options de personnalisation

Introduction aux LLM avec Python

Cycle de vie d'un LLM

Cycle de vie des LLM

Préapprentissage

  • Données générales
  • Apprentissage de motifs généraux
Introduction aux LLM avec Python

Cycle de vie d'un LLM

Cycle de vie des LLM

Préapprentissage                                                             Ajustement fin

  • Données générales                                                          Domaine ciblé
  • Motifs généraux appris                                       Tâches spécialisées
Introduction aux LLM avec Python

Charger un ensemble de données pour l'ajustement fin

from datasets import load_dataset


train_data = load_dataset("imdb", split="train")
train_data = data.shard(num_shards=4, index=0)
test_data = load_dataset("imdb", split="test")
test_data = data.shard(num_shards=4, index=0)
  • load_dataset() : charge un ensemble de données depuis le Hub Hugging Face
    • imdb : classification d'avis
Introduction aux LLM avec Python

Classes Auto

from transformers import AutoModel, AutoTokenizer

from transformers import AutoModelForSequenceClassification
model = AutoModelForSequenceClassification.from_pretrained("bert-base-uncased") tokenizer = AutoTokenizer.from_pretrained("bert-base-uncased")
Introduction aux LLM avec Python

Tokenisation

from transformers import AutoTokenizer, AutoModelForSequenceClassification
from datasets import load_dataset

train_data = load_dataset("imdb", split="train")
train_data = data.shard(num_shards=4, index=0)
test_data = load_dataset("imdb", split="test")
test_data = data.shard(num_shards=4, index=0)

model = AutoModelForSequenceClassification.from_pretrained("bert-base-uncased")
tokenizer = AutoTokenizer.from_pretrained("bert-base-uncased")


# Tokenize the data tokenized_training_data = tokenizer(train_data["text"], return_tensors="pt", padding=True, truncation=True, max_length=64) tokenized_test_data = tokenizer(test_data["text"], return_tensors="pt", padding=True, truncation=True, max_length=64)
Introduction aux LLM avec Python

Résultat de la tokenisation

print(tokenized_training_data)
{'input_ids': tensor([[  101,  1045, 12524,  1045,  2572,  8025,  1011,  3756,  
2013,  2026, 2678,  3573,  2138,  1997,  2035,  1996,  6704,  2008,  5129,  2009, 
2043,  2009, 2001,  2034,  2207,  1999,  3476,  1012,  1045,  2036, ...
Introduction aux LLM avec Python

Tokeniser ligne par ligne

def tokenize_function(text_data):
    return tokenizer(text_data["text"], return_tensors="pt", padding=True, truncation=True, max_length=64)

# Tokenize in batches
tokenized_in_batches = train_data.map(tokenize_function, batched=True)

# Tokenize row by row tokenized_by_row = train_data.map(tokenize_function, batched=False)
Dataset({
    features: ['text', 'label', 'input_ids', 'token_type_ids', 'attention_mask'],
    num_rows: 1563
})
Introduction aux LLM avec Python

Tokenisation en sous-mots

  • Fréquent dans les tokenizers modernes
  • Mots découpés en sous-parties porteuses de sens

 

Unbelievably

Introduction aux LLM avec Python

Tokenisation en sous-mots

  • Fréquent dans les tokenizers modernes
  • Mots découpés en sous-parties porteuses de sens

 

« Unbelievably » tokenisé en un, believ, ably.

Introduction aux LLM avec Python

Passons à la pratique !

Introduction aux LLM avec Python

Preparing Video For Download...