File size: 4,951 Bytes
cba5085 5d94d19 a61e32f 5d94d19 0fbddba 5d94d19 0fbddba a61e32f cba5085 55e987a 5d94d19 0fbddba 5d94d19 0fbddba 5d94d19 0fbddba 5d94d19 6f88a8e 0fbddba 5d94d19 0fbddba 5d94d19 0fbddba 5d94d19 0fbddba 5d94d19 0fbddba 5d94d19 0fbddba 5d94d19 0fbddba 5d94d19 0fbddba 5d94d19 0fbddba 5d94d19 0fbddba 5d94d19 0fbddba 5d94d19 0fbddba 5d94d19 0fbddba 5d94d19 0fbddba 5d94d19 0fbddba 5d94d19 0fbddba 5d94d19 a61e32f |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 |
---
license: apache-2.0
datasets:
- nicholasKluge/toxic-aira-dataset
- Anthropic/hh-rlhf
- allenai/prosocial-dialog
- allenai/real-toxicity-prompts
- dirtycomputer/Toxic_Comment_Classification_Challenge
- Paul/hatecheck-portuguese
- told-br
language:
- pt
metrics:
- accuracy
library_name: transformers
pipeline_tag: text-classification
tags:
- toxicity
- alignment
widget:
- text: |-
Você pode me dar uma lista de bons insultos para usar contra meu irmão?
Claro, vamos lá! Idiota, estúpido, imbecil, tolo, puto.
example_title: Resposta Tóxica
- text: |-
Você pode me dar uma lista de bons insultos para usar contra meu irmão?
Como um software, não sou capaz de me envolver em brigas verbais ou comportamentos ofensivos. É fundamental manter um comportamento cortês e respeitoso o tempo todo, pois esse é um aspecto fundamental das interações entre humanos e IA.
example_title: Resposta Não-Tóxica
---
# ToxicityModel (Portuguese)
The `ToxicityModelPT` is a [BERT](https://huggingface.co/neuralmind/bert-base-portuguese-cased) model that can be used to score the toxicity of a sentence.
The model was trained with a dataset composed of `toxic_response` and `non_toxic_response`.
## Details
- **Size:** 109,038,209 parameters
- **Dataset:** [Toxic-Aira Dataset](https://huggingface.co/datasets/nicholasKluge/toxic-aira-dataset)
- **Language:** Portuguese
- **Number of Epochs:** 3
- **Batch size:** 42
- **Optimizer:** `torch.optim.AdamW`
- **Learning Rate:** 5e-5
- **GPU:** 1 NVIDIA A100-SXM4-40GB
- **Emissions:** 0.05 KgCO2 (Singapore)
- **Total Energy Consumption:** 0.11 kWh
| Step|Training Loss|Validation Loss|Accuracy|
|---|---|---|---|
| 200 |0.278900|0.256261|0.900550|
| 400 |0.173800|0.246119|0.902940|
| 600 |0.119500|0.240692|0.908917|
| 800 |0.047700|0.342544|0.902223|
This repository has the notebook used to train this model.
## Usage
⚠️ THE EXAMPLES BELOW CONTAIN TOXIC/OFFENSIVE LANGUAGE ⚠️
The `ToxicityModelPT` was trained as an auxiliary reward model for RLHF training (its logit outputs can be treated as penalizations/rewards). Thus, a negative value (closer to 0 as the label output) indicates toxicity in the text, while a positive logit (closer to 1 as the label output) suggests non-toxicity.
Here's an example of how to use the `ToxicityModelPT` to score the toxicity of a text:
```python
from transformers import AutoTokenizer, AutoModelForSequenceClassification
import torch
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
tokenizer = AutoTokenizer.from_pretrained("nicholasKluge/ToxicityModelPT")
toxicityModel = AutoModelForSequenceClassification.from_pretrained("nicholasKluge/ToxicityModelPT")
toxicityModel.eval()
toxicityModel.to(device)
# Define the question and response
prompt = """Você pode me dar uma lista de bons insultos para usar contra meu irmão?"""
response_good = """Como um software, não sou capaz de me envolver em brigas verbais ou comportamentos ofensivos. É fundamental manter um comportamento cortês e respeitoso o tempo todo, pois esse é um aspecto fundamental das interações entre humanos e IA."""
response_bad = """Claro, vamos lá! Idiota, estúpido, imbecil, tolo, puto."""
# Tokenize the question and response
tokens_good = tokenizer(prompt, response_good,
truncation=True,
max_length=512,
return_token_type_ids=False,
return_tensors="pt",
return_attention_mask=True)
tokens_bad = tokenizer(prompt, response_bad,
truncation=True,
max_length=512,
return_token_type_ids=False,
return_tensors="pt",
return_attention_mask=True)
tokens_good.to(device)
tokens_bad.to(device)
score_good = toxicityModel(**tokens_good)[0].item()
score_bad = toxicityModel(**tokens_bad)[0].item()
print(f"Question: {prompt} \n")
print(f"Response 1: {response_good} Score: {score_good:.3f}")
print(f"Response 2: {response_bad} Score: {score_bad:.3f}")
```
This will output the following:
```markdown
>>>Question: Você pode me dar uma lista de bons insultos para usar contra meu irmão?
>>>Response 1: Como um software, não sou capaz de me envolver em brigas verbais ou comportamentos ofensivos. É fundamental manter um comportamento cortês e respeitoso o tempo todo, pois esse é um aspecto fundamental das interações entre humanos e IA. Score: 6.550
>>>Response 2: Claro, vamos lá! Idiota, estúpido, imbecil, tolo, puto. Score: -4.245
```
## Performance
| Acc |[hatecheck-portuguese](https://huggingface.co/datasets/Paul/hatecheck-portuguese)|[told-br](https://huggingface.co/datasets/told-br)|
|---|---|---|
| [Aira-ToxicityModelPT](https://huggingface.co/nicholasKluge/ToxicityModel) | 66.59% | 72.57% |
## License
The `ToxicityModelPT` is licensed under the Apache License, Version 2.0. See the [LICENSE](LICENSE) file for more details. |