## 🦙 Finetune Llama 3.2 in 30 Lines of Python

### 🎓 FREE Step-by-Step Tutorial 
**👉 [Click here to follow our complete step-by-step tutorial](https://www.theunwindai.com/p/fine-tune-llama-3-2-for-free-in-30-lines-of-python-code) and learn how to build this from scratch with detailed code walkthroughs, explanations, and best practices.**

This script demonstrates how to finetune the Llama 3.2 model using the [Unsloth](https://unsloth.ai/) library, which makes the process easy and fast. You can run this example to finetune Llama 3.1 1B and 3B models for free in Google Colab.

### Features

- Finetunes Llama 3.2 model using the Unsloth library
- Implements Low-Rank Adaptation (LoRA) for efficient finetuning
- Uses the FineTome-100k dataset for training
- Configurable for different model sizes (1B and 3B)

### Installation

1. Clone the repository:

```bash
git clone https://github.com/Shubhamsaboo/awesome-llm-apps.git
cd awesome-llm-apps/llm_finetuning_tutorials/llama3.2_finetuning
```

2. Install the required dependencies:

```bash
pip install -r requirements.txt
```

## Usage

1. Open the script in Google Colab or your preferred Python environment.

2. Run the script to start the finetuning process:

```bash
# Run the entire script
python finetune_llama3.2.py
```

3. The finetuned model will be saved in the "finetuned_model" directory.

## How it Works

1. **Model Loading**: The script loads the Llama 3.2 3B Instruct model using Unsloth's FastLanguageModel.

2. **LoRA Setup**: Low-Rank Adaptation is applied to specific layers of the model for efficient finetuning.

3. **Data Preparation**: The FineTome-100k dataset is loaded and preprocessed using a chat template.

4. **Training Configuration**: The script sets up the SFTTrainer with specific training arguments.

5. **Finetuning**: The model is finetuned on the prepared dataset.

6. **Model Saving**: The finetuned model is saved to disk.

## Configuration

You can modify the following parameters in the script:

- `model_name`: Change to "unsloth/Llama-3.1-1B-Instruct" for the 1B model
- `max_seq_length`: Adjust the maximum sequence length
- `r`: LoRA rank
- Training hyperparameters in `TrainingArguments`

## Customization

- To use a different dataset, replace the `load_dataset` function call with your desired dataset.
- Adjust the `target_modules` in the LoRA setup to finetune different layers of the model.
- Modify the chat template in `get_chat_template` if you're using a different conversational format.

## Running on Google Colab

1. Open a new Google Colab notebook.
2. Copy the entire script into a code cell.
3. Add a cell at the beginning to install the required libraries:

```
!pip install torch transformers datasets trl unsloth
```

4. Run the cells to start the finetuning process.

## Notes

- This script is optimized for running on Google Colab's free tier, which provides access to GPUs.
- The finetuning process may take some time, depending on the model size and the available computational resources.
- Make sure you have enough storage space in your Colab instance to save the finetuned model.
