स्लरम के साथ ऑटो-स्केलिंग एचपीसी क्लस्टर डिप्लॉय करें

1. खास जानकारी

Google Cloud Platform पर Slumm क्लस्टर चलाने के लिए, Google कोडलैब (कोड बनाना सीखना) में आपका स्वागत है! इस कोडलैब के खत्म होने तक, आपको ऑटो-स्केलिंग Slarm क्लस्टर के प्रावधान और उसे इस्तेमाल करने के बारे में अच्छी तरह से समझ आ जाना चाहिए.

c16fa310c142ac6f.png

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

अगर आपको Google Cloud Platform पर Slarm इंटिग्रेशन का इस्तेमाल करना है या आपका कोई सवाल है, तो कृपया हमारी Google Cloud और स्लरम कम्यूनिटी डिस्कशन ग्रुप!

Slarm के बारे में जानकारी

a739730a41acff0a.png

Google Cloud Platform में, स्टैंड-अलोन स्लरम क्लस्टर का बेसिक आर्किटेक्चरल डायग्राम.

Slarm, दुनिया भर में HPC क्लस्टर के लिए वर्कलोड मैनेज करने वाले सबसे बड़े मैनेजरों में से एक है. Slarm, छोटे और बड़े Linux क्लस्टर के लिए ओपन सोर्स, गड़बड़ी को सहन करने वाला, और बहुत ज़्यादा काम का वर्कलोड मैनेजमेंट और जॉब शेड्यूलिंग सिस्टम उपलब्ध कराता है. स्लर्म के काम करने के लिए, कर्नेल में किसी तरह के बदलाव की ज़रूरत नहीं होती है और यह अपने-आप में पूरी तरह मौजूद होता है. क्लस्टर वर्कलोड मैनेजर के तौर पर, Slarm के तीन मुख्य फ़ंक्शन हैं:

  1. यह उपयोगकर्ताओं को कुछ समय के लिए संसाधनों (कंप्यूट नोड) का खास ऐक्सेस देता है, ताकि वे काम कर सकें.
  2. यह तय किए गए नोड के सेट पर, काम शुरू करने, लागू करने, और उसकी निगरानी करने का फ़्रेमवर्क उपलब्ध कराता है. आम तौर पर, यह एक साथ काम करने वाला जॉब होता है.
  3. यह बचे हुए कामों की सूची को मैनेज करके, संसाधनों के विवाद में मध्यस्थता करता है.

आप इन चीज़ों के बारे में जानेंगे

  • Turaform का इस्तेमाल करके, Slumrm क्लस्टर को सेट अप करने का तरीका
  • SLURM का इस्तेमाल करके नौकरी कैसे पाएं
  • क्लस्टर की जानकारी के बारे में क्वेरी करने और एसएलयूआरएम में मौजूदा जॉब पर नज़र रखने का तरीका
  • जॉब के खास पैरामीटर और ज़रूरी शर्तों को पूरा करने के लिए, नोड को अपने-आप स्केल करने का तरीका
  • Slarm से जुड़ी मदद कहां पाएं

ज़रूरी शर्तें

  • Google Cloud Platform खाता और बिलिंग वाला प्रोजेक्ट
  • Linux का बुनियादी अनुभव

2. सेटअप

अपने हिसाब से एनवायरमेंट सेटअप करना

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

अगर आपके पास पहले से Google खाता (Gmail या G Suite) नहीं है, तो नया खाता बनाएं. Google Cloud Platform कंसोल ( console.cloud.google.com) में साइन इन करें और संसाधन मैनेज करें खोलें:

359c06e07e6d699f.png

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

25c23d651abb837b.png

प्रोजेक्ट का नाम डालें. प्रोजेक्ट आईडी याद रखें (ऊपर दिए गए स्क्रीनशॉट में लाल रंग से हाइलाइट किया गया है). Google Cloud के सभी प्रोजेक्ट के लिए, प्रोजेक्ट आईडी का नाम यूनीक होना चाहिए. अगर आपके प्रोजेक्ट का नाम यूनीक नहीं है, तो Google Cloud, प्रोजेक्ट के नाम के आधार पर कोई रैंडम प्रोजेक्ट आईडी जनरेट करेगा.

इसके बाद, आपको Google Cloud के संसाधनों का इस्तेमाल करने के लिए, Developers Console में बिलिंग की सुविधा चालू करनी होगी.

इस कोडलैब को आज़माने के लिए आपको कुछ डॉलर से ज़्यादा खर्च नहीं करना चाहिए. हालांकि, अगर आप ज़्यादा संसाधनों का इस्तेमाल करने का फ़ैसला करते हैं या उन्हें चलाना छोड़ देते हैं, तो यह ज़्यादा हो सकता है (इस दस्तावेज़ के आखिर में "निष्कर्ष" सेक्शन देखें). Google Cloud Platform का प्राइसिंग कैलकुलेटर यहां उपलब्ध है.

Google Cloud Platform के नए उपयोगकर्ता $300 के मुफ़्त परीक्षण के लिए योग्य हैं.

Google Cloud शेल

Google Cloud को आपके लैपटॉप से, कहीं से भी ऑपरेट किया जा सकता है. हालांकि, इस कोडलैब में हम Google Cloud Shell का इस्तेमाल करेंगे. यह क्लाउड में चलने वाला कमांड लाइन एनवायरमेंट है.

