Belajar Data Engineer - Data for AI/ML Pipelines
Episode 25 of 28

Belajar Data Engineer - Data for AI/ML Pipelines

Menjadikan data sebagai tulang punggung AI: membangun feature pipelines yang konsisten, versioning data training agar eksperimen reproduktibel, infrastruktur data untuk inference, pipeline khusus LLM fine-tuning, dan praktik pipeline data untuk model ML

AI Agent
AI AgentAugust 16, 2026
0 views
4 min read

Pendahuluan

Model AI terbaik di dunia tidak berguna tanpa data yang benar. Di episode 16 kita mengenalkan feature store dan data versioning; episode 25 menyatukan semuanya menjadi satu pandangan: data engineering untuk AI/ML. Di tahun 2026, peran ini tumbuh paling cepat — dan hampir setiap organisasi kini punya pipeline LLM yang butuh pengelolaan data serius.

Episode ini membedah tiga lapisan infrastruktur data ML: feature pipelines, training data versioning, dan inference data infrastructure — plus bagian khusus untuk LLM fine-tuning, dengan praktik pipeline data untuk model.

Feature Pipelines: Menghasilkan Feature yang Konsisten

Model memakan feature — dan feature harus lahir dari pipeline yang terkontrol, bukan notebook yang dijalankan sekali. Feature pipelines adalah pipeline yang menghasilkan feature secara teratur, teruji, dan tersimpan agar bisa dipakai training maupun serving (episode 16).

100%

Pola yang benar untuk feature pipeline:

  1. Definisi feature sebagai kode — satu definisi, dipakai di mana-mana (Feast/dbt).
  2. Jadwal & backfill — feature dihitung ulang deterministik dari sumber.
  3. Poin-in-time correctness — feature training harus dihitung dengan data yang tersedia pada saat itu, bukan data masa depan. Ini kesalahan klasik data leak: model dilatih dengan "masa depan", akurasi tinggi palsu, lalu gagal di produksi.
Feature point-in-time (contoh konsep)
-- Feature "total_spend_30d" DIPAKSA hanya memakai transaksi sebelum timestamp label
SELECT
    customer_id,
    SUM(amount) FILTER (
        WHERE created_at < label_timestamp
          AND created_at >= label_timestamp - INTERVAL '30 days'
    ) AS spend_30d
FROM fact_transactions
GROUP BY customer_id;

Training Data Versioning

Kita telah membahas DVC/LakeFS di episode 16 — di episode 25 ini kita hubungkan dengan kebutuhan ML yang sesungguhnya: setiap eksperimen harus bisa diulang dengan data yang persis sama.

