Son Güncelleme: 21 Mayıs, 2025

Başlık - AI Eğitimi ve Çok Modlu LLM'ler için Veri Dosyası Formatlarını Nasıl Hazırlarsınız

TL;DR – Seçtiğiniz dosya formatı eğitim süresini %30‑50 azaltabilir, depolama maliyetlerini %1‑5 düşürebilir ve çok‑modlu modellerinizin uyumsuz veriler yüzünden takılmasını önler. En uygun seçenek, akış‑hazır, sütun‑temelli ikili bir kapsayıcı (TFRecord, WebDataset, Arrow/Parquet) olup önceden tokenlanmış metin ve önceden kodlanmış medyayı tek bir, sürüm‑kontrollü shard içinde saklar.


Dosya Formatının AI Eğitimi İçin Önemi

GerçekSizin İçin Ne Anlama Geliyor
İkili, sütun‑temelli formatlar CSV veya düz metinden %30‑50 daha hızlıDonanımınıza (GPU/TPU) ve veri hattınıza (TensorFlow, PyTorch, Spark) doğrudan bağlanan bir format seçin.
Tutarsız tokenizasyon veya görüntü kod çözümü model kalitesine zarar verirÖn işleme hattını bir kez dondurun, ardından zaten tokenlanmış veya önceden kodlanmış temsili saklayın.
Petabayt ölçeğindeki LLM’ler %1’lik boyut küçülmesiyle milyonlarca dolar tasarruf ederSıkıştırılmış, parçalanmış kapsayıcılar (ZSTD‑TFRecord, Arrow/Parquet sözlük kodlamalı) kullanın.
Çok‑modlu modeller senkronize hizalama meta verilerine ihtiyaç duyarZaman damgalarını, sınırlama kutularını, başlık kimliklerini ayrı dosyalar yerine aynı kaydın içinde tutun.
Regülasyon uyumu artık değiştirilemez, hash‑doğrulanmış veri gerektiriyorŞema, kontrol toplamı, köken ve sürümü kaydeden bir manifest (JSON/YAML) oluşturun.

Özet: format, yavaş I/O, gürültülü veri ve uyum sorunlarına karşı ilk savunma hattıdır.


Temel Kavramlar ve Terminoloji (Hızlı Referans)

KavramTek cümle tanımTipik kullanım durumu
ShardingDevasa bir veri setini birçok küçük, bağımsız okunabilir dosyaya bölmek (ör. 1 GB shard’lar).Dağıtık bir eğitim kümesinde paralel yükleme.
Streaming‑Ready FormatDosyalar rastgele arama yapmadan sıralı olarak okunabilir (TFRecord, WebDataset .tar).S3/GCS’den yerel kopya olmadan doğrudan eğitim.
Columnar StorageVeri sütun bazında saklanır, satır bazında değil (Parquet, Arrow).Tek bir modaliteyi (ör. sadece altyazıları) verimli şekilde filtreleme.
Self‑Describing SchemaDosya kendi alan adlarını ve tiplerini içinde barındırır.Kod sürümleri arasında uyumluluğu garanti eder.
Lazy Decoding / Pre‑TokenizationZaten tokenlanmış metin (int‑ID’ler) veya önceden hesaplanmış gömülüler saklanır.Her epoch’ta ön işleme süresini 2‑5× azaltır.
Multi‑Modal RecordGörüntü, metin, ses ve meta verileri bir araya getiren tek mantıksal kayıt.Görüntü‑dil veya ses‑metin modelleri için senkronize örnekleme sağlar.
Manifest / Index FileTüm shard’ları, kontrol toplamlarını ve shard bazlı istatistikleri listeleyen küçük bir JSON/YAML.Hızlı doğrulama, yeniden başlatılabilir eğitim, denetim izleri.
Data‑VersioningVeriyi kod gibi yönetmek (DVC, LakeFS, Pachyderm).Tekrarlanabilir deneyler ve regülasyon uyumu.

Doğru Formatı Seçmek

FormatModalite desteğiSıkıştırmaAkışŞemaEkosistem
TFRecordHerhangi bir ikili blob → metin, görüntü, sesYerleşik GZIP/ZSTDImplicit (via tf.io.parse_example)TensorFlow, PyTorch (torchdata), HuggingFace datasets
WebDataset (.tar, .tar.gz)Çok‑modlu (görüntü + metin + ses)External (gzip, zstd)Implicit key‑valuePyTorch DataLoader, webdataset lib
Apache Arrow / ParquetSütun‑temelli, iç içe yapı, ikili blob’larSnappy/ZSTD/LZ4✅ (Arrow Flight)✅ (self‑describing)Spark, Pandas, PyArrow, HuggingFace datasets
JSONL / NDJSONİnsan‑okunur, esnekNone (or gzip)ImplicitQuick prototyping, small datasets
LMDBHızlı rastgele okuma (anahtar‑değer)None (store compressed blobs)ImplicitRetrieval‑augmented generation
HDF5Hiyerarşik gruplar, büyük dizilerBuilt‑in gzip/lzf❌ (needs chunking)ImplicitScientific data, audio spectrograms

Kural:

  • Ölçekli eğitim → TFRecord, WebDataset veya Arrow/Parquet (akış, sıkıştırma ve shard desteği sağlar).
  • Keşif çalışmaları → JSONL (insan‑okunur, düzenlemesi kolay).
  • Yoğun rastgele erişim (ör. retrieval‑augmented generation) → LMDB.