Google Cloud Shell लॉन्च करें

GCP कंसोल में, सबसे ऊपर दाईं ओर मौजूद टूलबार पर क्लाउड शेल आइकॉन पर क्लिक करें:

dbad104cef962719.png

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

4e50db320508ac88.png

प्रावधान करने और एनवायरमेंट से कनेक्ट होने में कुछ ही समय लगेगा:

20b0aa80492144d.png

इस वर्चुअल मशीन में ऐसे सभी डेवलपमेंट टूल मौजूद हैं जिनकी आपको ज़रूरत पड़ेगी. यह पांच जीबी की स्थायी होम डायरेक्ट्री उपलब्ध कराता है और 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. स्लरम टेराफ़ॉर्म कॉन्फ़िगरेशन तैयार करना और उसकी समीक्षा करना

Slumm टेरेस का कॉन्फ़िगरेशन डाउनलोड करें

Cloud Shell सेशन में, उस Git रिपॉज़िटरी का क्लोन (डाउनलोड) करने के लिए नीचे दिया गया कमांड चलाएं जिसमें Google Cloud Platformterraform फ़ाइलों के लिए Slumm होता है:

git clone https://github.com/SchedMD/slurm-gcp.git

नीचे दिए गए निर्देश का इस्तेमाल करके, Slumm डिप्लॉयमेंट कॉन्फ़िगरेशन डायरेक्ट्री पर स्विच करें:

cd slurm-gcp

Slumm 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 कोड एडिटर का इस्तेमाल भी किया जा सकता है:

