Son Yenilənmə: 21 May, 2025

Başlıq - AI Təlimi və Çoxmodal LLM-lər üçün Məlumat Fayl Formatlarını Necə Hazırlamaq

TL;DR – Seçdiyiniz fayl formatı təlim vaxtını 30‑50 % azalda, saxlanma xərclərini 1 %–5 % endirə və çox‑modal modellərinizi uyğunsuz məlumatlarla qarşılaşmaqdan qoruyar. Ideal seçim axın‑hazır, sütun‑əsaslı ikili konteyner (TFRecord, WebDataset, Arrow/Parquet) olub, öncədən tokenləşdirilmiş mətnöncədən kodlaşdırılmış media‑nı tək, versiya‑idarəli shardda saxlayır.


Fayl‑Formatının AI Təlimi Üçün Niyə Önəmli olduğu

FaktSizin üçün nə deməkdir
İkili, sütun‑əsaslı formatlar CSV və ya sadə mətnə nisbətən 30‑50 % daha sürətlidirHardware‑inizə (GPU/TPU) və pipeline‑ınıza (TensorFlow, PyTorch, Spark) birbaşa danışan format seçin.
Uyğunsuz tokenləşdirmə və ya şəkil dekodlaşdırması model keyfiyyətinə zərər verirÖn emal pipeline‑ını bir dəfə dondurun, sonra artıq tokenləşdirilmiş və ya öncədən kodlaşdırılmış təmsilatı saxlayın.
Petabayt‑səviyyəli LLM‑lər 1 % ölçü azalması ilə milyonlarla dollar qənaət edirSıxışdırılmış, shard‑lı konteynerlərdən (ZSTD‑TFRecord, Arrow/Parquet lüğət kodlaması ilə) istifadə edin.
Çox‑modal modellər sinxronlaşdırılmış uyğunluq metadata‑sına ehtiyac duyurZaman möhürlərini, sərhəd qutularını, başlıq ID‑lərini eyni qeyd daxilində saxlayın, ayrı fayllarda deyil.
Tənzimləyici uyğunluq artıq dəyişməz, hash‑təsdiqlənmiş məlumat tələb edirSxemi, checksum‑u, mənşəyi və versiyanı qeyd edən manifest (JSON/YAML) yaradın.

Nəticə: format yavaş I/O, səs‑küylü məlumat və uyğunluq problemlərinə qarşı ilk müdafiə xəttidir.


Əsas Konsepsiyalar və Terminologiya (Sürətli İstinad)

KonseptBir‑cümlə tərifiTipik istifadə‑halı
ShardingBöyük dataset‑i bir çox kiçik, müstəqil oxuna bilən fayllara (məsələn, 1 GB shard‑lar) bölmək.Paylanmış təlim klasterində paralel yükləmə.
Streaming‑Ready FormatFaylların təsadüfi axtarışa ehtiyac duymadan ardıcıllıqla oxuna bilməsi (TFRecord, WebDataset .tar).Məlumatı S3/GCS‑dən yerli nüsxə olmadan birbaşa təlim.
Columnar StorageMəlumatın sətir deyil, sütun üzrə saxlanması (Parquet, Arrow).Tək modalitenin (məsələn, yalnız başlıqları) səmərəli filtrasiya edilməsi.
Self‑Describing SchemaFayl öz sahə adlarını və tiplərini özündə saxlayır.Kod versiyaları arasında uyğunluğun təmin edilməsi.
Lazy Decoding / Pre‑TokenizationArtıq tokenləşdirilmiş mətn (int‑IDs) və ya əvvəlcədən hesablanmış embedding‑lərin saxlanması.Hər epoxda ön emal vaxtını 2‑5× azaldır.
Multi‑Modal RecordŞəkil, mətn, audio və metadata‑nı birləşdirən məntiqi qeyd.Vision‑language və ya audio‑text modelləri üçün sinxron nümunələmə.
Manifest / Index FileBütün shard‑ları, checksum‑ları və per‑shard statistikalarını sadalanan kiçik JSON/YAML.Sürətli doğrulama, davamlı təlim, audit izləri.
Data‑VersioningMəlumatı kod kimi (DVC, LakeFS, Pachyderm) idarə etmək.Təkrarlana bilən eksperimentlər və tənzimləyici uyğunluq.

