Zubnet AIसीखेंWiki › YAML
बुनियादी ढांचा

YAML

इसे भी कहा जाता है: YAML Ain't Markup Language
एक मनुष्य-पठनीय डेटा सीरियलाइजेशन फॉर्मेट जो AI और DevOps में व्यापक रूप से उपयोग किया जाता है कॉन्फ़िगरेशन फ़ाइलों, पाइपलाइन परिभाषाओं, और मॉडल मेटाडेटा के लिए। YAML संरचना को प्रतिनिधित्व करने के लिए टैब का उपयोग करता है (कोई ब्रैकेट या कोष्ठक नहीं), जो पढ़ने में आसान बनाता है लेकिन अक्षर अंतर के प्रति बेहद संवेदनशील होता है। AI के कार्यप्रवाह में आप इसे हर जगह पाएंगे — Docker Compose फ़ाइलें, Kubernetes मैनिफेस्ट, Hugging Face मॉडल कार्ड, CI/CD पाइपलाइन, और प्रशिक्षण कॉन्फ़िगरेशन फ़ाइलें।

यह क्यों मायने रखता है

यदि आप AI इंफ्रास्ट्रक्चर के साथ काम कर रहे हैं, तो आप YAML लिख रहे होंगे। मॉडल सेटअप, डिप्लॉयमेंट मैनिफेस्ट, पाइपलाइन परिभाषाएं, पर्यावरण चर — यह आधुनिक AI स्टैक की जोड़ने वाली भाषा है। YAML के साथ आराम से काम करना अनिवार्य नहीं है; यह एक प्रशिक्षण चलाने या डिप्लॉयमेंट को गलत तरीके से सेट करने पर टूटने वाली पहली चीज है।

गहन अध्ययन

YAML — जो recursively "YAML Ain't Markup Language" का मतलब है — brackets या braces के बजाय indentation के माध्यम से डेटा का प्रतिनिधित्व करता है। सब कुछ तीन primitives से बनाया गया है: scalar मान (strings, numbers, booleans), sequences (ordered lists, - के साथ चिह्नित), और mappings (key-value pairs, : के साथ चिह्नित)। आप चीज़ों को आगे indent करके nest करते हैं। एक key के नीचे दो-space indent का अर्थ है "यह उस key से संबंधित है।" यही वह है जो YAML को एक नज़र में पठनीय बनाता है और यह भी जो इसे maddening बनाता है जब कुछ टूटता है। बुनियादी बातों से परे, YAML configuration के chunks का पुन: उपयोग करने के लिए anchors (&name) और aliases (*name), --- द्वारा अलग किए गए multi-document files, और यहाँ तक कि type hints के लिए custom tags का समर्थन करता है। अधिकांश लोग कभी advanced features को नहीं छूते, लेकिन अकेले anchors आपको पाँच जगहों में config के एक ही block को बनाए रखने से बचा सकते हैं।

AI ecosystem में YAML

यदि आप AI बुनियादी ढाँचे के पास कहीं भी काम करते हैं, तो YAML अपरिहार्य है। Hugging Face मॉडल cards YAML front matter हैं जो एक मॉडल के लाइसेंस, datasets, metrics, और intended use का वर्णन करते हैं — यह वही है कैसे Hub जानता है कि आपका मॉडल क्या है और इसे कैसे display करना है। Docker Compose फ़ाइलें जो आपके inference server, आपके vector डेटाबेस, और आपके monitoring stack को spin up करती हैं सभी YAML हैं। Kubernetes manifests जो आपके मॉडल serving pods को तैनात और scale करते हैं वे YAML हैं। Hydra, MMEngine, और Axolotl जैसे frameworks के लिए training configs YAML हैं। GitHub Actions, GitLab CI, और CircleCI में CI/CD pipelines YAML हैं। यहाँ तक कि Prometheus alerting नियम और Ansible playbooks YAML हैं। प्रारूप ने configuration युद्धों को इसलिए नहीं जीता क्योंकि यह perfect है, बल्कि क्योंकि जब आप 200-line deployment spec को सुबह 2 बजे देख रहे हैं तो यह पढ़ने के लिए सबसे कम दर्दनाक चीज़ है।