214f43bba6c917aa.png

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: Slarm क्लस्टर का नाम
  • प्रोजेक्ट: Google Cloud का प्रोजेक्ट आईडी, जहां संसाधन डिप्लॉय किए जाएंगे
  • zone: Google Cloud ज़ोन, जिसमें इस क्लस्टर के कंट्रोलर और लॉगिन इंस्टेंस होंगे - ज़्यादा जानकारी
  • network_name: वर्चुअल प्राइवेट क्लाउड नेटवर्क
  • subnetwork_name: वर्चुअल प्राइवेट क्लाउड सबनेटवर्क:
  • shared_vpc_host_project: स्लरम क्लस्टर को डिप्लॉय करने के लिए, शेयर किया गया VPC नेटवर्क
  • disable_controller_public_ips: 'स्लरम कंट्रोलर' को बाहरी आईपी असाइन करें?
  • disable_login_public_ips: Slumm लॉगिन नोड को बाहरी आईपी असाइन करना है?
  • disable_compute_login_ips: Slumm लॉगिन नोड को बाहरी आईपी असाइन करना है?
  • suspend_time: नोड को निलंबित करने से पहले नोड के इस्तेमाल में न होने पर इंतज़ार का समय
  • controller_machine_type: कंट्रोलर नोड इंस्टेंस टाइप
  • controller_image: GCP इमेज का इस्तेमाल Slumm कंट्रोलर के इंस्टेंस बनाने के लिए किया जाता है
  • controller_disk_type: कंट्रोलर इंस्टेंस बूट डिस्क का टाइप
  • controller_disk_size_gb: कंट्रोलर इंस्टेंस बूट डिस्क का साइज़
  • controller_labels: कंट्रोलर के इंस्टेंस से अटैच करने के लिए लेबल
  • controller_service_account: कंट्रोलर इंस्टेंस पर इस्तेमाल किया जाने वाला सेवा खाता
  • controller_scopes: कंट्रोलर इंस्टेंस का ऐक्सेस स्कोप
  • cloudsql: Google CloudSQL सर्वर का इस्तेमाल कंट्रोलर इंस्टेंस पर डेटाबेस को होस्ट करने के बजाय, Slumm डेटाबेस के तौर पर किया जा सकता है
  • server_ip: CloudSQL सर्वर आईपी
  • उपयोगकर्ता: CloudSQL उपयोगकर्ता नाम
  • पासवर्ड: CloudSQL पासवर्ड
  • db_name: CloudSQL डेटाबेस का नाम
  • controller_secondary_disk: क्या आपको एनएफ़एस सर्वर स्टोरेज के लिए दूसरी डिस्क जोड़नी है?
  • controller_secondary_disk_type: कंट्रोलर का टाइप, दूसरी डिस्क
  • controller_secondary_disk_size_gb: नियंत्रक की दूसरी डिस्क का साइज़
  • controller_instance_template: कंट्रोलर इंस्टेंस के लिए इस्तेमाल किया जाने वाला GCP इंस्टेंस टेंप्लेट. बनाए गए सभी कंप्यूट फ़ील्ड, टेंप्लेट प्रॉपर्टी को बदल देंगे. उदाहरण के लिए, अगर कंट्रोलर_image की जानकारी दी गई है, तो यह इंस्टेंस टेंप्लेट में इमेज को ओवरराइट कर देगा.
  • login_machine_type: लॉगिन (SSH-ऐक्सेस करने लायक) नोड इंस्टेंस टाइप
  • login_image: Slarm लॉगिन इंस्टेंस बनाने के लिए इस्तेमाल की गई GCP इमेज
  • login_disk_type: लॉगिन इंस्टेंस बूट डिस्क का टाइप
  • login_disk_size_gb: लॉगिन इंस्टेंस बूट डिस्क का साइज़
  • login_labels: लॉगिन इंस्टेंस से अटैच करने के लिए लेबल
  • login_node_count: उन लॉगिन नोड की संख्या जिन्हें बनाना है
  • login_node_service_account: लॉगिन इंस्टेंस पर इस्तेमाल करने के लिए सेवा खाता
  • login_node_scopes: लॉगिन इंस्टेंस का ऐक्सेस स्कोप
  • login_instance_template: लॉगिन इंस्टेंस के लिए इस्तेमाल करने के लिए, GCP इंस्टेंस टेंप्लेट. बनाए गए सभी कंप्यूट फ़ील्ड, टेंप्लेट प्रॉपर्टी को बदल देंगे. उदाहरण के लिए, अगर लॉगिन इमेज के बारे में बताया गया है, तो यह इंस्टेंस टेंप्लेट में इमेज को ओवरराइट कर देगा.
  • network_storage: सभी नोड पर माउंट किया जाने वाला नेटवर्क स्टोरेज. फ़ील्ड सीधे fstab में जोड़ दिए जाएंगे. ज़्यादा माउंट के लिए इस सुविधा को दोहराया जा सकता है.
  • server_ip: स्टोरेज सर्वर आईपी
  • remote_mount: स्टोरेज माउंट का नाम (फ़ाइल सिस्टम का नाम)
  • local_mount: लोकल माउंट डायरेक्ट्री
  • fs_type: फ़ाइल सिस्टम का टाइप (एनएफ़एस, सीआईएफ़एस, Lustre, GCSFuse अपने-आप इंस्टॉल होने की सुविधा)
  • mount_options: माउंट करने के विकल्प (जैसे, डिफ़ॉल्ट,_netdev)
  • login_network_storage: लॉगिन और कंट्रोलर नोड पर माउंट करने के लिए नेटवर्क स्टोरेज. NFS, CIFS, Lustre, और GCSFuse अपने-आप इंस्टॉल हो जाएंगे. ज़्यादा माउंट के लिए इस सुविधा को दोहराया जा सकता है.
  • server_ip: स्टोरेज सर्वर आईपी
  • remote_mount: स्टोरेज माउंट का नाम (फ़ाइल सिस्टम का नाम)
  • local_mount: लोकल माउंट डायरेक्ट्री
  • fs_type: फ़ाइल सिस्टम का टाइप (एनएफ़एस, सीआईएफ़एस, Lustre, GCSFuse अपने-आप इंस्टॉल होने की सुविधा)
  • mount_options: माउंट करने के विकल्प (जैसे, डिफ़ॉल्ट,_netdev)
  • compute_node_service_account: कंप्यूट इंस्टेंस पर इस्तेमाल किया जाने वाला सेवा खाता
  • compute_node_scopes: कंप्यूट इंस्टेंस का ऐक्सेस स्कोप
  • पार्टिशन: स्लरम पार्टिशन कॉन्फ़िगरेशन. ज़्यादा सेगमेंट बनाने के लिए, इस प्रक्रिया को दोहराया जा सकता है.
  • name: विभाजन का नाम
  • machine_type: कंप्यूट नोड इंस्टेंस टाइप
  • static_node_count: हमेशा चालू रहने वाले कंप्यूट नोड की संख्या
  • max_node_count: कुल कंप्यूट नोड की ज़्यादा से ज़्यादा संख्या की अनुमति है - ज़्यादा से ज़्यादा 64 हज़ार
  • zone: Google Cloud ज़ोन, जिसमें इस बंटवारे के संसाधन शामिल होंगे - ज़्यादा जानकारी
  • image: इमेज नोड मशीन टाइप की गिनती करें
  • image_hyperthreads: इंस्टेंस पर हाइपरथ्रेडिंग को चालू या बंद करें
  • compute_disk_type: कंप्यूट इंस्टेंस बूट डिस्क का टाइप (pd-standard, pd-ssd)
  • compute_disk_size_gb: किसी कंप्यूट इंस्टेंस बूट डिस्क का साइज़
  • compute_labels: कंप्यूट इंस्टेंस से अटैच करने के लिए लेबल
  • cpu_platform: सभी कंप्यूट नोड के लिए ज़रूरी कम से कम सीपीयू प्लैटफ़ॉर्म
  • gpu_count: पार्टीशन में हर इंस्टेंस में अटैच करने के लिए जीपीयू की संख्या
  • gpu_type: सेगमेंट के इंस्टेंस में जोड़ने के लिए GPU टाइप
  • network_storage: पार्टिशन में मौजूद सभी कंप्यूट नोड पर माउंट करने के लिए नेटवर्क स्टोरेज. फ़ील्ड सीधे fstab में जोड़ दिए जाएंगे. ज़्यादा माउंट के लिए इस सुविधा को दोहराया जा सकता है.
  • server_ip: स्टोरेज सर्वर आईपी
  • remote_mount: स्टोरेज माउंट का नाम (फ़ाइल सिस्टम का नाम)
  • local_mount: लोकल माउंट डायरेक्ट्री
  • fs_type: फ़ाइल सिस्टम का टाइप (एनएफ़एस, सीआईएफ़एस, Lustre, GCSFuse अपने-आप इंस्टॉल होने की सुविधा)
  • mount_options: माउंट करने का विकल्प
  • preemptible_bursting: क्या इंस्टेंस पहले से हटाए जा सकते हैं?
  • vpc_subnet: वर्चुअल प्राइवेट क्लाउड सबनेटवर्क
  • खास तौर पर: जॉब को पूरे नोड असाइन करने के लिए Slarm चालू करें
  • enable_placement: प्लेसमेंट की नीतियों को तब चालू करें, जब इंस्टेंस के बीच नेटवर्क के इंतज़ार का समय कम होने की वजह से, इंस्टेंस एक-दूसरे के आस-पास हों.
  • regional_capacity: इसकी मदद से, उपलब्धता के आधार पर क्षेत्र के किसी भी ज़ोन में इंस्टेंस को रखा जा सकता है
  • regional_policy: अगर local_capacity सही पर सेट है, तो इस नीति से यह तय होगा कि किस इलाके का इस्तेमाल करना चाहिए और उस क्षेत्र के किस इलाके का इस्तेमाल नहीं करना चाहिए
  • Instance_template: कंप्यूट इंस्टेंस के लिए इस्तेमाल करने के लिए, GCP इंस्टेंस टेंप्लेट. बनाए गए सभी कंप्यूट फ़ील्ड, टेंप्लेट प्रॉपर्टी को बदल देंगे. उदाहरण के लिए, अगर इमेज की जानकारी दी गई है, तो वह इंस्टेंस टेंप्लेट में इमेज को ओवरराइट कर देगी.

