ทำให้คลัสเตอร์ HPC ที่ปรับขนาดอัตโนมัติด้วย Slurm

1. ภาพรวม

ยินดีต้อนรับสู่ Google Codelab สำหรับการเรียกใช้คลัสเตอร์ Slurm บน Google Cloud Platform เมื่อจบ Codelab นี้ คุณควรเข้าใจความสะดวกในการจัดสรรและใช้งานคลัสเตอร์ Slurm ที่ปรับขนาดอัตโนมัติได้เป็นอย่างดี

c16fa310c142ac6f.png

Google Cloud ร่วมมือกับ SchedMD เพื่อเผยแพร่ชุดเครื่องมือที่ช่วยให้เปิดใช้ตัวจัดการภาระงาน Slurm บน Compute Engine ได้ง่ายขึ้นและขยายคลัสเตอร์ที่มีอยู่แบบไดนามิกเมื่อคุณต้องการทรัพยากรเพิ่มเติม การผสานรวมนี้สร้างโดยผู้เชี่ยวชาญจาก SchedMD ตามแนวทางปฏิบัติที่ดีที่สุดของ Slurm

หากคุณวางแผนที่จะใช้การผสานรวม Slurm on Google Cloud Platform หรือมีข้อสงสัยใดๆ โปรดลองเข้าร่วม Google Cloud และ กลุ่มสนทนาของชุมชน Slurm

เกี่ยวกับ Slurm

a739730a41acff0a.png

แผนภาพสถาปัตยกรรมพื้นฐานของคลัสเตอร์ Slurm แบบเดี่ยวใน Google Cloud Platform

Slurm เป็นหนึ่งในผู้จัดการปริมาณงานชั้นนำของคลัสเตอร์ HPC ทั่วโลก Slurm มีระบบการจัดการภาระงานและกำหนดเวลางานแบบโอเพนซอร์ส ทนต่อความผิดพลาด และรองรับการปรับขนาดได้สูงสำหรับคลัสเตอร์ Linux ทั้งขนาดเล็กและขนาดใหญ่ สารเสพติดโดยไม่ต้องปรับเปลี่ยนเคอร์เนลในการทำงานและทำได้ในตัวเอง ในฐานะตัวจัดการภาระงานของคลัสเตอร์ Slurm มีฟังก์ชันหลัก 3 อย่างดังนี้

  1. โดยจะจัดสรรสิทธิ์เข้าถึงทรัพยากร (โหนดประมวลผล) แบบเฉพาะตัวหรือไม่จำกัดสิทธิ์ขาดแต่ผู้เดียวให้กับผู้ใช้เป็นระยะเวลาหนึ่งเพื่อให้ผู้ใช้ทำงานได้
  2. ซึ่งจะให้เฟรมเวิร์กสำหรับการเริ่มต้น การดำเนินการ และตรวจสอบงาน (โดยปกติจะเป็นงานคู่ขนาน) ในชุดโหนดที่จัดสรร
  3. ไกล่เกลี่ยการช่วงชิงทรัพยากรด้วยการจัดการคิวงานที่รอดำเนินการ

สิ่งที่คุณจะได้เรียนรู้

  • วิธีตั้งค่าคลัสเตอร์ Slurm โดยใช้ Terraform
  • วิธีเรียกใช้งานโดยใช้ SLURM
  • วิธีค้นหาข้อมูลคลัสเตอร์และตรวจสอบงานที่กำลังทำงานอยู่ใน SLURM
  • วิธีปรับขนาดโหนดอัตโนมัติให้เหมาะกับพารามิเตอร์งานและข้อกำหนดที่เจาะจง
  • จะขอความช่วยเหลือเกี่ยวกับ Slurm ได้ที่ไหน

ข้อกำหนดเบื้องต้น

  • บัญชี Google Cloud Platform และโปรเจ็กต์ที่มีการเรียกเก็บเงิน
  • ประสบการณ์ Linux ระดับพื้นฐาน

2. ตั้งค่า

การตั้งค่าสภาพแวดล้อมตามเวลาที่สะดวก

สร้างโปรเจ็กต์

หากยังไม่มีบัญชี Google (Gmail หรือ G Suite) คุณต้องสร้างบัญชี ลงชื่อเข้าใช้คอนโซล Google Cloud Platform ( console.cloud.google.com) และเปิดหน้าจัดการทรัพยากร แล้วทำดังนี้

359c06e07e6d699f.png

คลิกสร้างโครงการ

25c23d651abb837b.png

ป้อนชื่อโปรเจ็กต์ จำรหัสโปรเจ็กต์ (ไฮไลต์ด้วยสีแดงในภาพหน้าจอด้านบน) รหัสโปรเจ็กต์ต้องเป็นชื่อที่ไม่ซ้ำกันในโปรเจ็กต์ Google Cloud ทั้งหมด หากชื่อโปรเจ็กต์ไม่ใช่ชื่อเฉพาะ Google Cloud จะสร้างรหัสโปรเจ็กต์แบบสุ่มตามชื่อโปรเจ็กต์

