Terakhir Diperbarui: 21 Mei, 2025

Judul - Cara Menyiapkan Format File Data untuk Pelatihan AI dan LLM Multi‑Modal

TL;DR – Format file yang Anda pilih dapat mengurangi 30‑50 % waktu pelatihan, memotong biaya penyimpanan sebesar 1 %–5 %, dan mencegah model multi‑modal Anda tersandung data yang tidak selaras. Pilihan terbaik adalah kontainer biner berorientasi kolom yang siap streaming (TFRecord, WebDataset, Arrow/Parquet) yang menyimpan teks yang telah dipra‑tokenisasi dan media yang telah dipra‑enkode dalam satu shard yang dikontrol versi.


Mengapa Format File Penting untuk Pelatihan AI

FaktaApa artinya bagi Anda
Format biner berorientasi kolom 30‑50 % lebih cepat dibandingkan CSV atau teks biasaPilih format yang berkomunikasi langsung dengan perangkat keras Anda (GPU/TPU) dan pipeline (TensorFlow, PyTorch, Spark).
Tokenisasi atau dekoding gambar yang tidak konsisten merusak kualitas modelBekukan pipeline pra‑pemrosesan sekali, lalu simpan representasi yang sudah dipra‑tokenisasi atau dipra‑enkode.
LLM skala petabyte menghemat jutaan dolar dengan pengurangan ukuran 1 %Gunakan kontainer terkompresi dan ter‑shard (ZSTD‑TFRecord, Arrow/Parquet dengan enkoding kamus).
Model multi‑modal membutuhkan metadata penyelarasan yang sinkronSimpan timestamp, bounding box, ID caption di dalam satu record yang sama alih‑alih di file terpisah.
Kepatuhan regulasi kini menuntut data yang tidak dapat diubah dan terverifikasi hashHasilkan manifest (JSON/YAML) yang mencatat skema, checksum, asal‑usul, dan versi.

Intinya: format adalah barisan pertahanan pertama melawan I/O yang lambat, data berisik, dan masalah kepatuhan.


Konsep Inti & Terminologi (Referensi Cepat)

KonsepDefinisi satu kalimatKasus penggunaan umum
ShardingMembagi dataset besar menjadi banyak file kecil yang dapat dibaca secara independen (misalnya shard 1 GB).Memuat secara paralel pada klaster pelatihan terdistribusi.
Format Siap StreamingFile yang dapat dibaca secara berurutan tanpa pencarian acak (TFRecord, WebDataset .tar).Pelatihan langsung dari S3/GCS tanpa salinan lokal.
Penyimpanan KolumnarData disimpan per kolom bukan per baris (Parquet, Arrow).Penyaringan efisien satu modalitas (mis., hanya memuat caption).
Skema yang Menjelaskan DiriFile menyertakan nama bidang dan tipe-nya sendiri.Menjamin kompatibilitas antar versi kode.
Dekoding Malas / Pra‑TokenisasiMenyimpan teks yang sudah dipra‑tokenisasi (int‑ID) atau embedding yang sudah dihitung sebelumnya.Mengurangi waktu pra‑pemrosesan 2‑5× tiap epoch.
Record Multi‑ModalSatu record logis yang menggabungkan gambar, teks, audio, dan metadata.Memungkinkan sampling sinkron untuk model visi‑bahasa atau audio‑teks.
Manifest / File IndeksJSON/YAML kecil yang mencantumkan semua shard, checksum, dan statistik per‑shard.Validasi cepat, pelatihan dapat dilanjutkan, jejak audit.
Versi DataMemperlakukan data seperti kode (DVC, LakeFS, Pachyderm).Eksperimen dapat direproduksi dan kepatuhan regulasi.

Memilih Format yang Tepat

