1. खास जानकारी
Google Cloud Platform पर Slurm क्लस्टर चलाने के लिए, Google Codelab में आपका स्वागत है! इस कोडलैब के आखिर तक, आपको Slurm क्लस्टर को अपने-आप स्केल करने की सुविधा को आसानी से चालू करने और इस्तेमाल करने के बारे में पूरी जानकारी मिल जाएगी.

Google Cloud ने SchedMD के साथ मिलकर, टूल का एक सेट रिलीज़ किया है. इससे Compute Engine पर Slurm वर्कलोड मैनेजर को लॉन्च करना आसान हो जाता है. साथ ही, ज़रूरत पड़ने पर अपने मौजूदा क्लस्टर को डाइनैमिक तरीके से बढ़ाया जा सकता है. इस इंटिग्रेशन को SchedMD के विशेषज्ञों ने Slurm के सबसे सही तरीकों के मुताबिक बनाया है.
अगर आपको Google Cloud Platform पर Slurm इंटिग्रेशन का इस्तेमाल करना है या आपका कोई सवाल है, तो कृपया हमारे Google Cloud और Slurm कम्यूनिटी डिस्कशन ग्रुप में शामिल हों!
Slurm के बारे में जानकारी

Google Cloud Platform में, स्टैंड-अलोन Slurm क्लस्टर के बुनियादी आर्किटेक्चर का डायग्राम.
Slurm, दुनिया भर में एचपीसी क्लस्टर के लिए, वर्कलोड मैनेज करने वाले सबसे लोकप्रिय टूल में से एक है. Slurm, छोटे और बड़े Linux क्लस्टर के लिए, ओपन-सोर्स, फ़ॉल्ट-टॉलरेंट, और ज़्यादा स्केलेबल वर्कलोड मैनेजमेंट और जॉब शेड्यूलिंग सिस्टम उपलब्ध कराता है. Slurm को काम करने के लिए, कर्नल में किसी तरह के बदलाव की ज़रूरत नहीं होती. साथ ही, यह काफ़ी हद तक खुद ही काम करता है. क्लस्टर वर्कलोड मैनेजर के तौर पर, Slurm के तीन मुख्य फ़ंक्शन होते हैं:
- यह उपयोगकर्ताओं को कुछ समय के लिए, संसाधनों (कंप्यूट नोड) का एक्सक्लूसिव या नॉन-एक्सक्लूसिव ऐक्सेस देता है, ताकि वे काम कर सकें.
- यह, असाइन किए गए नोड के सेट पर काम शुरू करने, उसे पूरा करने, और उसकी निगरानी करने के लिए एक फ़्रेमवर्क उपलब्ध कराता है. आम तौर पर, यह एक पैरलल जॉब होती है.
- यह लंबित कामों की एक सूची को मैनेज करके, संसाधनों के लिए विवादों को हल करता है.
आपको क्या सीखने को मिलेगा
- Terraform का इस्तेमाल करके Slurm क्लस्टर सेट अप करने का तरीका
- SLURM का इस्तेमाल करके कोई जॉब चलाने का तरीका
- SLURM में क्लस्टर की जानकारी के लिए क्वेरी करने और चल रहे जॉब की निगरानी करने का तरीका
- जॉब के खास पैरामीटर और ज़रूरी शर्तों को पूरा करने के लिए, नोड को अपने-आप स्केल करने का तरीका
- Slurm से जुड़ी मदद कहां मिलेगी
ज़रूरी शर्तें
- Google Cloud Platform खाता और बिलिंग की सुविधा वाला प्रोजेक्ट
- Linux का बुनियादी अनुभव
2. सेटअप
अपने हिसाब से एनवायरमेंट सेट अप करना
प्रोजेक्ट बनाना
अगर आपके पास पहले से कोई Google खाता (Gmail या G Suite) नहीं है, तो आपको एक खाता बनाना होगा. Google Cloud Platform Console ( console.cloud.google.com) में साइन इन करें और संसाधन मैनेज करें पेज खोलें:

प्रोजेक्ट बनाएं पर क्लिक करें.

प्रोजेक्ट का नाम डालें. प्रोजेक्ट आईडी को याद रखें. यह आईडी, ऊपर दिए गए स्क्रीनशॉट में लाल रंग से हाइलाइट किया गया है. प्रोजेक्ट आईडी, सभी Google Cloud प्रोजेक्ट के लिए यूनीक होना चाहिए. अगर आपके प्रोजेक्ट का नाम यूनीक नहीं है, तो Google Cloud, प्रोजेक्ट के नाम के आधार पर एक रैंडम प्रोजेक्ट आईडी जनरेट करेगा.
इसके बाद, Google Cloud संसाधनों का इस्तेमाल करने के लिए, आपको Developers Console में बिलिंग चालू करनी होगी.
इस कोडलैब को पूरा करने में आपको कुछ डॉलर से ज़्यादा खर्च नहीं करने पड़ेंगे. हालांकि, अगर ज़्यादा संसाधनों का इस्तेमाल किया जाता है या उन्हें चालू रखा जाता है, तो यह खर्च बढ़ सकता है. इस दस्तावेज़ के आखिर में "नतीजा" सेक्शन देखें. Google Cloud Platform के प्राइसिंग कैलकुलेटर का इस्तेमाल यहां किया जा सकता है.
Google Cloud Platform के नए उपयोगकर्ताओं को, मुफ़्त में आज़माने के लिए 300 डॉलर का क्रेडिट मिलता है.
Google Cloud Shell
Google Cloud को अपने लैपटॉप से रिमोटली ऐक्सेस किया जा सकता है. हालांकि, इस कोडलैब में हम Google Cloud Shell का इस्तेमाल करेंगे. यह क्लाउड में चलने वाला कमांड लाइन एनवायरमेंट है.
Google Cloud Shell लॉन्च करें
GCP Console में, सबसे ऊपर दाईं ओर मौजूद टूलबार पर मौजूद Cloud Shell आइकॉन पर क्लिक करें:

इसके बाद, Cloud Shell शुरू करें पर क्लिक करें:

इसे चालू करने और एनवायरमेंट से कनेक्ट करने में सिर्फ़ कुछ सेकंड लगेंगे:

इस वर्चुअल मशीन में, डेवलपमेंट के लिए ज़रूरी सभी टूल पहले से मौजूद हैं. यह 5 जीबी की होम डायरेक्ट्री उपलब्ध कराता है. साथ ही, Google Cloud पर काम करता है. इससे नेटवर्क की परफ़ॉर्मेंस बेहतर होती है और पुष्टि करने की प्रोसेस आसान हो जाती है. इस लैब में ज़्यादातर काम, सिर्फ़ वेब ब्राउज़र या Google Chromebook की मदद से किया जा सकता है.
क्लाउड शेल से कनेक्ट होने के बाद, आपको दिखेगा कि आपकी पुष्टि पहले ही हो चुकी है और प्रोजेक्ट को आपके PROJECT_ID पर पहले ही सेट कर दिया गया है:
$ gcloud auth list
कमांड का आउटपुट:
Credentialed accounts:
- <myaccount>@<mydomain>.com (active)
$ gcloud config list project
कमांड का आउटपुट:
[core]
project = <PROJECT_ID>
अगर प्रोजेक्ट आईडी सही तरीके से सेट नहीं किया गया है, तो इस कमांड का इस्तेमाल करके इसे सेट किया जा सकता है:
$ gcloud config set project <PROJECT_ID>
कमांड का आउटपुट:
Updated property [core/project].
3. Slurm Terraform कॉन्फ़िगरेशन तैयार करना और उसकी समीक्षा करना
Slurm Terraform कॉन्फ़िगरेशन डाउनलोड करें
Cloud Shell सेशन में, Slurm for Google Cloud Platform की Terraform फ़ाइलों वाली Git रिपॉज़िटरी को क्लोन (डाउनलोड) करने के लिए, यह कमांड चलाएं:
git clone https://github.com/SchedMD/slurm-gcp.git
नीचे दी गई कमांड को चलाकर, Slurm डिप्लॉयमेंट कॉन्फ़िगरेशन डायरेक्ट्री पर स्विच करें:
cd slurm-gcp
Slurm Terraform tfvars को कॉन्फ़िगर करना
basic.tfvars.example फ़ाइल में, डिप्लॉयमेंट के कॉन्फ़िगरेशन की जानकारी दी गई है. इसमें डिप्लॉय करने के लिए नेटवर्क, इंस्टेंस, और स्टोरेज शामिल हैं. इसे एक नई फ़ाइल में कॉपी करें. हम इसे "tfvars फ़ाइल" कहेंगे. इसके बाद, इसमें अपनी ज़रूरत के हिसाब से बदलाव करें.
cd tf/example/basic cp basic.tfvars.example basic.tfvars
Cloud Shell सेशन में, tfvars फ़ाइल basic.tfvars को खोलें. फ़ाइल का कॉन्टेंट देखने के लिए, अपने पसंदीदा कमांड लाइन एडिटर (vi, nano, emacs वगैरह) का इस्तेमाल करें या Cloud Console के कोड एडिटर का इस्तेमाल करें:

tfvars फ़ाइल के कॉन्टेंट की समीक्षा करें.
cluster_name = "g1"
project = "<project>"
zone = "us-west1-b"
# network_name = "<existing network name>"
# subnetwork_name = "<existing subnetwork name>"
# shared_vpc_host_project = "<vpc host project>"
# disable_controller_public_ips = true
# disable_login_public_ips = true
# disable_compute_public_ips = true
# suspend_time = 300
controller_machine_type = "n1-standard-2"
controller_image = "projects/schedmd-slurm-public/global/images/family/schedmd-slurm-20-11-4-hpc-centos-7"
controller_disk_type = "pd-standard"
controller_disk_size_gb = 50
# controller_labels = {
# key1 = "val1"
# key2 = "val2"
# }
# controller_service_account = "default"
# controller_scopes = ["https://www.googleapis.com/auth/cloud-platform"]
# cloudsql = {
# server_ip = "<cloudsql ip>"
# user = "slurm"
# password = "verysecure"
# db_name = "slurm_accounting"
# }
# controller_secondary_disk = false
# controller_secondary_disk_size = 100
# controller_secondary_disk_type = "pd-ssd"
#
# When specifying an instance template, specified controller fields will
# override the template properites.
# controller_instance_template = null
login_machine_type = "n1-standard-2"
login_image = "projects/schedmd-slurm-public/global/images/family/schedmd-slurm-20-11-4-hpc-centos-7"
login_disk_type = "pd-standard"
login_disk_size_gb = 20
# login_labels = {
# key1 = "val1"
# key2 = "val2"
# }
# login_node_count = 1
# login_node_service_account = "default"
# login_node_scopes = [
# "https://www.googleapis.com/auth/monitoring.write",
# "https://www.googleapis.com/auth/logging.write"
# ]
#
# When specifying an instance template, specified login fields will
# override the template properties.
# login_instance_template = null
# Optional network storage fields
# network_storage is mounted on all instances
# login_network_storage is mounted on controller and login instances
# network_storage = [{
# server_ip = "<storage host>"
# remote_mount = "/home"
# local_mount = "/home"
# fs_type = "nfs"
# mount_options = null
# }]
#
# login_network_storage = [{
# server_ip = "<storage host>"
# remote_mount = "/net_storage"
# local_mount = "/shared"
# fs_type = "nfs"
# mount_options = null
# }]
# compute_node_service_account = "default"
# compute_node_scopes = [
# "https://www.googleapis.com/auth/monitoring.write",
# "https://www.googleapis.com/auth/logging.write"
# ]
partitions = [
{ name = "debug"
machine_type = "n1-standard-2"
static_node_count = 0
max_node_count = 10
zone = "us-west1-b"
image ="projects/schedmd-slurm-public/global/images/family/schedmd-slurm-20-11-4-hpc-centos-7"
image_hyperthreads = false
compute_disk_type = "pd-standard"
compute_disk_size_gb = 20
compute_labels = {}
cpu_platform = null
gpu_count = 0
gpu_type = null
network_storage = []
preemptible_bursting = false
vpc_subnet = null
exclusive = false
enable_placement = false
regional_capacity = false
regional_policy = {}
instance_template = null
},
# { name = "partition2"
# machine_type = "n1-standard-16"
# static_node_count = 0
# max_node_count = 20
# zone = "us-west1-b"
# image = "projects/schedmd-slurm-public/global/images/family/schedmd-slurm-20-11-4-hpc-centos-7"
# image_hyperthreads = false
#
# compute_disk_type = "pd-ssd"
# compute_disk_size_gb = 20
# compute_labels = {
# key1 = "val1"
# key2 = "val2"
# }
# cpu_platform = "Intel Skylake"
# gpu_count = 8
# gpu_type = "nvidia-tesla-v100"
# network_storage = [{
# server_ip = "none"
# remote_mount = "<gcs bucket name>"
# local_mount = "/data"
# fs_type = "gcsfuse"
# mount_options = "file_mode=664,dir_mode=775,allow_other"
# }]
# preemptible_bursting = true
# vpc_subnet = null
# exclusive = false
# enable_placement = false
#
# ### NOTE ####
# # regional_capacity is under development. You may see slowness in
# # deleting lots of instances.
# #
# # With regional_capacity : True, the region can be specified in the zone.
# # Otherwise the region will be inferred from the zone.
# zone = "us-west1"
# regional_capacity = True
# # Optional
# regional_policy = {
# locations = {
# "zones/us-west1-a" = {
# preference = "DENY"
# }
# }
# }
#
# When specifying an instance template, specified compute fields will
# override the template properties.
# instance_template = "my-template"
]
इस tfvars फ़ाइल में कॉन्फ़िगर करने के लिए कई फ़ील्ड होते हैं. सिर्फ़ प्रोजेक्ट फ़ील्ड को कॉन्फ़िगर करना ज़रूरी है. उदाहरण में दिए गए अन्य सभी कॉन्फ़िगरेशन का इस्तेमाल ऐसे ही किया जा सकता है. हालांकि, अपनी ज़रूरत के हिसाब से उनमें बदलाव करें. कॉन्फ़िगरेशन के विकल्पों के बारे में ज़्यादा जानकारी के लिए, यहां जाएं.
- cluster_name: Slurm क्लस्टर का नाम
- project: Google Cloud प्रोजेक्ट आईडी, जहां संसाधन डिप्लॉय किए जाएंगे
- ज़ोन: यह Google Cloud का वह ज़ोन है जिसमें इस क्लस्टर के कंट्रोलर और लॉगिन इंस्टेंस शामिल होंगे - ज़्यादा जानकारी
- network_name: Slurm क्लस्टर को डिप्लॉय करने के लिए वर्चुअल प्राइवेट क्लाउड नेटवर्क
- subnetwork_name: Virtual Private Cloud सबनेटवर्क, जिसमें Slurm क्लस्टर को डिप्लॉय करना है
- shared_vpc_host_project: शेयर किया गया VPC नेटवर्क, जिसमें Slurm क्लस्टर को डिप्लॉय करना है
- disable_controller_public_ips: क्या Slurm कंट्रोलर को बाहरी आईपी असाइन करना है?
- disable_login_public_ips: क्या Slurm लॉगिन नोड को बाहरी आईपी असाइन करना है?
- disable_compute_login_ips: क्या Slurm लॉगिन नोड को बाहरी आईपी असाइन करना है?
- suspend_time: किसी नोड के निष्क्रिय होने के बाद, उसे निलंबित करने से पहले इंतज़ार करने का समय
- controller_machine_type: कंट्रोलर नोड का इंस्टेंस टाइप
- controller_image: Slurm कंट्रोलर इंस्टेंस बनाने के लिए इस्तेमाल की गई GCP इमेज
- controller_disk_type: कंट्रोलर इंस्टेंस के बूट डिस्क का टाइप
- controller_disk_size_gb: कंट्रोलर इंस्टेंस के बूट डिस्क का साइज़
- controller_labels: कंट्रोलर इंस्टेंस से अटैच करने के लिए लेबल
- controller_service_account: कंट्रोलर इंस्टेंस पर इस्तेमाल किया जाने वाला सेवा खाता
- controller_scopes: कंट्रोलर इंस्टेंस का ऐक्सेस स्कोप
- cloudsql: Google CloudSQL सर्वर का इस्तेमाल, Slurm डेटाबेस के तौर पर किया जाता है. इससे कंट्रोलर इंस्टेंस पर डेटाबेस होस्ट करने की ज़रूरत नहीं पड़ती
- server_ip: CloudSQL सर्वर का आईपी पता
- user: CloudSQL उपयोगकर्ता नाम
- password: CloudSQL का पासवर्ड
- db_name: CloudSQL डेटाबेस का नाम
- controller_secondary_disk: क्या आपको NFS सर्वर स्टोरेज के लिए कोई सेकंडरी डिस्क जोड़नी है?
- controller_secondary_disk_type: कंट्रोलर के सेकंडरी डिस्क का टाइप
- controller_secondary_disk_size_gb: कंट्रोलर के सेकंडरी डिस्क का साइज़
- controller_instance_template: कंट्रोलर इंस्टेंस के लिए इस्तेमाल किया जाने वाला GCP इंस्टेंस टेंप्लेट. बताए गए किसी भी कंप्यूट फ़ील्ड से, टेंप्लेट की प्रॉपर्टी बदल जाएंगी. उदाहरण के लिए, अगर controller_image तय किया गया है, तो यह इंस्टेंस टेंप्लेट में मौजूद इमेज की जगह ले लेगा.
- login_machine_type: लॉगिन (एसएसएच से ऐक्सेस किया जा सकता है) नोड इंस्टेंस टाइप
- login_image: Slurm लॉगिन इंस्टेंस बनाने के लिए इस्तेमाल की गई GCP इमेज
- login_disk_type: लॉगिन इंस्टेंस के बूट डिस्क का टाइप
- login_disk_size_gb: लॉगिन इंस्टेंस के बूट डिस्क का साइज़
- login_labels: लॉग इन इंस्टेंस से अटैच किए जाने वाले लेबल
- login_node_count: बनाए जाने वाले लॉगिन नोड की संख्या
- login_node_service_account: लॉगिन इंस्टेंस पर इस्तेमाल किया जाने वाला सेवा खाता
- login_node_scopes: लॉगिन इंस्टेंस का ऐक्सेस स्कोप
- login_instance_template: यह GCP इंस्टेंस टेंप्लेट है, जिसका इस्तेमाल लॉगिन इंस्टेंस के लिए किया जाता है. बताए गए किसी भी कंप्यूट फ़ील्ड से, टेंप्लेट की प्रॉपर्टी बदल जाएंगी. उदाहरण के लिए, अगर login_image तय किया गया है, तो यह इंस्टेंस टेंप्लेट में मौजूद इमेज को बदल देगा.
- network_storage: सभी नोड पर माउंट करने के लिए नेटवर्क स्टोरेज. फ़ील्ड को सीधे fstab में जोड़ दिया जाएगा. इसे अन्य माउंट के लिए दोहराया जा सकता है.
- server_ip: स्टोरेज सर्वर का आईपी पता
- remote_mount: स्टोरेज माउंट का नाम (फ़ाइल सिस्टम का नाम)
- local_mount: लोकल माउंट डायरेक्ट्री
- fs_type: फ़ाइल सिस्टम टाइप (NFS, CIFS, Lustre, GCSFuse अपने-आप इंस्टॉल हो जाता है)
- mount_options: माउंट करने के विकल्प (जैसे, defaults,_netdev)
- login_network_storage: लॉगिन और कंट्रोलर नोड पर माउंट करने के लिए नेटवर्क स्टोरेज. NFS, CIFS, Lustre, और GCSFuse अपने-आप इंस्टॉल हो जाएंगे. इसे अन्य माउंट के लिए दोहराया जा सकता है.
- server_ip: स्टोरेज सर्वर का आईपी पता
- remote_mount: स्टोरेज माउंट का नाम (फ़ाइल सिस्टम का नाम)
- local_mount: लोकल माउंट डायरेक्ट्री
- fs_type: फ़ाइल सिस्टम टाइप (NFS, CIFS, Lustre, GCSFuse अपने-आप इंस्टॉल हो जाता है)
- mount_options: माउंट करने के विकल्प (जैसे, defaults,_netdev)
- compute_node_service_account: कंप्यूट इंस्टेंस पर इस्तेमाल किया जाने वाला सेवा खाता
- compute_node_scopes: कंप्यूट इंस्टेंस का ऐक्सेस स्कोप
- partitions: Slurm पार्टीशन कॉन्फ़िगरेशन. इसे अन्य पार्टीशन के लिए दोहराया जा सकता है.
- name: पार्टीशन का नाम
- machine_type: Compute node(s) instance type
- static_node_count: हमेशा चालू रहने वाले कंप्यूट नोड की संख्या
- max_node_count: कंप्यूट नोड की ज़्यादा से ज़्यादा संख्या - ज़्यादा से ज़्यादा 64 हज़ार
- zone: यह Google Cloud का वह ज़ोन है जिसमें इस पार्टीशन के संसाधन शामिल होंगे - ज़्यादा जानकारी
- image: Compute image node machine type
- image_hyperthreads: इंस्टेंस पर हाइपरथ्रेडिंग की सुविधा चालू या बंद करें
- compute_disk_type: कंप्यूट इंस्टेंस के बूट डिस्क का टाइप (pd-standard, pd-ssd)
- compute_disk_size_gb: कंप्यूट इंस्टेंस के बूट डिस्क का साइज़
- compute_labels: कंप्यूट इंस्टेंस से अटैच किए जाने वाले लेबल
- cpu_platform: सभी कंप्यूट नोड के लिए ज़रूरी सीपीयू प्लैटफ़ॉर्म
- gpu_count: पार्टीशन में मौजूद हर इंस्टेंस से अटैच किए जाने वाले जीपीयू की संख्या
- gpu_type: पार्टिशन के इंस्टेंस से अटैच करने के लिए जीपीयू का टाइप
- network_storage: नेटवर्क स्टोरेज, जिसे पार्टीशन में मौजूद सभी कंप्यूट नोड पर माउंट किया जा सकता है. फ़ील्ड को सीधे fstab में जोड़ दिया जाएगा. इसे अन्य माउंट के लिए दोहराया जा सकता है.
- server_ip: स्टोरेज सर्वर का आईपी पता
- remote_mount: स्टोरेज माउंट का नाम (फ़ाइल सिस्टम का नाम)
- local_mount: लोकल माउंट डायरेक्ट्री
- fs_type: फ़ाइल सिस्टम टाइप (NFS, CIFS, Lustre, GCSFuse अपने-आप इंस्टॉल हो जाता है)
- mount_options: माउंट करने का विकल्प
- preemptible_bursting: क्या इंस्टेंस, रोके जा सकने वाले इंस्टेंस होंगे?
- vpc_subnet: Slurm पार्टीशन को डिप्लॉय करने के लिए वर्चुअल प्राइवेट क्लाउड सबनेटवर्क
- exclusive: Slurm को यह अनुमति दें कि वह पूरे नोड को नौकरियों के लिए असाइन कर सके
- enable_placement: प्लेसमेंट की नीतियां चालू करें. इससे इंस्टेंस एक-दूसरे के आस-पास मौजूद होंगे, ताकि इंस्टेंस के बीच नेटवर्क की लेटेन्सी कम हो.
- regional_capacity: उपलब्धता के आधार पर, किसी इंस्टेंस को क्षेत्र के किसी भी ज़ोन में रखने की अनुमति दें
- regional_policy: अगर regional_capacity की वैल्यू true है, तो इस नीति का इस्तेमाल यह तय करने के लिए किया जाता है कि किस क्षेत्र का इस्तेमाल करना है और उस क्षेत्र के किन ज़ोन का इस्तेमाल नहीं करना है
- Instance_template: कंप्यूट इंस्टेंस के लिए इस्तेमाल किया जाने वाला GCP इंस्टेंस टेंप्लेट. बताए गए किसी भी कंप्यूट फ़ील्ड से, टेंप्लेट की प्रॉपर्टी बदल जाएंगी. उदाहरण के लिए, अगर इमेज तय की जाती है, तो यह इंस्टेंस टेंप्लेट में मौजूद इमेज की जगह ले लेगी.
ऐडवांस कॉन्फ़िगरेशन
अगर चाहें, तो क्लस्टर डिप्लॉयमेंट प्रोसेस के दौरान अतिरिक्त पैकेज और सॉफ़्टवेयर इंस्टॉल किए जा सकते हैं. अपने स्लम क्लस्टर पर सॉफ़्टवेयर इंस्टॉल करने के लिए, "Compute Engine पर स्लम क्लस्टर में ऐप्लिकेशन इंस्टॉल करना" लेख में बताए गए कई तरीके अपनाए जा सकते हैं. इसके अलावा, स्लम की ओर से डिप्लॉय की गई इमेज को पसंद के मुताबिक बनाकर भी सॉफ़्टवेयर इंस्टॉल किया जा सकता है. फ़िलहाल, Slurm, SchedMD की ओर से उपलब्ध कराई गई वीएम इमेज को डिप्लॉय करता है. यह इमेज, Google Cloud HPC वीएम इमेज पर आधारित होती है. इसमें Slurm को सबसे ऊपर इंस्टॉल किया जाता है.
अपनी इमेज का इस्तेमाल करने के लिए, tfvars फ़ाइल में दी गई सार्वजनिक SchedMD वीएम इमेज के आधार पर, अपने कॉन्फ़िगरेशन के हिसाब से इमेज बनाएं. इसके बाद, tfvars फ़ाइल में दिए गए इमेज यूआरआई को अपनी इमेज से बदलें और बदलाव की जांच करें.
समस्या का हल
इस कोडलैब में, कृपया Slurm-GCP रिपॉज़िटरी के ReadMe फ़ाइल में मौजूद समस्या हल करने से जुड़ा सेक्शन देखें.
आम तौर पर, tfvars फ़ाइल को कॉन्फ़िगर करने में हुई गड़बड़ियों और कोटे से जुड़ी पाबंदियों की वजह से समस्याएं आती हैं. इस कोडलैब को नए उपयोगकर्ता के स्टैंडर्ड कोटे के हिसाब से डिज़ाइन किया गया है. साथ ही, इसे नए उपयोगकर्ता को मिलने वाले 300 डॉलर के मुफ़्त क्रेडिट के हिसाब से भी डिज़ाइन किया गया है. अगर वीएम बनाने की कोशिश पूरी नहीं होती है, तो कंट्रोलर नोड पर /var/log/slurm/resume.log फ़ाइल देखें. इससे आपको एपीआई से जुड़ी गड़बड़ियों के बारे में पता चलेगा.
4. कॉन्फ़िगरेशन को डिप्लॉय करना और उसकी पुष्टि करना
कॉन्फ़िगरेशन डिप्लॉय करना
Cloud Shell सेशन में, slurm-gcp/tf/example फ़ोल्डर से यह कमांड चलाएं:
terraform init terraform apply -var-file=basic.tfvars
आपको कॉन्फ़िगरेशन के आधार पर, बताई गई कार्रवाइयों को स्वीकार करने के लिए कहा जाएगा. डिप्लॉयमेंट शुरू करने के लिए, "yes" डालें. "terraform plan" कमांड चलाकर, डिप्लॉय किए जाने वाले कॉन्फ़िगरेशन को भी देखा जा सकता है.
Do you want to perform these actions? Terraform will perform the actions described above. Only 'yes' will be accepted to approve. Enter a value: yes
इस प्रोसेस को पूरा होने में कुछ मिनट लग सकते हैं. इसलिए, कृपया थोड़ा इंतज़ार करें.
डप्लॉयमेंट पूरा होने के बाद, आपको इससे मिलता-जुलता आउटपुट दिखेगा:
Apply complete! Resources: 8 added, 0 changed, 0 destroyed.
Outputs:
controller_network_ips = [
[
"10.0.0.2",
],
]
login_network_ips = [
[
"10.0.0.3",
],
]
वीएम इंस्टेंस बनाने की पुष्टि करना
नेविगेशन मेन्यू खोलें और Compute Engine > वीएम इंस्टेंस चुनें.

