
LongLoRA: Efficient Fine-tuning of Long-Context Large Language Models [Paper]
Yukang Chen, Shengju Qian, Haotian Tang, Xin Lai, Zhijian Liu, Song Han, Jiaya Jia
Requirements and Installation and Quick Guide sections below.To download and use the pre-trained weights you will need: 1. Hugging Face (HF) account with valid email. Note, the email used for HF must alse be used for the license agreement. 2. Accept the Meta license and acceptable use policy
To install and run the application: 1. Fork this repo on github 2. Clone the repository on your local machine, using git clone and pasting the url of this project. 3. Run the following code:
pip install -r requirements.txt
pip install flash-attn --no-build-isolation
LongAlpaca-12k contains 9k long QA data that we collected and 3k short QA sampled from the original Alpaca data. This is to avoid the case that the model might degrade at short instruction following. The data we collect contains various types and amounts as the following figure.

| Data | Short QA | Long QA | Total | Download |
|---|---|---|---|---|
| LongAlpaca-12k | 3k | 9k | 12k | Link |
Following the original Alpaca format, our Long QA data uses the following prompts for fine-tuning:
- instruction: str, describes the task the model should perform. For example, to answer a question after reading a book section or paper. We vary the contents and questions to make instructions diverse.
- output: str, the answer to the instruction.
We did not use the input format in the Alpaca format for simplicity.
| Model | Size | Context | Train | Link |
|---|---|---|---|---|
| LongAlpaca-7B | 7B | 32768 | Full FT | Model |
| LongAlpaca-13B | 13B | 32768 | Full FT | Model |
| LongAlpaca-70B | 70B | 32768 | LoRA+ | Model (LoRA-weight) |
| Model | Size | Context | Train | Link |
|---|---|---|---|---|
| Llama-2-7b-longlora-8k-ft | 7B | 8192 | Full FT | Model |
| Llama-2-7b-longlora-16k-ft | 7B | 16384 | Full FT | Model |
| Llama-2-7b-longlora-32k-ft | 7B | 32768 | Full FT | Model |
| Llama-2-7b-longlora-100k-ft | 7B | 100000 | Full FT | Model |
| Llama-2-13b-longlora-8k-ft | 13B | 8192 | Full FT | Model |
| Llama-2-13b-longlora-16k-ft | 13B | 16384 | Full FT | Model |
| Llama-2-13b-longlora-32k-ft | 13B | 32768 | Full FT | Model |
| Model | Size | Context | Train | Link |
|---|---|---|---|---|
| Llama-2-7b-longlora-8k | 7B | 8192 | LoRA+ | LoRA-weight |
| Llama-2-7b-longlora-16k | 7B | 16384 | LoRA+ | LoRA-weight |
| Llama-2-7b-longlora-32k | 7B | 32768 | LoRA+ | LoRA-weight |
| Llama-2-13b-longlora-8k | 13B | 8192 | LoRA+ | LoRA-weight |
| Llama-2-13b-longlora-16k | 13B | 16384 | LoRA+ | LoRA-weight |
| Llama-2-13b-longlora-32k | 13B | 32768 | LoRA+ | LoRA-weight |
| Llama-2-13b-longlora-64k | 13B | 65536 | LoRA+ | LoRA-weight |
| Llama-2-70b-longlora-32k | 70B | 32768 | LoRA+ | LoRA-weight |
| Llama-2-70b-chat-longlora-32k | 70B | 32768 | LoRA+ | LoRA-weight |
We use LLaMA2 models as the pre-trained weights and fine-tune them to long context window sizes. Download based on your choices.
| Pre-trained weights |
|---|
| Llama-2-7b-hf |
| Llama-2-13b-hf |
| Llama-2-70b-hf |
| Llama-2-7b-chat-hf |
| Llama-2-13b-chat-hf |
| Llama-2-70b-chat-hf |
This project also supports GPTNeoX models as the base model architecture. Some candidate pre-trained weights may include GPT-NeoX-20B, Polyglot-ko-12.8B and other variants.
``` torchrun --nproc_per_node=8 fine-tune.py \ --model_name_or_path path_to/Llama-2-7b-hf \ --bf16 True \ --output_dir path_to_saving_checkpoints \ --cache_dir path_to_cache \ --model_max_length 8192 \ --use_flash_attn True \ --low_rank_training False \ --num_train_epochs 1 \ --per_device_train_batch_size 1 \ --per_device_eval_batch_size 2 \ --gradient_accumulation_steps 8 \ --evaluation_strategy "no" \ --save_strategy "steps" \ --save_steps 1000 \ --save_total_limit 2 \ --learning_rate 2e-5 \ --weight_decay 0.0 \ --warmup_steps 20 \ --lr_scheduler_type "constant_with_warmup" \ --logging_st
$ claude mcp add LongLoRA \
-- python -m otcore.mcp_server <graph>