A newer version of the Streamlit SDK is available:
1.46.1
metadata
license: mit
title: LoRA Fine-Tuning and CoreML Conversion with Streamlit
sdk: streamlit
emoji: 🦀
colorFrom: green
colorTo: blue
pinned: true
sdk_version: 1.46.0
LoRA Fine-Tuning and CoreML Conversion with Streamlit
This project demonstrates how to fine-tune a large language model (LLM) using Low-Rank Adaptation (LoRA) and convert it to the CoreML format for on-device deployment. The entire process is wrapped in a user-friendly Streamlit web application.
Features
- Fine-Tune LLMs with LoRA: Easily fine-tune the
distilbert/distilgpt2
model on theroneneldan/TinyStories
dataset using Parameter-Efficient Fine-Tuning (PEFT) with LoRA. - Text Generation: Generate creative stories from a text prompt using the fine-tuned model.
- Adjustable Generation Parameters: Control text generation with parameters like temperature, max length, and repetition penalty.
- CoreML Conversion: Convert the fine-tuned model to a
.mlpackage
file, ready for integration into Apple ecosystem applications. - Interactive Web UI: A simple and interactive user interface built with Streamlit.
How it Works
The application follows a simple workflow:
- Load Base Model: It starts by loading the pre-trained
distilbert/distilgpt2
model and its tokenizer from the Hugging Face Hub. - Fine-Tuning: The user can initiate the fine-tuning process. The application uses the
peft
library to apply LoRA to the base model and trains it on theTinyStories
dataset. The resulting LoRA adapter is saved locally. - Text Generation: Once the model is fine-tuned (or a pre-existing adapter is loaded), you can provide a prompt to generate stories.
- CoreML Conversion: The application can merge the LoRA adapter with the base model and then convert the merged model into the CoreML format, which can be downloaded as a
.zip
file.
Technologies Used
- Model:
distilbert/distilgpt2
from Hugging Face - Dataset:
roneneldan/TinyStories
from Hugging Face - Fine-Tuning:
peft
(Parameter-Efficient Fine-Tuning) library with LoRA - Framework: PyTorch
- Web App: Streamlit
- Model Conversion: CoreMLTools
- Core Libraries:
transformers
,datasets
,accelerate
,sentencepiece
Setup and Usage
Clone the repository:
git clone <repository-url> cd <repository-directory>
Create a virtual environment and install dependencies:
python3 -m venv venv source venv/bin/activate pip install -r requirements.txt
Run the Streamlit application:
streamlit run app.py
Open the application in your browser: Navigate to the URL provided by Streamlit (usually
http://localhost:8501
).
File Structure
app.py
: The main Python script containing the Streamlit application logic.requirements.txt
: A list of the Python packages required to run the project.README.md
: This file, providing information about the project.distilgpt2-lora-tinystories/
: (Generated Directory) This directory will be created to store the LoRA adapter after fine-tuning.results/
: (Generated Directory) This directory is used by thetransformers.Trainer
to save training outputs.distilgpt2-lora-tinystories.mlpackage/
: (Generated Directory) This directory will be created after the CoreML conversion.distilgpt2-lora-tinystories.zip
: (Generated File) The zipped CoreML model ready for download.
Happy fine-tuning and story generating!