बेहतर कॉन्फ़िगरेशन

अगर आप चाहें, तो क्लस्टर डिप्लॉयमेंट प्रोसेस के हिस्से के तौर पर, अतिरिक्त पैकेज और सॉफ़्टवेयर इंस्टॉल किए जा सकते हैं. अपने स्लरम क्लस्टर में सॉफ़्टवेयर इंस्टॉल करने के लिए, "Compute Engine पर Slarm क्लस्टर में ऐप्लिकेशन इंस्टॉल करना" सेक्शन में बताए गए अलग-अलग तरीके बताए गए हैं. इसके अलावा, SURm की मदद से डिप्लॉय की गई इमेज को पसंद के मुताबिक बनाकर भी ऐसा किया जा सकता है. फ़िलहाल, Slarm, शेड्यूल की गई एमडी से मिली वीएम इमेज को डिप्लॉय करता है. यह इमेज, Google Cloud एचपीसी वीएम इमेज पर आधारित होती है. इसके सबसे ऊपर Slumm इंस्टॉल किया जाता है.

अपनी इमेज इस्तेमाल करने के लिए, tfvars फ़ाइल में दी गई सार्वजनिक SchedMD VM इमेज के आधार पर, अपने कॉन्फ़िगरेशन वाली एक इमेज बनाएं. इसके बाद, tfvars फ़ाइल में दिए गए इमेज यूआरआई को अपनी इमेज से बदलें और बदलाव की जांच करें.

समस्या का हल

इस कोडलैब के दौरान, कृपया Slumm-GCP रिपॉज़िटरी के ReadMe में मौजूद समस्या हल करने वाला सेक्शन देखें.

आम तौर पर, tfvars फ़ाइल को कॉन्फ़िगर करते समय होने वाली गलतियां और कोटा से जुड़ी पाबंदियां दिखती हैं. इस कोडलैब को इस तरह से डिज़ाइन किया गया है कि यह उपयोगकर्ता को तय किए गए स्टैंडर्ड कोटा के अंदर और नए उपयोगकर्ता को मिलने वाले 300 डॉलर के मुफ़्त क्रेडिट के अंदर काम कर सके. अगर वीएम बनाने की कोशिश पूरी नहीं हो पाती है, तो एपीआई की गड़बड़ियों की जांच करने के लिए, कंट्रोलर नोड पर /var/log/slurm/फिर से शुरू करें.log फ़ाइल देखें.

4. कॉन्फ़िगरेशन को डिप्लॉय करना और उसकी पुष्टि करना

कॉन्फ़िगरेशन लागू करें

Cloud Shell सेशन में, slurm-gcp/tf/example फ़ोल्डर से यह निर्देश लागू करें:

terraform init
terraform apply -var-file=basic.tfvars

सेट किए गए कॉन्फ़िगरेशन के आधार पर, आपको बताई गई कार्रवाइयों को स्वीकार करने के लिए कहा जाएगा. "yes" डालें डिप्लॉयमेंट शुरू करने के लिए. "टेराफ़ॉर्म प्लान" चलाकर, डिप्लॉय किए जाने वाले कॉन्फ़िगरेशन को भी देखा जा सकता है.

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 चुनें > वीएम इंस्टेंस.

d5832bdd527794ed.png

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

7a1fc9603758d58d.png

VM इंस्टेंस में जाकर, Tenraform के बनाए गए दो वर्चुअल मशीन इंस्टेंस की समीक्षा करें.

अगर आपने cluster_name फ़ील्ड में बदलाव किया था, तो नाम अलग होंगे.

  • g1-कंट्रोलर
  • g1-login0

5. Slarm क्लस्टर में लॉगिन करें

Slumrm Cluster ऐक्सेस करना

