Tools untuk mengumpulkan, membersihkan, dan mempersiapkan dataset teks Bahasa Indonesia untuk melatih LLM. Dikembangkan oleh Syahril Haryono sebagai bagian dari ekosistem Aibys.
π‘ Repo ini adalah langkah pertama sebelum pre-training β kumpulkan dan siapkan dataset kamu di sini, lalu lanjut ke Indonesian LLM Starter.
| Repo | Fungsi |
|---|---|
| π¦ Aibys Data Collector (repo ini) | Kumpulkan & siapkan dataset untuk training |
| ποΈ Indonesian LLM Starter | Pre-training LLM dari scratch |
| π― Indonesian LLM Fine-tune | Fine-tuning model hasil pre-training dengan LoRA |
Alur lengkap:
Aibys Data Collector β Indonesian LLM Starter β Indonesian LLM Fine-tune
(kumpul & siap data) (pre-train model) (fine-tune jadi assistant)
β β β
train_shuffled.txt β aibys_final.pt β model siap chat
Sebelum bisa melatih LLM, kamu butuh data teks dalam jumlah besar β idealnya 10 Miliar token ke atas. Repo ini menyediakan tools untuk:
- π₯ Download dataset dari HuggingFace secara streaming (RAM-efficient)
- π§Ή Bersihkan teks dari noise, null character, URL, dan karakter aneh
- π Shuffle dataset raksasa secara disk-based tanpa meledakkan RAM
- π Audit kualitas dan estimasi jumlah token
- π€ Generate data identitas AI untuk menanamkan kepribadian model
aibys-data-collector/
β
βββ aibys_collector.py # π₯ Download dataset dari HuggingFace
βββ aibys_shuffler.py # π Shuffle dataset besar secara disk-based
βββ cek_progres.py # π Cek total ukuran, karakter & estimasi token
βββ cek_ascii.py # π Audit kebersihan data (non-ASCII checker)
βββ buat_blueprint_identitas.py # π€ Generate data identitas & kepribadian AI
β
βββ data/ # Output dataset (tidak di-commit)
βββ dataset1.txt
βββ dataset2.txt
βββ ...
Script interaktif untuk download dataset dari HuggingFace. Bisa tambah banyak repo ke "keranjang" sekaligus, lalu download semua dalam satu proses.
Fitur:
- Streaming mode β dataset sebesar apapun tidak akan meledakkan RAM
- Multi-repo β download banyak dataset sekaligus
- Pembersihan otomatis β hapus null character, URL, control character, normalisasi Unicode
- Separator
<|endoftext|>β otomatis ditambah antar dokumen supaya model tau batas antar teks
π AIBYS DATA COLLECTOR V5.2
1. Tambah Repo ke Daftar
2. π₯ GAS DOWNLOAD
3. Keluar
Shuffle dataset yang sudah besar (puluhan GB) tanpa perlu load semua ke RAM.
Cara kerjanya:
- Distribusi β bagi semua dokumen ke 200-300 bucket kecil secara random
- Deep shuffle β shuffle dokumen di dalam setiap bucket
- Konsolidasi β gabungkan semua bucket dengan urutan random
# Default: 300 chunks, cocok untuk dataset 47GB+ di RAM 32GB
shuffle_raksasa_aibys("train.txt", "train_shuffled.txt", num_chunks=300)Scan semua file .txt di folder data/ dan tampilkan laporan lengkap:
- Total ukuran file
- Total baris & karakter
- Estimasi token (pakai rasio 3.7 karakter/token untuk Bahasa Indonesia)
- Status: apakah sudah cukup untuk training 10B+ token
π LAPORAN AKHIR TOTAL DATASET
π¦ Total Ukuran : 47.23 GB
π‘ Total Karakter : 48,291,023,841
π ESTIMASI TOKEN : 13.051 Billion
π STATUS: SIAP TRAINING 10B+ TOKEN!
Audit semua file .txt dan cari baris yang mengandung karakter non-ASCII. Berguna untuk memastikan dataset bersih sebelum tokenisasi.
β
SEMUA FILE BERSIH ASCII.
# atau
β οΈ Masih ada 0.0023% baris mengandung non-ASCII.
Generate 500.000 baris data percakapan identitas dalam format formal/baku. Digunakan untuk "menanamkan" kepribadian dan identitas model supaya model tau siapa dirinya.
Format output:
User: Siapakah pencipta dari sistem kecerdasan buatan ini?
Assistant: Sistem Aibys ini diciptakan dan dikembangkan sepenuhnya oleh Syahril Haryono.
<|endoftext|>
git clone https://github.com/syhrlhyn834/aibys-data-collector.git
cd aibys-data-collector
pip install datasets tqdmpython aibys_collector.pyContoh input:
[+] Nama Repo HF : wikipedia
[+] Nama Subset : id
[+] Nama Kolom : text
[+] Limit data : 1M
[+] Simpan sebagai : wikipedia_id.txt
Dataset Indo yang direkomendasikan:
| Repo HuggingFace | Subset | Kolom |
|---|---|---|
wikipedia |
id |
text |
mc4 |
id |
text |
uonlp/CulturaX |
id |
text |
cahya/all-indo-man-made-corpus |
- | text |
Xavier-Nuttall/indo-wiki |
- | text |
python buat_blueprint_identitas.pyOutput: identitas_aibys_baku.txt (500.000 baris)
Gabungkan ke dataset utama:
# Windows
type identitas_aibys_baku.txt >> data\train.txt
# Linux/Mac
cat identitas_aibys_baku.txt >> data/train.txtpython cek_progres.pypython cek_ascii.pypython aibys_shuffler.pyOutput: train_shuffled.txt β siap dipakai untuk training!
Pindahkan hasil ke folder data/ di Indonesian LLM Starter:
cp train_shuffled.txt ../Indonesian-LLM-Starter/data/train.txtSesuaikan num_chunks di aibys_shuffler.py berdasarkan RAM:
| RAM | Dataset Size | num_chunks |
|---|---|---|
| 8GB | ~10GB | 100 |
| 16GB | ~25GB | 200 |
| 32GB | ~50GB | 300 |
| 64GB | ~100GB | 500 |
datasets>=2.14.0
tqdm>=4.66.0
pip install datasets tqdmSyahril Haryono β Developer independen asal Indonesia.
Apache 2.0 β bebas digunakan, dimodifikasi, dan didistribusikan dengan atribusi.
Langkah pertama membangun LLM kamu sendiri. Lanjut ke Indonesian LLM Starter setelah dataset siap. π