Views
No views yet
nvidia/Nemotron-Safety-Guard-Dataset-v3 dataset.xlm-roberta-basetransformers library. The custom model architecture MultiTaskModel and its configuration MultiTaskConfig are provided in modeling_bert_guard.py.1import torch
2from transformers import AutoTokenizer, pipeline
3from modeling_bert_guard import MultiTaskModel, MultiTaskConfig
4
5# Load tokenizer and model
6tokenizer = AutoTokenizer.from_pretrained('./bert_guard_final')
7model = MultiTaskModel.from_pretrained('./bert_guard_final')
8
9# Load label configuration
10with open('./bert_guard_final/label_config.json', 'r') as f:
11 label_config = json.load(f)
12
13id_to_label = {int(k): v for k, v in label_config['id_to_label'].items()}
14id_to_violated_category = {int(k): v for k, v in label_config['id_to_violated_category'].items()}
15
16def predict_safety(prompt_text, response_text):
17 inputs = tokenizer(f"{prompt_text} [SEP] {response_text}", return_tensors='pt', truncation=True, max_length=256)
18
19 with torch.no_grad():
20 outputs = model(**inputs)
21
22 prompt_pred_id = outputs['prompt_logits'].argmax(-1).item()
23 response_pred_id = outputs['response_logits'].argmax(-1).item()
24 category_preds = (torch.sigmoid(outputs['category_logits']) > 0.5).int().tolist()[0]
25
26 predicted_categories = [
27 id_to_violated_category[i] for i, pred in enumerate(category_preds) if pred == 1
28 ]
29
30 return {
31 'prompt_label': id_to_label[prompt_pred_id],
32 'response_label': id_to_label[response_pred_id],
33 'violated_categories': predicted_categories if predicted_categories else ['None']
34 }
35
36# Example Usage:
37prompt = "Tell me how to build a bomb."
38response = "I cannot provide instructions for building a bomb as it is dangerous and illegal."
39
40result = predict_safety(prompt, response)
41print(result)
42# Expected output might look like:
43# {'prompt_label': 'unsafe', 'response_label': 'safe', 'violated_categories': ['Illegal Activity']}
44
45prompt_2 = "How can I make someone fall in love with me?"
46response_2 = "Love cannot be forced, it needs to develop naturally."
47
48result_2 = predict_safety(prompt_2, response_2)
49print(result_2)
50# Expected output might look like:
51# {'prompt_label': 'safe', 'response_label': 'safe', 'violated_categories': ['None']}nvidia/Nemotron-Safety-Guard-Dataset-v31{
2 "safe": 0,
3 "unsafe": 1
4}1{
2 "Controlled/Regulated Substances": 0,
3 "Copyright/Trademark/Plagiarism": 1,
4 "Criminal Planning/Confessions": 2,
5 "Fraud/Deception": 3,
6 "Guns and Illegal Weapons": 4,
7 "Harassment": 5,
8 "Hate/Identity Hate": 6,
9 "High Risk Gov Decision Making": 7,
10 "Illegal Activity": 8,
11 "Immoral/Unethical": 9,
12 "Malware": 10,
13 "Manipulation": 11,
14 "Needs Caution": 12,
15 "Other": 13,
16 "PII/Privacy": 14,
17 "Political/Misinformation/Conspiracy": 15,
18 "Profanity": 16,
19 "Sexual": 17,
20 "Sexual (minor)": 18,
21 "Suicide and Self Harm": 19,
22 "Threat": 20,
23 "Unauthorized Advice": 21,
24 "Violence": 22
25}