ขั้นตอนต่อไป คุณจะต้องเปิดใช้การเรียกเก็บเงินใน Developers Console เพื่อใช้ทรัพยากรของ Google Cloud

การใช้งาน Codelab นี้ควรจะมีค่าใช้จ่ายประมาณไม่กี่ดอลลาร์ แต่คุณอาจคุ้มค่ามากกว่านี้หากคุณตัดสินใจใช้ทรัพยากรเพิ่มเติมหรือปล่อยให้ทำงาน (ดูส่วน "บทสรุป" ในตอนท้ายของเอกสารนี้) เครื่องคำนวณราคาของ Google Cloud Platform พร้อมใช้งานที่นี่

ผู้ใช้ใหม่ของ Google Cloud Platform มีสิทธิ์รับช่วงทดลองใช้ฟรี$300

Google Cloud Shell

แม้ Google Cloud จะทำงานจากระยะไกลจากแล็ปท็อปได้ แต่เราจะใช้ Google Cloud Shell ซึ่งเป็นสภาพแวดล้อมบรรทัดคำสั่งที่ทำงานในระบบคลาวด์ใน Codelab

เปิด Google Cloud Shell

จากคอนโซล GCP ให้คลิกไอคอน Cloud Shell บนแถบเครื่องมือด้านขวาบนดังนี้

dbad104cef962719.png

จากนั้นคลิกเริ่มต้น Cloud Shell

4e50db320508ac88.png

การจัดสรรและเชื่อมต่อกับสภาพแวดล้อมนี้ควรใช้เวลาเพียงครู่เดียว

20b0aa80492144d.png

เครื่องเสมือนนี้เต็มไปด้วยเครื่องมือการพัฒนาทั้งหมดที่คุณต้องการ โดยมีไดเรกทอรีหลักขนาด 5 GB ที่ทำงานอย่างต่อเนื่องบน Google Cloud ซึ่งจะช่วยเพิ่มประสิทธิภาพของเครือข่ายและทำให้การตรวจสอบสิทธิ์ง่ายขึ้นอย่างมาก ผลงานในห้องทดลองนี้ส่วนใหญ่สามารถทำได้โดยใช้เว็บเบราว์เซอร์หรือ Google Chromebook

