Views
No views yet
ai4bharat/Airavata.<|user|>
Your message here!
<|assistant|><|assistant|>, this can affect generation quality quite a bit.1import torch
2from transformers import AutoTokenizer, AutoModelForCausalLM
3
4device = "cuda" if torch.cuda.is_available() else "cpu"
5
6
7def create_prompt_with_chat_format(messages, bos="<s>", eos="</s>", add_bos=True):
8 formatted_text = ""
9 for message in messages:
10 if message["role"] == "system":
11 formatted_text += "<|system|>\n" + message["content"] + "\n"
12 elif message["role"] == "user":
13 formatted_text += "<|user|>\n" + message["content"] + "\n"
14 elif message["role"] == "assistant":
15 formatted_text += "<|assistant|>\n" + message["content"].strip() + eos + "\n"
16 else:
17 raise ValueError(
18 "Tulu chat template only supports 'system', 'user' and 'assistant' roles. Invalid role: {}.".format(
19 message["role"]
20 )
21 )
22 formatted_text += "<|assistant|>\n"
23 formatted_text = bos + formatted_text if add_bos else formatted_text
24 return formatted_text
25
26
27def inference(input_prompts, model, tokenizer):
28 input_prompts = [
29 create_prompt_with_chat_format([{"role": "user", "content": input_prompt}], add_bos=False)
30 for input_prompt in input_prompts
31 ]
32
33 encodings = tokenizer(input_prompts, padding=True, return_tensors="pt")
34 encodings = encodings.to(device)
35
36 with torch.inference_mode():
37 outputs = model.generate(encodings.input_ids, do_sample=False, max_new_tokens=250)
38
39 output_texts = tokenizer.batch_decode(outputs.detach(), skip_special_tokens=True)
40
41 input_prompts = [
42 tokenizer.decode(tokenizer.encode(input_prompt), skip_special_tokens=True) for input_prompt in input_prompts
43 ]
44 output_texts = [output_text[len(input_prompt) :] for input_prompt, output_text in zip(input_prompts, output_texts)]
45 return output_texts
46
47
48model_name = "ai4bharat/Airavata"
49
50tokenizer = AutoTokenizer.from_pretrained(model_name, padding_side="left")
51tokenizer.pad_token = tokenizer.eos_token
52model = AutoModelForCausalLM.from_pretrained(model_name, torch_dtype=torch.bfloat16).to(device)
53
54input_prompts = [
55 "मैं अपने समय प्रबंधन कौशल को कैसे सुधार सकता हूँ? मुझे पांच बिंदु बताएं।",
56 "मैं अपने समय प्रबंधन कौशल को कैसे सुधार सकता हूँ? मुझे पांच बिंदु बताएं और उनका वर्णन करें।",
57]
58outputs = inference(input_prompts, model, tokenizer)
59print(outputs)1@article{gala2024airavata,
2 title = {Airavata: Introducing Hindi Instruction-tuned LLM},
3 author = {Jay Gala and Thanmay Jayakumar and Jaavid Aktar Husain and Aswanth Kumar M and Mohammed Safi Ur Rahman Khan and Diptesh Kanojia and Ratish Puduppully and Mitesh M. Khapra and Raj Dabre and Rudra Murthy and Anoop Kunchukuttan},
4 year = {2024},
5 journal = {arXiv preprint arXiv: 2401.15006}
6}| Metric | Value |
|---|---|
| Avg. | 45.52 |
| AI2 Reasoning Challenge (25-Shot) | 46.50 |
| HellaSwag (10-Shot) | 69.26 |
| MMLU (5-Shot) | 43.90 |
| TruthfulQA (0-shot) | 40.62 |
| Winogrande (5-shot) | 68.82 |
| GSM8k (5-shot) | 4.02 |