Giter VIP home page Giter VIP logo

indicinstruct's Introduction

Airavata

๐Ÿ“œ Paper | ๐Ÿ“ Blogpost | ๐Ÿค— HF Model ๐Ÿค— HF Dataset | ๐Ÿค— HF Benchmarks

We release Airavata v0.1, a Hindi chat model instruction finetuned on SarvamAI's OpenHathi. Please refer to our official blogspot for our model details, dataset creation and evaluation process.

Airavta is an Hindi instruction-tuned model based on the IndicInstruct datasets. Cover image is generated by DALL-E 3

Cover image is generated by DALL-E 3

This repo was forked from allenai/open-instruct, an open-source initiative for instruction-tuning widely used pretrained language models. More instructions about the codebase can be found there.

Setup

To run training, evaluation, or inference for our finetuned models, you need to install the required packages by running the following command (after installing pytorch):

pip install -r requirements.txt

If you just want the dependencies for the weight diff script, use:

pip install -r weight-diff-requirements.txt

Training

In general, any model from the Hugging Face Hub may be loaded for training. You may train a model from scratch or finetune an existing model. The following code snippet shows our command for training SarvamAI's OpenHathi base model.

Training a model from scratch

# install additional package
pip install lm-dataformat

# preprocess and tokenize the datasets before you perform training from scratch
python3 scripts/tokenize_dataset.py \
    --tokenizer_path <tokenizer_path> \
    --data_path <data_path> \
    --save_path <save_path> \
    --max_seq_length <max_seq_length> \
    --max_examples <max_examples> --max_tokens <max_tokens>

bash scripts/train_with_accelerate.sh

Finetuning an exisiting model

bash scripts/finetune_lora_with_accelerate.sh

Please check the scripts for more information on the arguments.

Dataset Preparation

We cover various instruction datasets to train our chat model. The collection consists of:

  • Anudesh
  • wikiHow
  • Flan v2 (67k sample subset)
  • Dolly
  • Anthropic-HHH (5k sample subset)
  • OpenAssistant v1
  • LymSys-Chat (50k sample subset)

We have put together the above datasets and it can be accessed from Hugging Face

python3 reformat_indic_instruct_data.py --output_dir <output_dir>

Evaluation

We have evaluated on standard Indic and English benchmarks to assess the capabilities of our model. The benchmarks are:

  • Indic NLU and Commonsense Reasoning tasks
    • IndicSentiment
    • IndicCOPA
    • IndicXNLI
    • IndicXParaphrase
  • Indic NLG
    • IndicQA
    • IndicHeadlineGeneration
    • IndicWikiBio
  • English NLU and Commonsense Reasoning tasks
    • MMLU
    • BoolQ
    • ARC Easy (Both Easy and Challenge subsets)
    • Hellaswag
  • English-Hindi Translation
    • Flores
    • IN22-Gen

In addition, we also evaluate on the Indic benchmarks using the translate-test approach ie. evaluating the Hindi language benchmarks by translating it to English on an English model. For this, we use the LLaMA-2 7B chat model. Note that OpenHathi base itself was finetuned on LLaMA-2 7B base, hence it was appropriate to compare our model against its English counterpart.

Similarly, we translate the English benchmarks to Hindi using IndicTrans2 and evaluate them on our model. Note that both OpenHathi and Airavata were trained bilingually on English and Hindi, so they support generation in both languages.

You would have to request access to use the LLaMA variants and log in to the huggingface hub (or pass a token). This process is detailed in the Hugging Face documentation.

Most of the aforementioned datasets can be directly loaded from Huggingface Hub. However, please the extract the MMLU (English and Hindi Translated) variant provided in the data/eval directory for evaluations.

Example

The evaluation scripts for the benchmarks listed can be found at scripts/indic_eval/name_of_the_task.sh for Indic benchmarks and scripts/translate_test_eval/name_of_the_task.sh for translate-test. The following command shows how you can evaluate on IndicSentiment

# Evaluation on IndicSentiment (Hindi) on a 5-shot setting
python3 -m eval.indicsentiment.run_eval \
    --ntrain 5 \
    --save_dir "results/indicsentiment/airavata-5shot" \
    --model_name_or_path ai4bharat/airavata \
    --tokenizer_name_or_path ai4bharat/airavata \
    --eval_batch_size 4

# Evaluation on IndicSentiment (Translate-test) on a 5-shot setting
python3 -m eval.indicsentiment.run_translate_test_eval \
    --ntrain 5 \
    --save_dir "results/translate_test/indicsentiment/llama2-chat-5shot" \
    --model_name_or_path meta-llama/Llama-2-7b-chat-hf \
    --tokenizer_name_or_path meta-llama/Llama-2-7b-chat-hf \
    --eval_batch_size 4

Released Checkpoint(s)

Our chat model is made available on Hugging Face. The model is licensed under the original Llama license.

As for the amount of parameters, LLaMA-2 7B was used to train the OpenHathi (and subsequently Airavata), hence it comprises of 7 billion parameters in total.

Questions

In case of any queries or issues, we recommend you to open issues on the GitHub repo directly.

Citation

If you used this repository or our models, please cite our work:

@article{gala2024airavata,
  title   = {Airavata: Introducing Hindi Instruction-tuned LLM},
  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},
  year    = {2024},
  journal = {arXiv preprint arXiv: 2401.15006}
}

indicinstruct's People

Contributors

eltociear avatar hamishivi avatar jacob-morrison avatar jaygala24 avatar oyvindtafjord avatar thanmayj avatar tongyx361 avatar trajore avatar yizhongw avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.