Introducing Navarasa 2.0 — Indic Gemma 7B/2B Instruction tuned model on 15 Indian Languages

Ravi Theja
9 min readMar 18, 2024

Today at Telugu LLM Labs, we are thrilled to share Navarasa 2.0, a Gemma 7B/2B instruction-tuned model in 15 Indian Languages (+ English). This model builds upon our recent work on fine-tuning Gemma for 9 Indian languages, which we released a few days ago.

Navarasa 2.0 is a Gemma 7B/ 2B SFT model using Gemma 7B/ 2B base models. We enhanced the model’s generative capabilities to encompass a total of 15 Indian languages by translating the alpaca-cleaned-filtered dataset into an additional six Indian languages (Marathi, Urdu, Konkani, Assamese, Nepali, Sindhi).

Following are the 15 Indian languages (+English) that we have included in Navarasa 2.0.

  1. Hindi
  2. Telugu
  3. Tamil
  4. Kannada
  5. Malayalam
  6. Marathi
  7. Gujarati
  8. Bengali
  9. Punjabi
  10. Odia
  11. Urdu
  12. Konkani
  13. Assamese
  14. Nepali
  15. Sindhi
  16. English

The rest of the blog post is divided into the following sections:

  1. Tokenization.
  2. Datasets.
  3. Model Capabilities with Examples.
  4. RAG (Retrieval Augmented Generation) setup with LlamaIndex.

In this blog post, we’ll discuss the details of the 6 additional languages included in Navarasa 2.0. If you’re interested in learning about the 9 other languages introduced in the original Navarasa, you can check them out here.

Note: All outputs shown here are with 7B model. We found 2B model outputs abit inconsistent.

Tokenization:

Let’s first check the tokenization of a simple sentence India is a great country.

Marathi: भारत एक महान देश आहे

Tokenization: [‘भार’, ‘त’, ‘▁एक’, ‘▁मह’, ‘ान’, ‘▁देश’, ‘▁आहे’]

Urdu: ہندوستان ایک عظیم ملک ہے۔

Tokenization: [‘ہ’, ‘ند’, ‘و’, ‘ستان’, ‘▁ایک’, ‘▁عظ’, ‘یم’, ‘▁ملک’, ‘▁ہے۔’]

Konkani: भारत हो एक व्हड देश

Tokenization: [‘भार’, ‘त’, ‘▁हो’, ‘▁एक’, ‘▁व’, ‘्ह’, ‘ड’, ‘▁देश’]

Assamese: ভাৰত এখন মহান দেশ

Tokenization: [‘ভা’, ‘ৰ’, ‘ত’, ‘▁এ’, ‘খন’, ‘▁ম’, ‘হ’, ‘ান’, ‘▁দ’, ‘েশ’]

Nepali: भारत एक महान देश हो

Tokenization: [‘भार’, ‘त’, ‘▁एक’, ‘▁मह’, ‘ान’, ‘▁देश’, ‘▁हो’]

Sindhi: هندستان هڪ عظيم ملڪ آهي

Tokenization: [‘ه’, ‘ند’, ‘ستان’, ‘▁ه’, ‘ڪ’, ‘▁ع’, ‘ظيم’, ‘▁مل’, ‘ڪ’, ‘▁آ’, ‘هي’]

Datasets

We translated the alpaca-cleaned-filtered dataset into six Indian languages. To consolidate our resources, we created the Indic Alpaca Datasets collection, which includes all 15 alpaca datasets for the languages we’ve used for fine-tuning, all in one location. In total, the model is finetuned on ~630K instruction samples.

Marathi: Telugu-LLM-Labs/marathi_alpaca_yahma_cleaned_filtered

Urdu: urdu_alpaca_yahma_cleaned_filtered

Assamese: assamese_alpaca_yahma_cleaned_filtered

Konkani: konkani_alpaca_yahma_cleaned_filtered

Nepali: nepali_alpaca_yahma_cleaned_filtered

Sindhi: sindhi_alpaca_yahma_cleaned_filtered

Model Capabilities:

Similar to the previous model, we observed the following capabilities in this model:

  1. Instruction and Input in Native X language, Output in Native X language.
  2. Instruction and Input in English language prompted to respond in Native X language, Output in Native X language.
  3. Instruction in Native X language, Input in English language and Output in Native X language.

