BESTNET-CLOUD
GPU-VPS
GPUStack
10G Private Network
NFS Shared Cache
टेक ब्लॉग / इन्फ्रास्ट्रक्चर बिल्ड गाइड
Bestnet Cloud × GPU-VPS को 10G प्राइवेट नेटवर्क से कनेक्ट करके,
GPUStack क्लस्टर को इम्प्लीमेंट करने की गाइड #
Bestnet Cloud को कंट्रोल प्लेन और GPU-VPS को इन्फरेंस वर्कर के रूप में अलग करते हुए,
एक शेयर्ड NFS कैश में मॉडल फाइलों को सेंट्रलाइज़ किया गया है।
क्लाइंट पोर्टल की तैयारी से लेकर
Ubuntu पर इम्प्लीमेंटेशन और ऑपरेशनल वेरिफिकेशन तक, हमने इसे एक how-to आर्टिकल के रूप में व्यवस्थित किया है।
प्राइवेट लिंक
मॉडल डाउनलोड
GPU वर्कर
शेयर्ड मॉडल स्टोरेज
इस आर्टिकल का स्कोप #
यह आर्टिकल Bestnet Cloud पर AI-SRV लॉन्च करके GPUStack Server + NFS को कंसॉलिडेट करनेऔर
GPU-VPS साइड पर मल्टिपल GPU वर्कर डिप्लॉय करनेके इनिशियल बिल्ड पैटर्न को कवर करता है।
चूंकि रोल सेपरेशन और शेयर्ड कैश डिज़ाइन मुख्य थीम हैं, इसलिए पब्लिक IP एड्रेस और इंटरनल नेमिंग कन्वेंशन को उदाहरण वैल्यू से बदल दिया गया है।
डिज़ाइन का मूल यह है कि GPU की आवश्यकता न रखने वाले कंट्रोल प्लेन और मॉडल स्टोरेज लोकेशन को जनरल-पर्पस क्लाउड साइड पर रखा जाए,
और GPU-VPS को केवल इन्फरेंस एक्जीक्यूशन नोड्स के रूप में ट्रीट किया जाए।
ऐसा करने से, वर्कर जोड़ते समय भी, आप डुप्लिकेट स्टोरेज इन्वेस्टमेंट से बच सकते हैं,
और Bestnet Cloud साइड के शेयर्ड एरिया में ही एक्चुअल मॉडल को मैनेज कर सकते हैं।
मॉडल रजिस्ट्रेशन केवल GUI से
GPUStack Server + NFS को AI-SRV में इंटीग्रेट किया गया
सभी वर्कर NFS माउंट पॉइंट /models शेयर करते हैं
कवर किया गया है, और यहां हमने स्पष्टता के लिए 0.6.x सीरीज़ के बिल्ड पैटर्न को व्यवस्थित किया है।
Bestnet Cloud नॉलेज को वास्तविक बिल्ड सीक्वेंस में पुनः व्याख्यायित करें #
Bestnet Cloud नॉलेज बेस में, क्लाइंट पोर्टल ऑपरेशनल टास्क विस्तार से ब्रेकडाउन किए गए हैं।
इसलिए, GPU क्लस्टर कंस्ट्रक्शन में, पहले से “किस समय किस नॉलेज का उपयोग करें” तय करने से रीवर्क कम होता है।
इस आर्टिकल में, हमने पोर्टल-साइड की तैयारियों को निम्न क्रम में व्यवस्थित किया है।
पोर्टल प्रोटेक्शन
पहले MFA और अलाउड IP को लेकर अप्रोच तय करें
SSH Key रजिस्ट्रेशन
OS डिप्लॉयमेंट से पहले मैनेजमेंट Key सेट करें
टेम्पलेट क्रिएशन
Ubuntu 24 पर AI-SRV और GPU-VPS तैयार करें
फायरवॉल / NAT
पब्लिक स्कोप और कम्युनिकेशन डायरेक्शन को सीमित करें
स्नैपशॉट
इनिशियल स्टेट पर एक रिस्टोर पॉइंट रखें
पोर्टल
क्लाइंट पोर्टल सिक्योरिटी सेटिंग्स #
मैनेजमेंट इंटरफेस को पहले ही सिक्योर करने से यह सुनिश्चित होता है कि बाद का सर्वर क्रिएशन और परमिशन मैनेजमेंट सिक्योर हो।
एक्सेस
SSH Key रजिस्ट्रेशन और मैनेजमेंट #
सर्वर क्रिएशन के बाद Key को मैन्युअली इंसर्ट करने के बजाय, टेम्पलेट डिप्लॉयमेंट से पहले Key ऑपरेशन तय करें।
प्रोविज़न
टेम्पलेट से सर्वर क्रिएशन #
AI-SRV और GPU वर्कर को एक ही बेस OS पर स्टैंडर्डाइज़ करने से बाद के कमांड प्रोसीजर में वेरिएशन नहीं आता।
नेटवर्क
प्राइवेट नेटवर्क #
NFS और क्लस्टर कम्युनिकेशन के लिए इंटरनल रूट पहले से तय करके, आप पब्लिक पोर्ट्स को मिनिमम रख सकते हैं।
प्रोटेक्ट
फायरवॉल कॉन्फ़िगरेशन में बदलाव #
केवल AI-SRV UI, NFS, और GPU वर्कर SSH रखें, यानी अनावश्यक पब्लिक सरफेस को एक्सपोज़ न करने की पॉलिसी फॉलो करें।
स्नैपशॉट मैनेजमेंट #
OS इनिशियलाइज़ेशन के बाद, GPU ड्राइवर इंस्टॉलेशन के बाद, और ऐप इंस्टॉलेशन से पहले रिस्टोर पॉइंट बनाने से टेस्टिंग आसान हो जाती है।
स्केल
क्लाउड रिसोर्स अपग्रेड #
जब कैपेसिटी अपर्याप्त हो जाए, तो पहले AI-SRV साइड पर शेयर्ड मॉडल एरिया को एक्सपैंड करना बेहतर कॉस्ट एफिशिएंसी देता है।
वर्चुअल राउटर NAT #
यदि आप GPU वर्कर को प्राइवेट-ओनली बनाना चाहते हैं, तो आप ऐसा कॉन्फ़िगरेशन भी चुन सकते हैं जिसमें केवल आउटबाउंड कम्युनिकेशन NAT से गुज़रे।
आर्किटेक्चर अप्रोच #
रोल सिंपल हैं। Bestnet Cloud साइड पर AI-SRV Web UI / API / NFS शेयरिंग को हैंडल करता है,
जबकि GPU-VPS साइड के नोड्स केवल GPUStack Worker और इन्फरेंस एक्जीक्यूशन पर फोकस करते हैं।
10G प्राइवेट नेटवर्क का उपयोग करके इंटरनल कम्युनिकेशन को क्लोज़ करने से,
आप मॉडल डिस्ट्रीब्यूशन, NFS, और क्लस्टर कनेक्शन को पूरी तरह प्राइवेट साइड पर ले जा सकते हैं।
BESTNET-CLOUD
control-01 #
GPUStack Server + NFS को इंटीग्रेट करने वाला AI-SRV
- Web UI / API प्रोवाइड करता है
- एक्सपोर्ट करता है
/srv/gpustack_modelsNFS के ज़रिए - लोकली बाइंड माउंट करता है
/models - मॉडल की एक्चुअल स्टोरेज को एक ही लोकेशन में कंसॉलिडेट करता है
GPU-VPS
gpu-worker-01 / 02 #
शेयर करने वाला वर्कर ग्रुप /models, केवल इन्फरेंस हैंडल करता है
- GPUStack Worker लॉन्च करें
- स्टैंडर्डाइज़ करें
--cache-dir /models - प्रत्येक वर्कर बड़ी मॉडल स्टोरेज नहीं रखता
- हॉरिज़ॉन्टल एक्सपेंशन पर, उसी पैटर्न से नोड्स जोड़ें
→
पहला वर्कर केवल एक बार मॉडल फेच करता है
→
अन्य वर्कर उसी
/modelsस्टोरेज को AI-SRV साइड पर केंद्रित करें #
कैपेसिटी प्लानिंग का मुख्य मोर्चा AI-SRV है। मॉडल खुद, टेम्पररी डाउनलोड, और भविष्य के मॉडल रिप्लेसमेंट को ध्यान में रखते हुए शेयर्ड एरिया को पर्याप्त रूप से सुरक्षित रखें।
GPU-VPS को लीन रखें #
GPU वर्कर साइड को OS, GPU ड्राइवर, GPUStack Worker, और मिनिमल लॉग एरिया पर फोकस करके डिज़ाइन करें, मॉडल को डुप्लिकेट किए बिना।
कम्युनिकेशन को प्राइवेट साइड पर केंद्रित करें #
जब UI, वर्कर जॉइन, NFS, और मॉडल रीयूज़ सभी प्राइवेट नेटवर्क पर पूरे हो जाते हैं, तो पब्लिक स्कोप छोटा हो जाता है।
पहले से तय करने वाली चीज़ें #
| रोल | लोकेशन | होस्टनेम (उदाहरण) | प्राइवेट IP (उदाहरण) | मुख्य ज़िम्मेदारियां |
|---|---|---|---|---|
| Server + NFS | Bestnet Cloud | control-01 | 10.10.0.10 | GPUStack UI / API, NFS, मॉडल स्टोरेज |
| GPU Worker #1 | GPU-VPS | gpu-worker-01 | 10.10.0.21 | इन्फरेंस एक्जीक्यूशन, शेयर्ड /models का उपयोग |
| GPU Worker #2 | GPU-VPS | gpu-worker-02 | 10.10.0.22 | इन्फरेंस एक्जीक्यूशन, शेयर्ड /models का उपयोग |
पब्लिक डिस्ट्रीब्यूशन के लिए उदाहरण वैल्यू। प्रोडक्शन में अपने खुद के नेमिंग रूल्स और प्राइवेट सबनेट के अनुसार एडजस्ट करें।
डिज़ाइन चेकपॉइंट्स #
- किन नोड्स को पब्लिक IP देना है
- वर्कर को प्राइवेट-ओनली बनाना है या नहीं
- NAT राउटर का उपयोग करना है या इंडिविजुअल आउटबाउंड कम्युनिकेशन देना है
- शेयर्ड मॉडल एरिया के लिए इनिशियल कैपेसिटी और एक्सपेंशन प्लान
स्टोरेज एस्टिमेशन अप्रोच #
- एक्टिव मॉडल का टोटल साइज़
- स्विचिंग के दौरान पुराने और नए मॉडल के टेम्पररी रूप से साथ रहने के लिए अलाउंस
- टेम्पररी फाइल स्पेस जैसे
.part - लॉग्स, ऑपरेशनल फाइलें, और भविष्य में वर्कर जोड़ने का बफर
पहले क्लाइंट पोर्टल की तैयारी पक्की करें #
क्लाइंट पोर्टल को खुद सुरक्षित करें #
सर्वर क्रिएशन से पहले, मैनेजमेंट प्रोटेक्शन पॉलिसी तय करें। खासकर टीम ऑपरेशन के लिए,
पहले MFA और अलाउड IP हैंडलिंग स्पष्ट करने से बाद में “कौन कहां से मैनेजमेंट इंटरफेस एक्सेस कर सकता है” को लेकर कन्फ्यूज़न नहीं होता।
सर्वर बनाने से पहले SSH Key रजिस्टर करें #
AI-SRV और GPU वर्कर क्रिएशन के बाद इंडिविजुअली Key इंसर्ट करने के बजाय, क्लाइंट पोर्टल के SSH Key मैनेजमेंट में पहले से Key तैयार करना
टेम्पलेट डिप्लॉयमेंट के तुरंत बाद मैनेजमेंट एक्सेस देता है।
- टीम ऑपरेशनल पब्लिक Key को व्यवस्थित करें
- इमरजेंसी सिचुएशन में शेयर्ड Key और इंडिविजुअल Key को मिक्स न करें
- पब्लिश किए गए आर्टिकल में Key फिंगरप्रिंट पोस्ट न करें
टेम्पलेट से Bestnet Cloud पर AI-SRV बनाएं #
AI-SRV के लिए Ubuntu 24 सीरीज़ का टेम्पलेट उपयोग करें, जिसमें GPUStack Server और NFS दोनों होस्ट हों।
चूंकि यह नोड मॉडल स्टोरेज के रूप में भी काम करता है, इसलिए OS डिस्क से अलग पर्याप्त स्टोरेज एरिया के साथ डिज़ाइन करें।
- रोल है GPUStack Server + NFS
- प्राइवेट नेटवर्क से कनेक्ट करें
- केवल तभी पब्लिक साइड पर विचार करें जब UI एक्सपोज़र आवश्यक हो
- AI-SRV पर वर्कर की तुलना में मॉडल स्टोरेज के लिए अधिक कैपेसिटी आवंटित करें
आवश्यक मात्रा में GPU-VPS पर वर्कर बनाएं #
चूंकि वर्कर इन्फरेंस के लिए हैं, GPU टाइप, VRAM, और भविष्य के मॉडल साइज़ के आधार पर GPU-VPS प्लान चुनें।
दूसरी ओर, चूंकि मॉडल खुद NFS साइड पर रखा जाता है, आप वर्कर स्टोरेज को OS और एक्जीक्यूशन के लिए आवश्यक न्यूनतम तक आसानी से घटा सकते हैं।
- Ubuntu 24 सीरीज़ पर स्टैंडर्डाइज़ करें
- GPU ड्राइवर / CUDA उपलब्ध होने के साथ बनाएं
- प्राइवेट नेटवर्क से कनेक्ट करें
- अगर पब्लिक IP की आवश्यकता नहीं है तो प्राइवेट-ओनली कॉन्फ़िगरेशन पर विचार करें
सभी नोड्स को 10G प्राइवेट नेटवर्क पर रखें #
NFS और GPUStack का इंटरनल कम्युनिकेशन Bestnet Cloud और GPU-VPS को कनेक्ट करने वाले 10G प्राइवेट लिंक पर फ्लो होता है।
इससे मॉडल रिट्रीवल और वर्कर जॉइन प्राइवेट साइड पर ही रह पाते हैं।
- AI-SRV और सभी वर्कर को एक ही प्राइवेट सेगमेंट में रखें
- बाद के NFS एक्सपोर्ट और systemd सेटिंग को स्टेबल करने के लिए फिक्स्ड IP असाइन करें
- अगर वर्कर को आउटबाउंड कम्युनिकेशन चाहिए, तो NAT राउटर मेथड या टेम्परेरी पब्लिक एग्रेस चुनें
अगर आप वर्कर को प्राइवेट-ओनली बनाना चाहते हैं, तो OS अपडेट और एक्सटर्नल फेचिंग के लिए Bestnet Cloud के वर्चुअल राउटर / NAT पैटर्न का उपयोग करना मैनेज करना आसान बनाता है।
इनिशियल फायरवॉल रूल्स तय करें #
“AI-SRV को केवल न्यूनतम आवश्यक इनबाउंड की अनुमति दें, और वर्कर को लगभग कोई पब्लिक इनबाउंड न दें” की पॉलिसी पर्याप्त है।
पोर्टल के फायरवॉल स्क्रीन में, पहले एक्जिस्टिंग रूल्स चेक करें, फिर केवल आवश्यक पोर्ट्स जोड़ें।
| टारगेट | पोर्ट / प्रोटोकॉल | सोर्स कंसिडरेशन | पर्पस |
|---|---|---|---|
| AI-SRV | 22/tcp | केवल मैनेजमेंट सोर्स IP तक सीमित करें | SSH |
| AI-SRV | 80/tcp | मैनेजमेंट नेटवर्क या प्राइवेट साइड | GPUStack Web UI / API |
| AI-SRV | 2049/tcp | केवल प्राइवेट सबनेट | NFS v4 |
| AI-SRV | 111/tcp,111/udp | आवश्यकता होने पर केवल प्राइवेट सबनेट | rpcbind उपयोग करने वाले कॉन्फ़िगरेशन के लिए |
| GPU Worker | 22/tcp | केवल मैनेजमेंट सोर्स IP तक सीमित करें | SSH |
NFS v4 मानते हुए, इसे 2049/tcp पर कंसॉलिडेट करना आसान है, हालांकि कुछ एनवायरनमेंट rpcbind का उपयोग कर सकते हैं। पब्लिक स्कोप को हमेशा प्राइवेट सबनेट तक सीमित रखें।
इनिशियल स्नैपशॉट लें #
OS इनिशियल क्रिएशन, Key इंजेक्शन, प्राइवेट नेटवर्क कनेक्शन, और फायरवॉल सेटअप पूरा होने के बाद,
AI-SRV और GPU वर्कर के स्नैपशॉट लें ताकि बाद में मिडलवेयर इंस्टॉलेशन फेल होने पर रिस्टोर करना आसान हो।
OS बेसलाइन बनाएं #
सर्वर और वर्कर दोनों पर, पहले टाइम सिंक और NFS बेस को अलाइन करें। चूंकि GPU वर्कर पर बाद में GPU ड्राइवर / CUDA इंस्टॉल होंगे,
पहले से OS अपडेट और रीस्टार्ट पॉइंट्स पूरा करने से सिस्टम स्टेबल रहता है।
# All nodes
sudo apt update
sudo apt install -y nfs-common
# For NFS server (AI-SRV only)
sudo apt install -y nfs-kernel-server
AI-SRV पर GPUStack Server + NFS बनाएं #
GPUStack Server इंस्टॉल करें #
इनिशियल बिल्ड उदाहरण में, हम मैनेजमेंट UI में लॉगिन एनेबल करने के लिए AI-SRV पर GPUStack Server डिप्लॉय करते हैं।
इनिशियल एडमिन पासवर्ड नोट करने के बाद, इसे एक सेफ वॉल्ट में ले जाएं और आर्टिकल में पोस्ट न करें।
curl -sfL https://get.gpustack.ai | sh -s -
cat /var/lib/gpustack/initial_admin_password
# Web UI (example)
# http://10.10.0.10/NFS शेयर्ड डायरेक्टरी बनाएं #
एक्चुअल मॉडल फाइलों को /srv/gpustack_models में रखें।
इसे केवल प्राइवेट सबनेट में एक्सपोर्ट करें, और AI-SRV पर खुद भी इसे /models के रूप में बाइंड माउंट करें।
इससे सर्वर को दिखने वाला पाथ और वर्कर को दिखने वाला पाथ कंसिस्टेंट रहता है।
sudo mkdir -p /srv/gpustack_models
echo "/srv/gpustack_models 10.10.0.0/24(rw,sync,no_subtree_check,no_root_squash)" | sudo tee -a /etc/exports
sudo exportfs -ra
# Server itself also bind mount
sudo mkdir -p /models
sudo mount --bind /srv/gpustack_models /models
echo "/srv/gpustack_models /models none bind 0 0" | sudo tee -a /etc/fstabवर्कर जॉइन टोकन जारी करें #
GPUStack GUI से एक वर्कर जॉइन टोकन बनाएं। पब्लिक आर्टिकल में, <WORKER_JOIN_TOKEN>
के रूप में एक्सप्रेस करें और एक्चुअल वैल्यू पोस्ट न करें। साथ ही, GUI लॉगिन सोर्स को प्राइवेट नेटवर्क साइड तक सीमित करना अधिक सिक्योर है।
GPU-VPS साइड पर शेयर्ड कैश माउंट करें और वर्कर को जॉइन कराएं #
पहले /models को NFS के ज़रिए माउंट करें #
हर वर्कर AI-SRV द्वारा एक्सपोर्ट किए गए शेयर्ड एरिया को उसी पाथ /models पर माउंट करता है।
इससे सभी वर्कर के लिए कैश पाथ कंसिस्टेंट रहता है, जो मॉडल की डुप्लिकेट स्टोरेज को रोकता है।
sudo mkdir -p /models
echo "10.10.0.10:/srv/gpustack_models /models nfs defaults 0 0" | sudo tee -a /etc/fstab
sudo mount -aमाउंट करने के बाद, mount | grep /models से वेरिफाई करें कि इंटेंडेड शेयर्ड लोकेशन दिख रही है।
GPUStack Worker इंस्टॉल करें #
AI-SRV साइड पर जारी किए गए टोकन का उपयोग करके प्रत्येक GPU-VPS को वर्कर के रूप में क्लस्टर में जॉइन कराएं।
curl -sfL https://get.gpustack.ai | sh -s - --server-url http://10.10.0.10 --token <WORKER_JOIN_TOKEN>वर्कर सर्विस में --cache-dir /models फिक्स करें #
शेयर्ड कैश कॉन्फ़िगरेशन में, यह स्पेसिफिकेशन सबसे महत्वपूर्ण है। GPUStack Worker के systemd डेफिनिशन में--cache-dir /models जोड़ें और data-dir भी फिक्स करें।
[Service]
ExecStart=/root/.local/bin/gpustack start --server-url http://10.10.0.10 --token <WORKER_JOIN_TOKEN> --cache-dir /models --data-dir /var/lib/gpustack-datasudo systemctl daemon-reload
sudo systemctl enable --now gpustack
# If "Using cache dir: /models" appears, OK
journalctl -u gpustack -fGPUStack GUI में वेरिफाई करें कि वर्कर Ready हैं #
GUI के Workers स्क्रीन में, वेरिफाई करें कि सभी GPU-VPS नोड्स Ready हैं।
अगर वे Not Ready रहते हैं, तो क्रम से ट्रबलशूट करें: GPU ड्राइवर / CUDA, NFS माउंट, वर्कर लॉग्स।
मॉडल डिप्लॉयमेंट और ऑपरेशनल वेरिफिकेशन #
कम्प्लीशन क्राइटेरिया केवल वर्कर का Ready होना ही नहीं है।
GUI से 2 या अधिक रेप्लिका के साथ वास्तव में एक मॉडल डिप्लॉय करें, वेरिफाई करें कि केवल पहला नोड ही डाउनलोड करता है,
और दूसरा तथा बाद के नोड्स उसी शेयर्ड फाइल को रीयूज़ करते हैं।
- Bestnet Cloud × GPU-VPS को 10G प्राइवेट नेटवर्क से कनेक्ट करके,GPUStack क्लस्टर को इम्प्लीमेंट करने की गाइड
- इस आर्टिकल का स्कोप
- Bestnet Cloud नॉलेज को वास्तविक बिल्ड सीक्वेंस में पुनः व्याख्यायित करें
- क्लाइंट पोर्टल सिक्योरिटी सेटिंग्स
- SSH Key रजिस्ट्रेशन और मैनेजमेंट
- टेम्पलेट से सर्वर क्रिएशन
- प्राइवेट नेटवर्क
- फायरवॉल कॉन्फ़िगरेशन में बदलाव
- स्नैपशॉट मैनेजमेंट
- क्लाउड रिसोर्स अपग्रेड
- वर्चुअल राउटर NAT
- आर्किटेक्चर अप्रोच
- control-01
- gpu-worker-01 / 02
- स्टोरेज को AI-SRV साइड पर केंद्रित करें
- GPU-VPS को लीन रखें
- कम्युनिकेशन को प्राइवेट साइड पर केंद्रित करें
- पहले से तय करने वाली चीज़ें
- डिज़ाइन चेकपॉइंट्स
- स्टोरेज एस्टिमेशन अप्रोच
- पहले क्लाइंट पोर्टल की तैयारी पक्की करें
- क्लाइंट पोर्टल को खुद सुरक्षित करें
- सर्वर बनाने से पहले SSH Key रजिस्टर करें
- टेम्पलेट से Bestnet Cloud पर AI-SRV बनाएं
- आवश्यक मात्रा में GPU-VPS पर वर्कर बनाएं
- सभी नोड्स को 10G प्राइवेट नेटवर्क पर रखें
- इनिशियल फायरवॉल रूल्स तय करें
- इनिशियल स्नैपशॉट लें
- OS बेसलाइन बनाएं
- AI-SRV पर स्टैंडर्डाइज़ करने के लिए
- GPU वर्कर पर स्टैंडर्डाइज़ करने के लिए
- AI-SRV पर GPUStack Server + NFS बनाएं
- GPUStack Server इंस्टॉल करें
- NFS शेयर्ड डायरेक्टरी बनाएं
- वर्कर जॉइन टोकन जारी करें
- GPU-VPS साइड पर शेयर्ड कैश माउंट करें और वर्कर को जॉइन कराएं
- पहले /models को NFS के ज़रिए माउंट करें
- GPUStack Worker इंस्टॉल करें
- वर्कर सर्विस में --cache-dir /models फिक्स करें
- GPUStack GUI में वेरिफाई करें कि वर्कर Ready हैं
- मॉडल डिप्लॉयमेंट और ऑपरेशनल वेरिफिकेशन
- Catalog से डिप्लॉय करें
- पहला वर्कर फेच करता है
- दूसरा नोड शेयर्ड फाइल पढ़ता है