आपको कंट्रोलर और लॉगिन वीएम इंस्टेंस की सूची दिखेगी:

वीएम इंस्टेंस में जाकर, Terraform से बनाए गए दो वर्चुअल मशीन इंस्टेंस की समीक्षा करें.
अगर आपने cluster_name फ़ील्ड में बदलाव किया है, तो नाम अलग-अलग होंगे.
- g1-controller
- g1-login0
5. Slurm क्लस्टर में लॉगिन करना
Slurm क्लस्टर को ऐक्सेस करना
कोड एडिटर/Cloud Shell टैब पर वापस जाएं. अपने इंस्टेंस में लॉग इन करने के लिए, यह कमांड चलाएं. g1-login0 नोड के ज़ोन के लिए <ZONE> को बदलें (यह us-central1-b होना चाहिए):
gcloud compute ssh g1-login0 --zone=<ZONE>
इस कमांड से, आपको g1-login0 वर्चुअल मशीन में लॉग इन किया जाएगा.
लॉगिन नोड को आसानी से ऐक्सेस करने का एक और तरीका है. इसके लिए, वीएम इंस्टेंस पेज पर g1-login0 वीएम के बगल में मौजूद "एसएसएच" बटन पर क्लिक करें. इससे एसएसएच कनेक्शन वाला एक नया टैब खुलेगा.

