Spaces:
Runtime error
Runtime error
A newer version of the Streamlit SDK is available:
1.55.0
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/distilgpt2model on theroneneldan/TinyStoriesdataset 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
.mlpackagefile, 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/distilgpt2model and its tokenizer from the Hugging Face Hub. - Fine-Tuning: The user can initiate the fine-tuning process. The application uses the
peftlibrary to apply LoRA to the base model and trains it on theTinyStoriesdataset. 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
.zipfile.
Technologies Used
- Model:
distilbert/distilgpt2from Hugging Face - Dataset:
roneneldan/TinyStoriesfrom 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.txtRun the Streamlit application:
streamlit run app.pyOpen 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.Trainerto 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!