HelixRDT Mascot

HelixRDT-80M

Helix Recurrent-Depth Transformer — 80.9M parameter, decoder-only, dengan mekanisme looped/recurrent-depth untuk reasoning.

Status Parameters License Purpose


🛑 STATUS: UNTRAINED — BACA INI DULU

Model ini belum dilatih sama sekali. Weight yang ada sekarang hasil random initialization. Kalau kamu load model ini dan coba generate teks, hasilnya token acak, tidak ada satupun kalimat yang masuk akal. Belum ada data yang dilihat model ini.

Repo ini sengaja diupload sebelum training dimulai. Tujuannya biar siapapun yang mau belajar desain looped-transformer, partial RoPE, gated GQA, atau tokenizer HELIX, bisa langsung baca kodenya sekarang tanpa nunggu training kelar. Checkpoint hasil training bakal diupload menyusul begitu tersedia.

Kalau kamu ke sini nyari model yang siap pakai, belum ada. Ini masih dokumentasi arsitektur.


📖 Daftar Isi


📜 Posisi Project & Riwayat

HelixRDT-80M bukan project pertama. Ini project keempat dari serangkaian eksperimen language model dari nol, dan riwayatnya penting untuk ditulis apa adanya.

# Project Params Progress
1 Photon-3M 3M Percobaan paling awal, pakai arsitektur MoE. Ditinggalkan karena MoE di skala sekecil ini tidak efektif. Overhead routing dan expert yang under-utilized bikin MoE baru masuk akal di skala yang jauh lebih besar, di 3M parameter jatuhnya lebih boros daripada dense model biasa.
2 Vega-100M-Indo 96.6M Progress paling jauh sejauh ini secara jumlah step, tiga fase training sampai step 17,500. Tapi ada masalah serius di fondasinya: dilatih pakai knowledge distillation dari Qwen3-0.6B, dan embedding space Vega ikut ketarik ke arah embedding Qwen yang multilingual, sementara Vega sendiri cuma didesain untuk Bahasa Indonesia. Hasilnya embedding space-nya kacau, kata-kata ketarik ke makna yang tidak semestinya karena mengikuti struktur representasi multilingual yang tidak relevan untuk model monolingual. Tokenizer yang dipakai saat itu juga punya masalah sendiri. Kombinasi keduanya bikin model ini tidak layak dilanjutkan ke instruction tuning.
3 Magnetar-50M-ID 49M Restart total dengan arsitektur lebih ringkas dan tokenizer baru (HELIX), dibuat sebagai perbaikan langsung dari masalah tokenizer di Vega. Eval internalnya cukup dalam, 13 macam test mulai dari residual decomposition sampai head specialization. Tapi trainingnya sendiri berhenti di step 6,050 dari target 8,230, belum sampai 75%.
4 HelixRDT-80M (repo ini) 80.9M Restart lagi, kali ini dengan pendekatan berbeda soal apa yang dijanjikan.

Polanya cukup jelas: tiap project baru mulai sebelum yang lama selesai sampai tahap yang benar-benar terpakai. Tapi bukan cuma soal belum sempat lanjut, dua project pertama punya masalah teknis konkret yang bikin lanjut ke tahap berikutnya jadi tidak masuk akal. Ukuran modelnya naik turun (100M, lalu 50M, sekarang 80M) bukan karena rencana scaling, tapi karena tiap kali ada masalah atau ide baru, restart dari nol terasa lebih masuk akal daripada nambal yang lama.

Yang beda di HelixRDT: README ini sengaja tidak menjanjikan instruction tuning. Fokusnya cuma sampai base model yang selesai ditraining dengan baik. Kalau nanti mau lanjut ke instruction tuning atau eksperimen lain, itu jadi project terpisah, bukan janji yang ditempel di sini supaya kelihatan lengkap.

Riwayat di atas ditulis apa adanya, bukan untuk menutupi apapun.


🏗️ Arsitektur HelixRDT

HelixRDT (Helix Recurrent-Depth Transformer) adalah decoder-only causal LM. Bagian ini menjelaskan tiap komponennya dan alasan di baliknya.

Ringkasan Konfigurasi

Komponen Nilai
model_type helix_rdt
Vocab size 32,000
Hidden size (d_model) 768
Jumlah layer fisik (n_unique_layers) 9
Loop factor 2
Depth efektif 18 (9 × 2)
Attention heads 12 Query / 3 Key-Value (GQA 4:1)
Head dimension 64
FFN dimension (SwiGLU) 1,792
Max sequence length 512 token
Positional encoding Partial RoPE (50% rotary, 50% NoPE)
Normalization RMSNorm + Zero-centered QK-Norm
Tied embeddings Ya
Total parameter ~80.9M