เมื่อเชื่อมต่อไปยัง Cloud Shell คุณควรเห็นว่าคุณผ่านการตรวจสอบสิทธิ์แล้วและโปรเจ็กต์ได้ตั้งค่าเป็น 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 ให้เรียกใช้คำสั่งต่อไปนี้เพื่อโคลน (ดาวน์โหลด) ที่เก็บ Git ที่มีไฟล์ Slurm สำหรับ Google Cloud Platform Terraform

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 เพื่อดูเนื้อหาไฟล์ก็ได้ ดังนี้

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: ชื่อของคลัสเตอร์ Slurm
  • โปรเจ็กต์: รหัสโปรเจ็กต์ Google Cloud สำหรับการติดตั้งใช้งานทรัพยากร
  • zone: โซน Google Cloud ซึ่งจะมีตัวควบคุมและอินสแตนซ์การเข้าสู่ระบบของคลัสเตอร์นี้ - ข้อมูลเพิ่มเติม
  • network_name: เครือข่าย Virtual Private Cloud ที่จะทำให้คลัสเตอร์ Slurm ใช้งานได้
  • subnetwork_name: เครือข่ายย่อย Virtual Private Cloud เพื่อทำให้คลัสเตอร์ Slurm ใช้งานได้
  • shared_vpc_host_project: เครือข่าย VPC ที่แชร์เพื่อทำให้คลัสเตอร์ Slurm ใช้งานได้
  • disable_controller_public_ips: กำหนด IP ภายนอกให้กับตัวควบคุม Slurm ไหม
  • disable_login_public_ips: กำหนด IP ภายนอกให้กับโหนดการเข้าสู่ระบบของ Slurm ไหม
  • disable_compute_login_ips: กําหนด IP ภายนอกให้กับโหนดการเข้าสู่ระบบของ Slurm ไหม
  • suspend_time: เวลาที่ต้องรอหลังจากโหนดไม่มีการใช้งานก่อนที่จะระงับโหนด
  • controller_machine_type: ประเภทอินสแตนซ์ของโหนดตัวควบคุม
  • controller_image: อิมเมจ GCP ที่ใช้ในการสร้างอินสแตนซ์ตัวควบคุม Slurm
  • controller_disk_type: ประเภทดิสก์เปิดเครื่องของอินสแตนซ์ตัวควบคุม
  • controller_disk_size_gb: ขนาดของดิสก์บูทสำหรับอินสแตนซ์ตัวควบคุม
  • controller_labels: ป้ายกำกับที่จะแนบกับอินสแตนซ์ตัวควบคุม
  • controller_service_account: บัญชีบริการที่จะใช้ในอินสแตนซ์ตัวควบคุม
  • controller_scopes: ขอบเขตการเข้าถึงของอินสแตนซ์ตัวควบคุม
  • cloudsql: เซิร์ฟเวอร์ Google CloudSQL ที่จะใช้เป็นฐานข้อมูล Slurm แทนการโฮสต์ฐานข้อมูลบนอินสแตนซ์ตัวควบคุม
  • server_ip: IP ของเซิร์ฟเวอร์ CloudSQL
  • user: ชื่อผู้ใช้ CloudSQL
  • รหัสผ่าน: รหัสผ่าน 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: ประเภทอินสแตนซ์ของโหนดเข้าสู่ระบบ (SSH-accessible)
  • login_image: รูปภาพ GCP ที่ใช้สร้างอินสแตนซ์การเข้าสู่ระบบ Slurm
  • 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: IP ของเซิร์ฟเวอร์พื้นที่เก็บข้อมูล
  • remote_mount: ชื่อการต่อเชื่อมพื้นที่เก็บข้อมูล (ชื่อระบบไฟล์)
  • local_mount: ไดเรกทอรีการต่อเชื่อมในเครื่อง
  • fs_type: ประเภทระบบไฟล์ (ติดตั้ง NFS, CIFS, Lustre, GCSFuse โดยอัตโนมัติ)
  • mount_options: ตัวเลือกการติดตั้ง (เช่น ค่าเริ่มต้น,_netdev)
  • login_network_storage: พื้นที่เก็บข้อมูลของเครือข่ายที่จะต่อเชื่อมในโหนดการเข้าสู่ระบบและโหนดตัวควบคุม ระบบจะติดตั้ง NFS, CIFS, Lustre และ GCSFuse โดยอัตโนมัติ ทำซ้ำสำหรับการต่อเชื่อมเพิ่มเติมได้
  • server_ip: IP ของเซิร์ฟเวอร์พื้นที่เก็บข้อมูล
  • remote_mount: ชื่อการต่อเชื่อมพื้นที่เก็บข้อมูล (ชื่อระบบไฟล์)
  • local_mount: ไดเรกทอรีการต่อเชื่อมในเครื่อง
  • fs_type: ประเภทระบบไฟล์ (ติดตั้ง NFS, CIFS, Lustre, GCSFuse โดยอัตโนมัติ)
  • mount_options: ตัวเลือกการติดตั้ง (เช่น ค่าเริ่มต้น,_netdev)
  • compute_node_service_account: บัญชีบริการที่จะใช้บนอินสแตนซ์ Compute
  • compute_node_scopes: ขอบเขตการเข้าถึงของอินสแตนซ์ Compute
  • พาร์ติชัน: การกำหนดค่าพาร์ติชัน Slurm ใช้ซ้ำได้สำหรับพาร์ติชันเพิ่มเติม
  • name: ชื่อพาร์ติชัน
  • machine_type: ประเภทอินสแตนซ์ของโหนดประมวลผล
  • static_node_count: จำนวนโหนดประมวลผลที่เปิดตลอดเวลา
  • max_node_count: จำนวนโหนดประมวลผลทั้งหมดสูงสุดที่อนุญาต - สูงสุด 64,000
  • zone: โซน Google Cloud ที่จะมีทรัพยากรของพาร์ติชันนี้ - ข้อมูลเพิ่มเติม
  • image: ประเภทเครื่องโหนดอิมเมจ Compute
  • image_hyperthreads: เปิดหรือปิด Hyperthreading ในอินสแตนซ์
  • compute_disk_type: ประเภทของดิสก์บูทของอินสแตนซ์ Compute (pd-standard, pd-ssd)
  • compute_disk_size_gb: ขนาดของดิสก์บูทของอินสแตนซ์การประมวลผล
  • compute_labels: ป้ายกำกับที่จะแนบกับอินสแตนซ์การประมวลผล
  • cpu_platform: ต้องใช้แพลตฟอร์ม CPU ขั้นต่ำสำหรับโหนดประมวลผลทั้งหมด
  • gpu_count: จำนวน GPU ที่จะแนบกับแต่ละอินสแตนซ์ในพาร์ติชัน
  • gpu_type: ประเภท GPU ที่จะแนบกับอินสแตนซ์ของพาร์ติชัน
  • network_storage: พื้นที่เก็บข้อมูลเครือข่ายที่จะต่อเชื่อมกับโหนดประมวลผลทั้งหมดในพาร์ติชัน ระบบจะเพิ่มช่องลงใน fstab โดยตรง ทำซ้ำสำหรับการต่อเชื่อมเพิ่มเติมได้
  • server_ip: IP ของเซิร์ฟเวอร์พื้นที่เก็บข้อมูล
  • remote_mount: ชื่อการต่อเชื่อมพื้นที่เก็บข้อมูล (ชื่อระบบไฟล์)
  • local_mount: ไดเรกทอรีการต่อเชื่อมในเครื่อง
  • fs_type: ประเภทระบบไฟล์ (ติดตั้ง NFS, CIFS, Lustre, GCSFuse โดยอัตโนมัติ)
  • mount_options: ตัวเลือกการติดตั้ง
  • preemptible_bursting: อินสแตนซ์จะเป็นอินสแตนซ์ที่ยอมให้มีการขัดจังหวะชั่วคราวไหม
  • vpc_subnet: เครือข่ายย่อย Virtual Private Cloud เพื่อทำให้พาร์ติชัน Slurm ใช้งานได้
  • พิเศษ: เปิดใช้ Slurm เพื่อจัดสรรทั้งโหนดไปยังงาน
  • enable_placement: เปิดใช้นโยบายตำแหน่งโฆษณาที่อินสแตนซ์จะวางอยู่ใกล้กันเพื่อให้เวลาในการตอบสนองของเครือข่ายต่ำระหว่างอินสแตนซ์ต่างๆ
  • regional_capacity: อนุญาตให้วางอินสแตนซ์ในโซนใดก็ได้ในภูมิภาคตามความพร้อมใช้งาน
  • regional_policy: หากregion_capacity เป็น "จริง" นโยบายนี้จะกำหนดภูมิภาคที่จะใช้และโซนใดๆ ในภูมิภาคนั้นที่จะไม่ใช้
  • Instance_template: เทมเพลตอินสแตนซ์ GCP ที่ใช้สำหรับอินสแตนซ์ Compute ช่องประมวลผลที่ระบุจะลบล้างพร็อพเพอร์ตี้ของเทมเพลต เช่น หากมีการระบุรูปภาพ ระบบจะเขียนทับรูปภาพในเทมเพลตอินสแตนซ์