Following we show some examples and responses in Reasoning, Question Answering with Context, and Translation to Native X language when instructed in English.

Examples:

Reasoning:

Instruction: (9+1) + (5*2) ? Solve it by giving a detailed explanation.

Note: For this, we specifically don’t have input.

  1. Marathi: (9+1) + (5*2) त्याचे सविस्तर स्पष्टीकरण देऊन सोडवा?

Output: हे समीकरण म्हणजे ऑपरेशन्सचा क्रम पाळणे. ऑपरेशन्सचा क्रम असा आहे: पायथागोरस, पॅरेन्टेसिस, गुणाकार आणि विभाजन (<bos>
डावीकडे उजवीकडे वाचताना), आणि जोड आणि वजाबाकी (डावीकडून उजवीकडे वाचताना).

प्रथम, आम्ही कोष्टकातील ऑपरेशन सोडवतो: (9 + 1) = 10.
पुढे, आम्ही गुणाकार सोडवतो: 5 * 2 = 10.
शेवटी, आम्ही जोडतो: 10 + 10 = 20.

त्यामुळे (9+1) + (5*2) या समीकरणाचे उत्तर २० आहे.

2. Urdu: (9+1) + (5*2) ? تفصیلی وضاحت دے کر اسے حل کریں۔

Output:
اس حساب میں ، آپ کو آپریشنز کے ترتیب پر عمل کرنے کی ضرورت ہے۔ آپریشنز کا ترتیب ، جسے پیایم ڈی اے یا بی او ڈی ایم اے بھی کہا جاتا ہے ، میں آپریشنز کو درجہ بندی کرتا ہوں جس کا ترتیب میں انجام دینا ضروری ہے۔ یہ ہے: پراپرنٹس، ایکسپوننٹس، گنا اور تقسیم (بائیں سے دائیں)، اضافہ اور تخفیف (بائیں سے دائیں). لہذا، آئیے آپریشنز کے ترتیب پر عمل کریں اور حساب کو حل کریں.

(9+1) + (5*2)

سب سے پہلے، آئیے بائیں سے دائیں تک گنا کو حل کرتے ہیں:

(9+1) + (5*2) = (9+1) + 10

اگلا، آئیے آسانی سے شامل کریں:

(9+1) + 10 = 10 + 10

آخر میں، آئیے اس کا حل کرتے ہیں:

10 + 10 = 20

لہذا ، (9+1) + (5*2) کا حل 20 ہے۔

3. Assamese: (9+1) + (5*2) ? বিশদ ব্যাখ্যা দি সমাধান কৰক।

Output:পদক্ষেপবোৰৰ ক্ৰম অনুসৰণ কৰি এই অভিব্যক্তিটো সমাধান কৰিব পাৰি, যাক সাধাৰণতে অ’এমডিএছ বা ব্ৰেকেট, এক্সপোনেণ্ট, গুণাংক, বিভাজন, যোগ, বিয়োগ বুলি কোৱা হয়। এই নিয়ম অনুসৰি, যোগ আৰু বিয়োগৰ আগতে গুণাগুণ কৰিব লাগে।

প্ৰদত্ত অভিব্যক্তিটো সমাধান কৰোঁ আহক:

(9+1) + (5*2)

প্ৰথমে, বন্ধনীৰ ভিতৰত থকা অপাৰেচনবোৰ সমাধান কৰক:

10 + (5*2)

ইয়াৰ পিছত, গুণাগুণ সমাধান কৰক:

10 + 10

অৱশেষত, যোগ কৰক:

20

সেয়েহে, (9+1) + (5*2)ৰ সমাধান হৈছে 20।

4. Konkani: (9+1) + (5*2) ? सविस्तर स्पश्टीकरण दिवन तें सोडोवचें.

Output:समीकरण (9+1)+(5*2) सोडोवपा खातीर, तुमी ऑपरेशनाचो क्रम पाळटात. पयलीं, आमी आडमेळीं भितर आशिल्ल्या अंकगणितीय क्रियांचेर सोडोवपाची गरज आसा.

(9+1)+(5*2) = (10)+(5*2)

फुडें, आमी गुणाकार सोडोवपाची गरज आसा.