Breakdown Parameter

Token embedding (tied):            24,576,000   (30.4%)
9 unique layers (attn+ffn+norm):   55,753,344   (68.9%)
MTP auxiliary head (1 token):         590,592   ( 0.7%)
Final RMSNorm:                            768   (~0.0%)
─────────────────────────────────────────────
TOTAL:                              80,920,704

Embedding menyumbang sekitar 30% dan sisanya di layer. Proporsi ini dijaga supaya nggak ada yang mendominasi terlalu banyak. Kalau embedding kegedean, budget parameter habis buat lookup table doang. Kalau layer kegedean tapi embedding-nya kurang representatif, kualitas prediksinya juga ikut turun.

Desain Arsitektur, Komponen per Komponen

1. Recurrent-Depth (Looped) Layers

Ini bagian intinya. HelixRDT punya 9 layer fisik, tapi tiap layer dipakai ulang 2 kali secara berurutan saat forward pass:

Layer_1 → Layer_2 → ... → Layer_9 → kembali ke Layer_1 → Layer_2 → ... → Layer_9

Parameter yang tersimpan setara 9 layer, tapi compute yang dijalankan setara 18 layer.

Riset soal looped/recurrent-depth transformer menunjukkan model dengan depth efektif tinggi lewat looping bisa mendekati performa transformer non-looped yang parameternya dua kali lebih besar, khususnya di task reasoning. Setiap forward pass dapat kesempatan proses lebih panjang tanpa nambah parameter yang harus disimpan. Ini cocok untuk skenario compute terbatas kayak Colab dengan GPU tunggal 16GB VRAM.

Konsekuensinya, compute per forward pass tetap setara 18 layer, jadi bukan gratis. Yang dihemat cuma parameter tersimpan dan jumlah gradient unik yang perlu diupdate.

2. Gated Grouped-Query Attention (GQA) + Output Gate

GQA dipakai dengan rasio 4:1, 12 query head berbagi 3 key-value head. Ini mengecilkan ukuran KV cache dibanding Multi-Head Attention biasa, dengan penurunan kualitas yang kecil di skala ini.

Ditambahkan juga output gate berupa sigmoid: sebelum hasil attention diproyeksikan ke output, dikalikan dulu elemen-per-elemen dengan gate yang dipelajari dari input yang sama. Teknik ini dipakai di arsitektur seperti Trinity Large dan Qwen3-Next, dan membantu mengurangi attention sink (token pertama menyerap perhatian berlebihan) sekaligus bikin training lebih stabil.

3. Zero-Centered QK-Norm

RMSNorm diterapkan ke Query dan Key sebelum dot-product attention. Versinya zero-centered: dipakai skala (1 + weight) dengan weight diinisialisasi nol, jadi di awal training perilakunya sama persis dengan RMSNorm biasa. Model tetap bisa belajar rescale per-channel seiring training jalan. Pendekatan ini diambil dari Qwen3-Next.

4. Partial RoPE

RoPE cuma diterapkan ke 50% dimensi pertama tiap head (32 dari 64 dimensi). Sisanya nggak dikasih informasi posisi sama sekali (NoPE).

Pendekatan campuran ini dipakai juga di Qwen3-Next dan SmolLM3. Channel yang murni content-based tanpa bias posisi membantu generalisasi untuk pola yang nggak bergantung posisi absolut, sementara channel yang tetap dikasih RoPE menjaga kemampuan model memahami urutan dan jarak antar token.

5. SwiGLU Feed-Forward Network

FFN pakai gated activation: SwiGLU(x) = SiLU(gate_proj(x)) ⊙ up_proj(x), lalu diproyeksikan lewat down_proj. Ini activation standar di hampir semua model modern sekarang (LLaMA, Qwen, Mistral) karena konsisten lebih baik dari ReLU/GELU untuk budget parameter yang sama.

6. Depth-Scaled Residual Init

RMSNorm kedua di tiap block (sebelum FFN) diinisialisasi dengan gain 1/√18 ≈ 0.236 alih-alih 1.0. Kontribusi cabang FFN ke residual stream mulai kecil di awal training, lalu membesar sendiri seiring model belajar skala yang tepat untuk tiap layer. Diambil dari pendekatan Trinity Large, membantu stabilitas training terutama karena depth efektif model ini (18) cukup dalam untuk ukuran parameternya.

7. Multi-Token Prediction (MTP)

