Featured image of post Apa Itu Format JSONL? Apa Perbedaan JSONL dengan JSON dan CSV? Mengapa Fine-Tuning Model AI Wajib Menggunakan JSONL!

Apa Itu Format JSONL? Apa Perbedaan JSONL dengan JSON dan CSV? Mengapa Fine-Tuning Model AI Wajib Menggunakan JSONL!

JSONL (JSON Lines) adalah format data dengan satu objek JSON di setiap baris. Pelajari perbedaan utama antara JSONL, JSON, dan CSV, temukan keunggulan super cepatnya dalam fine-tuning model AI dan pemrosesan streaming big data, serta kuasai 5 aturan format ketat dan teknik pembacaan defensif.

Kita semua sangat familiar dengan JSON dan CSV, tetapi pernahkah Anda mengalami memori yang langsung melonjak hingga crash saat memproses berkas JSON berukuran beberapa GB? Atau merasa sangat kerepotan dengan karakter escape saat mencatat data bersarang bertingkat di CSV?

Dalam ranah pelatihan AI modern dan pemrosesan data berskala masif, ada satu format data yang secara diam-diam menjadi standar utama, yaitu JSONL (JSON Lines).

Nilai Utama JSONL: Menyelesaikan dua kendala utama JSON tradisional (tidak dapat dibaca secara streaming) dan CSV (tidak mendukung struktur bersarang)!

Apa Itu JSONL? Pahami Definisi Utama “Satu JSON per Baris” dalam Satu Menit

Nama lengkap dari JSONL adalah JSON Lines (kadang-kadang juga disebut NDJSON, yaitu Newline Delimited JSON). Konsep utamanya sangat jelas: setiap baris adalah sebuah objek JSON yang independen dan lengkap.

Dalam berkas JSON tradisional, tingkat terluar biasanya memiliki tanda kurung siku besar [] yang membungkus semua data, dan setiap objek harus dipisahkan oleh tanda koma ,. Sebaliknya, JSONL sepenuhnya menghilangkan tanda kurung siku dan koma di tingkat terluar, lalu menggunakan karakter baris baru \n untuk memisahkan setiap rekaman.

Perbandingan Format Data JSONL, JSON, dan CSV

Perbandingan 3 Format Data Populer

Agar lebih mudah dipahami secara intuitif, mari kita bandingkan JSONL, JSON, dan CSV bersama-sama:

Format Data Struktur Tata Letak Dukungan Data Bersarang Baca/Tulis Streaming Skenario yang Cocok
JSON Struktur pohon tunggal berhierarki, harus dimuat sekaligus Dukungan Asli Sulit (harus memuat seluruh berkas) Transfer Web API, berkas konfigurasi
CSV Tabel datar 2D, kolom dipisahkan koma Sulit (memerlukan enkoding atau escape) Dukungan Asli Laporan Excel, data datar
JSONL Satu JSON independen per baris, dipisahkan baris baru Dukungan Asli Sangat Baik (baca & tambah per baris) Dataset pelatihan AI, pencatatan Log masif

Mengapa Pelatihan Model AI dan Big Data ETL Lebih Menyukai JSONL?

Dalam beberapa tahun terakhir, seiring pesatnya perkembangan Large Language Models (LLM) seperti OpenAI dan Anthropic, JSONL telah menjadi pilihan utama untuk Fine-tuning dan penyiapan dataset. Ada dua keunggulan utama di balik hal ini:

1. Penggunaan Memori Sangat Rendah (Mendukung Pemrosesan Streaming)

Ketika basis data pelatihan Anda mencapai 50 GB, jika menggunakan berkas JSON tradisional, program harus membaca seluruh berkas 50 GB ke dalam memori untuk menganalisis pohon sintaks, yang akan langsung memicu Out-Of-Memory (OOM).

Sebaliknya, JSONL mendukung Pembacaan per Baris (Line-by-line Streaming). Program hanya perlu membaca satu baris pada satu waktu (mungkin hanya beberapa KB), membebaskan memori setelah selesai memproses, lalu membaca baris berikutnya.

  flowchart TD
    subgraph TraditionalJSON["Metode Pembacaan JSON Tradisional"]
        A1["Baca Berkas JSON 50 GB"] --> A2["Analisis Pohon Sintaks Seluruh Berkas"]
        A2 --> A3["Muat 50 GB ke Memori Sekaligus"]
        A3 -->|Risiko Tinggi| A4["Crash Akibat Memori Penuh (OOM)"]
    end

    subgraph JSONLStreaming["Metode Pembacaan Streaming JSONL"]
        B1["Buka Berkas JSONL 50 GB"] --> B2["Baca Baris Ke-1 (5 KB)"]
        B2 --> B3["Analisis & Proses Data Tunggal"]
        B3 --> B4["Bebaskan Memori & Baca Baris Berikutnya"]
        B4 --> B5["Selesaikan Pemrosesan Data Masif Secara Stabil & Efisien"]
    end

Untuk data berskala masif, JSONL menurunkan konsumsi memori dari O(N) menjadi O(1)!