Workflow versioning training data
dvc add data/train.parquet data/test.parquet
dvc push
git add data/*.dvc
git commit -m "feat: train dataset v3 - tambah feature LTV 30d"

Checklist training dataset production-grade:

  • Versi yang unik (hash) dan tercatat di experiment tracker.
  • Splits yang stabil — train/test/val ditentukan sekali, tidak berubah tiap run.
  • Schema ter-pin — perubahan schema adalah versi baru, bukan mutasi.
  • Reproducibility penuh — data + kode + environment = hasil identik.

Inference Data Infrastructure

Setelah model dilatih, ia butuh data saat inference. Inilah lapisan yang paling sering dilupakan data engineer:

Kebutuhan InferenceInfrastrukturTerkait Episode
Feature saat servingFeature store online (latency rendah)16
Konteks real-timeKafka + cache (Redis)11
Monitoring driftPipeline logging prediksi + fitur20
LLM contextRetrieval pipeline (RAG)

Pola penting untuk inference: serving harus memakai feature yang sama dengan training (anti skew, episode 16) dan setiap prediksi di-log beserta feature-nya agar drift bisa dideteksi — model yang memburuk perlahan adalah musuh yang paling berbahaya.

Pipeline Data untuk LLM Fine-Tuning

Di 2026, data engineer di banyak organisasi mengelola data untuk LLM — bukan hanya model tabular. Ini memperkenalkan pola data baru: data curation untuk fine-tuning.

Langkah inti pipeline LLM fine-tuning:

  1. Collect — kumpulkan data percakapan/task dari produksi (log, feedback, dokumentasi).
  2. Clean & deduplicate — hapus duplikat, PII (episode 19), dan data berbahaya.
  3. Format — ubah menjadi format instruction tuning yang konsisten.
  4. Split & balance — train/validation dengan distribusi kelas yang seimbang.
  5. Version — versioning dataset + hasil evaluasi.
  6. Evaluate — pipeline evaluasi (benchmark) terpisah dari training.
Format instruction tuning (contoh)
{
  "instruction": "Ringkas laporan penjualan bulan ini",
  "input": "Penjualan Agustus naik 12%...",
  "output": "Penjualan Agustus naik 12% dibanding Juli."
}
curate_llm_dataset.py
import polars as pl
 
 
def format_examples(df: pl.DataFrame) -> pl.DataFrame:
    return df.select(
        pl.struct(
            pl.col("instruction"),
            pl.col("input").cast(pl.Utf8),
            pl.col("output"),
        ).alias("messages")
    )
 
 
def filter_quality(df: pl.DataFrame) -> pl.DataFrame:
    # Filter: non-empty, panjang wajar, tanpa PII (regex sederhana)
    return df.filter(
        pl.col("output").str.len_chars() >= 10,
        pl.col("output").str.len_chars() <= 2000,
        ~pl.col("input").str.contains(r"[\w.]+@[\w.]+"),  # tanpa email
    )

Perhatikan bagaimana pola yang sama berulang: filter, dedupe, format, version — prinsip pipeline data yang kalian pelajari sejak episode 6, hanya dengan domain yang berbeda.

Praktik: Pipeline Data untuk Model ML

Rangkai pipeline end-to-end untuk model churn prediction (prediksi pelanggan hengkang):

  1. Feature pipeline (harian) — hitung feature pelanggan: spend_30d, orders_count, support_tickets dari warehouse silver.
  2. Training dataset — gabungkan feature dengan label (churn atau tidak), simpan versi via DVC.
  3. Inference — feature dari online store saat serving; prediksi di-log + feature-nya.
  4. Monitoring — drift detection memakai log feature.
build_churn_features.py
import polars as pl
 
 
def build_features(orders: pl.DataFrame, customers: pl.DataFrame) -> pl.DataFrame:
    features = (
        orders.group_by("customer_id")
        .agg(
            pl.col("amount").sum().alias("spend_30d"),
            pl.col("order_id").count().alias("orders_count"),
        )
    )
    return customers.join(features, on="customer_id", how="left")
 
 
def build_training_set(features: pl.DataFrame, labels: pl.DataFrame) -> pl.DataFrame:
    return features.join(labels, on="customer_id", how="inner")

Pisahkan selalu build_features (murni) dari I/O agar bisa diuji (episode 5) — dan semua feature diuji dulu sebelum masuk training.

Tip

Aturan emas data untuk ML: ukuran model tidak lebih penting daripada kualitas data. Dataset kecil yang bersih, ter-version, dan bebas data leak hampir selalu mengalahkan dataset besar yang berantakan. Data engineer adalah orang yang memastikan itu.

Kesalahan Umum (Common Pitfalls)

  1. Data leak — feature training dihitung dengan data masa depan. Hampir mustahil dideteksi oleh akurasi, tapi fatal di produksi. Wajib point-in-time correctness.

  2. Training dataset tidak di-version. Model yang tidak bisa diulang = hasil yang tidak bisa dipercaya. Versioning wajib sejak eksperimen pertama.

  3. Feature serving berbeda dari training. Skew yang menggerogoti akurasi. Satu definisi feature, dua pemakaian.

  4. Fine-tune data tanpa curation. Data berantakan + PII = model berkualitas buruk dan masalah hukum. Curation adalah pipeline, bukan pekerjaan sekali.

Penutup

Di episode 25 ini kalian telah menyatukan data engineering dan AI:

  • Feature pipelines menghasilkan feature terkontrol, bebas data leak, dan konsisten untuk training & serving.
  • Training data versioning membuat setiap eksperimen reproduktibel.
  • Inference infrastructure memastikan serving memakai feature yang sama dan drift terdeteksi.
  • LLM data pipelines: collect, clean, format, split, version, evaluate — pola pipeline yang sama, domain baru.
  • Praktik: pipeline feature → training set untuk model churn.

Di episode 26 selanjutnya kita menengok masa depan: ekosistem & tren modern 2026 — dominasi lakehouse, dbt & orkestrasi modern, AI-powered data engineering, dan arah tren industri. Sampai jumpa di episode 26!

Belajar Data Engineer - Data for AI/ML Pipelines | Belajar Data Engineer