अपने कोड एडिटर/क्लाउड शेल टैब पर वापस जाएं. g1-login0 नोड के ज़ोन के लिए <ZONE> को बदलकर, अपने इंस्टेंस में लॉगिन करने के लिए, नीचे दिया गया कमांड चलाएं (यह us-central1-b होना चाहिए):

gcloud compute ssh g1-login0 --zone=<ZONE>

यह निर्देश आपको g1-login0 वर्चुअल मशीन में लॉग इन करेगा.

लॉगिन नोड को आसानी से ऐक्सेस करने का दूसरा तरीका "एसएसएच" पर क्लिक करना है एसएसएच कनेक्शन वाला नया टैब खोलने के लिए, वीएम इंस्टेंस पेज पर g1-login0 VM के बगल में मौजूद बटन.

8c373a87d13620f7.png

अगर आपने पहली बार क्लाउड शेल का इस्तेमाल किया है, तो आपको नीचे दिया गया मैसेज दिख सकता है. यह मैसेज एसएसएच कुंजी बनाने के लिए कहा जाएगा:

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.

इंतज़ार करें और तब तक लैब में आगे न बढ़ें, जब तक आपको यह मैसेज न दिखे (करीब 5 मिनट):

*** Slurm login setup complete ***

ऊपर दिया गया मैसेज देखने के बाद, लैब को जारी रखने के लिए, आपको लॉग आउट करके, फिर से g1-login0 में लॉग इन करना होगा. ऐसा करने के लिए, टास्क खत्म करने के लिए CTRL + C दबाएं.

इसके बाद, अपने इंस्टेंस से इस कमांड से लॉग आउट करें:

exit

अब अपने लॉगिन वीएम को फिर से कनेक्ट करें. g1-login0 नोड के ज़ोन के लिए <ZONE> को बदलकर, अपने इंस्टेंस में लॉगिन करने के लिए, नीचे दिया गया कमांड चलाएं:

gcloud compute ssh g1-login0 --zone=<ZONE>

ऊपर की तरह, कनेक्ट करने और सेटअप के सभी पहलुओं को पूरा करने से पहले आपको एक या दो मिनट इंतज़ार करना पड़ सकता है.

स्लरम सीएलआई टूल का टूर

अब आप अपने क्लस्टर के Slumm लॉगिन नोड में लॉग इन हैं. यह वह नोड है जो उपयोगकर्ता/एडमिन के इंटरैक्शन, स्लरम जॉब शेड्यूल करने, और एडमिन गतिविधि के लिए खास तौर पर काम करता है.

आइए, कुछ निर्देश चलाकर आपको Slumm कमांड लाइन के बारे में बताते हैं.

हमारे क्लस्टर के संसाधनों की स्थिति देखने के लिए, sinfo कमांड इस्तेमाल करें:

sinfo

sinfo के आउटपुट का सैंपल नीचे दिखता है. sinfo, क्लस्टर में उपलब्ध नोड, उन नोड की स्थिति, और दूसरी जानकारी, जैसे कि बंटवारा, उपलब्धता, और उन नोड पर लागू की गई किसी भी समय सीमा की रिपोर्ट करता है.

PARTITION AVAIL  TIMELIMIT  NODES  STATE NODELIST
debug*       up   infinite     10  idle~ g1-compute-0-[0-9]

आप हमारे 10 नोड देख सकते हैं, जो डीबग विभाजन के "max_node_count" द्वारा तय किए जाते हैं 10 में से, "कुछ समय से इस्तेमाल में नहीं है~" के तौर पर मार्क किए गए हैं (नोड, कुछ समय से इस्तेमाल में न होने वाले और अलग से दिए गए मोड में है, जो जोड़ने के लिए तैयार है).

इसके बाद, हमारे क्लस्टर की सूची की स्थिति देखने के लिए, squeue कमांड चलाएं:

squeue

स्क्यू का अपेक्षित आउटपुट नीचे दिखाई देता है. स्क्यू, क्लस्टर की सूची की स्थिति के बारे में बताता है. इसमें क्लस्टर पर शेड्यूल किए गए हर जॉब का जॉब आईडी, असाइन किया गया जॉब का बंटवारा, जॉब का नाम, जॉब लॉन्च करने वाले उपयोगकर्ता, जॉब की स्थिति, जॉब के चलने का समय, और जॉब असाइन किए जाने वाले नोड शामिल हैं. हमारे पास कोई काम नहीं चल रहा है, इसलिए इस निर्देश का कॉन्टेंट खाली है.

JOBID PARTITION     NAME     USER ST       TIME  NODES NODELIST(REASON)

स्लरम कमांड "srun"" और "Sbatch" का इस्तेमाल उन जॉब को चलाने के लिए किया जाता है जो सूची में हैं. "कहना" समानांतर जॉब चलाता है और इसका इस्तेमाल mpirun के लिए रैपर की तरह किया जा सकता है. "शैच" का इस्तेमाल, स्लरम में बैच जॉब को सबमिट करने के लिए किया जाता है. साथ ही, 'sun' को अलग-अलग कॉन्फ़िगरेशन में एक या कई बार कॉल किया जा सकता है. "शैच" बैच स्क्रिप्ट ले सकते हैं या कमांड लाइन से पूरे जॉब को चलाने के लिए, –wrap विकल्प के साथ इस्तेमाल किया जा सकता है.

चलो कोई काम करते हैं, ताकि हम Slarm को काम करते हुए देख सकें और अपनी सूची में नौकरी पा सकें!