การกำหนดค่าขั้นสูง

หากต้องการ คุณอาจเลือกติดตั้งแพ็กเกจและซอฟต์แวร์เพิ่มเติมเป็นส่วนหนึ่งของกระบวนการทำให้คลัสเตอร์ใช้งานได้ คุณสามารถติดตั้งซอฟต์แวร์บนคลัสเตอร์ Slurm ของคุณได้หลายวิธีตามที่ระบุไว้ใน "การติดตั้งแอปในคลัสเตอร์ Slurm บน Compute Engine" หรือโดยปรับแต่งอิมเมจที่ Slurm ใช้งานได้ ปัจจุบัน Slurm ได้ติดตั้งใช้งานอิมเมจ VM จาก SchedMD ที่อิงตามอิมเมจ VM ของ Google Cloud HPC ซึ่งมีการติดตั้ง Slurm ไว้ด้านบน

หากต้องการใช้อิมเมจของคุณเอง ให้สร้างอิมเมจด้วยการกำหนดค่าของคุณเองโดยอิงจากอิมเมจ SchedMD VM สาธารณะที่ระบุไว้ในไฟล์ tfvars จากนั้นแทนที่ URI รูปภาพที่ระบุในไฟล์ tfvars ด้วยรูปภาพของคุณเอง และทดสอบการเปลี่ยนแปลง

การแก้ปัญหา

ตลอดทั้ง Codelab นี้ โปรดดูส่วนการแก้ปัญหาใน ReadMe ของที่เก็บ Slurm-GCP

ปัญหาที่พบบ่อยที่สุดคือความผิดพลาดในการกำหนดค่าไฟล์ tfvars และการจำกัดโควต้า Codelab นี้ออกแบบมาเพื่อให้ทำงานภายในการจัดสรรโควต้าแบบมาตรฐานของผู้ใช้ใหม่ และภายในเครดิตฟรี $300 ที่ผู้ใช้ใหม่ได้รับ หากการสร้าง VM ล้มเหลว ให้ตรวจสอบไฟล์ /var/log/slurm/ressum.log บนโหนดตัวควบคุมเพื่อตรวจหาข้อผิดพลาดของ API

4. การติดตั้งใช้งานและยืนยันการกำหนดค่า

ทำให้การกำหนดค่าใช้งานได้

ในเซสชัน Cloud Shell ให้เรียกใช้คำสั่งต่อไปนี้จากโฟลเดอร์ slurm-gcp/tf/example

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

ระบบจะแจ้งให้ยอมรับการดำเนินการที่อธิบายไว้ โดยอิงตามการกำหนดค่าที่ตั้งไว้ ป้อน "yes" เพื่อเริ่มการทำให้ใช้งานได้ คุณยังสามารถดูการกำหนดค่าที่จะทำให้ใช้งานได้โดยเรียกใช้ "แผน terraform"

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",
  ],
]

ยืนยันการสร้างอินสแตนซ์ VM

เปิดเมนูการนำทางแล้วเลือก Compute Engine > อินสแตนซ์ VM

d5832bdd527794ed.png

คุณควรเห็นตัวควบคุมและอินสแตนซ์ VM สำหรับเข้าสู่ระบบแสดงอยู่

7a1fc9603758d58d.png

ในส่วนอินสแตนซ์ VM ให้ตรวจสอบอินสแตนซ์เครื่องเสมือน 2 รายการที่ terform สร้างขึ้น

ชื่อจะแตกต่างกันไปหากคุณแก้ไขช่อง cluster_name

  • G1-controller
  • g1-login0

5. เข้าสู่ระบบคลัสเตอร์ Slurm

เข้าถึงกลุ่ม Slurm

