File size: 5,870 Bytes
b7573e1 ae8bebf b7573e1 ae8bebf b7573e1 ae8bebf b7573e1 7ae30ec 91cde09 7ae30ec 8207ae5 7ae30ec 91cde09 7ae30ec 91cde09 7ae30ec 91cde09 7ae30ec 91cde09 4886942 91cde09 7ae30ec 91cde09 7ae30ec 91cde09 7ae30ec 91cde09 b839726 7ae30ec 91cde09 7ae30ec 91cde09 4886942 7ae30ec 4886942 ae8bebf | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 | ---
license: mit
base_model: Qwen/Qwen2.5-0.5B
tags:
- text-generation
- causal-lm
- grpo
- reasoning
- reinforcement-learning
- mini-llm
- text-generation-inference
- lm-evaluation-harness
datasets:
- openai/gsm8k
- openai/openai_humaneval
- cais/mmlu
- allenai/ai2_arc
- bespokelabs/Bespoke-Stratos-17k
language:
- en
pipeline_tag: text-generation
metrics:
- accuracy
- exact_match
model-index:
- name: Atomight-V2.1-0.5B-Inference
results:
- task:
type: text-generation
name: ARC-Challenge
dataset:
name: AI2 ARC-Challenge
type: allenai/ai2_arc
config: ARC-Challenge
split: test
metrics:
- name: Accuracy
type: acc
value: 0.30802
- name: Accuracy (Norm)
type: acc_norm
value: 0.33788
- task:
type: text-generation
name: GSM8K
dataset:
name: GSM8K
type: openai/gsm8k
config: main
split: test
metrics:
- name: Exact Match (Strict)
type: exact_match
value: 0.19788
- name: Exact Match (Flexible)
type: exact_match
value: 0.32449
- task:
type: text-generation
name: ARC-Easy
dataset:
name: AI2 ARC-Easy
type: allenai/ai2_arc
config: ARC-Easy
split: test
metrics:
- name: Accuracy
type: acc
value: 0.65446
- name: Accuracy (Norm)
type: acc_norm
value: 0.59343
- task:
type: text-generation
name: HellaSwag
dataset:
name: HellaSwag
type: Rowan/hellaswag
split: validation
metrics:
- name: Accuracy
type: acc
value: 0.40709
- name: Accuracy (Norm)
type: acc_norm
value: 0.52350
---
# Atomight-V2.1-0.5B-Inference
<p align="center">
<img src="OfficialAtomight.png" alt="Atomight Logo" width="500" style="max-width: 100%;">
</p>
**Atomight-V2.1-0.5B-Inference** is an ultra-compact, reasoning-oriented causal language model developed under the **Atomight Ecosystem**. Built on a Qwen-derived 494M parameter foundation, the model has been refined using **GRPO (Group Relative Policy Optimization)** reinforcement tuning.
Despite its tiny physical footprint, Atomight-V2.1-0.5B targets highly efficient edge-device reasoning, structured text outputs, lightweight coding assistance, and rapid deployment workflows under severe compute constraints.
### 🚀 Key Highlights
- **Parameter Footprint:** ~494M parameters (Loads into ~1GB VRAM at FP16).
- **Training Paradigm:** GRPO reinforcement learning focusing on high-signal reasoning vectors instead of brute-force dataset scale.
- **Edge-Optimized:** Designed specifically for low-overhead mobile, local, and browser-based inference loops (Google Colab / Kaggle native workflow).
---
## 📊 Evaluation & Benchmark Results
Official evaluations were conducted using the **EleutherAI LM Evaluation Harness** at FP16 precision.
### Core Evaluation Metrics
| Benchmark Task | Metric Typology | Atomight-V2.1-0.5B Score | Focus Domain |
| :--- | :--- | :--- | :--- |
| **ARC-Easy** | Accuracy (Normalized) | **59.34%** | Scientific Fact Retrieval |
| **HellaSwag** | Accuracy (Normalized) | **52.35%** | Commonsense Reasoning & Next-Sentence Prediction |
| **ARC-Challenge** | Accuracy (Normalized) | **33.79%** | Hard Analytical Exclusion Logic |
| **GSM8K (Flexible Extract)** | Exact Match (Regex Clean) | **32.45%** | Mathematical Thought & Resolution |
| **GSM8K (Strict)** | Exact Match (Rigid Parse) | **19.79%** | Formatted Mathematical Output |
<p align="center">
<img src="OfficialBenchmarkAtomight2.1.png" alt="Atomight V2.1 Benchmark" width="500" style="max-width: 100%;">
</p>
### 🔍 Comparative Engineering Insights
* **Punching Above Weight Classes:** Atomight-V2.1-0.5B outpaces Meta's larger **Llama-3.2-1B-Instruct** on localized logic-retrieval metrics, clearing **59.3%** on ARC-Easy and **33.8%** on ARC-Challenge compared to Llama's *56.7%* and *31.8%* respectively.
* **The Reasoning Gap:** On mathematical reasoning (GSM8K), when evaluated with **Flexible Extraction parsing (32.45%)**, Atomight demonstrates higher raw mathematical accuracy than both Qwen2.5-0.5B-Instruct (*26.8%*) and Llama-3.2-1B-Instruct (*24.4%*).
* **The Formatting Note:** The delta between Atomight's Strict Math score (19.8%) and Flexible Math score (32.5%) stems from the internal reasoning tokens generated during the inference step. While the mathematical conclusion is correct nearly 1/3 of the time, the model frequently bypasses rigid formatting constraints in favor of dense thinking traces.
---
## 💻 Quickstart: Inference Execution
Atomight utilizes system and sequence prompts to partition thinking spaces. For optimal reasoning convergence, use explicit `<thinking>` and `<answer>` encapsulation layers.
```python
import torch
from transformers import AutoModelForCausalLM, AutoTokenizer
model_id = "NovatasticRoScript/Atomight-V2.1-0.5B-Inference"
tokenizer = AutoTokenizer.from_pretrained(model_id)
model = AutoModelForCausalLM.from_pretrained(
model_id,
torch_dtype=torch.float16,
device_map="auto"
)
# Structuring system guidelines for GRPO activation
messages = [
{
"role": "system",
"content": "You are a reasoning model. Think inside <thinking> and answer inside <answer>."
},
{
"role": "user",
"content": "A farmer has 12 apples. He gives 4 to his neighbor and loses 2 on the way home. How many apples does he have left?"
}
]
inputs = tokenizer.apply_chat_template(
messages,
tokenize=True,
add_generation_prompt=True,
return_tensors="pt"
).to("cuda")
with torch.no_grad():
outputs = model.generate(
inputs,
max_new_tokens=250,
temperature=0.01,
pad_token_id=tokenizer.eos_token_id
)
print(tokenizer.decode(outputs[0], skip_special_tokens=True))
|