LLM Fine-tuning
Llama2-7b Fine-Tuning 4bit (QLoRA)¶
This example shows how to fine-tune Llama2-7b to follow instructions. Instruction tuning is the first step in adapting a general purpose Large Language Model into a chatbot.
This example uses no distributed training or big data functionality. It is designed to run locally on any machine with GPU availability.
Prerequisites¶
- HuggingFace API Token
- Access approval to Llama2-7b-hf
- GPU with at least 12 GiB of VRAM (in our tests, we used an Nvidia T4)
Installation¶
pip install ludwig ludwig[llm]
Running¶
We'll use the Stanford Alpaca dataset, which will be formatted as a table-like file that looks like this:
| instruction | input | output | 
|---|---|---|
| Give three tips for staying healthy. | 1.Eat a balanced diet and make sure to include... | |
| Arrange the items given below in the order to ... | cake, me, eating | I eating cake. | 
| Write an introductory paragraph about a famous... | Michelle Obama | Michelle Obama is an inspirational woman who r... | 
| ... | ... | ... | 
Create a YAML config file named model.yaml with the following:
model_type: llm
base_model: meta-llama/Llama-2-7b-hf
quantization:
  bits: 4
adapter:
  type: lora
prompt:
  template: |
    ### Instruction:
    {instruction}
    ### Input:
    {input}
    ### Response:
input_features:
  - name: prompt
    type: text
output_features:
  - name: output
    type: text
trainer:
  type: finetune
  learning_rate: 0.0001
  batch_size: 1
  gradient_accumulation_steps: 16
  epochs: 3
  learning_rate_scheduler:
    warmup_fraction: 0.01
preprocessing:
  sample_ratio: 0.1
And now let's train the model:
ludwig train --config model.yaml --dataset "ludwig://alpaca"