6. स्लरम जॉब चलाएं और क्लस्टर को स्केल करें

स्लरम जॉब चलाएं और क्लस्टर को स्केल करें

अब हमारा Slumm क्लस्टर चालू है, तो काम करते हैं और अपने क्लस्टर को बड़ा करते हैं.

"स्बैच" कमांड का इस्तेमाल Slarm बैच कमांड और स्क्रिप्ट को चलाने के लिए किया जाता है. आइए, एक सामान्य sबैच स्क्रिप्ट चलाएं, जो "hostname" को चलाएगी हमारी अपने-आप स्केल की गई वीएम पर आधारित है.

जब g1-login0 में लॉग इन हो, तब नीचे दिया गया निर्देश चलाएं:

sbatch -N2 --wrap="srun hostname"

यह निर्देश, Slumm बैच के निर्देश को चलाता है. इससे तय होता है कि sbatch "-N" वाले दो नोड चलाएगा का विकल्प शामिल है. इससे यह भी तय होता है कि उनमें से हर नोड "srun होस्टनाम" चलाएगा "–wrap" में आदेश का विकल्प शामिल है.

डिफ़ॉल्ट रूप से, sbatch अपने आउटपुट को "slarm-%j.out" पर लिख देगा काम करने वाली डायरेक्ट्री में कमांड को उसी जगह से चलाया जाता है जहां से %j को Slumm फ़ाइल के नाम के पैटर्न के हिसाब से जॉब आईडी से बदला जाता है. हमारे उदाहरण में, sबैच को उपयोगकर्ता के /home फ़ोल्डर से चलाया जा रहा है. यह एनएफ़एस पर आधारित शेयर किया गया फ़ाइल सिस्टम है, जो डिफ़ॉल्ट रूप से कंट्रोलर पर होस्ट किया जाता है. इससे कंप्यूट नोड को ज़रूरत के मुताबिक इनपुट और आउटपुट डेटा शेयर करने की अनुमति मिलती है. प्रोडक्शन एनवायरमेंट में, काम करने के लिए इस्तेमाल होने वाला स्टोरेज /home के स्टोरेज से अलग होना चाहिए, ताकि क्लस्टर की कार्रवाइयों पर कोई असर न पड़े. tfvars फ़ाइल के लिए, "network_storage" में अलग-अलग स्टोरेज माउंट सेट किया जा सकता है के विकल्प.

sbatch कमांड लाइन का इस्तेमाल करके sbatch स्क्रिप्ट को एक्ज़ीक्यूट करने के बाद, शेड्यूल किए गए जॉब के लिए जॉब आईडी दिखाएगा, उदाहरण के लिए:

Submitted batch job 2

हम sbatch कमांड से मिले जॉब आईडी का इस्तेमाल, टास्क के निष्पादन और संसाधनों को ट्रैक और मैनेज करने के लिए कर सकते हैं. Slarm जॉब की सूची देखने के लिए, नीचे दिया गया निर्देश लागू करें:

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]

हमारे पास कोई कंप्यूट नोड प्रावधान नहीं है. इसलिए, नौकरी की ज़रूरी शर्तों के हिसाब से, Slarm अपने-आप कंप्यूट इंस्टेंस बना देगा. इस प्रोसेस के अपने-आप शुरू होने के दो फ़ायदे हैं. सबसे पहले, यह मैन्युअल प्रॉविज़निंग नोड के HPC क्लस्टर में ज़रूरी काम को हटा देता है. साथ ही, सॉफ़्टवेयर कॉन्फ़िगर करने, क्लस्टर में नोड को इंटिग्रेट करने, और फिर जॉब को डिप्लॉय करने के काम को हटा देता है. दूसरा तरीका, इसकी मदद से उपयोगकर्ता पैसे बचा सकते हैं. इसकी वजह यह है कि कुछ समय से इस्तेमाल में न होने वाले नोड, तय की गई कम से कम संख्या के चालू होने तक कम कर दिए जाते हैं.

Slarm क्लस्टर को चालू होते देखने के लिए, sinfo कमांड का इस्तेमाल किया जा सकता है:

sinfo

यह "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 में वीएम इंस्टेंस सेक्शन भी देखा जा सकता है. नोड को स्पिन करने और काम को नए नोड में जोड़ने से पहले 'स्लरम' चालू होने में कुछ मिनट लगेंगे. जल्द ही, वर्चुअल मशीन के इंस्टेंस की सूची कुछ इस तरह दिखेगी:

9997efff595f1e.png

जब नोड जॉब को चलाने लगेंगे, तब इंस्टेंस "एलोक" में चले जाएंगे राज्य का मतलब है कि नौकरियों को ही नौकरी के लिए बांटा गया है:

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]

काम पूरा होने के बाद, उसे स्क्यू और "ऐलोक" में शामिल नहीं किया जाएगा sinfo के नोड " कुछ समय से इस्तेमाल में नहीं है" पर वापस आ जाएंगे राज्य. "स्क्यू" चलाएं समय-समय पर, काम पूरा होने में एक या दो मिनट लगते हैं.

आउटपुट फ़ाइल slarm-%j.out आपके एनएफ़एस से शेयर किए गए /होम फ़ोल्डर में लिखा जाएगा और उसमें होस्टनेम होंगे. आउटपुट फ़ाइल को खोलें या कैट (आम तौर पर slarm-2.out), आउटपुट फ़ाइल के कॉन्टेंट में यह शामिल होगा:

