लर्निंग पाथ
हाल ही में, NVIDIA ने LLaMA-Mesh नामक एक नवाचारी मॉडल जारी किया है, जो साधारण पाठ विवरणों से 3D mesh बनाने में सक्षम है।
यह उल्टा भी काम करता है: किसी 3D mesh को दिए जाने पर मॉडल वस्तु की पहचान कर सकता है।
यह मशीन लर्निंग के लिए एक महत्वपूर्ण प्रगति है, क्योंकि 3D स्पेस को समझना AGI की दिशा में एक अहम कदम है। LLaMA-Mesh Blender जैसे सॉफ्टवेयर के साथ अक्सर काम करने वाले पेशेवरों और उत्साही लोगों के लिए भी उपयोगी है, क्योंकि यह 3D mesh बनाने और उपयोग करने की प्रक्रिया को तेज करता है।
इस संक्षिप्त मार्गदर्शिका में, मैं मॉडल की क्षमताओं को समझाऊँगा और इसके संभावित उपयोग व सीमाओं को समझने के लिए कुछ उदाहरण चलाऊँगा।
LLaMa-Mesh क्या है?
LLaMA-Mesh NVIDIA द्वारा विकसित एक नवाचारी मॉडल है जो बड़े भाषा मॉडल (LLMs) की क्षमताओं को 3D डोमेन तक बढ़ाता है।
पिछले किसी भी मॉडल के विपरीत, LLaMA-Mesh पाठ और 3D मोडैलिटी को एकीकृत करता है, जिससे उपयोगकर्ता सरल प्राकृतिक भाषा के प्रॉम्प्ट के माध्यम से 3D mesh बना सकते हैं।
अंदरूनी तौर पर, यह एक fine-tuned LLaMa-3.1-8B-Instruct है। मॉडल 3D mesh डेटा को एक पाठ-आधारित प्रारूप में एन्कोड करता है, विशेष रूप से OBJ फाइल मानक का उपयोग करते हुए, जो vertices और faces को सादे पाठ के रूप में वर्णित करता है।
LLaMa-Mesh तक कैसे पहुँचें
मॉडल का उपयोग करने के तीन तरीके हैं:
- आप मॉडल को Hugging Face के माध्यम से लोकल रूप से चला सकते हैं—रिपॉजिटरी यहाँ उपलब्ध है।
- जो लोग Blender में प्रवीण हैं और वहाँ मॉडल का उपयोग करना चाहते हैं, उनके लिए यह एक Blender ऐडऑन के रूप में उपलब्ध है।
- लेखकों ने Hugging Face प्लेटफ़ॉर्म पर एक ऑनलाइन डेमो भी सेट किया है, जिसका उपयोग मैं इस गाइड के लिए प्रायोगिक mesh जनरेट करने में करूँगा।
डेमो वेबऐप कुछ इस तरह दिखता है:

ऑनलाइन डेमो 4096 tokens तक सपोर्ट करता है, जबकि पूर्ण मॉडल 8K तक सपोर्ट करता है। इसलिए, इसकी पूरी क्षमताओं का अनुभव करने के लिए हमें मॉडल को लोकल रूप से चलाने की आवश्यकता है।
अगले चरण में, मैं बढ़ती कठिनाई के तीन आकारों के उदाहरण बनाऊँगा ताकि मॉडल की सीमाओं का परीक्षण हो सके। मैं उदाहरणों को 4K और 8K टोकन, दोनों संस्करणों पर चलाऊँगा ताकि उनके अंतर देखे जा सकें।
LLaMa-Mesh को लोकल या क्लाउड-आधारित उपयोग के लिए कैसे सेट अप करें
इस गाइड के लिए, मैं Google Colab के A100 GPU runtime का उपयोग करके मॉडल चलाना प्रदर्शित करूँगा। यदि आपके पास पर्याप्त लोकल कम्प्यूटेशनल पावर है, तो वही कोड आपके व्यक्तिगत हार्डवेयर पर चलाने के लिए अनुकूलित किया जा सकता है। Hugging Face रिपॉजिटरी यहाँ उपलब्ध है।
शुरू करने के लिए, हमें आवश्यक लाइब्रेरी इम्पोर्ट करनी होंगी और मॉडल व tokenizer डाउनलोड करना होगा:
from transformers import AutoModelForCausalLM, AutoTokenizer
model_path = "Zhengyi/LLaMA-Mesh"
tokenizer = AutoTokenizer.from_pretrained(model_path)
model = AutoModelForCausalLM.from_pretrained(model_path, device_map="auto").cuda()
हमें pad_token भी सेट करना होगा:
if tokenizer.pad_token_id is None:
tokenizer.pad_token_id = tokenizer.eos_token_id
अंत में, हमें प्रॉम्प्ट को tokenize करना है और इन्फरेंस के लिए मॉडल में देना है (यह सब मानक Huggingface वर्कफ़्लो है जो लगभग किसी भी अन्य मॉडल के साथ काम करता है):
prompt = "Create a 3D model of an original designer chair."
inputs = tokenizer(prompt, return_tensors="pt", padding=True)
input_ids = inputs.input_ids.cuda()
output = model.generate(
input_ids,
attention_mask=inputs['attention_mask'], # Provide the attention_mask
max_length=8000,
)
लेखकों ने वेब ऐप डेमो में उपयोग किए गए हाइपरपैरामीटर्स निर्दिष्ट नहीं किए हैं, इसलिए निष्पक्षता हेतु, मैं हमारी तुलना के लिए डिफ़ॉल्ट्स का उपयोग करूँगा।
LLaMa-Mesh के उदाहरण
अब मैं बढ़ती कठिनाई के तीन उदाहरणों से गुजरूँगा और डेमो ऐप के आउटपुट की तुलना Colab पर मॉडल चलाकर मिले आउटपुट से करूँगा।
उदाहरण 1: एक कुर्सी
हम कुछ सरल लेकिन रचनात्मक चीज़ से शुरू करेंगे—एक डिज़ाइनर कुर्सी। प्रॉम्प्ट यह है (मैं अंत में OBJ फ़ॉर्मेट में mesh जनरेट करने का अनुरोध जोड़ रहा हूँ क्योंकि लोकल रूप से चलता मॉडल कभी-कभी अन्यथा कुछ जनरेट करने से मना कर देता है):
Create a 3D model of an original designer chair in OBJ format.
ऑनलाइन डेमो में जनरेट किया गया ऑब्जेक्ट इस प्रकार है:

यह निश्चित रूप से एक बढ़िया और अजीब-सी कुर्सी है, हालांकि यह एक फिल्म निर्देशक की कुर्सी जैसी अधिक लगती है बनिस्बत एक डिज़ाइनर कुर्सी के।
अब, आइए प्रॉम्प्ट को लोकल रूप से चलाएँ और परिणाम को विज़ुअलाइज़ करें। हमें यह मिलता है:

कुर्सी का 3D mesh विज़ुअलाइज़ेशन
बड़े संदर्भ के साथ mesh अधिक विस्तृत दिखता है। हालांकि, मेरी राय में, कुर्सी कुछ हद तक सोफ़े जैसी लगती है।
उदाहरण 2: एक टोरस
अब, एक ज्यामितीय ऑब्जेक्ट आज़माएँ: टोरस (3D डोनट)। इस उदाहरण का प्रॉम्प्ट है:
Create a 3D model of a torus in OBJ format.
4096 मॉडल द्वारा जनरेट किया गया mesh इस प्रकार दिखता है:

मॉडल द्वारा जनरेट किया गया टोरस
दूसरी ओर, यहाँ Colab पर चल रहे मॉडल द्वारा जनरेट किए गए mesh का विज़ुअलाइज़ेशन है:

मॉडल द्वारा जनरेट किया गया टोरस
जैसा कि आप देख सकते हैं, इस mesh में कहीं अधिक polygons हैं। फिर भी, इसके बीच में छेद नहीं है। टोरस को इस तरह दिखना चाहिए:

स्रोत: Wikipedia
उदाहरण 3: क्लाइन बोतल
अंत में, एक क्लाइन बोतल—एक जटिल 3D संरचना—के साथ सीमाएँ परखें। इसके लिए प्रॉम्प्ट होगा:
Create a 3D model of a Klein bottle in OBJ format.
ऑनलाइन मॉडल इस इनपुट पर लगातार mesh जनरेट करता रहता है, जब तक कि अंततः टाइम आउट होकर त्रुटि न दे दे।
इसे बड़े कॉन्टेक्स्ट विंडो के साथ लोकल रूप से चलाने पर समस्या तो हल हो जाती है, लेकिन जो mesh मिलता है वह क्लाइन बोतल जैसा बिल्कुल नहीं दिखता:

मॉडल द्वारा जनरेट की गई क्लाइन बोतल
रुचि रखने वालों के लिए, क्लाइन बोतल कुछ इस तरह दिखती है:

स्रोत: Wikipedia
ऊपर के परीक्षणों से स्पष्ट है कि LLaMA-Mesh (ऑनलाइन और लोकल, दोनों) रचनात्मक और सरल डिज़ाइनों में तो उत्कृष्ट है, लेकिन सटीक ज्यामितीय और अत्यधिक जटिल गणितीय आकारों के साथ सीमाएँ सामने आती हैं। जैसे-जैसे मॉडल विकसित होगा, इन क्षमताओं के विस्तार को देखना उत्साहजनक होगा।
निष्कर्ष
इस गाइड में, हमने नए Nvidia LLaMa-Mesh मॉडल का अन्वेषण किया और उनके डेमो प्लेटफ़ॉर्म पर कुछ उदाहरण किए। हालाँकि मॉडल प्रारंभिक चरण में है, फिर भी यह उन पेशेवरों और उत्साहियों के लिए अपार संभावनाएँ दिखाता है जिन्हें 3D mesh जनरेशन के लिए तेज़ और सहज समाधान चाहिए।
जैसे-जैसे फ़्रेमवर्क विकसित होगा, भविष्य के अपडेट अधिक जटिल ज्यामितियों को संभालने या 3D प्रिंटर के साथ संगत होने जैसी विस्तारित क्षमताएँ ला सकते हैं।
