Instructions to use codinglabsong/roberta-base-with-tweet-eval-emoji with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- PEFT
How to use codinglabsong/roberta-base-with-tweet-eval-emoji with PEFT:
Task type is invalid.
- Notebooks
- Google Colab
- Kaggle
| library_name: peft | |
| license: mit | |
| base_model: FacebookAI/roberta-base | |
| tags: | |
| - generated_from_trainer | |
| metrics: | |
| - accuracy | |
| - f1 (macro) | |
| - top3 accuracy | |
| model-index: | |
| - name: roberta-base-with-tweet-eval-emoji-full | |
| results: [] | |
| # Model description | |
| This model is a fine-tuned version of [roberta-base](https://huggingface.co/roberta-base) on the tweet_eval/emoji dataset. | |
| It achieves the following results on the evaluation set: | |
| - Loss: 1.9516 | |
| - Accuracy: 0.4252 | |
| - F1: 0.3314 | |
| - Top3 Accuracy: 0.6504 | |
| ## Example of classification | |
| ```python | |
| import torch | |
| from transformers import AutoTokenizer, AutoModelForSequenceClassification, pipeline | |
| from peft import PeftModel | |
| # Specify the same model ID pushed or trained locally | |
| MODEL_ID = "roberta-base-tweet-emoji-lora" | |
| # Load tokenizer + model | |
| device = 0 if torch.cuda.is_available() else -1 | |
| tok = AutoTokenizer.from_pretrained(MODEL_ID) | |
| base_model = AutoModelForSequenceClassification.from_pretrained( | |
| "FacebookAI/roberta-base", | |
| num_labels=20, | |
| ignore_mismatched_sizes=True, | |
| ) | |
| model = PeftModel.from_pretrained(base_model, MODEL_ID).eval() | |
| pipe = pipeline( | |
| task="text-classification", | |
| model=model, | |
| tokenizer=tok, | |
| return_all_scores=True, | |
| function_to_apply="softmax", | |
| device=device, | |
| ) | |
| # Map label IDs to emojis | |
| id2label = { | |
| 0: "β€", | |
| 1: "π", | |
| 2: "π", | |
| 3: "π", | |
| 4: "π₯", | |
| 5: "π", | |
| 6: "π", | |
| 7: "β¨", | |
| 8: "π", | |
| 9: "π", | |
| 10: "π·", | |
| 11: "πΊπΈ", | |
| 12: "β", | |
| 13: "π", | |
| 14: "π", | |
| 15: "π―", | |
| 16: "π", | |
| 17: "π", | |
| 18: "πΈ", | |
| 19: "π", | |
| } | |
| def predict_emojis(text, top_k=2): | |
| """ | |
| Predict top k emojis for the given text. | |
| Args: | |
| text (str): Input string. | |
| k (int): Number of top emojis to return. | |
| Returns: | |
| str: Space-separated top k emojis. | |
| """ | |
| probs = pipe(text)[0] | |
| top = sorted(probs, key=lambda x: x["score"], reverse=True)[:top_k] | |
| return " ".join(id2label[int(d["label"].split("_")[-1])] for d in top) | |
| print(predict_emojis("Sunny days!")) | |
| ``` | |
| Output: | |
| ``` | |
| π β | |
| ``` | |
| ### Training hyperparameters | |
| The following hyperparameters were used during training: | |
| - learning_rate: 0.0005 | |
| - train_batch_size: 128 | |
| - eval_batch_size: 256 | |
| - seed: 42 | |
| - optimizer: Use OptimizerNames.ADAMW_TORCH with betas=(0.9,0.999) and epsilon=1e-08 and optimizer_args=No additional optimizer arguments | |
| - lr_scheduler_type: linear | |
| - lr_scheduler_warmup_ratio: 0.05 | |
| - num_epochs: 4 | |
| - mixed_precision_training: Native AMP | |
| - label_smoothing_factor: 0.1 | |
| ### Training results | |
| | Training Loss | Epoch | Step | Validation Loss | Accuracy | F1 (Macro) | Top3 Accuracy | | |
| |:-------------:|:-----:|:----:|:---------------:|:--------:|:------:|:-------------:| | |
| | 2.1291 | 1.0 | 352 | 2.4306 | 0.219 | 0.2126 | 0.405 | | |
| | 2.1083 | 2.0 | 704 | 2.3812 | 0.2356 | 0.2411 | 0.43 | | |
| | 2.0068 | 3.0 | 1056 | 2.3611 | 0.2456 | 0.2492 | 0.4442 | | |
| | 1.9326 | 4.0 | 1408 | 2.3694 | 0.2524 | 0.2536 | 0.4472 | | |
| ### Framework versions | |
| - PEFT 0.14.0 | |
| - Transformers 4.51.3 | |
| - Pytorch 2.6.0+cu124 | |
| - Datasets 3.6.0 | |
| - Tokenizers 0.21.1 |