Gotchas जो आपको काटेंगे

YAML का implicit type coercion इसका सबसे कुख्यात trap है। मान no को boolean false के रूप में parse किया जाता है। मान 3.10 float 3.1 बन जाता है, जो एक समस्या है यदि यह एक Python संस्करण है। Norway के लिए country code NO boolean false बन जाता है — इसे शाब्दिक रूप से "Norway problem" कहा जाता है और इसने production datasets में वास्तविक bugs उत्पन्न किए हैं। फिर tab-versus-space मुद्दा है: YAML indentation के लिए tabs को मना करता है, full stop। एक 500-line फ़ाइल में एक tab character और पूरी चीज़ parse करने में विफल हो जाती है, अक्सर एक error message के साथ जो ग़लत line की ओर इशारा करती है। Multiline strings | (literal block, newlines preserve करता है), > (folded block, lines join करता है), और trailing newlines को नियंत्रित करने के लिए - तथा + के साथ उनके variants के साथ confusion की एक और परत जोड़ती हैं। अधिकांश लोग एक शैली चुनते हैं और उसे याद कर लेते हैं बजाय सभी combinations सीखने के।

YAML बनाम JSON बनाम TOML

JSON सख़्त, असंदिग्ध, और सार्वभौमिक रूप से समर्थित है — लेकिन इसे हाथ से लिखना दर्दनाक है क्योंकि सभी quoting और braces के कारण, और यह comments का समर्थन नहीं करता। YAML JSON का एक superset है (valid JSON valid YAML है) जो पठनीयता के लिए strictness का व्यापार करता है: आपको comments, साफ़ syntax, और anchors मिलते हैं, लेकिन आपको implicit type coercion और whitespace संवेदनशीलता भी मिलती है। TOML बीच में बैठता है — explicit typing, comments, कोई indentation संवेदनशीलता नहीं — और flat या shallow configs जैसे pyproject.toml और Rust के Cargo.toml के लिए अच्छा काम करता है। व्यावहारिक नियम: machine-to-machine संचार और API payloads के लिए JSON का उपयोग करें, application configuration के लिए जो shallow रहता है TOML का, और deeply nested configuration के लिए YAML का जिसे मनुष्यों को नियमित रूप से पढ़ने और edit करने की आवश्यकता है। यदि आपका config तीन स्तरों से अधिक गहरा है, तो YAML शायद आपका सबसे अच्छा विकल्प है। यदि यह दो स्तर या उससे कम है, तो TOML आपको सिरदर्द से बचाएगा।

अपनी sanity बनाए रखना

एकमात्र सबसे अच्छा निवेश जो आप कर सकते हैं वह एक YAML linter है। yamllint केवल syntax errors नहीं बल्कि असंगत indentation और trailing spaces जैसे style मुद्दों को भी पकड़ता है। इसे अपने CI pipeline में चलाएँ ताकि bad YAML कभी production तक न पहुँचे। IDE extensions — Red Hat द्वारा VS Code के लिए YAML plugin मानक है — आपको real-time validation, JSON Schema के विरुद्ध auto-completion, और जब आपका indentation drifts तब तत्काल feedback देते हैं। दोहराए गए blocks वाले बड़े configs के लिए, anchors और aliases सीखें: &defaults के साथ एक बार default config परिभाषित करें और इसे विशिष्ट entries में <<: *defaults के साथ merge करें, केवल वही override करें जो बदलता है। यदि आप Kubernetes या Docker Compose के साथ काम कर रहे हैं, तो kubeval और docker compose config जैसे tools आपके YAML को वास्तविक schema के विरुद्ध validate करेंगे, उन errors को पकड़ेंगे जिन्हें एक generic linter miss करता है। और जब सब कुछ विफल हो जाए, याद रखें कि आप हमेशा YAML को JSON में बदल सकते हैं, वहाँ verify कर सकते हैं, और वापस बदल सकते हैं — क्योंकि दिन के अंत में, वे एक ही डेटा का प्रतिनिधित्व करते हैं।

संबंधित अवधारणाएँ

← सभी शब्द
← Xiaomi Zero-shot / Few-shot →
ESC