MAGNETAR Mascot

MAGNETAR-50M-ID

Model bahasa Indonesia 49M parameter — dilatih dari nol, gratis, di Google Colab T4.

License Language Platform Budget Parameters Status


📋 Daftar Isi


📖 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

Training Curves

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
-
Safetensors
Model size
49M params
Tensor type
F32
·
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support