กลับไปที่แท็บตัวแก้ไขโค้ด/Cloud Shell เรียกใช้คำสั่งต่อไปนี้เพื่อเข้าสู่ระบบอินสแตนซ์ โดยแทนที่ <ZONE> สำหรับโซนของโหนด g1-login0 (ควรเป็น us-central1-b)

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

คำสั่งนี้จะนำคุณเข้าสู่ระบบเครื่องเสมือน g1-login0

อีกวิธีหนึ่งที่จะเข้าถึงโหนดการเข้าสู่ระบบได้โดยง่ายคือการคลิก "SSH" ข้าง VM g1-login0 บนหน้าอินสแตนซ์ VM เพื่อเปิดแท็บใหม่ที่มีการเชื่อมต่อ SSH

8c373a87d13620f7.png

หากใช้ Cloud Shell เป็นครั้งแรก คุณอาจเห็นข้อความดังที่แสดงด้านล่างซึ่งขอให้คุณสร้างคีย์ SSH

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 2 ครั้ง

หากข้อความต่อไปนี้ปรากฏขึ้นเมื่อเข้าสู่ระบบ

*** 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

แล้วเชื่อมต่อกับ VM สำหรับเข้าสู่ระบบอีกครั้ง เรียกใช้คำสั่งต่อไปนี้เพื่อเข้าสู่ระบบอินสแตนซ์ โดยแทนที่ <ZONE> สำหรับโซนของโหนด g1-login0

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

เช่นเดียวกับด้านบน คุณอาจต้องรอ 1-2 นาทีก่อนจึงจะเชื่อมต่อได้ และการตั้งค่าทั้งหมดจะเสร็จสมบูรณ์

ทัวร์ชมเครื่องมือ Slurm CLI

ตอนนี้คุณเข้าสู่ระบบโหนดเข้าสู่ระบบ Slurm ของคลัสเตอร์แล้ว โหนดนี้ใช้สำหรับการโต้ตอบของผู้ใช้/ผู้ดูแลระบบ การกำหนดเวลางาน Slurm และกิจกรรมการดูแลระบบ

มาเรียกใช้คำสั่ง 2-3 อย่างเพื่อแนะนำบรรทัดคำสั่ง 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" ของพาร์ติชันการแก้ไขข้อบกพร่อง จาก 10 รายการ โดยมีเครื่องหมายว่า "ไม่อยู่~" (โหนดอยู่ในโหมดไม่มีการใช้งานและไม่ได้จัดสรร ซึ่งพร้อมสำหรับการแยก)

จากนั้นเรียกใช้คำสั่ง squeue เพื่อดูสถานะของคิวของคลัสเตอร์ ดังนี้

squeue

เอาต์พุตที่คาดไว้ของคิวจะปรากฏด้านล่าง squeue รายงานสถานะของคิวสำหรับคลัสเตอร์ ซึ่งรวมถึงรหัสงานของแต่ละงานที่กำหนดเวลาไว้บนคลัสเตอร์ พาร์ติชันที่มีการมอบหมายงาน ชื่องาน ผู้ใช้ที่เรียกใช้งาน สถานะของงาน เวลาบนนาฬิกาที่งานทำงานอยู่ และโหนดที่มีการจัดสรรงานดังกล่าว เราไม่มีงานใดทำงานอยู่เลย เนื้อหาของคำสั่งนี้ว่างเปล่า

JOBID PARTITION     NAME     USER ST       TIME  NODES NODELIST(REASON)

คำสั่ง Slurm นั้น "Srun" และ "sbatch" ซึ่งใช้เพื่อเรียกใช้งานที่อยู่ในคิว "Srun" เรียกใช้งานพร้อมกันและใช้เป็น Wrapper สําหรับ mpirun ได้ "sbatch" ใช้ในการส่งงานแบบกลุ่มเพื่อใส่ร้ายป้ายคำ และสามารถเรียกใช้ Srun 1 ครั้งหรือหลายครั้งในการกำหนดค่าต่างๆ "sbatch" สามารถใช้สคริปต์แบบกลุ่ม หรือใช้กับตัวเลือก –wrap เพื่อเรียกใช้ทั้งงานจากบรรทัดคำสั่ง

มาเรียกใช้งานเพื่อดูการทำงานของ Slurm และรับงานในคิวของเรากันเถอะ

6. เรียกใช้งาน Slurm และปรับขนาดคลัสเตอร์

เรียกใช้งาน Slurm และปรับขนาดคลัสเตอร์

ตอนนี้เราใช้คลัสเตอร์ Slurm แล้ว มาเรียกใช้งานและปรับขนาดคลัสเตอร์กัน

"sbatch" เพื่อเรียกใช้คำสั่งแบบกลุ่มและสคริปต์ของ Slurm ลองใช้สคริปต์ sbatch แบบง่ายๆ ซึ่งจะเรียกใช้ "ชื่อโฮสต์" เกี่ยวกับ VM ที่ปรับขนาดอัตโนมัติ

ขณะลงชื่อเข้าใช้ g1-login0 ให้เรียกใช้คำสั่งต่อไปนี้

sbatch -N2 --wrap="srun hostname"