2. Mendukung Penambahan Tanpa Kunci (Append-Only Logging)

Dalam sistem terdistribusi atau skenario pengumpulan log, jika Anda ingin menambahkan data di akhir berkas:

  • JSON tradisional: Harus membaca seluruh berkas, menghapus ] di akhir, menambahkan koma ,, menulis data baru, lalu menambahkan kembali ].
  • JSONL: Cukup tambahkan (append) string secara langsung beserta karakter baris baru \n di akhir berkas untuk menyelesaikan penulisan.

3. Pemrosesan Paralel Big Data (Parallel Processing)

Karena setiap baris dalam JSONL adalah objek JSON yang independen, berkas besar dapat dipotong pada karakter baris baru mana saja menjadi beberapa blok kecil, lalu dikirim ke beberapa CPU Core atau node komputasi untuk diproses secara paralel tanpa saling mengganggu.

5 Aturan Format Ketat JSONL yang Wajib Diketahui Pengembang

Meskipun JSONL sangat fleksibel, untuk memastikan parser dapat memprosesnya dengan lancar, spesifikasi resmi (jsonlines.org) telah menetapkan 5 batasan format ketat:

Penjelasan Detail Spesifikasi

No. Aturan Item Aturan Ketat Penjelasan & Contoh yang Benar
Aturan 1 Setiap Baris Harus Berupa JSON Valid Setiap baris yang diambil secara independen harus dapat di-parse oleh JSON.parse() standar.
Aturan 2 Dilarang Ada Baris Baru Tanpa Escape Jika dalam string terdapat baris baru, harus di-escape menjadi \n. Dilarang menggunakan format multi-baris.
Aturan 3 Dilarang Menggunakan Simbol Kurung Terluar Sama sekali tidak boleh ada tanda kurung siku terluar [], dan dilarang menambah koma , antarbaris.
Aturan 4 Enkoding UTF-8 Tanpa BOM Wajib menggunakan enkoding UTF-8 secara ketat dan tidak boleh mengandung BOM header.
Aturan 5 Secara Bawaan Tidak Boleh Ada Baris Kosong Setiap baris harus berisi data valid; hanya baris terakhir berkas yang diizinkan memiliki baris kosong di akhir.

Analisis Praktis: Bagaimana Cara Menulis Kode Pembacaan JSONL yang Sangat Defensif?

Dalam pengembangan nyata, karena JSONL bersifat Tanpa Schema Tetap (Schema-less), Key pada baris yang berbeda mungkin sepenuhnya berbeda. Saat menulis kode pemrosesan, disarankan untuk mematuhi prinsip defensif berikut:

Contoh Kode Defensif (Python)

import json

def process_jsonl_file(file_path):
    with open(file_path, "r", encoding="utf-8") as f:
        for line_num, line in enumerate(f, 1):
            # 1. Lewati baris kosong secara otomatis (mencegah kegagalan parsing)
            line = line.strip()
            if not line:
                continue
            
            try:
                data = json.loads(line)
                
                # 2. Pengambilan nilai secara defensif: gunakan .get() untuk menghindari KeyError
                user_id = data.get("id")
                user_name = data.get("name", "Unknown")
                
                # 3. Identifikasi tipe bidang data (pemrosesan data polimorfik)
                doc_type = data.get("type", "default")
                
                print(f"Line {line_num}: [{doc_type}] {user_id} - {user_name}")
                
            except json.JSONDecodeError as e:
                print(f"Error parsing line {line_num}: {e}")

# Jalankan pembacaan
process_jsonl_file("dataset.jsonl")

Tip Defensif Utama: Gunakan strip() untuk menghapus spasi di awal dan akhir, serta gunakan .get() alih-alih mengakses kunci secara langsung untuk mencegah lebih dari 90% crash saat runtime!

Panduan Pemilihan Skenario untuk JSONL, JSON, dan CSV

Setelah mempelajari fitur-fitur canggih JSONL, apakah kita harus mengubah semua data menjadi JSONL? Jawabannya adalah: Tergantung skenario penggunaan!

Kebutuhan Skenario Format yang Direkomendasikan Alasan Penjelasan
Transfer API Frontend/Backend Web JSON Dukungan browser bawaan sangat baik, ukuran data per transfer sedang.
Ekspor Data untuk Non-Teknis / Pemasaran CSV Dapat dibuka dan dilihat secara langsung menggunakan Excel.
Fine-tuning Model AI JSONL Format pelatihan resmi yang ditentukan oleh API OpenAI / Anthropic.
Pencatatan Log Masif Sistem JSONL Biaya penulisan rendah, mendukung append tanpa batas & pemantauan memori super rendah.
Pipeline ETL Big Data JSONL Memudahkan pemotongan terdistribusi dan pemrosesan paralel.

Selama Anda menguasai karakteristik setiap format dan memilih alat yang tepat untuk skenario yang tepat, kinerja pemrosesan data Anda akan meningkat secara signifikan!

Reference

All rights reserved,未經允許不得隨意轉載
Dibangun dengan Hugo
Tema Stack dirancang oleh Jimmy