Instructions to use Veenn/magnetar-50m-id with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Transformers
How to use Veenn/magnetar-50m-id with Transformers:
# Use a pipeline as a high-level helper from transformers import pipeline pipe = pipeline("text-generation", model="Veenn/magnetar-50m-id", trust_remote_code=True)# Load model directly from transformers import AutoModelForCausalLM model = AutoModelForCausalLM.from_pretrained("Veenn/magnetar-50m-id", trust_remote_code=True, dtype="auto") - Notebooks
- Google Colab
- Kaggle
- Local Apps Settings
- vLLM
How to use Veenn/magnetar-50m-id with vLLM:
Install from pip and serve model
# Install vLLM from pip: pip install vllm # Start the vLLM server: vllm serve "Veenn/magnetar-50m-id" # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:8000/v1/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "Veenn/magnetar-50m-id", "prompt": "Once upon a time,", "max_tokens": 512, "temperature": 0.5 }'Use Docker
docker model run hf.co/Veenn/magnetar-50m-id
- SGLang
How to use Veenn/magnetar-50m-id 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 "Veenn/magnetar-50m-id" \ --host 0.0.0.0 \ --port 30000 # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:30000/v1/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "Veenn/magnetar-50m-id", "prompt": "Once upon a time,", "max_tokens": 512, "temperature": 0.5 }'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 "Veenn/magnetar-50m-id" \ --host 0.0.0.0 \ --port 30000 # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:30000/v1/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "Veenn/magnetar-50m-id", "prompt": "Once upon a time,", "max_tokens": 512, "temperature": 0.5 }' - Docker Model Runner
How to use Veenn/magnetar-50m-id with Docker Model Runner:
docker model run hf.co/Veenn/magnetar-50m-id
- MAGNETAR-50M-ID
- 📋 Daftar Isi
- 📖 Deskripsi
- 🏗️ Arsitektur
- 🔤 HELIX Tokenizer
- 📊 Training
- 📈 Kurva Training
- 🧪 Eval Internal
- A · Residual Stream Decomposition
- B · Dead Neurons
- C · Gradient Norm per Layer
- D · Gradient Similarity antar Sample
- E · Head Specialization
- F · Attention Sink
- G · Cross-Layer Attention Similarity
- H · Probing Classifier
- I · Intrinsic Dimensionality
- J · Anisotropy
- K · Token Cluster Visualization
- L · Calibration
- M · Factual Consistency
- ⚙️ Cara Penggunaan
- 🎯 Intended Use & Limitasi
- 💻 Infrastruktur
- 🗺️ Roadmap
- 🙏 Acknowledgements
- 📋 Daftar Isi
MAGNETAR-50M-ID
Model bahasa Indonesia 49M parameter — dilatih dari nol, gratis, di Google Colab T4.
📋 Daftar Isi
- Deskripsi
- Arsitektur
- HELIX Tokenizer
- Training
- Kurva Training
- Eval Internal
- Cara Penggunaan
- Intended Use & Limitasi
- Infrastruktur
- Roadmap
- Acknowledgements
📖 Deskripsi
MAGNETAR-50M-ID adalah causal language model untuk Bahasa Indonesia yang dilatih dari nol (from scratch) di Google Colab dengan GPU T4 gratis — tanpa biaya sepeser pun.
Model ini adalah penerus spiritual dari Vega-100M-Indo, dirancang ulang dari fondasi dengan fokus pada:
- Efisiensi arsitektur — lebih ramping dari Vega tapi dengan komponen modern (GQA, RoPE, SwiGLU, RMSNorm)
- Tokenizer custom — HELIX Tokenizer yang dioptimasi khusus untuk Bahasa Indonesia, termasuk slang dan code-switching
- Transparansi training — eval internal mendalam (13 test) untuk memahami perilaku model
Model ini dirilis sebagai base model (pretraining checkpoint) — fondasi yang bisa di-fine-tune untuk berbagai downstream task Bahasa Indonesia.
⚠️ Status: Ini adalah checkpoint pretraining di step 6050/8230 (~73%). Training masih berlangsung. Model final akan diupdate setelah training selesai.
🏗️ Arsitektur
MAGNETAR menggunakan arsitektur Transformer decoder custom yang disebut MagnetarLM, dirancang untuk efisiensi maksimal di hardware terbatas.
| Komponen | Nilai |
|---|---|
| Arsitektur | MagnetarLM (Causal LM Custom) |
| Hidden Size (D_MODEL) | 512 |
| Jumlah Layer | 12 |
| Attention Heads | 8 Query / 2 Key-Value (GQA) |
| Head Dimension | 64 |
| FFN Dimension | 1,344 (SwiGLU) |
| Vocab Size | 32,000 (HELIX Tokenizer) |
| Max Sequence Length | 256 token |
| Positional Encoding | RoPE (base=10,000) |
| Normalization | RMSNorm (eps=1e-6) |
| Tied Embeddings | Ya |
| Total Parameter | ~49M |
Desain Arsitektur
Grouped Query Attention (GQA) 8Q:2KV Rasio 8 query head berbagi 2 key-value head. Mengurangi memory footprint KV cache hingga 4× dibanding MHA standar tanpa degradasi performa signifikan. Cocok untuk inference di hardware terbatas.
SwiGLU FFN
Gated activation function dengan formula SwiGLU(x) = SiLU(gate(x)) * value(x). Terbukti lebih efisien dari ReLU/GELU standar. D_FF=1344 dipilih untuk menjaga parameter count di ~49M.
RoPE (Rotary Position Embedding) Positional encoding berbasis rotasi dengan base=10,000. Tidak ada learnable positional embedding — posisi di-encode langsung ke query dan key di setiap layer. Lebih stabil dan generalizable dibanding learned absolute PE.
RMSNorm Root Mean Square Normalization, lebih cepat dari LayerNorm karena tidak menghitung mean. Cast ke float32 sebelum operasi norm untuk mencegah NaN/overflow saat training FP16.
Weight-Tied LM Head Input embedding dan output projection berbagi weight yang sama. Hemat ~16M parameter dibanding unshared head, dan terbukti membantu generalisasi pada model kecil.
Full Causal Attention Semua Layer Berbeda dari Vega yang menggunakan hybrid attention (sliding window + full), MAGNETAR menggunakan full causal attention di semua 12 layer. Dengan seq_len=256, biaya komputasi masih terjangkau dan hasilnya lebih predictable.
🔤 HELIX Tokenizer
HELIX adalah tokenizer custom berbasis SentencePiece Unigram dengan vocab size 32,000, dioptimasi khusus untuk Bahasa Indonesia.
Data Training Tokenizer
Tokenizer ditraining dari dua sumber yang dikombinasikan dengan proporsi seimbang:
| Sumber | Domain | Dokumen |
|---|---|---|
| Reddit r/Indonesia | Informal, slang, code-switching | 696,320 komentar |
| Wikipedia Indonesia | Formal, faktual, akademik | ~26,549 artikel |
Proporsi data dipilih berdasarkan keseimbangan karakter (bukan dokumen) — 50/50 formal vs informal.
Konfigurasi
| Parameter | Nilai | Alasan |
|---|---|---|
model_type |
unigram | Cocok untuk morfologi aglutinatif Bahasa Indonesia |
vocab_size |
32,000 | Balance antara coverage dan efisiensi |
character_coverage |
0.9999 | Coverage maksimal untuk aksara Latin |
byte_fallback |
true | Fallback ke byte untuk karakter aneh/emoji |
split_by_number |
false | Angka tidak dipisah (misal 2025 = 1 token) |
max_sentencepiece_length |
24 | Support kata panjang seperti mempertanggungjawabkan |
Special Tokens — Skema HELIX
HELIX menggunakan skema penamaan unik terinspirasi dari struktur heliks DNA, dengan format:
\HELIX→nama←HELIX/
| Token | ID | Fungsi |
|---|---|---|
\HELIX→pad←HELIX/ |
0 | Padding |
\HELIX→unk←HELIX/ |
1 | Unknown |
\HELIX→start←HELIX/ |
2 | BOS |
\HELIX→end←HELIX/ |
3 | EOS |
\HELIX→user←HELIX/ |
4 | Giliran user (chat) |
\HELIX→assistant←HELIX/ |
5 | Giliran asisten (chat) |
\HELIX→system←HELIX/ |
6 | System prompt |
\HELIX→think.open←HELIX/ |
7 | Buka blok reasoning |
\HELIX→think.close←HELIX/ |
8 | Tutup blok reasoning |
\HELIX→tool.call.open←HELIX/ |
9 | Buka pemanggilan tool |
\HELIX→tool.call.close←HELIX/ |
10 | Tutup pemanggilan tool |
\HELIX→tool.result.open←HELIX/ |
11 | Buka hasil tool |
\HELIX→tool.result.close←HELIX/ |
12 | Tutup hasil tool |
\HELIX→doc.open←HELIX/ |
15 | Buka blok dokumen |
\HELIX→ctx.open←HELIX/ |
17 | Buka blok konteks |
\HELIX→retrieved.open←HELIX/ |
20 | Buka hasil retrieval (RAG) |
\HELIX→code.open←HELIX/ |
23 | Buka blok kode |
\HELIX→memory.open←HELIX/ |
25 | Buka blok memori |
\HELIX→image.open←HELIX/ |
28 | Buka blok gambar (multimodal) |
\HELIX→audio.open←HELIX/ |
30 | Buka blok audio (multimodal) |
\HELIX→reserved.0–9←HELIX/ |
34–43 | Reserved untuk masa depan |
Skema ini dirancang forward-compatible — token untuk multimodal, RAG, tool use, dan reasoning sudah disiapkan sejak tokenizer, bahkan sebelum model dilatih untuk task tersebut.
📊 Training
Dataset
Model ditraining pada Indonesian Web Corpus ~500M token yang diambil dari web crawl berkualitas tinggi, difokuskan pada teks Bahasa Indonesia formal dan semiformal.
Konfigurasi Training
| Parameter | Nilai |
|---|---|
| Sequence Length | 256 token |
| Batch Size | 48 × grad_accum 6 = 288 efektif |
| Learning Rate | 3e-4 (cosine decay) |
| LR Minimum | 1e-5 |
| Warmup Steps | 300 |
| Weight Decay | 0.1 |
| Gradient Clipping | max_norm=1.0 |
| Optimizer | AdamW (β1=0.9, β2=0.95) |
| Precision | FP16 (AMP) |
| Total Steps Target | 8,230 |
Dataset Format
Token dikemas rapat tanpa padding menggunakan teknik packing — semua token dari berbagai dokumen dirangkai menjadi satu stream panjang lalu dipotong per seq_len. Tidak ada token yang terbuang untuk padding. Dataset disimpan sebagai numpy mmap untuk efisiensi RAM.
Loss Masking
Token dengan ID 0–43 (semua special tokens HELIX) di-mask dari loss computation. Model tidak dilatih untuk memprediksi special token — hanya token konten biasa.
📈 Kurva Training
Ringkasan per 1000 Step
| Range | Loss Awal | Loss Akhir | Δ Loss | Fase |
|---|---|---|---|---|
| 0 – 500 | ~9.82 | 5.83 | -3.99 | Rapid Learning + Warmup |
| 500 – 1000 | 5.83 | 5.02 | -0.81 | Momentum Building |
| 1000 – 2000 | 5.02 | 4.42 | -0.60 | Overdrive |
| 2000 – 3000 | 4.42 | 4.28 | -0.14 | Stabilisasi |
| 3000 – 4000 | 4.28 | 4.10 | -0.18 | Fine Convergence |
| 4000 – 5200 | 4.10 | 4.07 | -0.03 | Plateau Awal |
| 4850 – 6050 | 4.15 | 4.12 | -0.03 | Sesi 2 (continued) |
Loss di step 6050: 4.1183 · Perplexity: 61.5
🧪 Eval Internal
Sebelum upload, model dievaluasi menggunakan 13 test internal (eval_v4) untuk memahami perilaku representasi dan training dynamics.
A · Residual Stream Decomposition
Mengukur kontribusi attention vs FFN ke residual stream per layer.
| Observasi | Detail |
|---|---|
| Layer awal (L0) | FFN dominan (ratio_attn=13.6%) — model pakai "memory" |
| Layer tengah (L3–L7) | Attention meningkat (38–43%) — fokus ke konteks |
| Layer dalam (L8–L11) | FFN kembali dominan, hidden_norm melonjak |
| Anomali L8 | FFN norm tertinggi (9.54) — layer paling aktif |
B · Dead Neurons
0/1344 dead neurons di semua layer. Kapasitas model terpakai penuh — tidak ada neuron yang sia-sia. Mean activation meningkat konsisten dari L0 (0.21) ke L11 (0.37), menunjukkan representasi semakin kaya di layer atas.
C · Gradient Norm per Layer
Gradient flow sehat di semua layer tanpa tanda vanishing gradient. L0 punya gradient total tertinggi (51.1) karena menerima signal dari semua layer downstream. Tidak ada layer yang "mati" dari sisi gradient.
D · Gradient Similarity antar Sample
Mean cosine similarity antar gradient: 0.023 (range: -0.023 hingga 0.093).
Nilai rendah ini menunjukkan gradient tiap sample masih cukup ortogonal — model sedang dalam fase belajar aktif, belum konvergen ke solusi tunggal. Normal untuk pretraining di step ini.
E · Head Specialization
96 attention head dikluster berdasarkan behavior:
| Cluster | Jumlah | Karakteristik |
|---|---|---|
| semantic | 78 head | Entropy tinggi, distribusi tersebar — fokus makna |
| copy | 18 head | Entropy rendah, copy score tinggi — fokus token lokal |
Copy heads terkonsentrasi di L3–L8, semantic heads dominan di L0–L2 dan L9–L11. Tidak ada positional-only head — model sudah belajar representasi semantik dari awal.
F · Attention Sink
Token pertama di setiap kalimat menjadi attention sink dengan score 0.44–0.46 — normal untuk model tanpa BOS yang ditempatkan di posisi 0. Tidak ada anomali (token tengah menjadi sink).
G · Cross-Layer Attention Similarity
Mean similarity antar layer: 0.892. Terdapat 38 pasang layer dengan similarity >0.9, terutama di cluster L2–L8.
Ini mengindikasikan redundansi layer di rentang tersebut — kemungkinan karena seq_len=256 yang pendek membuat semua layer "melihat" informasi yang serupa. Akan diatasi di versi berikutnya dengan seq_len lebih panjang.
H · Probing Classifier
Logistic regression di atas hidden state setiap layer:
| Task | Semua Layer |
|---|---|
| Animat vs Inanimat | 100% accuracy |
| Semantic Domain | 100% accuracy |
Representasi linguistik sudah terbentuk sejak L0 dan konsisten hingga L11.
I · Intrinsic Dimensionality
| Layer | PCA95 | Participation Ratio |
|---|---|---|
| L0 | 91 dim | 30.5 |
| L4 | 84 dim | 11.1 |
| L8 | 61 dim | 3.0 ← anomali |
| L10 | 92 dim | 31.1 |
| L11 | 89 dim | 29.5 |
L8 collapse ke dimensionalitas sangat rendah (PR=3.0) — konsisten dengan anomali yang terdeteksi di Test A dan C. Layer ini berperilaku sebagai bottleneck.
J · Anisotropy
Semua layer dalam range sehat (avg cosine 0.08–0.29). Tidak ada layer yang collapse ke satu arah (anisotropy ekstrem). Representasi terdistribusi dengan baik di ruang embedding.
K · Token Cluster Visualization
Embedding space menunjukkan cluster yang terorganisir berdasarkan domain semantik. Hidden state layer terakhir memisahkan kalimat berdasarkan topik dengan jelas.
L · Calibration
| Metrik | Nilai |
|---|---|
| ECE (Expected Calibration Error) | 0.0428 |
| Overall Accuracy | 15.1% |
| Mean Confidence | 15.2% |
ECE 0.043 sangat baik — model well-calibrated, artinya confidence-nya selaras dengan actual accuracy. Accuracy 15.1% rendah tapi wajar untuk pretraining base model tanpa fine-tuning.
M · Factual Consistency
Score: 0/4 topic groups konsisten.
Model belum konsisten menjawab pertanyaan faktual yang sama dengan paraphrase berbeda. Ini expected untuk pretraining base model — factual consistency adalah job dari instruction tuning, bukan pretraining.
⚙️ Cara Penggunaan
⚠️ Penting: Model ini menggunakan arsitektur dan tokenizer custom. Wajib menambahkan
trust_remote_code=True.
Install
pip install transformers sentencepiece safetensors
Basic Inference
from transformers import AutoTokenizer, AutoModelForCausalLM
import torch
tokenizer = AutoTokenizer.from_pretrained(
"Veenn/magnetar-50m-id",
trust_remote_code=True
)
model = AutoModelForCausalLM.from_pretrained(
"Veenn/magnetar-50m-id",
trust_remote_code=True
)
model.eval()
prompt = "Teknologi kecerdasan buatan saat ini"
inputs = tokenizer(prompt, return_tensors="pt")
with torch.no_grad():
outputs = model.generate(
**inputs,
max_new_tokens = 100,
do_sample = True,
temperature = 0.8,
top_p = 0.9,
top_k = 50,
repetition_penalty = 1.3,
)
print(tokenizer.decode(outputs[0], skip_special_tokens=True))
Recommended Generation Config
generation_config = {
"max_new_tokens" : 100,
"do_sample" : True,
"temperature" : 0.8,
"top_p" : 0.9,
"top_k" : 50,
"repetition_penalty" : 1.3,
"no_repeat_ngram_size": 3,
"min_new_tokens" : 10,
}
Akses Special Tokens HELIX
# Chat template manual
bos = tokenizer.bos_token # \HELIX→start←HELIX/
user_tok = "\HELIX→user←HELIX/"
asst_tok = "\HELIX→assistant←HELIX/"
sys_tok = "\HELIX→system←HELIX/"
eos = tokenizer.eos_token # \HELIX→end←HELIX/
prompt = f"{bos}{sys_tok}Kamu adalah asisten AI.{user_tok}Apa itu fotosintesis?{asst_tok}"
🎯 Intended Use & Limitasi
✅ Cocok untuk
- Fine-tuning downstream task Bahasa Indonesia (klasifikasi, NER, QA, summarization)
- Basis eksperimen arsitektur LM skala kecil
- Penelitian NLP Bahasa Indonesia
- Pretraining experiments dengan Indonesian web corpus
- Deployment edge/lokal (49M param, ringan)
❌ Tidak cocok untuk
- Penggunaan langsung sebagai chatbot/asisten (belum instruction-tuned)
- Factual QA tanpa fine-tuning
- Aplikasi produksi yang memerlukan akurasi faktual tinggi
- Teks panjang >256 token (seq_len terbatas)
⚠️ Limitasi yang Diketahui
- Factual knowledge lemah — base model, bukan instruction-tuned
- Max sequence 256 token — pendek untuk dokumen panjang
- Cross-layer redundancy tinggi (L2–L8) karena seq_len pendek
- Layer 8 berperilaku sebagai bottleneck (intrinsic dim rendah)
- Training masih ~73% selesai pada checkpoint ini
💻 Infrastruktur
| Item | Detail |
|---|---|
| Platform | Google Colab (Free Tier) |
| GPU | NVIDIA Tesla T4 (16GB VRAM) |
| VRAM Usage | ~10.1 GB |
| Throughput | ~24,000 token/detik |
| Framework | PyTorch + HuggingFace Transformers |
| Precision | FP16 (AMP) |
| Budget | $0 |
🗺️ Roadmap
- v1.0-final — Training selesai step 8230, upload checkpoint final
- MAGNETAR-50M-ID-Instruct — Instruction tuning dengan dataset Bahasa Indonesia
- Continued Pretraining — Extended training dengan seq_len lebih panjang (512+) untuk kurangi cross-layer redundancy
- MAGNETAR-100M-ID — Scale up ke 100M parameter dengan arsitektur yang sama
🙏 Acknowledgements
- Google Colab — untuk akses GPU T4 gratis yang membuat proyek ini mungkin
- HuggingFace — untuk ekosistem transformers dan hosting model
Dilatih dari nol. Gratis. Untuk Bahasa Indonesia.
MAGNETAR-50M-ID · Apache 2.0 · @Veenn
- Downloads last month
- -