คำสั่งนี้เรียกใช้คำสั่งกลุ่ม Slurm จะระบุว่า sbatch จะเรียกใช้ 2 โหนดที่มี "-N" ตัวเลือก และระบุด้วยว่าแต่ละโหนดเหล่านั้นจะเรียกใช้ "srun ชื่อโฮสต์" ใน "–wrap" ตัวเลือก

โดยค่าเริ่มต้น sbatch จะเขียนเอาต์พุตเป็น "slurm-%j.out" ในไดเรกทอรีการทำงาน จะมีการเรียกใช้คำสั่ง โดย %j จะแทนที่ด้วยรหัสงานตาม รูปแบบชื่อไฟล์ของ Slurm ในตัวอย่างของเรา sbatch จะเรียกใช้จากโฟลเดอร์ /home ของผู้ใช้ ซึ่งเป็นระบบไฟล์ที่ใช้ร่วมกันแบบ NFS ที่โฮสต์บนตัวควบคุมโดยค่าเริ่มต้น ซึ่งจะช่วยให้โหนดการประมวลผลแชร์ข้อมูลอินพุตและเอาต์พุตได้หากต้องการ ในสภาพแวดล้อมที่ใช้งานจริง พื้นที่เก็บข้อมูลที่ใช้งานได้ควรแยกต่างหากจากพื้นที่เก็บข้อมูล /home เพื่อหลีกเลี่ยงผลกระทบด้านประสิทธิภาพที่มีต่อการดำเนินการของคลัสเตอร์ ระบุการต่อเชื่อมพื้นที่เก็บข้อมูลแยกต่างหากในไฟล์ tfvars ใน "network_storage" ได้ ตัวเลือก

หลังจากเรียกใช้สคริปต์ sbatch โดยใช้บรรทัดคำสั่ง sbatch บรรทัดนี้จะส่งคืน Job ID สำหรับงานที่กำหนดเวลาไว้ เช่น:

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 จะสร้างอินสแตนซ์การประมวลผลโดยอัตโนมัติตามข้อกำหนดของงาน กระบวนการแบบอัตโนมัติของกระบวนการนี้มีประโยชน์ 2 ประการ ประการแรก ฟังก์ชันนี้จะนำงานที่โดยปกติแล้วต้องทำในคลัสเตอร์ HPC ของโหนดการจัดสรรด้วยตนเอง การกำหนดค่าซอฟต์แวร์ การผสานรวมโหนดเข้ากับคลัสเตอร์ จากนั้นจึงทำให้งานใช้งานได้ ประการที่ 2 ช่วยให้ผู้ใช้ประหยัดเงินได้เนื่องจากโหนดที่ไม่ได้ใช้งานและโหนดที่ไม่ได้ใช้งานจะถูกลดขนาดลงจนกว่าจำนวนโหนดขั้นต่ำจะทำงาน

คุณเรียกใช้คำสั่ง sinfo เพื่อดูคลัสเตอร์ Slurm ที่กำลังหมุนได้ โดยทำดังนี้

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]

คุณยังสามารถตรวจสอบส่วนอินสแตนซ์ VM ใน Google Cloud Console เพื่อดูโหนดที่จัดสรรใหม่ได้ด้วย ระบบจะใช้เวลา 2-3 นาทีในการสร้างโหนดและทำให้ Slurm ทำงานก่อนที่จะมีการจัดสรรงานให้กับโหนดที่จัดสรรใหม่ รายการอินสแตนซ์ VM ของคุณจะมีลักษณะดังต่อไปนี้ในเร็วๆ นี้

9997efff595f1e.png

เมื่อโหนดกำลังทำงาน อินสแตนซ์จะย้ายไปยัง "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]

เมื่องานเสร็จสมบูรณ์ งานจะไม่ปรากฏในคิวอีกต่อไปและ "alloc" โหนดใน sinfo จะกลับไปที่ "ไม่มีการใช้งาน" เรียกใช้ "squeue" เป็นระยะๆ จนกว่างานจะเสร็จสมบูรณ์ หลังจากผ่านไป 1-2 นาที

ระบบจะเขียน slurm-%j.out ของไฟล์เอาต์พุตลงในโฟลเดอร์ NFS-shared /home และจะมีชื่อโฮสต์ เปิดหรือตั้งไฟล์เอาต์พุต (โดยทั่วไปคือ slurm-2.out) ซึ่งเนื้อหาของไฟล์เอาต์พุตจะประกอบด้วยข้อมูลต่อไปนี้

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

ทำได้ดีมาก คุณได้ดำเนินการและปรับขนาดกลุ่ม Slurm ของคุณแล้ว

7. เรียกใช้งาน MPI

ตอนนี้เราจะเรียกใช้งาน MPI บนโหนดของเรา ขณะลงชื่อเข้าใช้ g1-login0 ให้ใช้ wget เพื่อดาวน์โหลดโปรแกรม MPI ที่เขียนในภาษาโปรแกรม C ดังนี้

wget https://raw.githubusercontent.com/mpitutorial/mpitutorial/gh-pages/tutorials/mpi-hello-world/code/mpi_hello_world.c