g1-compute-0-0
g1-compute-0-1

बहुत बढ़िया, आपने काम पूरा कर लिया है और अपने Slarm क्लस्टर को और बड़ा कर लिया है!

7. एमपीआई जॉब चलाएं

आइए, अब अपने सभी नोड में 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

हम "mpicc" का इस्तेमाल करेंगे टूल का इस्तेमाल करके एमपीआई सी कोड को कंपाइल किया जा सकता है. नीचे दिया गया निर्देश चलाएं:

mpicc mpi_hello_world.c -o mpi_hello_world

यह हमारे C कोड को मशीन कोड में इकट्ठा कर देता है, ताकि हम Slumm के ज़रिए कोड को अपने क्लस्टर में चला सकें.

इसके बाद, अपने पसंदीदा टेक्स्ट एडिटर का इस्तेमाल करके "helloworld_batch" नाम की एक बैच स्क्रिप्ट बनाएं:

vi helloworld_batch

vi इंसर्शन मोड में जाने के लिए, i टाइप करें.

एक आसान sबैच स्क्रिप्ट बनाने के लिए, इस टेक्स्ट को कॉपी करके फ़ाइल में चिपकाएं:

#!/bin/bash
#
#SBATCH --job-name=hello_world
#SBATCH --output=hello_world-%j.out
#
#SBATCH --nodes=2

srun mpi_hello_world

escape दबाकर और ":wq" टाइप करके, कोड एडिटर को सेव करें और उससे बाहर निकलें कोट के बिना.

यह स्क्रिप्ट, Slarm बैच के एक्ज़ीक्यूशन एनवायरमेंट और टास्क के बारे में बताती है. सबसे पहले, एक्ज़ीक्यूशन एनवायरमेंट को बैश के तौर पर तय किया जाता है. इसके बाद, स्क्रिप्ट स्लरम विकल्पों के बारे में पहले "#SBATCH" के साथ बताती है लाइन. नौकरी का नाम "hello_world" के रूप में बताया गया है.

आउटपुट फ़ाइल "hello_world_%j.out" के रूप में सेट है जहां %j को Slarm फ़ाइल नाम के पैटर्न के हिसाब से जॉब आईडी की जगह इस्तेमाल किया जाता है. यह आउटपुट फ़ाइल, उस डायरेक्ट्री में लिखी जाती है जिससे sbatch स्क्रिप्ट चलाई जाती है. हमारे उदाहरण में यह उपयोगकर्ता का /home फ़ोल्डर है, जो NFS-आधारित शेयर किया गया फ़ाइल सिस्टम है. इससे कंप्यूट नोड को ज़रूरत के मुताबिक इनपुट और आउटपुट डेटा शेयर करने की अनुमति मिलती है. प्रोडक्शन एनवायरमेंट में, काम करने के लिए इस्तेमाल होने वाला स्टोरेज /home के स्टोरेज से अलग होना चाहिए, ताकि क्लस्टर की कार्रवाइयों पर कोई असर न पड़े.

आखिर में, इस स्क्रिप्ट पर चलने वाले नोड की संख्या 2 होती है.

विकल्पों के बारे में पता चलने के बाद, एक्ज़ीक्यूटेबल निर्देश दिए जाते हैं. यह स्क्रिप्ट, srun निर्देश का इस्तेमाल करके mpi_hello_world कोड को साथ-साथ चलाएगी. यह mpirun निर्देश की जगह इस्तेमाल होने वाला ड्रॉप-इन कोड है.

इसके बाद, sbatch कमांड लाइन का इस्तेमाल करके sbatch स्क्रिप्ट एक्ज़ीक्यूट करें:

sbatch helloworld_batch

दौड़ने के दौरान, शेड्यूल किए गए काम के लिए जॉब आईडी दिखेगा, उदाहरण के लिए:

Submitted batch job 3

यह हर नोड के लिए एक टास्क के साथ, hostname कमांड को दो नोड में चलाएगा. साथ ही, आउटपुट को hello_world-3.out फ़ाइल पर प्रिंट करेगा.

हमारे पास पहले से ही दो नोड बनाने का प्रावधान है. यह काम जल्दी चलेगा.

काम पूरा होने और सूची में शामिल न किए जाने तक, सूची पर नज़र बनाए रखें:

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 के सस्पेंड_टाइम फ़ील्ड या slarm.conf के निलंबितTime फ़ील्ड के साथ कॉन्फ़िगर किया जा सकता है) डायनैमिक रूप से प्रावधान किए गए कंप्यूट नोड को रिलीज़ संसाधनों के लिए हटा दिया जाएगा. समय-समय पर sinfo को चलाकर इसकी पुष्टि की जा सकती है. साथ ही, क्लस्टर के साइज़ को देखकर यह देखा जा सकता है कि क्लस्टर का साइज़ वापस 0 पर आ गया है:

PARTITION AVAIL  TIMELIMIT  NODES  STATE NODELIST
debug*       up   infinite     10  idle~ g1-compute-0-[0-9]

