Instructions to use Siddh07ETH/Atlas-Coder-2-0.5B with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Transformers
How to use Siddh07ETH/Atlas-Coder-2-0.5B with Transformers:
# Use a pipeline as a high-level helper from transformers import pipeline pipe = pipeline("text-generation", model="Siddh07ETH/Atlas-Coder-2-0.5B") messages = [ {"role": "user", "content": "Who are you?"}, ] pipe(messages)# Load model directly from transformers import AutoTokenizer, AutoModelForCausalLM tokenizer = AutoTokenizer.from_pretrained("Siddh07ETH/Atlas-Coder-2-0.5B") model = AutoModelForCausalLM.from_pretrained("Siddh07ETH/Atlas-Coder-2-0.5B", device_map="auto") messages = [ {"role": "user", "content": "Who are you?"}, ] inputs = tokenizer.apply_chat_template( messages, add_generation_prompt=True, tokenize=True, return_dict=True, return_tensors="pt", ).to(model.device) outputs = model.generate(**inputs, max_new_tokens=40) print(tokenizer.decode(outputs[0][inputs["input_ids"].shape[-1]:])) - Notebooks
- Google Colab
- Kaggle
- Local Apps Settings
- vLLM
How to use Siddh07ETH/Atlas-Coder-2-0.5B with vLLM:
Install from pip and serve model
# Install vLLM from pip: pip install vllm # Start the vLLM server: vllm serve "Siddh07ETH/Atlas-Coder-2-0.5B" # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:8000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "Siddh07ETH/Atlas-Coder-2-0.5B", "messages": [ { "role": "user", "content": "What is the capital of France?" } ] }'Use Docker
docker model run hf.co/Siddh07ETH/Atlas-Coder-2-0.5B
- SGLang
How to use Siddh07ETH/Atlas-Coder-2-0.5B with SGLang:
Install from pip and serve model
# Install SGLang from pip: pip install sglang # Start the SGLang server: python3 -m sglang.launch_server \ --model-path "Siddh07ETH/Atlas-Coder-2-0.5B" \ --host 0.0.0.0 \ --port 30000 # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:30000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "Siddh07ETH/Atlas-Coder-2-0.5B", "messages": [ { "role": "user", "content": "What is the capital of France?" } ] }'Use Docker images
docker run --gpus all \ --shm-size 32g \ -p 30000:30000 \ -v ~/.cache/huggingface:/root/.cache/huggingface \ --env "HF_TOKEN=<secret>" \ --ipc=host \ lmsysorg/sglang:latest \ python3 -m sglang.launch_server \ --model-path "Siddh07ETH/Atlas-Coder-2-0.5B" \ --host 0.0.0.0 \ --port 30000 # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:30000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "Siddh07ETH/Atlas-Coder-2-0.5B", "messages": [ { "role": "user", "content": "What is the capital of France?" } ] }' - Docker Model Runner
How to use Siddh07ETH/Atlas-Coder-2-0.5B with Docker Model Runner:
docker model run hf.co/Siddh07ETH/Atlas-Coder-2-0.5B
⚡ Atlas-Coder-2-0.5B
🛠️ Atlas-Coder-2-0.5B: The Top Sub-1B Coding Model
Ranked #Top 5 globally for strictly sub-1B parameter models on the EvalPlus (HumanEval+) strict benchmark.
Model Description
Atlas-Coder-2-0.5B is the flagship model of the Pluto AI research project by Siddharth N.R. — the second generation of the Atlas-Coder series and the most focused coding model released under the Pluto AI brand to date.
Built on top of Qwen2.5-Coder-0.5B-Instruct, Atlas-Coder-2 is trained exclusively on 50K execution-verified OSS-Instruct samples — real open-source Python functions that have been independently verified to execute correctly. This single-source, high-purity data strategy maximizes alignment with HumanEval+ and MBPP+ benchmark formats while keeping the training signal clean and consistent.
Unlike V1 which trained from the base model and used a 4-source mixture, Atlas-Coder-2 starts from an instruction-tuned foundation and specializes it further on execution-verified code. The result is a sharper, more reliable code generator with a lower hallucination rate on self-contained Python tasks.
Research Goal: Demonstrate that a sub-500M parameter model, fine-tuned exclusively on execution-verified code in a single Kaggle session, can match or exceed the coding performance of officially released instruct variants and outperform models up to 3× its parameter count.
📊 Benchmarks
Competitor scores from official technical reports.
⚡ Edge Performance: Tested locally on an M2 MacBook Air (8GB RAM) using LM Studio with the F16 GGUF. Achieved 75 tokens/second generation speed. Because the model uses native FP16 precision, it bypasses quantization overhead and fully utilizes Apple Silicon's Metal FP16 vector cores. Zero GPU required.
GGUF Quantizations
What Changed from V1
| Property | Atlas-Coder-0.5B (V1) | Atlas-Coder-2-0.5B (V2) |
|---|---|---|
| Base model | Qwen2.5-Coder-0.5B Base | Qwen2.5-Coder-0.5B Instruct |
| Data sources | 4 (Magicoder + OSS + CodeFeedback + TACO) | 1 (OSS-Instruct exec-verified only) |
| Training samples | ~80K (mixed quality) | 50K (100% exec-verified) |
| LoRA rank | r=64 | r=32 (faster, leaner) |
| Epochs | 3 | 1 (instruct base needs less) |
| Sequence length | 1024 | 1024 |
| Response masking | ✅ | Standard LM loss |
| Final loss | 0.0294 | 0.0596 (healthy — not overfit) |
| Training time | ~42h 44m | ~9.5h |
| Fits in 1 Kaggle session | ❌ (needed resume) | ✅ |
The key architectural insight of V2: starting from an instruct model means the model already knows how to follow instructions and stop generating. V2 doesn't need to re-learn conversation structure — it only needs to deepen its Python code generation capability. This allows a single clean epoch on a smaller, higher-quality dataset to outperform a longer multi-epoch run on a noisier mixture.
Training Details
| Property | Value |
|---|---|
| Base Model | Qwen/Qwen2.5-Coder-0.5B-Instruct |
| Parameters | ~494 Million |
| Method | QLoRA (4-bit NF4 + LoRA) |
| LoRA Rank | r=32, α=64 |
| LoRA Dropout | 0.05 |
| LoRA Target Modules | q_proj, k_proj, v_proj, o_proj, gate_proj, up_proj, down_proj |
| Trainable Parameters | 17,596,416 |
| Training Epochs | 1 |
| Training Steps | ~1,568 (resumed from checkpoint 250) |
| Final Training Loss | 0.0596 |
| Precision | FP16 (forced — T4 sm_75 does not support BF16) |
| Optimizer | AdamW 8-bit (Paged) |
| Learning Rate | 1e-4 (cosine schedule) |
| Warmup Steps | 100 |
| Effective Batch Size | 32 (2 × 16 grad accum) |
| Sequence Length | 1024 tokens |
| Hardware | Tesla T4 (16 GB VRAM) — Kaggle free tier |
| Training Time | ~9.5 hours (single session) |
| Framework | Transformers 4.52.4 + PEFT 0.17.0 + TRL 0.19.1 |
| Chat Template | ChatML (inherited from base instruct model) |
Training Data
| Dataset | Samples | Why This Dataset |
|---|---|---|
| bigcode/self-oss-instruct-sc2-exec-filter-50k | 50,154 (train) + 508 (eval) | 100% execution-verified. Generated from real open-source Python. Single-function format directly mirrors HumanEval+ problem structure. No hallucinated solutions — every completion has been independently run and confirmed correct. |
Why single-source? The V1 multi-dataset mixture introduced noise from TACO (competitive programming verbosity) and CodeFeedback (multi-turn debug style), both of which poorly align with HumanEval+ single-function completion format. V2 eliminates this noise entirely. The OSS-Instruct exec-filtered dataset is already the highest-ROI data source for HumanEval+ performance — using 50K samples of it exclusively produces a cleaner gradient signal than mixing 80K samples of heterogeneous quality.
Key Design Decisions
1. Instruct base = faster convergence
Starting from Qwen2.5-Coder-0.5B-Instruct means the ChatML format, stop-token behavior, and instruction-following discipline are already in place. The model only needs to deepen code generation quality — not learn conversation structure from scratch. This makes 1 epoch sufficient where V1 needed 3.
2. Execution-verified data only Every training sample in OSS-Instruct exec-filter-50k has been independently run and verified to produce correct output. This eliminates a significant noise source that affects most open-source fine-tuning datasets: plausible-looking but incorrect code completions that silently degrade model performance on pass@1 metrics.
3. r=32 LoRA for speed without sacrificing quality At the 0.5B parameter scale, r=64 provides diminishing returns over r=32 while doubling the LoRA parameter count and training time. The r=32 configuration trains ~40% faster on the T4, allowing full training within a single Kaggle 9-hour session without checkpoint recovery.
4. Single Kaggle session design The entire pipeline — install → load → data → train → merge → upload → GGUF — is designed to complete within a single 9-hour Kaggle session. The 3-layer checkpoint recovery system (local → HuggingFace Hub → fresh start) handles session interruptions automatically when they occur.
Usage
Basic Inference
from transformers import AutoModelForCausalLM, AutoTokenizer
import torch
model = AutoModelForCausalLM.from_pretrained(
"Siddh07ETH/Atlas-Coder-2-0.5B",
torch_dtype=torch.float16,
device_map="auto",
)
tokenizer = AutoTokenizer.from_pretrained("Siddh07ETH/Atlas-Coder-2-0.5B")
messages = [
{
"role": "system",
"content": "You are a helpful coding assistant."
},
{
"role": "user",
"content": "Write a Python function to find all prime numbers up to n using the Sieve of Eratosthenes."
}
]
text = tokenizer.apply_chat_template(
messages, tokenize=False, add_generation_prompt=True
)
inputs = tokenizer(text, return_tensors="pt").to(model.device)
with torch.no_grad():
output = model.generate(
**inputs,
max_new_tokens=512,
temperature=0.2,
do_sample=True,
top_p=0.9,
repetition_penalty=1.1,
)
response = tokenizer.decode(
output[0][inputs.input_ids.shape[1]:],
skip_special_tokens=True
)
print(response)
Low Memory Inference (4-bit)
from transformers import AutoModelForCausalLM, AutoTokenizer, BitsAndBytesConfig
import torch
quant_config = BitsAndBytesConfig(
load_in_4bit=True,
bnb_4bit_quant_type="nf4",
bnb_4bit_compute_dtype=torch.float16,
)
model = AutoModelForCausalLM.from_pretrained(
"Siddh07ETH/Atlas-Coder-2-0.5B",
quantization_config=quant_config,
device_map="auto",
)
tokenizer = AutoTokenizer.from_pretrained("Siddh07ETH/Atlas-Coder-2-0.5B")
GGUF (Ollama / LM Studio / llama.cpp)
GGUF quantizations for CPU inference are available at:
Runs at 40+ tokens/second on a laptop CPU. No GPU required.
Recommended Generation Settings
| Setting | Value | Reason |
|---|---|---|
temperature |
0.1–0.3 | Low temperature for precise code generation |
top_p |
0.9 | Focused vocabulary sampling |
repetition_penalty |
1.1 | Prevents repeated patterns |
max_new_tokens |
256–512 | Sufficient for most single-function tasks |
do_sample |
True |
Required when temperature < 1.0 |
Important: Benchmark Evaluation Setup
If you are evaluating this model with EvalPlus, you must pass --model_type instruct:
python -m evalplus.evaluate --model Siddh07ETH/Atlas-Coder-2-0.5B --dataset humaneval --backend hf --model_type instruct --greedy
Without --model_type instruct, EvalPlus sends raw function signatures without the ChatML wrapper. This causes the model to score near 0% — which is an evaluation configuration error, not a reflection of model quality. The model was trained exclusively on ChatML-formatted prompts and will not respond meaningfully to bare code signatures.
Model Lineage
Atlas-Coder-2 is the second release in the Atlas-Coder series under Pluto AI. Each version refines the strategy based on lessons from the previous run.
| Version | Base | Strategy | Status |
|---|---|---|---|
| Atlas-Coder-0.5B (V1) | Qwen2.5-Coder-0.5B Base | 4-source 80K mixture, 3 epochs, r=64 | Published |
| Atlas-Coder-2-0.5B (V2) | Qwen2.5-Coder-0.5B-Instruct | 50K exec-verified, 1 epoch, r=32 | Flagship — this model |
Related Models
| Model | Parameters | Description |
|---|---|---|
| Atlas-Coder-2-0.5B (this) | 494M | Flagship — exec-verified, instruct base |
| Atlas-Coder-0.5B (V1) | 494M | First generation, base model fine-tune |
| Pluto-Genesis-0.6B | 596M | General reasoning, math, and code |
Limitations
- Size: At ~494M parameters this model will make mistakes on complex multi-file tasks and deeply nested logic. Always verify generated code before running it in production.
- Context length: Trained on sequences up to 1024 tokens. Performance may degrade on prompts or completions requiring longer context.
- Language bias: Optimized primarily for Python. Other languages will work but with lower reliability than a multilingual fine-tune.
- Single-domain training: Trained entirely on OSS-Instruct data. May underperform on highly domain-specific code (e.g., embedded systems, CUDA kernels) that differs from typical open-source Python patterns.
- Research only: Not intended for production deployment without further evaluation and safety testing.
Author
Siddharth N.R Graduated B.Tech — AI & Data Science Pluto AI Research
Citation
@misc{atlascoder2_2026,
author = {Siddharth N.R.},
title = {Atlas-Coder-2-0.5B: Execution-Verified QLoRA Fine-Tuning from an Instruct Base for Sub-1B Code Generation},
year = {2026},
publisher = {HuggingFace},
url = {https://huggingface.co/Siddh07ETH/Atlas-Coder-2-0.5B}
}
License
Apache 2.0 — see LICENSE. Base model Qwen2.5-Coder-0.5B-Instruct is also Apache 2.0.
- Downloads last month
- 214
Model tree for Siddh07ETH/Atlas-Coder-2-0.5B
Base model
Qwen/Qwen2.5-0.5B