FormatDukungan ModalitasKompresiStreamingSkemaEkosistem
TFRecordBlob biner apa saja → teks, gambar, audioGZIP/ZSTD bawaanImplisit (via tf.io.parse_example)TensorFlow, PyTorch (torchdata), HuggingFace datasets
WebDataset (.tar, .tar.gz)Multi‑modal (gambar + teks + audio)Eksternal (gzip, zstd)Kunci‑nilai implisitPyTorch DataLoader, pustaka webdataset
Apache Arrow / ParquetKolumnar, struktur bersarang, blob binerSnappy/ZSTD/LZ4✅ (Arrow Flight)✅ (menjelaskan diri)Spark, Pandas, PyArrow, HuggingFace datasets
JSONL / NDJSONDapat dibaca manusia, fleksibelTidak ada (atau gzip)ImplisitPrototipe cepat, dataset kecil
LMDBBacaan acak cepat (kunci‑nilai)Tidak ada (simpan blob terkompresi)ImplisitGenerasi berbasis pengambilan
HDF5Grup hierarkis, array besargzip/lzf bawaan❌ (butuh chunking)ImplisitData ilmiah, spektrogram audio

Aturan praktis:

  • Pelatihan berskala besar → TFRecord, WebDataset, atau Arrow/Parquet (mereka streaming, kompres, dan mendukung sharding).
  • Pekerjaan eksplorasi → JSONL (dapat dibaca manusia, mudah diedit).
  • Akses acak berat (mis., generasi berbasis pengambilan) → LMDB.