आपने जिस इलाके में क्लस्टर को डिप्लॉय किया है वहां के कोटे के हिसाब से ज़्यादा से ज़्यादा इंस्टेंस उपलब्ध कराने की कोशिश करें. साथ ही, अलग-अलग एमपीआई ऐप्लिकेशन चलाएं.

8. नतीजा

बधाई हो, आपने Google Cloud Platform पर Slumm क्लस्टर बनाया है. साथ ही, इसकी सबसे नई सुविधाओं का इस्तेमाल करके, वर्कलोड की मांग को पूरा करने के लिए, अपने क्लस्टर को अपने-आप स्केल करने की सुविधा का इस्तेमाल किया है! इस मॉडल का इस्तेमाल किसी भी तरह की जॉब को चलाने के लिए किया जा सकता है. यह मॉडल, Slum में नोड का अनुरोध करके, मिनटों में सैकड़ों इंस्टेंस तक बदल जाता है.

अगर आपको GCP पर Slumm का इस्तेमाल करना जारी रखना है, तो " स्लर्म के साथ फ़ेडरेटेड एचपीसी क्लस्टर बनाना" कोडलैब (कोड बनाना सीखना) शुरू करना. यह कोडलैब आपको क्लाउड में दो फ़ेडरेटेड स्लरम क्लस्टर सेट अप करने में मदद करेगा. इससे आपको यह पता चलेगा कि मल्टी-क्लस्टर फ़ेडरेशन कैसे हासिल किया जा सकता है, चाहे आप कंपनी की इमारत में हों या क्लाउड पर.

क्या आप Slarm के नए GCP-नेटिव फ़ंक्शन का इस्तेमाल करके बढ़िया चीज़ें बना रहे हैं? कोई सवाल पूछना चाहते हैं? क्या आपके पास किसी सुविधा का सुझाव है? Google Cloud की हाई परफ़ॉर्मेंस कंप्यूटिंग सलूशन वेबसाइट के ज़रिए आज ही Google Cloud टीम से संपर्क करें या Google Cloud और स्लरम डिस्कशन ग्रुप!

टेराफ़ॉर्म डिप्लॉयमेंट की सफ़ाई करें

स्लरम नोड से लॉग आउट करें:

exit

डिप्लॉयमेंट मिटाने से पहले, अपने-आप स्केल किए गए किसी भी नोड को स्केल डाउन करने दें. इन नोड को मैन्युअल तरीके से भी मिटाया जा सकता है. इसके लिए, आपको "gcloud Comp events delete <Instance Name>" का इस्तेमाल करना चाहिए या कई नोड चुनने के लिए कंसोल GUI का इस्तेमाल करके "मिटाएं" पर क्लिक करें.

g1-login0 से लॉग आउट करने के बाद, हमारे Google Cloud Shell से इस निर्देश को एक्ज़ीक्यूट करके, टेरेस पर डिप्लॉयमेंट को आसानी से हटाया जा सकता है:

cd ~/slurm-gcp/tf/examples/basic
terraform destroy -var-file=basic.tfvars

जब कहा जाए, तब जारी रखने के लिए yes लिखें. इस कार्रवाई में कई मिनट लग सकते हैं, कृपया धैर्य रखें.

प्रोजेक्ट मिटाएं

क्लीनअप करने के लिए, हम बस अपना प्रोजेक्ट मिटा देते हैं.

  • नेविगेशन मेन्यू में, IAM और एडमिन की जानकारी
  • इसके बाद, सबमेन्यू में सेटिंग पर क्लिक करें
  • "प्रोजेक्ट मिटाएं" टेक्स्ट वाले ट्रैशकैन आइकॉन पर क्लिक करें
  • निर्देशों का पालन करें

हमने इन विषयों के बारे में बताया

  • टेराफ़ॉर्म का इस्तेमाल करके, GCP पर Slumm को डिप्लॉय करने का तरीका.
  • GCP पर Slarm का इस्तेमाल करके नौकरी पाने का तरीका.
  • Slarm में क्लस्टर की जानकारी के बारे में क्वेरी करने और मौजूदा जॉब पर नज़र रखने का तरीका.
  • जॉब के खास पैरामीटर और ज़रूरी शर्तों को पूरा करने के लिए, GCP पर Slarm की मदद से नोड को ऑटोस्केल करने का तरीका.
  • GCP पर Slumm पर एमपीआई ऐप्लिकेशन को कंपाइल करने और चलाने का तरीका.

Slumm सहायता टीम खोजें

अगर आपको टेस्टिंग या प्रोडक्शन एनवायरमेंट में इन इंटिग्रेशन का इस्तेमाल करने में मदद चाहिए, तो कृपया SchedMD से सीधे संपर्क करने के लिए, उनके संपर्क पेज का इस्तेमाल करें. इसके लिए, यहां जाएं: https://www.schedmd.com/contact.php

समस्या हल करने के लिए दी गई गाइड का भी इस्तेमाल किया जा सकता है:

आखिर में, अपने सवाल को Google Cloud और Slarm चर्चा ग्रुप यहां मिला है: https://groups.google.com/g/google-cloud-slurm-discuss

ज़्यादा जानें

सुझाव/राय दें या शिकायत करें

कृपया इस लिंक का इस्तेमाल करके इस कोडलैब के बारे में सुझाव, शिकायत या राय सबमिट करें. सुझाव मिलने में पांच मिनट से भी कम समय लगता है. धन्यवाद!