A Fine-tuning assistant for large language models
Project description
A tasty layer on top of Unsloth for Large Language Model fine-tuning
Atuna: A fine-tuning assistant for large language models with built-in hyperparameter optimization.
Features
- Easy fine-tuning with Unsloth integration for efficient training
- Hyperparameter optimization with Optuna for automated tuning
- Built-in evaluation and monitoring capabilities
- TensorBoard integration for training visualization
Installation
From source (development)
git clone https://github.com/mapa17/atuna.git
cd atuna
uv sync
uv pip install -e .
Using the library
pip install atuna # When published to PyPI
Quick Start
Basic Fine-tuning
from tuna import Tuna, TunaConfig, TrainingConfig, model_registry
# Configure your model
model = model_registry["unsloth/Qwen3-4B-Instruct-2507"]
config = TunaConfig(
model_cfg=model,
dataset_path="./data/training_set.csv",
max_seq_length=2048,
precision=16, # Use 16-bit precision
)
# Create trainer
tuna = Tuna(config=config)
# Configure training
training_config = TrainingConfig(
num_train_epochs=3,
batch_size=1,
learning_rate=5e-5,
eval_epochs=1.0,
enable_early_stopping=True,
)
# Train the model
result = tuna.train(config=training_config)
print(f"Training completed: {result.stop_reason}")
Hyperparameter Optimization
from tuna import Tuna, TunaConfig, TrainingConfig, HyperparpamConfig, model_registry
# Setup configuration
model = model_registry["unsloth/Qwen3-4B-Instruct-2507"]
config = TunaConfig(
model_cfg=model,
dataset_path="./data/training_set.csv",
max_seq_length=2048,
precision=4, # Use 4-bit quantization for efficiency
)
tuna = Tuna(config=config)
# Configure training
training_config = TrainingConfig(
num_train_epochs=2,
eval_epochs=0.25,
batch_size=1,
data_sample=0.3, # Use subset for faster experimentation
)
# Configure hyperparameter search
hyper_config = HyperparpamConfig(
n_trials=10,
learning_rate=[1e-5, 5e-5, 7e-5, 1e-4],
weight_decay=[0.001, 0.01, 0.1],
peft_r=[16, 32],
lora_alpha=[32, 50, 64],
enable_slora=True,
)
# Run optimization
study = tuna.hyperparam_tune(
study_name="MyOptimization",
train_config=training_config,
hyper_config=hyper_config,
)
print(f"Best parameters: {study.best_trial.params}")
Model Evaluation
# Evaluate trained model
responses = tuna.evaluate_prompts([
"What is machine learning?",
"Explain fine-tuning in simple terms.",
])
for response in responses:
print(f"Response: {response}")
CLI Usage
# Show version
tuna --version
# List available models
tuna --list-models
Data Format
Your training data should be a CSV file with request and response columns:
request,response
"What is Python?","Python is a programming language..."
"How does machine learning work?","Machine learning works by..."
Monitoring and Visualization
Optuna Dashboard
# View hyperparameter optimization results
optuna-dashboard sqlite:///./atuna_workspace/optuna_studies.db
TensorBoard
# View training metrics
tensorboard --logdir ./atuna_workspace/logs
Supported Models
unsloth/Qwen3-4B-Instruct-2507unsloth/Qwen3-0.6B-GGUF
More models can be easily added to the model_registry.
Configuration Options
TunaConfig
model_cfg: Model configuration from registrydataset_path: Path to training CSV filemax_seq_length: Maximum sequence length (default: 2048)precision: Training precision - 4, 8, or 16 bit (default: 16)peft_r: LoRA rank parameter (default: 32)workspace: Working directory (default: "./atuna_workspace")
TrainingConfig
learning_rate: Learning rate (default: 2e-5)batch_size: Batch size (default: 1)num_train_epochs: Number of training epochs (default: 1.0)eval_epochs: Evaluation frequency in epochsenable_early_stopping: Enable early stopping (default: True)data_sample: Fraction of data to use (default: 1.0)
HyperparpamConfig
n_trials: Number of optimization trialslearning_rate: List of learning rates to trypeft_r: List of LoRA rank values to trylora_alpha: List of LoRA alpha values to tryweight_decay: List of weight decay values to try
Examples
See the examples/ directory for complete usage examples:
examples/basic_finetuning.py- Basic fine-tuning workflowexamples/hyperparameter_search.py- Hyperparameter optimization
Requirements
- Python 3.12+
- CUDA-capable GPU
- See
pyproject.tomlfor full dependency list
Development
# Clone repository
git clone https://github.com/mapa17/atuna.git
cd atuna
# Install development dependencies
uv sync --group dev
# Install pre-commit hooks
pre-commit install
# Run tests
pytest
# Build package
uv build
License
MIT License - see LICENSE file for details.
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
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
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
File details
Details for the file atuna-0.2.0.tar.gz.
File metadata
- Download URL: atuna-0.2.0.tar.gz
- Upload date:
- Size: 13.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.8.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9a5f15689a427320e0fe6612d2b9da38ca34388407db3b8cad04583b7c5161dc
|
|
| MD5 |
da9def7e547561bb061b651385bf3b37
|
|
| BLAKE2b-256 |
5190de7f1af96232f91477d1be71d0b62a9dc52643a3b64ee85f79e3e03b8d91
|
File details
Details for the file atuna-0.2.0-py3-none-any.whl.
File metadata
- Download URL: atuna-0.2.0-py3-none-any.whl
- Upload date:
- Size: 4.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.8.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9f79b8d3a0b00cb1d8ddc419a8c0104a527ebf9b8ca3fe5fa5356b5529973d84
|
|
| MD5 |
2e8a526e09dd9e033f3adf10118fdf57
|
|
| BLAKE2b-256 |
1694c9f26b72403e7943637f9921a017b9993ec199937fde175e04a0e811ddd5
|