Doğru Formatı Seçmək

FormatModalite dəstəyiSıxışdırmaStreamingSxemEkosistem
TFRecordHər hansı ikili blob → mətn, şəkil, audioDaxili GZIP/ZSTDImplicit (via tf.io.parse_example)TensorFlow, PyTorch (torchdata), HuggingFace datasets
WebDataset (.tar, .tar.gz)Çox‑modal (şəkil + mətn + audio)Xarici (gzip, zstd)Implicit key‑valuePyTorch DataLoader, webdataset lib
Apache Arrow / ParquetSütun‑əsaslı, nested strukturlar, ikili blob‑larSnappy/ZSTD/LZ4✅ (Arrow Flight)✅ (self‑describing)Spark, Pandas, PyArrow, HuggingFace datasets
JSONL / NDJSONİnsan‑oxunaqlı, elastikYox (və ya gzip)ImplicitTez prototipləşdirmə, kiçik dataset‑lər
LMDBSürətli random oxuma (key‑value)Yox (sıxılmış blob‑lar saxlanır)ImplicitRetrieval‑augmented generation
HDF5Hierarchical qruplar, böyük massivlərDaxili gzip/lzf❌ (chunking tələb edir)ImplicitElmi data, audio spektrogramları

Ümumi qayda:

  • Miqqyaslı təlim → TFRecord, WebDataset, ya da Arrow/Parquet (axın, sıxışdırma və shard‑lama dəstəyi var).
  • Eksplorativ iş → JSONL (insan‑oxunaqlı, asan redaktə).
  • Ağır random oxuma (məsələn, retrieval‑augmented generation) → LMDB.

