अंतिम अपडेट: 21 May, 2025

TL;DR – आप जो फ़ाइल फ़ॉर्मेट चुनते हैं वह प्रशिक्षण समय में 30‑50 % तक की कमी, स्टोरेज लागत में 1 %–5 % तक की बचत, और आपके मल्टी‑मॉडल मॉडल को असंगत डेटा से बचा सकता है। आदर्श विकल्प एक स्ट्रीमिंग‑रेडी, कॉलम‑ओरिएंटेड बाइनरी कंटेनर (TFRecord, WebDataset, Arrow/Parquet) है जो पूर्व‑टोकनाइज़्ड टेक्स्ट और पूर्व‑एन्कोडेड मीडिया को एक ही, संस्करण‑नियंत्रित शार्ड में संग्रहीत करता है।
फ़ाइल‑फ़ॉर्मेट AI प्रशिक्षण के लिए क्यों महत्वपूर्ण है
| तथ्य | आपके लिए क्या मतलब है |
|---|---|
| बाइनरी, कॉलम‑ओरिएंटेड फ़ॉर्मेट CSV या साधारण टेक्स्ट से 30‑50 % तेज़ होते हैं | ऐसा फ़ॉर्मेट चुनें जो सीधे आपके हार्डवेयर (GPU/TPU) और पाइपलाइन (TensorFlow, PyTorch, Spark) से संवाद करे। |
| असंगत टोकनाइज़ेशन या इमेज डिकोडिंग मॉडल की गुणवत्ता को नुकसान पहुँचाती है | एक बार प्री‑प्रोसेसिंग पाइपलाइन को फ्रीज़ करें, फिर पहले‑से‑टोकनाइज़्ड या पहले‑से‑एन्कोडेड प्रतिनिधित्व को संग्रहीत करें। |
| पेर्टाबाइट‑स्केल LLMs 1 % आकार कमी से मिलियन डॉलर बचाते हैं | कम्प्रेस्ड, शार्डेड कंटेनर (ZSTD‑TFRecord, Arrow/Parquet डिक्शनरी एन्कोडिंग के साथ) का उपयोग करें। |
| मल्टी‑मॉडल मॉडल को सिंक्रनाइज़्ड एलाइनमेंट मेटाडाटा चाहिए | टाइमस्टैम्प, बाउंडिंग बॉक्स, कैप्शन IDs को अलग फ़ाइलों के बजाय एक ही रिकॉर्ड के अंदर रखें। |
| नियामक अनुपालन अब अपरिवर्तनीय, हैश‑वेरिफ़ाइड डेटा की मांग करता है | एक मैनिफेस्ट (JSON/YAML) उत्पन्न करें जो स्कीमा, चेकसम, उत्पत्ति, और संस्करण को रिकॉर्ड करे। |
निचला निष्कर्ष: फ़ॉर्मेट धीमी I/O, शोरयुक्त डेटा, और अनुपालन समस्याओं के खिलाफ पहली रक्षा की पंक्ति है।
मुख्य अवधारणाएँ एवं शब्दावली (त्वरित संदर्भ)
| अवधारणा | एक‑वाक्य परिभाषा | सामान्य उपयोग‑केस |
|---|---|---|
| Sharding | बड़े डेटा सेट को कई छोटे, स्वतंत्र रूप से पढ़े जा सकने वाले फ़ाइलों (जैसे 1 GB शार्ड) में विभाजित करना। | वितरित प्रशिक्षण क्लस्टर पर समानांतर लोडिंग। |
| Streaming‑Ready Format | ऐसी फ़ाइलें जो रैंडम सीक के बिना क्रमिक रूप से पढ़ी जा सकती हैं (TFRecord, WebDataset .tar)। | बिना स्थानीय कॉपी के सीधे S3/GCS से प्रशिक्षण। |
| Columnar Storage | डेटा को पंक्ति के बजाय कॉलम में संग्रहीत किया जाता है (Parquet, Arrow)। | एकल मोडैलिटी (जैसे केवल कैप्शन) को कुशलता से फ़िल्टर करना। |
| Self‑Describing Schema | फ़ाइल अपने फ़ील्ड नाम और प्रकार को एम्बेड करती है। | कोड संस्करणों के बीच संगतता की गारंटी देता है। |
| Lazy Decoding / Pre‑Tokenization | पहले‑से‑टोकनाइज़्ड टेक्स्ट (int‑IDs) या पूर्व‑गणना एम्बेडिंग्स को संग्रहीत करना। | प्रत्येक इपोक में प्री‑प्रोसेसिंग समय को 2‑5× घटाता है। |
| Multi‑Modal Record | एक लॉजिकल रिकॉर्ड जो इमेज, टेक्स्ट, ऑडियो, और मेटाडाटा को बंडल करता है। | विज़न‑भाषा या ऑडियो‑टेक्स्ट मॉडल के लिए सिंक्रनाइज़्ड सैंपलिंग सक्षम करता है। |
| Manifest / Index File | सभी शार्ड, चेकसम, और प्रति‑शार्ड आँकड़े सूचीबद्ध करने वाला छोटा JSON/YAML। | तेज़ वैलिडेशन, पुनरारंभ योग्य प्रशिक्षण, ऑडिट ट्रेल। |
| Data‑Versioning | डेटा को कोड की तरह ट्रीट करना (DVC, LakeFS, Pachyderm)। | पुनरावृत्त प्रयोग और नियामक अनुपालन। |
सही फ़ॉर्मेट चुनना
| फ़ॉर्मेट | मोडैलिटी समर्थन | कम्प्रेशन | स्ट्रीमिंग | स्कीमा | इकोसिस्टम |
|---|---|---|---|---|---|
| TFRecord | कोई भी बाइनरी ब्लॉब → टेक्स्ट, इमेज, ऑडियो | इन‑बिल्ट GZIP/ZSTD | ✅ | Implicit (via tf.io.parse_example) | TensorFlow, PyTorch (torchdata), HuggingFace datasets |
WebDataset (.tar, .tar.gz) | मल्टी‑मॉडल (इमेज + टेक्स्ट + ऑडियो) | External (gzip, zstd) | ✅ | Implicit key‑value | PyTorch DataLoader, webdataset lib |
| Apache Arrow / Parquet | कॉलमर, नेस्टेड स्ट्रक्ट्स, बाइनरी ब्लॉब्स | Snappy/ZSTD/LZ4 | ✅ (Arrow Flight) | ✅ (self‑describing) | Spark, Pandas, PyArrow, HuggingFace datasets |
| JSONL / NDJSON | मानव‑पठनीय, लचीला | None (or gzip) | ❌ | Implicit | त्वरित प्रोटोटाइपिंग, छोटे डेटा सेट |
| LMDB | तेज़ रैंडम रीड्स (की‑वैल्यू) | None (store compressed blobs) | ❌ | Implicit | रिट्रीवल‑ऑगमेंटेड जनरेशन |
| HDF5 | हायरार्किकल ग्रुप्स, बड़े एरेज़ | Built‑in gzip/lzf | ❌ (needs chunking) | Implicit | वैज्ञानिक डेटा, ऑडियो स्पेक्ट्रोग्राम्स |
सामान्य नियम:
- विस्तार में प्रशिक्षण → TFRecord, WebDataset, या Arrow/Parquet (वे स्ट्रीम, कम्प्रेस और शार्डिंग को सपोर्ट करते हैं)।
- अन्वेषणात्मक काम → JSONL (मानव‑पठनीय, संपादित करने में आसान)।
- भारी रैंडम एक्सेस (जैसे, रिट्रीवल‑ऑगमेंटेड जनरेशन) → LMDB।
चरण‑दर‑चरण ब्लूप्रिंट (कच्ची फ़ाइलों से प्रोडक्शन‑रेडी शार्ड्स तक)
एकल स्रोत‑सत्य स्कीमा परिभाषित करें
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.कच्ची सामग्री एकत्रित करें और साफ़ करें
- टेक्स्ट: Unicode‑NFKC, कंट्रोल कैरेक्टर्स हटाएँ, डुप्लिकेट हटाएँ।
- इमेजेज: पहले लॉसलेस PNG में बदलें, फिर वैकल्पिक रूप से लॉसी JPEG‑XL (क्वालिटी 85‑90 %)।
- ऑडियो: 16 kHz, 16‑बिट PCM में री‑सैंपल करें; Opus (लॉसी) या FLAC (लॉसलैस) में एन्कोड करें।
प्री‑प्रोसेस / टोकनाइज़
उस टोकनाइज़र का उपयोग करें जिसे आप मॉडल को देंगे (जैसे, GPT‑NeoX के लिएtiktoken)। उत्पन्नint32[]टोकन IDs को सीधे रिकॉर्ड में संग्रहीत करें।प्रत्येक रिकॉर्ड को सीरियलाइज़ करें
एक तेज़ बाइनरी सीरियलाइज़र चुनें: Protocol Buffers, FlatBuffers, या Arrow IPC। लक्ष्य है प्रति उदाहरण एक सिंगल बाइट स्ट्रिंग जिसे TFRecord या टारबॉल में लिखा जा सके।शार्ड और कम्प्रेस करें
- लक्षित शार्ड आकार: 256 MiB – 1 GiB (S3 GET रेंज अनुरोधों के लिए इष्टतम)।
- Zstandard (लेवल 3‑5) से कम्प्रेस करें – तेज़ डिकम्प्रेशन, अच्छा अनुपात।
- नामकरण नियम:
train-00000-of-01000.tfrecord.zst।
एक मैनिफेस्ट बनाएं
[ { "shard": "train-00000-of-01000.tfrecord.zst", "checksum": "sha256:ab12…", "num_examples": 12456, "avg_seq_len": 256, "git_hash": "d3f9c1e" }, … ]मैनिफेस्ट वैलिडेशन, पुनरारंभ योग्य प्रशिक्षण, और ऑडिट के लिए एकल स्रोत‑सत्य है।
वैलिडेट करें
रैंडम रूप से 0.1 % रिकॉर्ड्स का नमूना लें, प्रत्येक फ़ील्ड को डिकोड करें, और सैनीटी चेक्स चलाएँ (इमेज डिकोड, टोकन लंबाई, ऑडियो अवधि)। ग्लोबल आँकड़े (वोकैब कवरेज, रिज़ॉल्यूशन वितरण) गणना करें और उन्हें मैनिफेस्ट में संग्रहीत करें।संस्करण बनाएं और अपरिवर्तनीय रूप से संग्रहीत करें
शार्ड्स + मैनिफेस्ट को एक अपरिवर्तनीय बकेट (gs://my‑project/datasets/v1/) में पुश करें। एक सिमेंटिक संस्करण (v1.0.0) टैग करें और स्नैपशॉट को डेटा‑वर्ज़निंग सिस्टम (DVC, LakeFS) में रजिस्टर करें।अपने प्रशिक्षण लूप में लोड करें
# 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
उभरते रुझान और भविष्य‑सुरक्षा
| रुझान | अब यह क्यों महत्वपूर्ण है | त्वरित कार्रवाई |
|---|---|---|
| Unified multi‑modal containers (Meta’s MDS, DeepLake) | टेक्स्ट, इमेज, वीडियो, ऑडियो, और एम्बेडिंग्स के लिए एक फ़ाइल प्रकार, बिल्ट‑इन वर्ज़निंग के साथ। | DeepLake के साथ एक पायलट आज़माएँ; यह LangChain और LlamaIndex के साथ इंटीग्रेट होता है। |
| Zero‑copy GPU‑direct storage | NVMe‑over‑Fabric + GPUDirect आपको कम्प्रेस्ड शार्ड्स को सीधे GPU मेमोरी में स्ट्रीम करने देता है। | जब आपके पास NVMe‑SSD पूल हो, तो torch.utils.data.DataLoader(persistent_workers=True) सक्षम करें। |
| Schema‑evolution friendly formats | Arrow 13+ आपको पूरे डेटासेट को री‑राइट किए बिना फ़ील्ड जोड़ने/हटाने देता है। | भविष्य में डेप्थ मैप्स, वीडियो, या अतिरिक्त मेटाडाटा को इन्जेस्ट करने वाले पाइपलाइन के लिए Arrow/Parquet को प्राथमिकता दें। |
| Self‑supervised pre‑encoding | CLIP इमेज एम्बेडिंग्स या wav2vec ऑडियो एम्बेडिंग्स को स्टोर करने से फाइन‑ट्यूनिंग के लिए कंप्यूट 2‑3× कम हो जाता है। | अपने Arrow टेबल में एक अतिरिक्त कॉलम image_emb (float16) जोड़ें; भविष्य के प्रयोगों के लिए रॉ इमेज रखें। |
| Privacy‑preserving storage | एन्क्रिप्टेड TFRecord + सिक्योर एन्क्लेव्स GDPR‑भारी डोमेन्स के लिए उभर रहे हैं। | यदि आप PII संभालते हैं तो tf.io.TFRecordWriter को कस्टम एन्क्रिप्शन रैपर के साथ मूल्यांकन करें। |
| Data‑centric AI metrics | डेटा क्वालिटी स्कोर (OCR कॉन्फिडेंस, ब्लर मेट्रिक, SNR) अब फर्स्ट‑क्लास हाइपर‑पैरामीटर हैं। | मैनिफेस्ट में प्रति‑शार्ड क्वालिटी स्कोर संग्रहीत करें और प्रशिक्षण के दौरान लो‑क्वालिटी शार्ड्स को फ़िल्टर करें। |
प्रोडक्शन‑रेडी चेकलिस्ट
- स्कीमा फ़ाइल (
.protoया Arrow स्कीमा) डेटा के बगल में संग्रहीत। - सभी शार्ड्स को तेज़ कोडेक (ZSTD‑L3 अनुशंसित) से कम्प्रेस किया गया।
- शार्ड आकार 256 MiB से 1 GiB के बीच।
- मैनिफेस्ट में चेकसम, रिकॉर्ड काउंट, प्रति‑शार्ड आँकड़े, और प्री‑प्रोसेसिंग कोड का git हैश शामिल है।
- अपरिवर्तनीय वर्ज़न कंट्रोल (DVC, LakeFS, या समान)।
- प्रति शार्ड डेटा क्वालिटी मेट्रिक्स लॉग किए गए।
- प्राइवेसी ऑडिट पूरा हुआ (PII रिडैक्शन, वैकल्पिक एन्क्रिप्शन)।
- एंड‑टू‑एंड टेस्ट लोडर जो बिना त्रुटियों के रैंडम शार्ड पढ़ सके।
- README जो स्कीमा, प्री‑प्रोसेसिंग स्टेप्स, और शार्ड्स को पुनः जनरेट करने का तरीका समझाता है।
इस ब्लूप्रिंट का पालन करने से आपके प्रशिक्षण पाइपलाइन तेज़, सस्ते, और पुनरुत्पादनीय रहेंगे—हर आधुनिक LLM टीम के लिए आवश्यक तीन स्तंभ।
टैग: data‑engineering multi‑modal‑llm training‑pipelines
स्लग: how-to-prepare-data-file-formats-for-ai-training