Adım‑Adım Plan (Ham Dosyalardan Üretim‑Hazır Shard’lara)

  1. Tek bir gerçek‑kaynak şeması tanımlayın

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

    Store this .proto (or Arrow schema) alongside the dataset.

  2. Ham varlıkları topla ve temizle

    • Metin: Unicode‑NFKC, kontrol karakterlerini temizle, tekrarları kaldır.
    • Görüntüler: Önce lossless PNG’ye dönüştür, ardından isteğe bağlı olarak kayıplı JPEG‑XL (kalite 85‑90 %).
    • Ses: 16 kHz, 16‑bit PCM’ye yeniden örnekle; Opus (kayıplı) veya FLAC (kayıpsız) ile kodla.
  3. Ön‑işleme / Tokenizasyon
    Modelinize besleyeceğiniz tam aynı tokenlayıcıyı (ör. GPT‑NeoX için tiktoken) kullanın. Ortaya çıkan int32[] token ID’lerini doğrudan kayda kaydedin.

  4. Her kaydı serileştir
    Hızlı bir ikili serileştirici seçin: Protocol Buffers, FlatBuffers veya Arrow IPC. Amaç, bir örnek için tek bir bayt dizisi elde etmek ve bunu TFRecord ya da bir tarball’a yazabilmektir.

  5. Shard’la ve sıkıştır

    • Hedef shard boyutu: 256 MiB – 1 GiB (S3 GET aralık istekleri için optimal).
    • Zstandard (seviye 3‑5) ile sıkıştır – hızlı dekompresyon, iyi oran.
    • İsimlendirme kuralı: train-00000-of-01000.tfrecord.zst.
  6. Manifest oluştur

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

    Manifest, doğrulama, yeniden başlatılabilir eğitim ve denetim için tek gerçek kaynaktır.

  7. Doğrula
    Kayıtların %0.1’ini rastgele örnekleyin, her alanı çözün ve görüntü çözümleme, token uzunluğu, ses süresi gibi kontrolleri çalıştırın. Küresel istatistikleri (vocab kapsama, çözünürlük dağılımı vb.) hesaplayıp manifest’e ekleyin.

  8. Sürümle ve değişmez şekilde depola
    Shard’ları ve manifest’ı değişmez bir bucket’a gönderin (gs://my‑project/datasets/v1/). Semantik bir sürüm etiketi (v1.0.0) ekleyin ve anlık görüntüyü bir veri‑versiyonlama sistemi (DVC, LakeFS) ile kaydedin.

  9. Eğitim döngünüzde yükleyin

    # 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
    

Ortaya Çıkan Trendler ve Geleceğe Hazırlık

TrendŞimdi neden önemliHızlı eylem
Birleştirilmiş çok‑modlu konteynerler (Meta’nın MDS, DeepLake)Metin, görüntü, video, ses ve gömülüler için tek dosya türü, yerleşik sürüm kontrolü ile.DeepLake ile bir pilot deneyin; LangChain ve LlamaIndex ile bütünleşir.
Sıfır kopya GPU‑direct depolamaNVMe‑over‑Fabric + GPUDirect, sıkıştırılmış shard’ları doğrudan GPU belleğine akıtmanıza olanak tanır.NVMe‑SSD havuzunuz olduğunda, torch.utils.data.DataLoader(persistent_workers=True)‘ı etkinleştirin.
Şema‑evrim dostu formatlarArrow 13+ tüm veri setini yeniden yazmadan alan ekleyip kaldırmanıza izin verir.Derinlik haritaları, video veya ek meta verileri daha sonra alabilecek herhangi bir veri hattı için Arrow/Parquet tercih edin.
Kendi kendine denetimli ön‑kodlamaCLIP görüntü gömülülerini veya wav2vec ses gömülülerini saklamak, ince ayar için hesaplamayı 2‑3 kat azaltır.Arrow tablonuza ekstra bir image_emb (float16) sütunu ekleyin; gelecekteki deneyler için ham görüntüyü tutun.
Gizlilik‑koruyucu depolamaŞifreli TFRecord + güvenli enclave’lar GDPR ağırlıklı alanlar için ortaya çıkıyor.Kişisel veri (PII) işliyorsanız, tf.io.TFRecordWriter‘ı özel bir şifreleme sarmalayıcı ile değerlendirin.
Veri‑merkezli AI metrikleriVeri kalitesi puanları (OCR güveni, bulanıklık metriği, SNR) artık birincil hiper‑parametreler.Manifest’te shard başına kalite puanlarını saklayın ve eğitim sırasında düşük kalite shard’ları filtreleyin.

Üretim‑Hazır Kontrol Listesi

  • Şema dosyası (.proto veya Arrow şeması) verinin yanında saklanır.
  • Tüm shard’lar hızlı bir codec (ZSTD‑L3 önerilir) ile sıkıştırılır.
  • Shard boyutu 256 MiB ile 1 GiB arasında.
  • Manifest, kontrol toplamı, kayıt sayısı, shard başına istatistikler ve ön işleme kodunun git hash’ini içerir.
  • Değişmez sürüm kontrolü (DVC, LakeFS veya benzeri).
  • Veri kalitesi metrikleri shard başına kaydedilir.
  • Gizlilik denetimi tamamlandı (PII gizleme, isteğe bağlı şifreleme).
  • Hata olmadan rastgele bir shard okuyabilen uçtan uca test yükleyicisi.
  • Şema, ön işleme adımları ve shard’ların nasıl yeniden üretileceğini açıklayan README.

Bu planı izlemek, eğitim veri hatlarınızı hızlı, ucuz ve yeniden üretilebilir tutar — modern bir LLM ekibinin ihtiyaç duyduğu üç temel.


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