Addım‑Addım Planı (Xam Fayllardan İstehsal‑Hazır Shard‑lara)

  1. Tək mənbə‑həqiqət sxemi təyin edin

    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.
    }
    

    Bu .proto (və ya Arrow sxemi) dataset‑in yanında saxlayın.

  2. Xam aktivləri toplayın və təmizləyin

    • Mətn: Unicode‑NFKC, nəzarət simvollarını silin, dublikatları aradan qaldırın.
    • Şəkillər: Əvvəl lossless PNG‑yə çevirin, sonra ehtiyac varsa lossy JPEG‑XL (keyfiyyət 85‑90 %) istifadə edin.
    • Audio: 16 kHz‑ə resample edin, 16‑bit PCM; Opus (lossy) ya da FLAC (lossless) ilə kodlayın.
  3. Ön‑emal / Tokenləşdirin
    Modelinizə verəcəyiniz eyni tokenləşdiricidən (məsələn, tiktoken for GPT‑NeoX) istifadə edin. Nəticə int32[] token ID‑lərini birbaşa qeydə yazın.

  4. Hər qeydini seriyalaşdırın
    Sürətli ikili seriyalaşdırıcı seçin: Protocol Buffers, FlatBuffers, ya da Arrow IPC. Məqsəd hər nümunə üçün tək byte string yaratmaqdır ki, TFRecord‑a ya da tarball‑a yazılsın.

  5. Shard‑ləşdirin və sıxın

    • Hədəf shard ölçüsü: 256 MiB – 1 GiB (S3 GET range sorğuları üçün optimal).
    • Zstandard (level 3‑5) ilə sıxın – sürətli dekompressiya, yaxşı nisbət.
    • Adlandırma nümunəsi: train-00000-of-01000.tfrecord.zst.
  6. Manifest yaradın

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

    Manifest doğrulama, davamlı təlim və audit üçün tək həqiqi mənbədir.

  7. Doğrulama
    Qeydlərin 0.1 %‑ni təsadüfi seçin, hər sahəni deşifrə edin və məntiqi yoxlamalar aparın (şəkil deşifrə, token uzunluğu, audio müddəti). Ümumi statistikaları (vocab əhatəsi, çözünürlük paylanması) hesablayın və manifest‑ə əlavə edin.

  8. Versiyalaşdırın və dəyişməz saxlayın
    Shard‑ları + manifest‑ı dəyişməz bucket‑a yükləyin (gs://my‑project/datasets/v1/). Semantik versiya (v1.0.0) ilə işarələyin və snapshot‑ı data‑versioning sistemi (DVC, LakeFS) ilə qeyd edin.

  9. Təlim döngünüzdə yükləyin

    # 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:
        # modelə ötür …
        pass
    

Yaranan Trendlər və Gələcəyə Hazırlıq

TrendNiyə indi vacibdirTez addım
Birləşmiş çox‑modal konteynerlər (Meta‑nin MDS, DeepLake)Tek fayl tipində mətn, şəkil, video, audio və embedding‑lər, daxili versiyalaşdırma.DeepLake‑da pilot sınaq; LangChain və LlamaIndex ilə inteqrasiya edir.
Zero‑copy GPU‑direct storageNVMe‑over‑Fabric + GPUDirect sayəsində sıxılmış shard‑lar birbaşa GPU yaddaşına axıra bilir.NVMe‑SSD hovuzunuz varsa torch.utils.data.DataLoader(persistent_workers=True)‑i aktivləşdirin.
Sxem‑evolusiyası dəstəkləyən formatlarArrow 13+ sahələri əlavə/çıxarmaq üçün bütün dataset‑i yenidən yazmağa ehtiyac qalmır.Arrow/Parquet‑i gələcəkdə dərinlik xəritələri, video və ya əlavə metadata əlavə edəcək pipeline‑lər üçün seçin.
Öz‑özünə öyrədilmiş ön‑kodlaşdırmaCLIP şəkil embedding‑ləri və ya wav2vec audio embedding‑lərini saxlamaq fine‑tuning‑i 2‑3× sürətləndirir.Arrow cədvəlinizə image_emb (float16) sütunu əlavə edin; gələcək təcrübələr üçün orijinal şəkili də saxlayın.
Məxfilik‑qoruyucu saxlamalarŞifrələnmiş TFRecord + secure enclave‑lər GDPR‑a uyğun sahələr üçün ortaya çıxır.PII‑niz varsa tf.io.TFRecordWriter‑ı xüsusi şifrələmə wrapper‑i ilə qiymətləndirin.
Data‑centric AI ölçüləriOCR‑etibarlılığı, bulanıqlıq, SNR kimi keyfiyyət skorları artıq hiper‑parametr kimi qəbul edilir.Manifest‑də per‑shard keyfiyyət skorlarını saxlayın və təlim zamanı aşağı keyfiyyətli shard‑ları filtr edin.

İstehsal‑Hazır Yoxlama Siyahısı

  • .proto ya da Arrow sxemi faylı dataset‑in yanında saxlanılıb.
  • Bütün shard‑lar sürətli kodkl (ZSTD‑L3 tövsiyə olunur) ilə sıxılıb.
  • Shard ölçüsü 256 MiB‑dən 1 GiB‑ə qədərdir.
  • Manifest checksum, qeyd sayı, per‑shard statistikalar və preprocessing kodunun git hash‑ini ehtiva edir.
  • Dəyişməz versiya idarəetməsi (DVC, LakeFS və ya oxşar) aktivdir.
  • Hər shard üçün data keyfiyyəti ölçüləri qeyd olunub.
  • Məxfilik auditı tamamlanıb (PII redaktəsi, istəyə bağlı şifrələmə).
  • Son‑son test loaderi təsadüfi bir shard‑ı səhvsiz oxuya bilir.
  • README‑da sxem, ön‑emal addımları və shard‑ların necə yenidən yaradılacağı izah olunub.

Bu planı izləyərək təlim pipeline‑larınızı sürətli, ucuz və təkrarlana bilən saxlayacaqsınız – müasir LLM komandalarının üç əsas sütunu.


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