Views
No views yet
TeenyTinyLlama-160m-IMDB) fine-tuned on the the IMDB dataset.torch.optim.AdamW (learning_rate = 4e-5, epsilon = 1e-8)transformers.pipeline:1from transformers import pipeline
2
3text = "Esqueceram de mim 2 é um dos melhores filmes de natal de todos os tempos."
4
5classifier = pipeline("text-classification", model="nicholasKluge/TeenyTinyLlama-160m-IMDB")
6classifier(text)
7
8# >>> [{'label': 'POSITIVE', 'score': 0.9971244931221008}]1# IMDB
2! pip install transformers datasets evaluate accelerate -q
3
4import evaluate
5import numpy as np
6from datasets import load_dataset
7from transformers import AutoTokenizer, DataCollatorWithPadding
8from transformers import AutoModelForSequenceClassification, TrainingArguments, Trainer
9
10# Load the task
11dataset = load_dataset("christykoh/imdb_pt")
12
13# Create a `ModelForSequenceClassification`
14model = AutoModelForSequenceClassification.from_pretrained(
15 "nicholasKluge/TeenyTinyLlama-160m",
16 num_labels=2,
17 id2label={0: "NEGATIVE", 1: "POSITIVE"},
18 label2id={"NEGATIVE": 0, "POSITIVE": 1}
19)
20
21tokenizer = AutoTokenizer.from_pretrained("nicholasKluge/TeenyTinyLlama-160m")
22
23# Preprocess the dataset
24def preprocess_function(examples):
25 return tokenizer(examples["text"], truncation=True, max_length=256)
26
27dataset_tokenized = dataset.map(preprocess_function, batched=True)
28
29# Create a simple data collactor
30data_collator = DataCollatorWithPadding(tokenizer=tokenizer)
31
32# Use accuracy as an evaluation metric
33accuracy = evaluate.load("accuracy")
34
35# Function to compute accuracy
36def compute_metrics(eval_pred):
37 predictions, labels = eval_pred
38 predictions = np.argmax(predictions, axis=1)
39 return accuracy.compute(predictions=predictions, references=labels)
40
41# Define training arguments
42training_args = TrainingArguments(
43 output_dir="checkpoints",
44 learning_rate=4e-5,
45 per_device_train_batch_size=16,
46 per_device_eval_batch_size=16,
47 num_train_epochs=3,
48 weight_decay=0.01,
49 evaluation_strategy="epoch",
50 save_strategy="epoch",
51 load_best_model_at_end=True,
52 push_to_hub=True,
53 hub_token="your_token_here",
54 hub_model_id="username/model-name-imdb"
55)
56
57# Define the Trainer
58trainer = Trainer(
59 model=model,
60 args=training_args,
61 train_dataset=dataset_tokenized["train"],
62 eval_dataset=dataset_tokenized["test"],
63 tokenizer=tokenizer,
64 data_collator=data_collator,
65 compute_metrics=compute_metrics,
66)
67
68# Train!
69trainer.train()| Models | IMDB | FaQuAD-NLI | HateBr | Assin2 | AgNews | Average |
|---|---|---|---|---|---|---|
| BERTimbau-large | 93.58 | 92.26 | 91.57 | 88.97 | 94.11 | 92.10 |
| BERTimbau-small | 92.22 | 93.07 | 91.28 | 87.45 | 94.19 | 91.64 |
| TTL-460m | 91.64 | 91.18 | 92.28 | 86.43 | 94.42 | 91.19 |
| TTL-160m | 91.14 | 90.00 | 90.71 | 85.78 | 94.05 | 90.34 |
1@misc{correa24ttllama,
2 title = {TeenyTinyLlama: open-source tiny language models trained in Brazilian Portuguese},
3 author = {Corr{\^e}a, Nicholas Kluge and Falk, Sophia and Fatimah, Shiza and Sen, Aniket and De Oliveira, Nythamar},
4 journal={arXiv preprint arXiv:2401.16640},
5 year={2024}
6}
7
8@misc{correa24ttllama,
9 doi = {10.1016/j.mlwa.2024.100558},
10 url = {https://www.sciencedirect.com/science/article/pii/S2666827024000343},
11 title = {TeenyTinyLlama: open-source tiny language models trained in Brazilian Portuguese},
12 author = {Corr{\^e}a, Nicholas Kluge and Falk, Sophia and Fatimah, Shiza and Sen, Aniket and De Oliveira, Nythamar},
13 journal={Machine Learning With Applications},
14 publisher = {Springer},
15 year={2024}
16}