Selain memprediksi token t+1 seperti biasa, ada head kecil tambahan yang memprediksi token t+2 dari hidden state di posisi t. Loss-nya dijumlahkan ke loss utama. Teknik ini dipopulerkan DeepSeek dan dipakai juga di model seperti Step 3.5 Flash, terbukti mempercepat konvergensi karena tiap step dapat sinyal gradien lebih banyak. Head MTP ini dibuang saat inference, jadi nggak nambah biaya komputasi waktu model dipakai.

Yang Sengaja Tidak Dipakai

Ada beberapa teknik arsitektur LLM terbaru per Agustus 2026 yang tidak diadopsi: mHC dari DeepSeek V4, Compressed Convolutional Attention, dan teknik context compression untuk 1M+ token. Semua ini didesain untuk masalah di skala jauh lebih besar, model puluhan-ratusan miliar parameter dengan context jutaan token. Di model 80M dengan max_seq_len 512, masalah yang mereka selesaikan itu nggak muncul, jadi mengadopsinya cuma nambah kompleksitas tanpa manfaat.


🔤 Tokenizer HELIX

HelixRDT pakai HELIX Tokenizer, tokenizer custom berbasis Unigram SentencePiece dengan vocab 32,000, dirancang khusus untuk Bahasa Indonesia baik domain formal maupun informal.

Data Training Tokenizer

Sumber Deskripsi Dokumen Karakter
Reddit r/Indonesia Komentar media sosial, slang, percakapan informal 696,320 ~129.3 juta
Wikipedia Indonesia Artikel ensiklopedia, teks formal/akademik ~26,549 ~129.3 juta

Proporsi datanya diseimbangkan berdasarkan jumlah karakter, bukan jumlah dokumen, supaya representasi formal vs informal jadi 50/50. Ini penting karena satu artikel Wikipedia jauh lebih panjang dari satu komentar Reddit.

Pipeline Filtering Data Reddit

Data mentahnya 1,203,109 komentar, melewati beberapa tahap filter:

Tahap Filter Kriteria Dokumen Dibuang
Deleted/Removed Komentar [deleted]/[removed] 5,187
Stickied Mod Post Post yang di-pin moderator 5,015
Panjang < 4 kata, < 15 karakter, atau > 2000 kata 166,018
Score < 1 Downvote atau score 0 51,270
Non-Alpha Ratio Rasio non-alfanumerik > 40% 723
URL Ratio Rasio URL dalam teks > 20% 3,475
Keyword Blacklist Kata kunci spam/konten negatif 3,506
Filter Bahasa (langid) Teks non-Indonesia tanpa kata slang Indo 271,595

Hasil akhirnya 696,320 komentar, sekitar 57.9% dari input awal yang lolos semua filter.

Filter bahasa pakai library langid digabung sama whitelist kata slang Indonesia. Komentar tetap disimpan kalau terdeteksi bahasa Indonesia, Melayu, Jawa, atau Sunda, atau kalau terdeteksi bahasa lain tapi ada kata slang Indonesia di dalamnya. Ini buat mempertahankan komentar code-switching Indonesia-Inggris yang umum banget di percakapan online.

Konfigurasi Tokenizer

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, 2025 jadi 1 token
max_sentencepiece_length 24 Support kata panjang seperti mempertanggungjawabkan

Sempat dilatih dua versi tokenizer buat dibandingkan: Reddit-only dan Mixed (Reddit + Wikipedia). Versi Mixed yang dipakai final, berdasarkan hasil benchmark di bawah.

Benchmark Fertility Score

Fertility score itu rata-rata jumlah token per kata. Makin rendah makin efisien.

Domain Formal (Wikipedia Indonesia, 1,000 sampel):

Tokenizer Fertility Chars/Token
Indo-BERT 1.299 5.60
HELIX-32k Mixed 1.336 5.50
HELIX-32k Reddit-only 1.541 4.81
XLM-RoBERTa (250k vocab) 1.564 4.66
GPT-2 2.778 2.60

Domain Informal (Reddit Indonesia, 1,000 sampel):

Tokenizer Fertility Chars/Token
HELIX-32k Reddit-only 1.300 4.91
HELIX-32k Mixed 1.339 4.76
Indo-BERT 1.596 3.82
XLM-RoBERTa 1.655 3.66
GPT-2 2.465 2.57

HELIX-32k Mixed unggul dari XLM-RoBERTa di kedua domain padahal vocabnya 7.8x lebih kecil (32k vs 250k). Di domain formal, selisihnya cuma 0.037 dari Indo-BERT walau Indo-BERT kemungkinan dilatih penuh di Wikipedia. Di domain informal, HELIX Mixed unggul jauh dari Indo-BERT dengan selisih fertility 0.257.

