Son Güncelleme: 21 Mayıs, 2025

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çek | Sizin İç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 eder | Sı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ç duyar | Zaman 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)
| Kavram | Tek cümle tanım | Tipik kullanım durumu |
|---|---|---|
| Sharding | Devasa 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 Format | Dosyalar rastgele arama yapmadan sıralı olarak okunabilir (TFRecord, WebDataset .tar). | S3/GCS’den yerel kopya olmadan doğrudan eğitim. |
| Columnar Storage | Veri 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 Schema | Dosya 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‑Tokenization | Zaten 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 Record | Gö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 File | Tü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‑Versioning | Veriyi kod gibi yönetmek (DVC, LakeFS, Pachyderm). | Tekrarlanabilir deneyler ve regülasyon uyumu. |
Doğru Formatı Seçmek
| Format | Modalite desteği | Sıkıştırma | Akış | Şema | Ekosistem |
|---|---|---|---|---|---|
| TFRecord | Herhangi bir ikili blob → metin, görüntü, ses | Yerleşik GZIP/ZSTD | ✅ | Implicit (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‑value | PyTorch DataLoader, webdataset lib |
| Apache Arrow / Parquet | Sütun‑temelli, iç içe yapı, ikili blob’lar | Snappy/ZSTD/LZ4 | ✅ (Arrow Flight) | ✅ (self‑describing) | Spark, Pandas, PyArrow, HuggingFace datasets |
| JSONL / NDJSON | İnsan‑okunur, esnek | None (or gzip) | ❌ | Implicit | Quick prototyping, small datasets |
| LMDB | Hızlı rastgele okuma (anahtar‑değer) | None (store compressed blobs) | ❌ | Implicit | Retrieval‑augmented generation |
| HDF5 | Hiyerarşik gruplar, büyük diziler | Built‑in gzip/lzf | ❌ (needs chunking) | Implicit | Scientific 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)
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.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.
Ön‑işleme / Tokenizasyon
Modelinize besleyeceğiniz tam aynı tokenlayıcıyı (ör. GPT‑NeoX içintiktoken) kullanın. Ortaya çıkanint32[]token ID’lerini doğrudan kayda kaydedin.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.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.
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.
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.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.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 önemli | Hı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 depolama | NVMe‑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 formatlar | Arrow 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‑kodlama | CLIP 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 metrikleri | Veri 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ı (
.protoveya 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