หากต้องการใช้เครื่องมือ OpenMPI คุณต้องโหลดโมดูล OpenMPI โดยเรียกใช้คำสั่งนี้

module load openmpi

เราจะใช้ "mpicc" เพื่อคอมไพล์โค้ด MPI C เรียกใช้คำสั่งต่อไปนี้

mpicc mpi_hello_world.c -o mpi_hello_world

การดำเนินการนี้จะรวบรวมโค้ด C ของเราไปยังโค้ดของเครื่อง เพื่อให้เราสามารถเรียกใช้โค้ดทั่วทั้งคลัสเตอร์ของเราผ่าน Slurm

ถัดไป ให้ใช้ตัวแก้ไขข้อความที่คุณต้องการเพื่อสร้างสคริปต์ sbatch ที่ชื่อ "helloworld_batch":

vi helloworld_batch

พิมพ์ i เพื่อเข้าสู่โหมดแทรก vi

คัดลอกและวางข้อความต่อไปนี้ลงในไฟล์เพื่อสร้างสคริปต์ sbatch แบบง่ายๆ

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

srun mpi_hello_world

บันทึกและออกจากตัวแก้ไขโค้ดโดยกด Escape และพิมพ์ ":wq" โดยไม่ต้องใส่เครื่องหมายคำพูด

สคริปต์นี้กำหนดสภาพแวดล้อมและงานของการดำเนินการแบบกลุ่มของ Slurm ประการแรก สภาพแวดล้อมการดำเนินการจะกำหนดไว้เป็น Bash ถัดไป สคริปต์จะกำหนดตัวเลือก Slurm ก่อนด้วย "#SBWatch" เส้น ชื่องานกำหนดไว้เป็น "hello_world"

ไฟล์เอาต์พุตได้รับการตั้งค่าเป็น "hello_world_%j.out" โดย %j จะแทนที่ด้วยรหัสงานตาม รูปแบบชื่อไฟล์ของ Slurm ไฟล์เอาต์พุตนี้ถูกเขียนลงในไดเรกทอรีที่เรียกใช้สคริปต์ sbatch ในตัวอย่างของเรา นี่คือโฟลเดอร์ /home ของผู้ใช้ ซึ่งเป็นระบบไฟล์ที่แชร์แบบ NFS ซึ่งจะช่วยให้โหนดการประมวลผลแชร์ข้อมูลอินพุตและเอาต์พุตได้หากต้องการ ในสภาพแวดล้อมที่ใช้งานจริง พื้นที่เก็บข้อมูลที่ใช้งานได้ควรแยกต่างหากจากพื้นที่เก็บข้อมูล /home เพื่อหลีกเลี่ยงผลกระทบด้านประสิทธิภาพที่มีต่อการดำเนินการของคลัสเตอร์

สุดท้าย จำนวนโหนดที่สคริปต์นี้ควรทำงานคือ 2

หลังจากกำหนดตัวเลือกแล้ว ระบบจะจัดเตรียมคำสั่งที่เรียกใช้ได้ สคริปต์นี้จะเรียกใช้โค้ด mpi_hello_world ในแบบคู่ขนานโดยใช้คำสั่ง srun ซึ่งเป็นการแทนที่แบบดร็อปอินสำหรับคำสั่ง mpirun

จากนั้นเรียกใช้สคริปต์ sbatch โดยใช้บรรทัดคำสั่ง sbatch ดังนี้

sbatch helloworld_batch

การรัน sbatch จะแสดงผล รหัสงาน สำหรับงานที่กำหนดเวลาไว้ เช่น

Submitted batch job 3

การดำเนินการนี้จะเรียกใช้คำสั่ง ชื่อโฮสต์ ผ่าน 2 โหนด โดยมี 1 งานต่อโหนด รวมถึงการพิมพ์เอาต์พุตไปยังไฟล์ hello_world-3.out

เนื่องจากเรามีโหนด 2 รายการที่จัดสรรไว้แล้ว งานนี้จึงทำงานได้อย่างรวดเร็ว

ตรวจสอบคิวจนกว่างานจะเสร็จสมบูรณ์และไม่มีการแสดงรายการอีกต่อไป

squeue

เมื่อเปิดหรือ cat ไฟล์ 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

หลังจากไม่มีการใช้งานเป็นเวลา 5 นาที (กำหนดค่าได้ด้วยช่องsuspended_time ของ YAML หรือช่อง ถูกระงับเวลาของ slurm.conf) โหนดประมวลผลที่มีการจัดสรรแบบไดนามิกจะถูกจัดสรรเพื่อปล่อยทรัพยากร คุณสามารถตรวจสอบได้โดยการเรียกใช้ Sinfo เป็นระยะๆ และสังเกตขนาดของคลัสเตอร์กลับไปเป็น 0 ดังนี้

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

ลองจำลองอินสแตนซ์เพิ่มเติม เพิ่มจำนวนโควต้าที่อนุญาตในภูมิภาคที่คุณทำให้คลัสเตอร์ใช้งานได้ และเรียกใช้แอปพลิเคชัน MPI อื่นๆ