अगर आपने पहली बार Cloud Shell का इस्तेमाल किया है, तो आपको नीचे दिए गए मैसेज जैसा कोई मैसेज दिख सकता है. इसमें आपसे एसएसएच कुंजी बनाने के लिए कहा जाएगा:
WARNING: The public SSH key file for gcloud does not exist. WARNING: The private SSH key file for gcloud does not exist. WARNING: You do not have an SSH key for gcloud. WARNING: SSH keygen will be executed to generate a key. This tool needs to create the directory [/home/user/.ssh] before being able to generate SSH keys. Do you want to continue (Y/n)?
अगर ऐसा है, तो Y डालें. अगर पासफ़्रेज़ चुनने के लिए कहा जाता है, तो दो बार Enter दबाकर इसे खाली छोड़ दें.
अगर लॉगिन करने पर यह मैसेज दिखता है:
*** Slurm is currently being configured in the background. *** A terminal broadcast will announce when installation and configuration is complete.
इस मैसेज के दिखने तक इंतज़ार करें और लैब में आगे न बढ़ें (लगभग पांच मिनट):
*** Slurm login setup complete ***
ऊपर दिया गया मैसेज दिखने के बाद, आपको g1-login0 से लॉग आउट करना होगा. इसके बाद, आपको फिर से लॉग इन करना होगा, ताकि लैब का इस्तेमाल जारी रखा जा सके. ऐसा करने के लिए, टास्क को खत्म करने के लिए CTRL + C दबाएं.
इसके बाद, अपने इंस्टेंस से लॉग आउट करने के लिए, यह कमांड चलाएं:
exit
अब लॉगिन वीएम से फिर से कनेक्ट करें. अपने इंस्टेंस में लॉग इन करने के लिए, यह कमांड चलाएं. साथ ही, g1-login0 नोड के ज़ोन के लिए <ZONE> को बदलें:
gcloud compute ssh g1-login0 --zone=<ZONE>
ऊपर दिए गए तरीके की तरह, कनेक्ट करने और सेटअप के सभी पहलुओं को पूरा करने से पहले, आपको एक या दो मिनट इंतज़ार करना पड़ सकता है.
Slurm के सीएलआई टूल के बारे में जानकारी
अब आपने अपने क्लस्टर के Slurm लॉगिन नोड में लॉग इन कर लिया है. यह नोड, उपयोगकर्ता/एडमिन के इंटरैक्शन, Slurm जॉब शेड्यूल करने, और एडमिन से जुड़ी गतिविधि के लिए होता है.
आइए, आपको Slurm कमांड लाइन के बारे में बताने के लिए, कुछ कमांड चलाएं.
हमारे क्लस्टर के संसाधनों का स्टेटस देखने के लिए, sinfo कमांड चलाएं:
sinfo
sinfo का सैंपल आउटपुट यहां दिया गया है. sinfo, क्लस्टर में मौजूद नोड, उन नोड की स्थिति, और अन्य जानकारी दिखाता है. जैसे, पार्टीशन, उपलब्धता, और उन नोड पर लगाई गई समयसीमा.
PARTITION AVAIL TIMELIMIT NODES STATE NODELIST debug* up infinite 10 idle~ g1-compute-0-[0-9]
आपको हमारे 10 नोड दिख सकते हैं. ये नोड, डीबग पार्टीशन के "max_node_count" के हिसाब से तय किए गए हैं. इन्हें "idle~" के तौर पर मार्क किया गया है. इसका मतलब है कि नोड, आइडल और नॉन-एलॉकेटेड मोड में है और इसे चालू किया जा सकता है.
इसके बाद, अपने क्लस्टर की कतार का स्टेटस देखने के लिए, squeue कमांड चलाएं:
squeue
squeue का अनुमानित आउटपुट यहां दिया गया है. squeue, क्लस्टर के लिए क्यू की स्थिति की जानकारी देता है. इसमें क्लस्टर पर शेड्यूल की गई हर जॉब का आईडी, जॉब को असाइन किया गया पार्टीशन, जॉब का नाम, जॉब लॉन्च करने वाला उपयोगकर्ता, जॉब की स्थिति, जॉब के चलने का समय, और जॉब को असाइन किए गए नोड शामिल होते हैं. फ़िलहाल, कोई भी नौकरी नहीं चल रही है. इसलिए, इस कमांड का कॉन्टेंट खाली है.
JOBID PARTITION NAME USER ST TIME NODES NODELIST(REASON)
Slurm के "srun" और "sbatch" निर्देशों का इस्तेमाल, उन कामों को चलाने के लिए किया जाता है जिन्हें कतार में रखा गया है. "srun" कमांड का इस्तेमाल, एक साथ कई जॉब चलाने के लिए किया जाता है. इसका इस्तेमाल mpirun के रैपर के तौर पर भी किया जा सकता है. "sbatch" का इस्तेमाल, slurm को बैच जॉब सबमिट करने के लिए किया जाता है. यह अलग-अलग कॉन्फ़िगरेशन में, srun को एक या कई बार कॉल कर सकता है. "sbatch" कमांड का इस्तेमाल बैच स्क्रिप्ट के लिए किया जा सकता है. इसके अलावा, इसका इस्तेमाल –wrap विकल्प के साथ करके, पूरे काम को कमांड लाइन से चलाया जा सकता है.
चलिए, एक जॉब चलाते हैं, ताकि हम Slurm को काम करते हुए देख सकें और अपनी जॉब को कतार में लगा सकें!
6. Slurm जॉब चलाना और क्लस्टर को स्केल करना
Slurm जॉब चलाना और क्लस्टर को स्केल करना
अब हमारा Slurm क्लस्टर चालू हो गया है. इसलिए, आइए एक जॉब चलाएं और अपने क्लस्टर को बड़ा करें.
Slurm बैच कमांड और स्क्रिप्ट चलाने के लिए, "sbatch" कमांड का इस्तेमाल किया जाता है. आइए, एक सामान्य sbatch स्क्रिप्ट चलाएं. यह स्क्रिप्ट, ऑटो-स्केल किए गए हमारे वीएम पर "hostname" चलाएगी.
g1-login0 में लॉग इन करके, यह कमांड चलाएं:
sbatch -N2 --wrap="srun hostname"
यह कमांड, Slurm बैच कमांड चलाती है. इससे पता चलता है कि sbatch, "-N" विकल्प के साथ दो नोड चलाएगा. इससे यह भी पता चलता है कि इनमें से हर नोड, "–wrap" विकल्प में "srun hostname" कमांड चलाएगा.
डिफ़ॉल्ट रूप से, sbatch अपने आउटपुट को "slurm-%j.out" में लिखता है. यह उस वर्किंग डायरेक्ट्री में होता है जहां से कमांड चलाई जाती है. यहां %j को Slurm फ़ाइल के नाम के पैटर्न के हिसाब से, जॉब आईडी के लिए बदल दिया जाता है. हमारे उदाहरण में, sbatch को उपयोगकर्ता के /home फ़ोल्डर से चलाया जा रहा है. यह NFS पर आधारित शेयर किया गया फ़ाइल सिस्टम है. इसे डिफ़ॉल्ट रूप से कंट्रोलर पर होस्ट किया जाता है. इससे कंप्यूट नोड, इनपुट और आउटपुट डेटा को शेयर कर पाते हैं. प्रोडक्शन एनवायरमेंट में, वर्किंग स्टोरेज को /home स्टोरेज से अलग होना चाहिए, ताकि क्लस्टर के ऑपरेशनों की परफ़ॉर्मेंस पर असर न पड़े. tfvars फ़ाइल में "network_storage" विकल्पों में, अलग-अलग स्टोरेज माउंट तय किए जा सकते हैं.
sbatch कमांड लाइन का इस्तेमाल करके sbatch स्क्रिप्ट को चलाने के बाद, यह शेड्यूल किए गए काम के लिए जॉब आईडी दिखाएगा. उदाहरण के लिए:
Submitted batch job 2
हम sbatch कमांड से मिले जॉब आईडी का इस्तेमाल करके, जॉब के एक्ज़ीक्यूशन और संसाधनों को ट्रैक और मैनेज कर सकते हैं. Slurm जॉब की कतार देखने के लिए, यह कमांड चलाएं:
squeue
आपको शायद वह काम यहां दिखेगा जिसे आपने नीचे दिए गए उदाहरण की तरह पूरा किया है:
JOBID PARTITION NAME USER ST TIME NODES NODELIST(REASON)
2 debug g1-compute-0-[0-1] username R 0:10 2 g1-compute-0-[0-1]
हमारे पास कोई भी कंप्यूट नोड उपलब्ध नहीं है. इसलिए, Slurm नौकरी की ज़रूरतों के हिसाब से कंप्यूट इंस्टेंस अपने-आप बना देगा. इस प्रोसेस के अपने-आप होने के दो फ़ायदे हैं. पहला फ़ायदा यह है कि इससे, एचपीसी क्लस्टर में आम तौर पर किए जाने वाले काम को कम किया जा सकता है. जैसे, नोड को मैन्युअल तरीके से प्रोविज़न करना, सॉफ़्टवेयर को कॉन्फ़िगर करना, नोड को क्लस्टर में इंटिग्रेट करना, और फिर जॉब को डिप्लॉय करना. दूसरा, इससे उपयोगकर्ताओं को पैसे बचाने में मदद मिलती है. ऐसा इसलिए, क्योंकि इस्तेमाल न किए जा रहे नोड को तब तक कम किया जाता है, जब तक कि नोड की कम से कम संख्या चालू न हो जाए.
Slurm क्लस्टर को स्पिन अप करने के लिए, sinfo कमांड का इस्तेमाल करें:
sinfo
इससे, squeue में "alloc#" स्थिति में मौजूद नोड दिखेंगे. इसका मतलब है कि नोड असाइन किए जा रहे हैं:
PARTITION AVAIL TIMELIMIT NODES STATE NODELIST debug* up infinite 8 idle~ g1-compute-0-[2-9] debug* up infinite 2 alloc# g1-compute-0-[0-1]
नए नोड देखने के लिए, Google Cloud Console में वीएम इंस्टेंस सेक्शन भी देखा जा सकता है. नोड को स्पिन अप करने और Slurm को चालू करने में कुछ मिनट लगेंगे. इसके बाद ही, नए नोड को काम सौंपा जाएगा. आपकी वीएम इंस्टेंस की सूची जल्द ही इस तरह दिखेगी:

नोड पर काम शुरू होने के बाद, इंस्टेंस "alloc" स्थिति में चले जाएंगे. इसका मतलब है कि नौकरियों को किसी नौकरी के लिए असाइन किया गया है:
PARTITION AVAIL TIMELIMIT NODES STATE NODELIST debug* up infinite 8 idle~ g1-compute-0-[2-9] debug* up infinite 2 alloc g1-compute-0-[0-1]
टास्क पूरा होने के बाद, यह squeue में नहीं दिखेगा. साथ ही, sinfo में "alloc" नोड, "idle" स्थिति में वापस आ जाएंगे. जब तक काम पूरा नहीं हो जाता, तब तक हर एक या दो मिनट में "squeue" कमांड चलाएं.
slurm-%j.out आउटपुट फ़ाइल को, NFS के साथ शेयर किए गए /home फ़ोल्डर में लिखा जाएगा. इसमें होस्टनेम शामिल होंगे. आउटपुट फ़ाइल (आम तौर पर slurm-2.out) खोलें या कैट करें. आउटपुट फ़ाइल के कॉन्टेंट में यह जानकारी शामिल होगी:
g1-compute-0-0 g1-compute-0-1
बहुत बढ़िया, आपने एक जॉब चलाया और अपने Slurm क्लस्टर को स्केल अप किया!
7. MPI जॉब चलाना
अब हम अपने नोड पर MPI जॉब चलाएंगे. g1-login0 में लॉग इन करने के दौरान, C प्रोग्रामिंग भाषा में लिखा गया MPI प्रोग्राम डाउनलोड करने के लिए, wget का इस्तेमाल करें:
wget https://raw.githubusercontent.com/mpitutorial/mpitutorial/gh-pages/tutorials/mpi-hello-world/code/mpi_hello_world.c
OpenMPI टूल का इस्तेमाल करने के लिए, आपको यह कमांड चलाकर OpenMPI मॉड्यूल लोड करने होंगे:
module load openmpi
हम MPI C कोड को कंपाइल करने के लिए, "mpicc" टूल का इस्तेमाल करेंगे. यह कमांड चलाएं:
mpicc mpi_hello_world.c -o mpi_hello_world
यह हमारे C कोड को मशीन कोड में कंपाइल करता है, ताकि हम Slurm के ज़रिए अपने क्लस्टर में कोड चला सकें.
इसके बाद, अपने पसंदीदा टेक्स्ट एडिटर का इस्तेमाल करके, "helloworld_batch" नाम की sbatch स्क्रिप्ट बनाएं:
vi helloworld_batch
vi इंसर्ट मोड में जाने के लिए, i टाइप करें.
एक सामान्य sbatch स्क्रिप्ट बनाने के लिए, इस टेक्स्ट को फ़ाइल में कॉपी करके चिपकाएं:
#!/bin/bash # #SBATCH --job-name=hello_world #SBATCH --output=hello_world-%j.out # #SBATCH --nodes=2 srun mpi_hello_world
कोड एडिटर से बाहर निकलने के लिए, Escape दबाएं और ":wq" टाइप करें. ध्यान दें कि आपको कोटेशन मार्क नहीं लगाने हैं.
इस स्क्रिप्ट में, Slurm बैच एक्ज़ीक्यूशन एनवायरमेंट और टास्क के बारे में बताया गया है. सबसे पहले, एक्ज़ीक्यूशन एनवायरमेंट को बैश के तौर पर तय किया जाता है. इसके बाद, स्क्रिप्ट में Slurm के विकल्पों को "#SBATCH" लाइनों के साथ सबसे पहले तय किया जाता है. जॉब का नाम "hello_world" के तौर पर तय किया गया है.
आउटपुट फ़ाइल को "hello_world_%j.out" के तौर पर सेट किया जाता है. इसमें %j को Slurm फ़ाइल के नाम के पैटर्न के हिसाब से, नौकरी के आईडी से बदल दिया जाता है. यह आउटपुट फ़ाइल उस डायरेक्ट्री में लिखी जाती है जहां से sbatch स्क्रिप्ट को चलाया जाता है. हमारे उदाहरण में, यह उपयोगकर्ता का /home फ़ोल्डर है. यह NFS पर आधारित शेयर किया गया फ़ाइल सिस्टम है. इससे कंप्यूट नोड, इनपुट और आउटपुट डेटा को शेयर कर पाते हैं. प्रोडक्शन एनवायरमेंट में, वर्किंग स्टोरेज को /home स्टोरेज से अलग होना चाहिए, ताकि क्लस्टर के ऑपरेशनों की परफ़ॉर्मेंस पर असर न पड़े.
आखिर में, यह तय किया जाता है कि यह स्क्रिप्ट कितने नोड पर चलनी चाहिए. इस उदाहरण में, यह संख्या 2 है.
विकल्पों को तय करने के बाद, एक्ज़ीक्यूटेबल कमांड दी जाती हैं. यह स्क्रिप्ट, srun कमांड का इस्तेमाल करके mpi_hello_world कोड को पैरलल तरीके से चलाएगी. यह mpirun कमांड के लिए ड्रॉप-इन रिप्लेसमेंट है.
इसके बाद, sbatch कमांड लाइन का इस्तेमाल करके sbatch स्क्रिप्ट को लागू करें:
sbatch helloworld_batch
sbatch चलाने पर, शेड्यूल की गई नौकरी के लिए Job ID मिलेगा. उदाहरण के लिए:
Submitted batch job 3
इससे hostname कमांड, दो नोड पर चलेगी. हर नोड पर एक टास्क होगा. साथ ही, आउटपुट को hello_world-3.out फ़ाइल में प्रिंट किया जाएगा.
हमने पहले से ही दो नोड उपलब्ध कराए हैं. इसलिए, यह काम तेज़ी से पूरा हो जाएगा.
जब तक काम पूरा नहीं हो जाता और उसे सूची से हटा नहीं दिया जाता, तब तक squeue को मॉनिटर करें:
squeue
प्रोसेस पूरी होने के बाद, hello_world-3.out फ़ाइल खोलें या कैट करें. इसके बाद, पुष्टि करें कि यह g1-compute-0-[0-1] पर चल रही है:
Hello world from processor g1-compute-0-0, rank 0 out of 2 processors Hello world from processor g1-compute-0-1, rank 1 out of 2 processors
पांच मिनट तक इस्तेमाल न होने पर, डाइनैमिक तौर पर उपलब्ध कराए गए कंप्यूट नोड को डी-अलॉकेट कर दिया जाएगा, ताकि संसाधनों को रिलीज़ किया जा सके. इसे YAML के suspend_time फ़ील्ड या slurm.conf के SuspendTime फ़ील्ड से कॉन्फ़िगर किया जा सकता है. इसकी पुष्टि करने के लिए, समय-समय पर sinfo चलाएं और देखें कि क्लस्टर का साइज़ वापस 0 पर आ गया है या नहीं:
PARTITION AVAIL TIMELIMIT NODES STATE NODELIST debug* up infinite 10 idle~ g1-compute-0-[0-9]
ज़्यादा इंस्टेंस स्पिन अप करने की कोशिश करें. इनकी संख्या, उस इलाके में क्लस्टर डिप्लॉय करने के लिए तय किए गए कोटे से ज़्यादा नहीं होनी चाहिए. साथ ही, अलग-अलग एमपीआई ऐप्लिकेशन चलाएं.
8. नतीजा
बधाई हो! आपने Google Cloud Platform पर Slurm क्लस्टर बना लिया है. साथ ही, आपने क्लस्टर को अपने-आप स्केल करने के लिए, इसकी नई सुविधाओं का इस्तेमाल किया है, ताकि वर्कलोड की मांग को पूरा किया जा सके! इस मॉडल का इस्तेमाल करके, किसी भी तरह के काम किए जा सकते हैं. साथ ही, Slurm में नोड का अनुरोध करके, इसे कुछ ही मिनटों में सैकड़ों इंस्टेंस तक बढ़ाया जा सकता है.
अगर आपको GCP पर Slurm का इस्तेमाल जारी रखना है, तो " Slurm की मदद से फ़ेडरेटेड एचपीसी क्लस्टर बनाना" कोडलैब का इस्तेमाल जारी रखें. इस कोडलैब में, आपको क्लाउड में दो फ़ेडरेटेड Slurm क्लस्टर सेट अप करने के बारे में बताया जाएगा. इससे आपको यह समझने में मदद मिलेगी कि एक से ज़्यादा क्लस्टर फ़ेडरेशन को कैसे हासिल किया जा सकता है. यह ऑन-प्रिमाइसेस या क्लाउड में किया जा सकता है.
क्या Slurm की नई GCP-नेटिव सुविधा का इस्तेमाल करके, कोई बेहतरीन प्रॉडक्ट बनाया जा रहा है? क्या आपका कोई सवाल है? क्या आपके पास किसी सुविधा के बारे में कोई सुझाव है? आज ही Google Cloud की हाई परफ़ॉर्मेंस कंप्यूटिंग के समाधानों वाली वेबसाइट पर जाकर, Google Cloud की टीम से संपर्क करें. इसके अलावा, Google Cloud और Slurm के बारे में चर्चा करने वाले ग्रुप में हमसे चैट करें!
Terraform डिप्लॉयमेंट को क्लीन अप करना
slurm नोड से लॉग आउट करें:
exit
डिप्लॉयमेंट मिटाने से पहले, अपने-आप स्केल होने वाले किसी भी नोड को स्केल डाउन होने दें. इन नोड को मैन्युअल तरीके से भी मिटाया जा सकता है. इसके लिए, हर इंस्टेंस के लिए "gcloud compute instances delete <Instance Name>" कमांड चलाएं. इसके अलावा, Console GUI का इस्तेमाल करके कई नोड चुने जा सकते हैं और "मिटाएं" पर क्लिक किया जा सकता है.
हमारा काम पूरा होने के बाद, Terraform डिप्लॉयमेंट को आसानी से हटाया जा सकता है. इसके लिए, g1-login0 से लॉग आउट करने के बाद, Google Cloud Shell में यह कमांड चलाएं:
cd ~/slurm-gcp/tf/examples/basic terraform destroy -var-file=basic.tfvars
जब कहा जाए, तब जारी रखने के लिए yes टाइप करें. इस प्रोसेस में कुछ मिनट लग सकते हैं. कृपया इंतज़ार करें.
प्रोजेक्ट मिटाना
क्लीनअप करने के लिए, हम अपने प्रोजेक्ट को मिटा देते हैं.
- नेविगेशन मेन्यू में, IAM और एडमिन चुनें
- इसके बाद, सब-मेन्यू में मौजूद सेटिंग पर क्लिक करें
- "प्रोजेक्ट मिटाएं" टेक्स्ट वाले ट्रैश कैन आइकॉन पर क्लिक करें
- प्रॉम्प्ट से जुड़े निर्देशों का पालन करना
हमने क्या-क्या कवर किया है
- Terraform का इस्तेमाल करके, GCP पर Slurm को डिप्लॉय करने का तरीका.
- GCP पर Slurm का इस्तेमाल करके, कोई जॉब कैसे चलाया जाता है.
- Slurm में क्लस्टर की जानकारी के लिए क्वेरी करने और चालू जॉब मॉनिटर करने का तरीका.
- GCP पर Slurm की मदद से नोड को अपने-आप स्केल करने का तरीका, ताकि नौकरी के खास पैरामीटर और ज़रूरी शर्तों को पूरा किया जा सके.
- GCP पर Slurm पर MPI ऐप्लिकेशन को कंपाइल और चलाने का तरीका.
Slurm के लिए सहायता पाना
अगर आपको टेस्टिंग या प्रोडक्शन एनवायरमेंट में इन इंटिग्रेशन का इस्तेमाल करने से जुड़ी सहायता चाहिए, तो कृपया SchedMD से सीधे संपर्क करें. इसके लिए, यहां दिए गए उनके संपर्क पेज का इस्तेमाल करें: https://www.schedmd.com/contact.php
समस्या हल करने के लिए, उपलब्ध गाइड का इस्तेमाल भी किया जा सकता है:
- GCP पर Slurm से जुड़ी समस्या हल करने के लिए गाइड: https://github.com/SchedMD/slurm-gcp#troubleshooting
- SchedMD की समस्या हल करने से जुड़ी गाइड: https://slurm.schedmd.com/troubleshoot.html
आखिर में, अपना सवाल Google Cloud और Slurm के चर्चा ग्रुप में भी पोस्ट किया जा सकता है. यह ग्रुप यहां है: https://groups.google.com/g/google-cloud-slurm-discuss
ज़्यादा जानें
सुझाव/राय दें या शिकायत करें
कृपया इस कोडलैब के बारे में सुझाव/राय दें या शिकायत करें. इसके लिए, इस लिंक का इस्तेमाल करें. सुझाव/राय देने या शिकायत करने में पांच मिनट से भी कम समय लगता है. धन्यवाद!