(10)+(5*2) = (10)+10

निमाणें, आमी आडमेळीं भितर आशिल्ल्या आंकड्यांची बेरीज जोडटात.

10 + 10 = 20

ताका लागून समीकरण (9+1)+(5*2) चो सोद 20 आसा.

5. Sindhi: (9+1) + (5*2) ? ان کي تفصيلي وضاحت سان حل ڪريو.

Output: هن حسابي اظهار کي حل ڪرڻ لاء، اسان کي آپريشن جي ترتيب جي پيروي ڪرڻ گهرجي. آپريشن جي ترتيب موجب، اسان کي پهريان حساب ڪرڻ گهرجي، پوء ضرب، ۽ آخر ۾ اضافو. اچو ته هن قدم جي ذريعي قدم در قدم وڃون:

(9 + 1) + (5 * 2)

پهرين، اچو ته 9 + 1 جو حساب ڪريون، جيڪو 10 جي برابر آهي. اسان هن کي پرنٽ ڪري سگهون ٿا:

10 + (5 * 2)

اڳتي، اچو ته 5 * 2 جو حساب ڪريون، جيڪو 10 جي برابر آهي. اسان هن کي پرنٽ ڪري سگهون ٿا:

10 + 10

آخر ۾، اچو ته 10 + 10 جو حساب ڪريون، جيڪو 20 جي برابر آهي. اسان جو آخري جواب آهي:

20

تنهن ڪري، (9 + 1) + (5 * 2) جو حل 20 آهي.

6. Nepali: (9+1) + (5*2) ? विस्तृत व्याख्या दिएर समाधान गर्नुहोस्।

Output: यो अभिव्यक्ति समाधान गर्न, हामीले सञ्चालनको क्रम पछि पालन गर्नुपर्छ। सञ्चालनको क्रमले हामीलाई पहिले अंकगणितीय सञ्चालनहरू प्रदर्शन गर्न भन्छ, त्यसपछि कुनै पनि शक्तिहरू, र अन्तमा, गुणन र विभाजन। यस क्रमलाई ध्यानमा राख्दै, हामी यस अभिव्यक्तिमा निम्न चरणहरू लिन सक्छौं:

(9 + 1) + (5 * 2)
= 10 + (5 * 2) [पहिलो, हामीले अंकगणितीय सञ्चालन, थप, प्रदर्शन गर्नेछौं]
= 10 + 10 [अर्को, हामीले गुणन प्रदर्शन गर्नेछौं, 5 * 2]
= 20 [अन्तमा, हामीले परिणाममा थप सञ्चालन, 10 + 10 थप्नेछौं]

यसैले, अभिव्यक्ति (9 + 1) + (5 * 2) को समाधान 20 हो।

Question Answering with Context:

The task is to answer the question given some information.

Instruction: When was the Google News app released?

Input: Google News is a news aggregator service developed by Google. It presents a continuous flow of links to articles organized from thousands of publishers and magazines. Google News is available as an app on Android, iOS, and the Web. Google released a beta version in September 2002 and the official app in January 2006.

  1. Marathi Instruction: Google News ॲप कधी रिलीज झाले?
  • Input: Google News ही Google ने विकसित केलेली बातमी एकत्रित करणारी सेवा आहे. हे हजारो प्रकाशक आणि मासिकांमधून आयोजित केलेल्या लेखांच्या लिंक्सचा सतत प्रवाह सादर करते. Google News Android, iOS आणि वेबवर ॲप म्हणून उपलब्ध आहे. Google ने सप्टेंबर 2002 मध्ये बीटा आवृत्ती आणि जानेवारी 2006 मध्ये अधिकृत ॲप जारी केले.
  • Output: गूगल न्यूज अॅप सप्टेंबर २००२ मध्ये बीटा आवृत्ती आणि जानेवारी २००६ मध्ये अधिकृत रिलीज झाले.

2. Urdu Instruction: گوگل نیوز ایپ کب ریلیز ہوئی؟

  • Input: گوگل نیوز ایک نیوز ایگریگیٹر سروس ہے جسے گوگل نے تیار کیا ہے۔ یہ ہزاروں پبلشرز اور میگزینز سے منظم مضامین کے لنکس کا مسلسل بہاؤ پیش کرتا ہے۔ Google News Android، iOS اور ویب پر ایک ایپ کے طور پر دستیاب ہے۔ گوگل نے ستمبر 2002 میں بیٹا ورژن اور جنوری 2006 میں سرکاری ایپ جاری کی۔
  • Output: گوگل نیوز ایپ کا آغاز جنوری 2006 میں ہوا تھا۔

