No project description provided
Project description
SmolHub
A lightweight package for fine-tuning language models using LoRA (Low-Rank Adaptation).
Installation
pip install smolhub
Usage
A default config file is created in the user project directory if not already there
Example Config
project:
name: SFTrainer
author: Yuvraj Singh
version: 1.0
LoRA:
rank: 4
alpha: 8
Dataset:
use_hf_dataset: True
dataset_path: MMEX/text-classification-dataset
max_length: 512
batch_size: 16
num_workers: 4
shuffle: True
drop_last: True
pin_memory: True
persistent_workers: True
type: "classification" #TODO Add Chat style and Instruction
huggingface:
hf_token: "..."
Model:
epochs: 1
eval_iters: 10
eval_steps: 0
save_model_path: "saved_model"
saved_model_name: 'model.pt'
MAP:
use_bfloat16: False
use_float16: False
Optimizations:
use_compile: False
wandb:
project_name: "SFTrainer"
from smolhub.scripts.finetune import SFTTrainer
from smolhub.scripts.lora import LoRAModel
from transformers import AutoModelForCausalLM, AutoTokenizer
from smolhub.helper.dataset.dataset_main import PreprocessDataset
from smolhub.helper.scheduler import CustomLRScheduler
# from load_config import Config
import torch
from smolhub.helper.dataset.load_config import Config
model_id = "openai-community/gpt2"
config = Config().get_config()
dataset_path = config["Dataset"]["dataset_path"]
tokenizer = AutoTokenizer.from_pretrained(model_id, token=config['huggingface']['hf_token'])
model = AutoModelForCausalLM.from_pretrained(model_id, device_map="auto", token=config['huggingface']['hf_token'])
if tokenizer.pad_token is None:
# Set the pad token to the eos token if it doesn't exist
tokenizer.add_special_tokens({'pad_token': '[PAD]'})
# tokenizer.pad_token = tokenizer.eos_token
print("Setting pad token as PAD token ")
model.resize_token_embeddings(len(tokenizer))
lora_model = LoRAModel(model)
optimizer = torch.optim.Adam(lora_model.parameters(), lr=2e-3)
scheduler = CustomLRScheduler(optimizer, warmup_iters=100, lr_decay_iters=2000, min_lr=2e-5, max_lr=2e-3, _type="cosine")
#Loading the dataset
preprocess_dataset = PreprocessDataset(dataset_path=dataset_path, tokenizer=tokenizer)
train_dataloader, val_dataloader, test_dataloader = preprocess_dataset.prepare_dataset()
#Initialize the Trainer
sft_trainer = SFTTrainer(lora_model, train_dataloader, val_dataloader, test_dataloader, optimizer, None, tokenizer, scheduler)
#Train
sft_trainer.train()
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
smolhub-0.6.5.tar.gz
(12.0 kB
view details)
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
smolhub-0.6.5-py3-none-any.whl
(13.4 kB
view details)
File details
Details for the file smolhub-0.6.5.tar.gz.
File metadata
- Download URL: smolhub-0.6.5.tar.gz
- Upload date:
- Size: 12.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.11.11
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
bd69e31ea0f16957565edc3dc5129830b4f042e6742d657ff6f4077ea66d0ca3
|
|
| MD5 |
88af5e0c04a32680afaa5fc59fdc738b
|
|
| BLAKE2b-256 |
e56c58c308adb249632864bd1df2cdb2bdb03581e83688e34ac66ab0173749d0
|
File details
Details for the file smolhub-0.6.5-py3-none-any.whl.
File metadata
- Download URL: smolhub-0.6.5-py3-none-any.whl
- Upload date:
- Size: 13.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.11.11
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2cf1832db00ed884c251ffa0137958324820ba484d0f73dff92d49da06aa5784
|
|
| MD5 |
a74323d1be9c85db2d3c8d231ff7384b
|
|
| BLAKE2b-256 |
338eb98e6475dc73bf0e8c1aefdafc06ffcc061595c7a65e9fda34893bae7fbf
|