Special Tokens

Skema penamaan token khususnya terinspirasi dari struktur heliks DNA, format \HELIX→nama←HELIX/. Ada 44 special token total, dirancang forward-compatible, artinya sudah disiapkan sejak level tokenizer walau modelnya sendiri belum tentu langsung memakai semua fungsi itu.

Kategori Contoh Token ID Fungsi
Kontrol dasar pad, unk, start, end 0–3 Padding, unknown, BOS, EOS
Chat roles user, assistant, system 4–6 Giliran percakapan
Reasoning think.open, think.close 7–8 Blok reasoning eksplisit
Tool use tool.call.open/close, tool.result.open/close, tool.name, tool.args 9–14 Pemanggilan dan hasil tool
Dokumen & konteks doc.open/close, ctx.open/close, sep 15–19 Blok dokumen/konteks
RAG retrieved.open/close, source 20–22 Hasil retrieval dan sitasi sumber
Kode code.open/close 23–24 Blok kode
Memori memory.open/close 25–26 Konteks/memori panjang
Persona persona 27 Karakter/persona model
Multimodal image.open/close, audio.open/close 28–31 Placeholder gambar dan audio
Sitasi cite.open/close 32–33 Blok sitasi
Reserved reserved.0reserved.9 34–43 Ekspansi masa depan

Contoh chat template:

\HELIX→start←HELIX/\HELIX→system←HELIX/
Kamu adalah asisten AI berbahasa Indonesia.
\HELIX→user←HELIX/
Halo, apa kabar?
\HELIX→assistant←HELIX/
Halo! Kabar baik, terima kasih sudah bertanya.\HELIX→end←HELIX/

Contoh Tokenisasi

Input Token Jumlah
gue gaskeun aja bro ['gue', 'gas', 'keun', 'aja', 'bro'] 5
wkwkwk parah banget sih ['wkwkwk', 'parah', 'banget', 'sih'] 4
mempertanggungjawabkan semua perbuatannya ['memper', 'tanggung', 'jawab', 'kan', 'semua', 'perbuatan', 'nya'] 7

Kata slang umum kayak wkwkwk, parah, banget, sih masing-masing jadi satu token utuh. Ini nunjukkin coverage yang bagus buat kosakata informal, biasanya jadi titik lemah tokenizer yang cuma dilatih dari korpus formal.


📊 Dataset

Pretraining direncanakan pakai korpus sekitar 1.3B token, full Bahasa Indonesia, campuran dari dua jenis sumber:

  • Web corpus berskala besar yang sudah difilter kualitasnya, mencakup teks Bahasa Indonesia dari berbagai domain, sudah melalui deduplikasi dan filtering standar untuk pretraining LLM.
  • Korpus diskusi komunitas online, teks percakapan informal yang ngasih eksposur ke pola bahasa sehari-hari, slang, dan code-switching yang jarang muncul di teks formal.

Detail komposisi persisnya (rasio, jumlah token per sumber) bakal diumumkan bareng rilis checkpoint pertama.

Soal Bahasa Lain

Arsitektur HelixRDT sendiri tidak spesifik untuk Bahasa Indonesia. Tidak ada bagian dari desain model (attention, FFN, positional encoding) yang bergantung pada bahasa tertentu, jadi secara arsitektur, model ini bisa saja dilatih untuk bahasa apapun atau multilingual.

Yang jadi pembatas justru tokenizer HELIX. Tokenizer ini dilatih khusus dari korpus Bahasa Indonesia (Reddit r/Indonesia + Wikipedia Indonesia), jadi vocab dan fertility score-nya dioptimasi untuk pola morfologi dan kosakata Indonesia. Kalau mau dipakai untuk bahasa lain, tokenizer HELIX ini kemungkinan besar tidak efisien (fertility score tinggi, banyak kata kepotong jadi subword yang tidak natural), dan solusinya bukan mengganti arsitektur, tapi melatih tokenizer baru dari korpus bahasa target atau memakai tokenizer multilingual yang sudah ada.


🧪 Status Training

Saat ini training belum dimulai, masih 0 step.

Belum ada training curve, eval internal, atau contoh output untuk ditunjukkan, karena memang belum ada proses training yang jalan. Begitu training dimulai dan checkpoint pertama tersedia, bagian ini bakal diisi dengan kurva loss, eval internal (mengikuti standar yang sama kayak project sebelumnya: residual decomposition, dead neuron check, gradient norm per layer, head specialization, attention sink), contoh output generasi, dan detail infrastruktur training yang dipakai.