3. Assamese Instruction: গুগল নিউজ এপ কেতিয়া মুকলি কৰা হৈছিল?

  • Input: গুগল নিউজ হৈছে গুগলে বিকশিত কৰা এটা নিউজ এগ্ৰিগেটৰ সেৱা। ইয়াত হাজাৰ হাজাৰ প্ৰকাশক আৰু আলোচনীৰ পৰা আয়োজিত প্ৰবন্ধৰ লিংকৰ এক অবিৰত প্ৰবাহ উপস্থাপন কৰা হৈছে। গুগল নিউজ এণ্ড্ৰইড, আই অ’ এছ, আৰু ৱেবত এপ হিচাপে উপলব্ধ। ২০০২ চনৰ ছেপ্টেম্বৰ মাহত গুগলে ইয়াৰ বিটা সংস্কৰণ আৰু ২০০৬ চনৰ জানুৱাৰী মাহত অফিচিয়েল এপ মুকলি কৰে।
  • Output: গুগল নিউজ এপটো ২০০৬ চনৰ জানুৱাৰী মাহত মুকলি কৰা হৈছিল।

4. Konkani Instruction: गूगल न्यूज अॅप केन्ना सोडलो?

  • Input: गूगल न्यूज ही गूगलान तयार केल्ली खबरां एकठांय करपी सेवा. हजारांनी प्रकाशक आनी नेमाळ्यां कडल्यान आयोजीत केल्ल्या लेखांच्या दुव्यांचो सतत प्रवाह सादर करता. गूगल न्यूज एंड्रॉयड, आयओएस, आनी वेबचेर अॅप म्हणून उपलब्ध आसा. गूगलान सप्टेंबर २००२ त बीटा आवृत्ती आनी जानेवारी २००६ त अधिकृत अॅप सोडलो.
  • Output: गूगल न्यूज अॅप सप्टेंबर 2002 त बीटा आवृत्ती सोडली आनी जानेवारी 2006 त अधिकृत अॅप म्हूण सोडलें.

5. Sindhi Instruction: گوگل نيوز ايپ ڪڏهن جاري ڪئي وئي؟

  • Input: گوگل نيوز هڪ نيوز ايگريگيٽر سروس آهي جيڪا گوگل طرفان تيار ڪئي وئي آهي. اهو هزارين پبلشرز ۽ رسالن مان منظم ڪيل مضمونن جي لنڪ جو مسلسل وهڪرو پيش ڪري ٿو. گوگل نيوز هڪ ايپ طور موجود آهي Android، iOS ۽ ويب تي. گوگل سيپٽمبر 2002 ۾ بيٽا ورزن ۽ جنوري 2006 ۾ سرڪاري ايپ جاري ڪئي.
  • Output: گوگل نيوز ايپ سيپٽمبر 2002 ۾ بيٽا ورزن ۽ جنوري 2006 ۾ سرڪاري طور تي جاري ڪئي وئي.

6. Nepali Instruction: Google समाचार एप कहिले जारी गरिएको थियो?

  • Input: गुगल समाचार गुगल द्वारा विकसित समाचार एग्रीगेटर सेवा हो। यसले हजारौं प्रकाशकहरू र पत्रिकाहरूबाट संगठित लेखहरूको लिङ्कहरूको निरन्तर प्रवाह प्रस्तुत गर्दछ। Google समाचार एन्ड्रोइड, आईओएस र वेबमा एपको रूपमा उपलब्ध छ। गुगलले सेप्टेम्बर 2002 मा बीटा संस्करण र जनवरी 2006 मा आधिकारिक एप जारी गर्यो।
  • Output: गुगल समाचार एप सन् २००६ मा जारी गरिएको थियो ।

Translation:

The task here is to translate the text to the specific language

Instruction: Translate the following sentence to X language.