8. บทสรุป

ขอแสดงความยินดี คุณได้สร้างคลัสเตอร์ Slurm บน Google Cloud Platform และใช้ฟีเจอร์ล่าสุดของคลัสเตอร์เพื่อปรับขนาดคลัสเตอร์โดยอัตโนมัติเพื่อตอบสนองความต้องการด้านภาระงานแล้ว คุณใช้โมเดลนี้เพื่อเรียกใช้งานที่หลากหลายได้ และโมเดลจะปรับขนาดเป็นหลายร้อยอินสแตนซ์ในไม่กี่นาทีเพียงแค่ขอโหนดใน Slurm

หากคุณยังต้องการเรียนรู้การใช้ Slurm บน GCP ต่อไป โปรดดำเนินการต่อด้วย " การสร้างคลัสเตอร์ HPC แบบรวมศูนย์ด้วย Slurm" Codelab Codelab นี้จะแนะนำคุณตลอดขั้นตอนการตั้งค่าคลัสเตอร์ Slurm แบบรวมศูนย์ 2 รายการในระบบคลาวด์ เพื่อแสดงให้เห็นว่าคุณจะทำการรวมศูนย์แบบหลายคลัสเตอร์ได้อย่างไร ไม่ว่าจะเป็นภายในองค์กรหรือในระบบคลาวด์

คุณกำลังสร้างอะไรเจ๋งๆ โดยใช้ฟังก์ชันใหม่ที่ดำเนินการบน GCP ของ Slurm อยู่ใช่ไหม หากมีคำถาม มีคำแนะนำเกี่ยวกับฟีเจอร์ไหม ติดต่อทีม Google Cloud เลยผ่านเว็บไซต์โซลูชันการประมวลผลประสิทธิภาพสูงของ Google Cloud หรือแชทกับเราใน Google Cloud และ กลุ่มสนทนา Slurm

ล้างข้อมูลการทำให้ Terraform ใช้งานได้

ออกจากระบบโหนดข้อความอ้อมๆ:

exit

ให้โหนดที่ปรับขนาดอัตโนมัติลดขนาดลงก่อนลบการทำให้ใช้งานได้ คุณยังลบโหนดเหล่านี้ด้วยตนเองได้ด้วยการเรียกใช้ "gcloud compute assets delete <Instance Name>" สำหรับแต่ละอินสแตนซ์ หรือใช้ Console GUI เพื่อเลือกหลายโหนด แล้วคลิก "ลบ"

คุณสามารถล้างข้อมูลการทำให้ Terraform ใช้งานได้หลังจากดำเนินการเสร็จสิ้นโดยเรียกใช้คำสั่งต่อไปนี้จาก Google Cloud Shell หลังจากออกจากระบบ g1-login0 แล้ว

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

เมื่อมีข้อความแจ้ง ให้พิมพ์ yes เพื่อดำเนินการต่อ การดำเนินการนี้อาจใช้เวลาหลายนาที โปรดรอสักครู่

ลบโปรเจ็กต์

เพียงแค่ลบโปรเจ็กต์เพื่อล้างข้อมูล

  • ในเมนูการนำทาง ให้เลือก IAM & ผู้ดูแลระบบ
  • แล้วคลิกการตั้งค่าในเมนูย่อย
  • คลิกไอคอนถังขยะที่มีข้อความ "ลบโครงการ"
  • ทำตามวิธีการที่ปรากฏ

สรุปประเด็นที่ได้พูดถึง

  • วิธีใช้ Slurm บน GCP โดยใช้ Terraform
  • วิธีเรียกใช้งานโดยใช้ Slurm บน GCP
  • วิธีค้นหาข้อมูลคลัสเตอร์และตรวจสอบงานที่กำลังทำงานอยู่ใน Slurm
  • วิธีปรับขนาดโหนดอัตโนมัติด้วย Slurm บน GCP เพื่อรองรับพารามิเตอร์งานและข้อกำหนดเฉพาะ
  • วิธีคอมไพล์และเรียกใช้แอปพลิเคชัน MPI บน Slurm บน GCP

ค้นหาการสนับสนุน Slurm

หากต้องการการสนับสนุนในการใช้การผสานรวมเหล่านี้ในสภาพแวดล้อมการทดสอบหรือการใช้งานจริง โปรดติดต่อ SchedMD โดยตรงโดยใช้หน้าติดต่อที่ https://www.schedmd.com/contact.php

หรือจะดูคู่มือการแก้ปัญหาที่มีอยู่ก็ได้

สุดท้าย คุณสามารถโพสต์คำถามใน Google Cloud และ พบกลุ่มสนทนา Slurm ที่นี่: https://groups.google.com/g/google-cloud-slurm-discuss

ดูข้อมูลเพิ่มเติม

ความคิดเห็น

โปรดส่งความคิดเห็นเกี่ยวกับ Codelab นี้โดยใช้ลิงก์นี้ การแสดงความคิดเห็นใช้เวลาไม่เกิน 5 นาที ขอขอบคุณ