⚙️ Cara Penggunaan (Setelah Trained)

Kode di bawah ini akan jalan secara teknis sekarang juga karena arsitekturnya sudah lengkap dan valid, tapi hasilnya nggak bakal masuk akal karena weight-nya masih random. Ini disiapkan sebagai referensi struktur pemakaian setelah checkpoint hasil training tersedia.

pip install transformers sentencepiece safetensors torch
from transformers import AutoTokenizer, AutoModelForCausalLM
import torch

tokenizer = AutoTokenizer.from_pretrained(
    "Veenn/helix-rdt-80m-id",  # ganti sesuai nama repo final
    trust_remote_code=True
)
model = AutoModelForCausalLM.from_pretrained(
    "Veenn/helix-rdt-80m-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))

🎯 Intended Use & Limitasi

Model Ini Untuk Riset, Bukan Penggunaan Langsung

Bahkan setelah training selesai nanti, HelixRDT-80M dirancang sebagai base model untuk riset dan eksperimen arsitektur. Ini bukan chatbot atau asisten, dan tidak ditujukan untuk deployment produksi tanpa proses tambahan seperti instruction tuning, safety alignment, dan evaluasi menyeluruh, yang semuanya di luar scope repo ini.

Cocok untuk

  • Mempelajari implementasi arsitektur looped/recurrent-depth transformer
  • Riset skala kecil pada partial RoPE, gated GQA, MTP
  • Basis eksperimen fine-tuning atau instruction-tuning sebagai project terpisah
  • Referensi desain tokenizer multi-fungsi untuk Bahasa Indonesia
  • Belajar trade-off desain arsitektur LM kecil dari nol

Tidak cocok untuk

  • Penggunaan langsung sebagai chatbot atau asisten
  • Aplikasi produksi dalam bentuk apapun
  • Konteks yang butuh akurasi faktual
  • Pengambilan keputusan penting (medis, hukum, finansial)
  • Sequence lebih panjang dari 512 token

Limitasi yang Diketahui

  • Status saat ini masih untrained, jadi limitasi lain baru relevan setelah training jalan
  • 80.9M parameter secara fundamental membatasi kapasitas pengetahuan faktual dan reasoning kompleks dibanding model berskala miliaran parameter
  • Tokenizer dioptimasi buat Bahasa Indonesia, performa di bahasa lain nggak diharapkan bagus
  • Token multimodal (image.open/close, audio.open/close) sudah ada di tokenizer tapi modelnya sendiri text-only, jadi token itu belum punya fungsi terlatih
  • Token reasoning (think.open/close) tersedia di tokenizer, tapi kemampuan reasoning eksplisit tergantung sepenuhnya sama data training yang memakai format itu

🗺️ Roadmap

Roadmap ini ditulis pendek dan konkret, kebalikan dari roadmap ambisius di project-project sebelumnya yang jarang kejalan:

  • Checkpoint pretraining pertama
  • Kurva loss dan eval internal dasar
  • Checkpoint pretraining final dengan eval internal lengkap
  • Di luar scope repo ini: eksperimen turunan seperti instruction tuning, kalau dikerjakan bakal jadi repo terpisah

💭 Catatan

Beberapa kutipan yang relevan dengan semangat project ini, soal riset yang berjalan bertahap dan pentingnya jujur soal apa yang belum selesai:

"If I have seen further, it is by standing on the shoulders of giants." — Isaac Newton

"The important thing is not to stop questioning. Curiosity has its own reason for existing." — Albert Einstein

"What I cannot create, I do not understand." — Richard Feynman

"An expert is a person who has made all the mistakes that can be made in a very narrow field." — Niels Bohr

Bukan maksud membandingkan project kecil ini dengan pencapaian mereka. Cuma pengingat bahwa mengakui apa yang belum selesai itu bagian yang wajar dari riset, bukan sesuatu yang perlu ditutup-tutupi.


🙏 Acknowledgements

  • Komunitas riset arsitektur LLM terbuka, atas publikasi GQA, SwiGLU, RoPE, RMSNorm, QK-Norm, looped transformer, dan MTP yang jadi fondasi desain HelixRDT
  • Google Colab, untuk akses GPU gratis
  • Hugging Face, untuk ekosistem transformers dan hosting model
  • Project-project sebelumnya (Photon-3M, Vega-100M-Indo, Magnetar-50M-ID), atas pembelajaran yang didapat termasuk dari yang belum selesai

Untrained. Riset. Jujur soal prosesnya.

HelixRDT-80M · Apache 2.0 · @Veenn

Downloads last month

-

Downloads are not tracked for this model. How to track
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support