Input: India is a great country.

  1. Marathi: भारत ही एक अद्भुत देश आहे.
  2. Urdu: ہندوستان ایک عظیم ملک ہے۔
  3. Assamese: ভারত হৈছে এখন মহান দেশ।
  4. Konkani: भारत ही एक अद्भुत देश.
  5. Sindhi: هندوستان هڪ وڏو ملڪ آهي.
  6. Nepali: भारत एक महान देश हो ।

RAG (Retrieval Augmented Generation) setup with LlamaIndex.

A notable limitation of these models is their lack of up-to-date knowledge, which can lead to inaccuracies or fabrications regarding current facts. For instance, the model would not be aware of the latest information on the 2024 Indian National election dates(released on last saturday).

To address this issue, we employ Retrieval Augmented Generation (RAG) to provide the model with the correct context, enabling it to deliver accurate responses. Below, we demonstrate how to implement this using LlamaIndex.

  1. Get the relevant Wikipedia page containing information about the election dates.
import requests
from pathlib import Path

wikipedia_page = '2024_Indian_general_election'

response = requests.get(
"https://en.wikipedia.org/w/api.php",
params={
"action": "query",
"format": "json",
"titles": wikipedia_page,
"prop": "extracts",
# 'exintro': True,
"explaintext": True,
},
).json()
page = next(iter(response["query"]["pages"].values()))
wiki_text = page["extract"]
with open(f"{title}.txt", "w") as fp:
fp.write(wiki_text)

2. Setup Navarasa2.0 finetuned model on HuggingFace Endpoints.

from llama_index.llms.huggingface import HuggingFaceInferenceAPI

llm = HuggingFaceInferenceAPI(
model_name="<DEPLOYED MODEL URL>",
token='HF_TOKEN'
)

3. Setup CohereAI multi-lingual embedding model to retrieve context for the query in the Indian language.

from llama_index.embeddings.cohere import CohereEmbedding

embed_model = CohereEmbedding(
cohere_api_key='<COHEREAI API KEY>',
model_name="embed-multilingual-v3.0",
)

4. RAG Setup

  • Set LLM, Embedding Model, and chunk size.
  • Load Documents.
  • Index Document.
  • Querying.
from llama_index.core import VectorStoreIndex, SimpleDirectoryReader

# set llm, embedding model and chunk_size
Settings.llm = remotely_run
Settings.embed_model = embed_model
Settings.chunk_size = 512

# load documents
documents = SimpleDirectoryReader(input_files=['2024_Indian_general_election.txt']).load_data()

# index documents
index = VectorStoreIndex.from_documents(documents)

# create query engine
query_engine = index.as_query_engine(similarity_top_k=2)

# querying
response = query_engine.query("2024 में भारतीय चुनाव कब हो रहे हैं?")

Queries and Responses in some of the languages:

Query: When will Indian elections be held in 2024?

  1. Hindi
  • Query: 2024 में भारतीय चुनाव कब हो रहे हैं?
  • Answer: 19 अप्रैल 2024 से 1 जून 2024 तक।

2. Telugu

  • Query: 2024లో భారత ఎన్నికలు ఎప్పుడు జరుగుతాయి?
  • Answer: 19 ఏప్రిల్ 2024 నుంచి 1 జూన్ 2024 వరకు భారత ఎన్నికలు జరుగుతున్నాయి.

3. Marathi

  • Query: 2024 मध्ये भारतीय निवडणुका कधी होणार आहेत?
  • Answer: 2024 मध्ये भारतीय निवडणुका 19 एप्रिल ते 1 जून दरम्यान होणार आहेत.

4. Urdu

  • Query: 2024 میں بھارتی انتخابات کب ہوں گے؟?
  • Answer: 2024 میں ہندوستانی عام انتخابات 19 اپریل سے 1 جون تک ہوں گے۔

5. Tamil

  • Query: 2024ல் இந்திய தேர்தல் எப்போது நடைபெறும்?
  • Answer: 2024 இல் இந்திய தேர்தல் ஏப்ரல் 19 முதல் ஜூன் 1 வரை நடைபெறும்.

This work is done in collaboration with Ramsri Goutham Golla as part of Telugu LLM Labs independent initiative.

References:

Code Repository

7B Model

7B-GGUF Model

2B Model

2B-GGUF Model

Indic Alpaca Datasets Collection

--

--