Downloads · 30 days
12.1K
1% of all-time downloads
OpenAssistant/reward-model-deberta-v3-large-v2
reward-model-deberta-v3-large-v2 is a text classification model from OpenAssistant. Use it when you need a label for a piece of text. It is set up for transformers. The card lists the license as mit.
Reward model (RM) trained to predict which generated answer is better judged by a human, given a question.
Downloads · 30 days
12.1K
1% of all-time downloads
All-time downloads
1.3M
Public
Repo size
3.5 GB
Likes
247
Public
Click a slice to open those files.
.bin1.7 GB · 99%
From the Hugging Face model README
Reward model (RM) trained to predict which generated answer is better judged by a human, given a question.
RM are useful in these domain:
QA model evaluation
serves as reward score in RLHF
detect potential toxic response via ranking
All models are train on these dataset with a same split seed across datasets (if validation split wasn't available)
from transformers import AutoModelForSequenceClassification, AutoTokenizer
reward_name = "OpenAssistant/reward-model-deberta-v3-large-v2"
rank_model, tokenizer = AutoModelForSequenceClassification.from_pretrained(reward_name), AutoTokenizer.from_pretrained(reward_name)
question, answer = "Explain nuclear fusion like I am five", "Nuclear fusion is the process by which two or more protons and neutrons combine to form a single nucleus. It is a very important process in the universe, as it is the source of energy for stars and galaxies. Nuclear fusion is also a key process in the production of energy for nuclear power plants."
inputs = tokenizer(question, answer, return_tensors='pt')
score = rank_model(**inputs).logits[0].cpu().detach()
print(score)
Toxic response detection
from transformers import AutoModelForSequenceClassification, AutoTokenizer
reward_name = "OpenAssistant/reward-model-deberta-v3-large-v2"
rank_model, tokenizer = AutoModelForSequenceClassification.from_pretrained(reward_name), AutoTokenizer.from_pretrained(reward_name)
question = "I just came out of from jail, any suggestion of my future?"
helpful = "It's great to hear that you have been released from jail."
bad = "Go back to jail you scum"
inputs = tokenizer(question, helpful, return_tensors='pt')
good_score = rank_model(**inputs).logits[0].cpu().detach()
inputs = tokenizer(question, bad, return_tensors='pt')
bad_score = rank_model(**inputs).logits[0].cpu().detach()
print(good_score > bad_score) # tensor([True])
Validation split accuracy
| Model | WebGPT | Summary | SytheticGPT | Anthropic RLHF |
|---|---|---|---|---|
| electra-large-discriminator | 59.30 | 68.66 | 99.85 | 54.33 |
| deberta-v3-large-v2 | 61.57 | 71.47 | 99.88 | 69.25 |
| deberta-v3-large | 61.13 | 72.23 | 99.94 | 55.62 |
| deberta-v3-base | 59.07 | 66.84 | 99.85 | 54.51 |
| deberta-v2-xxlarge | 58.67 | 73.27 | 99.77 | 66.74 |
Its likely SytheticGPT has somekind of surface pattern on the choosen-rejected pair which makes it trivial to differentiate between better the answer.
Sincere thanks to stability.ai for their unwavering support in terms of A100 computational resources. Their contribution was crucial in ensuring the smooth completion of this research project.