Panduan Langkah‑per‑Langkah (Dari File Mentah ke Shard Siap Produksi)

  1. Definisikan skema sumber‑kebenaran tunggal

    message MultiModalExample {
      bytes image = 1;                // JPEG‑XL atau AVIF
      repeated int32 caption = 2;    // token IDs
      bytes audio = 3;                // Opus atau FLAC
      map<string, string> meta = 4;  // source_id, timestamp, etc.
    }
    

    Simpan .proto ini (atau skema Arrow) berdampingan dengan dataset.

  2. Kumpulkan & bersihkan aset mentah

    • Teks: Unicode‑NFKC, hapus karakter kontrol, hapus duplikat.
    • Gambar: Konversi ke PNG lossless terlebih dahulu, lalu opsional lossy JPEG‑XL (kualitas 85‑90 %).
    • Audio: Resample ke 16 kHz, 16‑bit PCM; enkode dengan Opus (lossy) atau FLAC (lossless).
  3. Pra‑proses / Tokenisasi
    Gunakan tokenizer yang sama persis dengan yang akan Anda beri ke model (mis., tiktoken untuk GPT‑NeoX). Simpan ID token int32[] yang dihasilkan langsung dalam record.

  4. Serialisasi setiap record
    Pilih serializer biner cepat: Protocol Buffers, FlatBuffers, atau Arrow IPC. Tujuannya adalah satu string byte per contoh yang dapat ditulis ke TFRecord atau tarball.

  5. Shard & kompresi

    • Ukuran shard target: 256 MiB – 1 GiB (optimal untuk permintaan rentang S3).
    • Kompres dengan Zstandard (level 3‑5) – dekompresi cepat, rasio baik.
    • Konvensi penamaan: train-00000-of-01000.tfrecord.zst.
  6. Hasilkan manifest

    [
      {
        "shard": "train-00000-of-01000.tfrecord.zst",
        "checksum": "sha256:ab12…",
        "num_examples": 12456,
        "avg_seq_len": 256,
        "git_hash": "d3f9c1e"
      },
      
    ]
    

    Manifest adalah satu sumber kebenaran untuk validasi, pelatihan dapat dilanjutkan, dan audit.

  7. Validasi
    Secara acak sampel 0,1 % record, dekode tiap bidang, dan jalankan pemeriksaan sanity (dekode gambar, panjang token, durasi audio). Hitung statistik global (cakupan vocab, distribusi resolusi) dan simpan di manifest.

  8. Versi & simpan secara tidak dapat diubah
    Dorong shard + manifest ke bucket yang tidak dapat diubah (gs://my‑project/datasets/v1/). Beri tag dengan versi semantik (v1.0.0) dan daftarkan snapshot dalam sistem versi data (DVC, LakeFS).

  9. Muat dalam loop pelatihan Anda

    # PyTorch + WebDataset example
    import webdataset as wds, torch, torchvision, torchaudio
    
    def decode(sample):
        img = torchvision.io.decode_image(sample["jpg"], mode=torchvision.io.ImageReadMode.RGB)
        txt = torch.tensor([int(t) for t in sample["txt"].decode().split()], dtype=torch.long)
        wav, _ = torchaudio.load(io.BytesIO(sample["wav"]))
        return {"image": img, "caption": txt, "audio": wav}
    
    ds = (wds.WebDataset("s3://my-bucket/train-{00000..00999}.tar.zst")
          .decode("torchrgb")
          .map(decode)
          .batched(64)
          .prefetch(2))
    
    loader = torch.utils.data.DataLoader(ds, num_workers=8)
    for batch in loader:
        # feed to model …
        pass
    

Tren yang Muncul & Persiapan Masa Depan

TrenMengapa penting sekarangTindakan cepat
Kontainer multi‑modal terpadu (MDS Meta, DeepLake)Satu tipe file untuk teks, gambar, video, audio, dan embedding, dengan versi bawaan.Coba pilot dengan DeepLake; ia terintegrasi dengan LangChain dan LlamaIndex.
Penyimpanan GPU‑direct tanpa salinanNVMe‑over‑Fabric + GPUDirect memungkinkan Anda streaming shard terkompresi langsung ke memori GPU.Ketika Anda memiliki pool NVMe‑SSD, aktifkan torch.utils.data.DataLoader(persistent_workers=True).
Format yang ramah evolusi skemaArrow 13+ memungkinkan Anda menambah/menghapus bidang tanpa menulis ulang seluruh dataset.Lebih pilih Arrow/Parquet untuk pipeline yang mungkin nanti menginklus peta kedalaman, video, atau metadata tambahan.
Pra‑enkoding self‑supervisedMenyimpan embedding gambar CLIP atau embedding audio wav2vec mengurangi komputasi 2‑3× untuk fine‑tuning.Tambahkan kolom ekstra image_emb (float16) ke tabel Arrow Anda; simpan gambar mentah untuk eksperimen di masa depan.
Penyimpanan yang melindungi privasiTFRecord terenkripsi + enclave aman sedang muncul untuk domain dengan GDPR.Evaluasi tf.io.TFRecordWriter dengan pembungkus enkripsi khusus jika Anda menangani PII.
Metrik AI berpusat pada dataSkor kualitas data (kepercayaan OCR, metrik blur, SNR) kini menjadi hyper‑parameter kelas pertama.Simpan skor kualitas per‑shard di manifest dan saring shard kualitas rendah selama pelatihan.

Daftar Periksa Siap Produksi

  • File skema (.proto atau skema Arrow) disimpan di samping data.
  • Semua shard terkompresi dengan codec cepat (disarankan ZSTD‑L3).
  • Ukuran shard antara 256 MiB dan 1 GiB.
  • Manifest mencakup checksum, jumlah record, statistik per‑shard, dan hash git dari kode pra‑pemrosesan.
  • Kontrol versi yang tidak dapat diubah (DVC, LakeFS, atau serupa).
  • Metrik kualitas data dicatat per shard.
  • Audit privasi selesai (penyensoran PII, enkripsi opsional).
  • Loader uji end‑to‑end yang dapat membaca shard acak tanpa error.
  • README yang menjelaskan skema, langkah pra‑pemrosesan, dan cara menghasilkan kembali shard.

Mengikuti panduan ini akan menjaga pipeline pelatihan Anda cepat, murah, dan dapat direproduksi—tiga pilar yang dibutuhkan setiap tim LLM modern.


Tags: data‑engineering multi‑modal‑llm training‑pipelines
Slug: how-to-prepare-data-file-formats-for-ai-training