In this categoryLocal AI · 70
- Speridlabs Idol: Turn One Photo into a 3D Gaussian Splat, and How to Run It
- LFM3-Omni-2B: Liquid AI's 2.2B Any-to-Any Model, and How to Run It Locally
- SenseNova-Loop-9B-Preview: A Looped Multimodal Model for Long-Context Work, and How to Run It
- How to Run WeVisOne-VL-4B Locally: Tencent's All-in-One Vision Model
- How to Run Mistral Large 4 (1T-A52B) Locally: The Hardware It Actually Needs
- How to Run Hy-SimulMT-30B-A3B-FP8 Locally: Tencent's Real-Time Speech Translator
- How to Run Chroma1-HD Locally: An Open Base Model for Text-to-Image
- How to Run Nemotron 3.5 Parse Locally: NVIDIA's 630M Document Parsing Model
- How to Run Recursive Flint Locally: a 39.8B Coding Model You Can Actually Fit on a Mac
- How to Run Phonon-40M-en Locally: Gradium's 40M-Parameter Text-to-Speech Model
- How to Run Timestral-209M Locally: Mistral's 209M-Parameter Time Series Forecasting Model
- How to Run Indra OCR Locally: a 1M-Parameter CPU Model That Hits 49 Pages a Second
- How to Run AuroraIMG-6M Locally: AuroraAI-Research's 6.82M-Parameter Text-to-Image Model
- How to Run Maya-1 Locally: a 3.3B-Parameter Text-to-Speech Model with Voice Design
- How to Run Sopro V2 Turbo Locally: a 120M-Parameter Voice Cloning TTS Model
- How to Run Kova TTS 1 Locally: a 1.25B-Parameter Voice Cloning Model for Narration
- How to Run Whistle Locally: Cactus's 16.9MB On-Device Speech Recognition Model
- How to Run Antalia-2 Mini Locally: a 7.6M-Parameter Turkish TTS Model
- How to Run Supra2-IMG Locally: SupraLabs' 104M-Parameter Text-to-Image Model
- How to Run VisionHOPE Locally: PSRben's Self-Modifying Vision Backbone
- Fish Audio S1-Mini: What It Is and How to Actually Try It
- How to Run SupraTTS-0.1-Beta Locally: A Tiny Glow-TTS Voice Model
- How to Run Nemotron 3 Diarization Locally: Streaming Speaker Tagging in 99M Parameters
- How to Run Freya-TTS Locally: A 183M-Parameter Turkish Text-to-Speech Model
- How to Run Audio8 ASR Infinite Locally: Streaming Speech Recognition That Never Stops
- How to Run TeleOCR Locally: One Model for Scanned and Photographed Documents
- How to Run Xing4.0-29B-A4B Locally: A 256K-Context MoE Model for Agent Tasks
- How to Run IndicF5 Locally: Voice Cloning for 11 Indian Languages
- How to Run Fish Audio S2 Pro Locally: Multilingual TTS with Inline Emotion Control
- How to Run ZDTaichu5.0-9B Locally: A 9.79B Vision-Language Model Built for Spatial Reasoning
- How to Run Qwen3-TTS-12Hz-1.7B-VoiceDesign Locally: Voice Design From a Text Description
- How to Run YuE2-3B Locally: Open Source Music Generation That Beats Suno v5 on Benchmarks
- MiniCPM5-2B: Install and Run OpenBMB's 2B Model That Outscores 4B Rivals
- BERT Base Uncased: Specs, How to Run It, and Why It's Still Trending in 2026
- How to Run tencent/AuK Locally: Zero-Shot TTS, Voice Cloning and Speech Editing
- Stable Diffusion 3.5 Medium: What's Different From SDXL and Flux
- Qwen-Image-2512: The Text-to-Image Model That Renders Real Text
- How to Run Irodori-TTS Anime Locally: Japanese Voice Cloning and Voice Design
- How to Run Breeze TTS 2 Locally: Voice Clone, Voice Design and Voice Direction
- How to Run Kokoro-82M Locally: the Fastest Open-Weight TTS Model
- How to Install Ollama on macOSStart
- How to Install Ollama on Windows
- How to Run Llama 3 Locally with Ollama
- How to Pick the Right Local AI Model for Your Hardware
- Best GGUF Models to Run by VRAM Tier (8GB, 12GB, 16GB, 24GB, 48GB)
- Run LLMs in Your Browser With WebGPU: No Install, No Server (WebLLM)
- How to Use Ollama as a Drop-In OpenAI API
- GGUF vs MLX vs NVFP4: Local AI Quantization Formats Explained
- Best GPU for Running AI Locally in 2026Start
- How Much RAM Do You Need for Local AI?
- Mac vs PC for Local AI: Which Should You Choose?
- How to Build a Local AI Workstation on Any Budget
- How to Set Up Local AI on 8GB of VRAM
- How to Set Up Local AI on 12GB of VRAM
- Best Local LLM for 16 GB VRAM: Setup, Quantization and Real Speed
- How to Set Up Local AI on 24GB of VRAM
- Best Local LLM on Mac M4 16 GB: Setup, MLX vs GGUF and Real Speed
- Best Local LLM on Mac M4 Pro 48GB: Setup, Quantization and Real Speed
How to Fine-Tune Llama 3 on Your Own Data with Unsloth
Install Unsloth, load Llama 3, format your JSONL dataset, run a LoRA training job, and export the result as a GGUF file ready for Ollama.
This guide is the hands-on companion to the LoRA basics overview. You will go from a clean Python environment to a trained adapter merged into a GGUF model file. The whole pipeline runs on a single 24 GB GPU using Unsloth's 4-bit QLoRA path. Expect the training itself to take 20 to 90 minutes depending on dataset size and your hardware.
- A GPU with 16+ GB VRAM and CUDA 11.8 or 12.1 installed
- Python 3.10+ in a virtual environment (conda or venv)
- A JSONL dataset ready to go (see the dataset preparation guide for format)
- A Hugging Face account with access to meta-llama/Meta-Llama-3-8B-Instruct (free to request)
Step 1: Install Unsloth and dependencies
Unsloth has different wheels for different CUDA versions. The command below covers the most common CUDA 12.1 setup. Check the Unsloth README if you are on 11.8.
Step 2: Load the base model with Unsloth
Create a training script. The FastLanguageModel loader handles 4-bit quantization, flash attention, and Unsloth's kernel optimizations in one call. The max_seq_length controls how long each training example can be — 2048 is a good default.
from unsloth import FastLanguageModel
import torch
MAX_SEQ_LENGTH = 2048
DTYPE = None # auto-detect: float16 on older GPUs, bfloat16 on Ampere+
LOAD_IN_4BIT = True # QLoRA — set False for full LoRA if VRAM allows
model, tokenizer = FastLanguageModel.from_pretrained(
model_name="unsloth/Meta-Llama-3-8B-Instruct",
max_seq_length=MAX_SEQ_LENGTH,
dtype=DTYPE,
load_in_4bit=LOAD_IN_4BIT,
)
# Wrap with LoRA adapters
model = FastLanguageModel.get_peft_model(
model,
r=16, # rank — higher = more capacity, more VRAM
target_modules=["q_proj", "k_proj", "v_proj", "o_proj",
"gate_proj", "up_proj", "down_proj"],
lora_alpha=16,
lora_dropout=0, # Unsloth recommends 0
bias="none",
use_gradient_checkpointing="unsloth", # cuts VRAM further
random_state=42,
)Step 3: Load and format your dataset
Unsloth uses the Hugging Face datasets library. Load your JSONL file and apply the Llama 3 chat template so the tokens are formatted exactly as the model was pre-trained to expect.
from datasets import load_dataset
dataset = load_dataset("json", data_files="dataset.jsonl", split="train")
def format_conversations(example):
# tokenizer.apply_chat_template handles <|begin_of_text|>, roles, and <|eot_id|>
text = tokenizer.apply_chat_template(
example["conversations"],
tokenize=False,
add_generation_prompt=False,
)
return {"text": text}
dataset = dataset.map(format_conversations, remove_columns=dataset.column_names)
print(f"Loaded {len(dataset)} examples")
print(dataset[0]["text"][:300]) # sanity check the first exampleStep 4: Configure and run training
Plug the model and dataset into Hugging Face's SFTTrainer. The key hyperparameters are learning rate, batch size, and number of epochs. For most fine-tunes, 3 epochs with a learning rate of 2e-4 is a reliable starting point.
from trl import SFTTrainer
from transformers import TrainingArguments
trainer = SFTTrainer(
model=model,
tokenizer=tokenizer,
train_dataset=dataset,
dataset_text_field="text",
max_seq_length=MAX_SEQ_LENGTH,
args=TrainingArguments(
per_device_train_batch_size=2,
gradient_accumulation_steps=4, # effective batch = 2 * 4 = 8
warmup_steps=10,
num_train_epochs=3,
learning_rate=2e-4,
fp16=not torch.cuda.is_bf16_supported(),
bf16=torch.cuda.is_bf16_supported(),
logging_steps=10,
output_dir="./checkpoints",
save_steps=100,
optim="adamw_8bit", # Unsloth's memory-efficient optimizer
weight_decay=0.01,
lr_scheduler_type="cosine",
seed=42,
),
)
trainer.train()Step 5: Save to GGUF for Ollama
Unsloth can merge the LoRA adapters into the base model and quantize directly to GGUF in one step. The q4_k_m quantization gives the best balance between file size and quality for most use cases.
# Merge adapters into base weights and export
model.save_pretrained_gguf(
"my-llama3-finetuned",
tokenizer,
quantization_method="q4_k_m", # ~4.7 GB for an 8B model
)
print("Saved: my-llama3-finetuned/model-q4_k_m.gguf")Result
You have a .gguf file that contains Llama 3 with your fine-tuned behavior baked in. Copy it to any machine running Ollama and you can run it locally with zero cloud dependency. The next guide in this series covers creating a Modelfile and loading the GGUF into Ollama.
Local models run better with more VRAM. CompareRTX GPUs on Amazonbefore you upgrade.(affiliate link. We may earn a commission at no extra cost. Disclosure)
Watch related tutorials
19:55
28:15
22:40
25:30
14:20
26:10Weekly local AI drops
New models, what runs on your hardware, and the guides to set them up. One email a week, unsubscribe any time.