Bagikan melalui


IBM Spectrum LSF

Mulai dari LSF 10.1 FixPack 9 (10.1.0.9), Azure CycleCloud adalah penyedia asli untuk Konektor Sumber Daya. IBM menyediakan dokumentasi. Sumber daya ini memberikan instruksi tentang mengonfigurasi simpul utama LSF untuk terhubung ke CycleCloud.

LSF adalah produk berlisensi IBM. Untuk menggunakan LSF di CycleCloud, Anda memerlukan file pemberian hak yang diberikan IBM kepada pelanggan mereka.

Nota

  • LSF adalah produk berlisensi IBM. Untuk menggunakan LSF di CycleCloud, Anda memerlukan file pemberian hak yang disediakan IBM kepada pelanggannya. Tambahkan biner LSF dan file pemberian izin ke blobs/ direktori untuk menggunakan kluster yang sepenuhnya otomatis atau penyusun gambar VM dalam proyek ini.
  • Untuk menggunakan kluster yang sepenuhnya otomatis atau penyusun gambar VM dalam proyek ini, tambahkan biner LSF dan file pemberian izin ke blobs/ direktori.
  • LSF bergantung pada paket ed yang secara default tidak diinstal dalam rilis terbaru Azure HPC Image. Jika Gambar VM yang Anda pilih tidak menyertakan ed, sebaiknya gunakan cloud-init untuk menambahkan paket. Misalnya, di RedHat Enterprise Linux, AlmaLinux atau CentOS Anda dapat menambahkan yang berikut ke templat kluster Anda (atau di CYCLECloud GUI melalui dialog Edit Kluster):
[node defaults]
CloudInit = '''#!/bin/bash
yum install -y ed
'''

Skenario yang didukung dari jenis kluster CycleCloud LSF

LSF dapat "meminjam" host dari Azure untuk menjalankan pekerjaan dengan cara sesuai permintaan, menambahkan dan menghapus host sesuai kebutuhan. Jenis kluster LSF fleksibel untuk menangani beberapa skenario dalam satu kluster:

  1. Tugas throughput tinggi (CPU dan GPU)
  2. Digabungkan erat (MPI, CPU & GPU)
  3. Prioritas Rendah

Tangani skenario ini dengan mengonfigurasi beberapa array simpul dan properti LSF. CycleCloud mengonfigurasi terlebih dahulu array simpul. Konfigurasi LSF yang tepat memungkinkan berbagai skenario pekerjaan.

Saat mengonfigurasi LSF sesuai dengan rekomendasi ini, Anda dapat menggunakan bsub persyaratan -R sumber daya dengan cara berikut:

Gunakan sumber daya placementGroup untuk menjalankan tugas pada jaringan yang terhubung InfiniBand.

-R "span[ptile=2] select[nodearray=='ondemandmpi' && cyclecloudmpi] same[placementgroup]"

Untuk GPU, sebaiknya gunakan dukungan LSF untuk sintaks GPU yang diperluas. Biasanya, Anda menambahkan atribut ini ke lsf.conf: LSB_GPU_NEW_SYNTAX=extend dan LSF_GPU_AUTOCONFIG=Y. Dengan dukungan untuk sintaks yang diperluas diaktifkan, gunakan placementGroup bersama dengan -gpu untuk menjalankan pekerjaan yang erat terhubung dengan akselerasi GPU.

-R "span[ptile=1] select[nodearray=='gpumpi' && cyclecloudmpi] same[placementgroup]" -gpu "num=2:mode=shared:j_exclusive=yes"

Jalankan pekerjaan yang diaktifkan GPU secara paralel.

-R "select[nodearray=='gpu' && !cyclecloudmpi && !cyclecloudlowprio]" -gpu "num=1:mode=shared:j_exclusive=yes"

Jalankan tugas burst besar pada mesin virtual dengan prioritas rendah.

-J myArr[1000] -R "select[nodearray=='lowprio' && cyclecloudlowprio]"

Mengonfigurasi LSF untuk jenis Kluster CycleCloud LSF

Untuk mengaktifkan skenario ini, tambahkan jenis sumber daya bersama ke lsb.shared.

   cyclecloudhost  Boolean  ()       ()       (instances from Azure CycleCloud)
   cyclecloudmpi  Boolean   ()       ()       (instances that support MPI placement)
   cyclecloudlowprio  Boolean ()     ()       (instances that low priority / interruptible from Azure CycleCloud)
   nodearray  String     ()       ()       (nodearray from CycleCloud)
   placementgroup String ()       ()       (id used to note locality of machines)
   instanceid String     ()       ()       (unique host identifier)

Anda mungkin dapat melewatkan cyclecloudlowprio, tetapi ini memberikan pemeriksaan tambahan untuk memastikan bahwa pekerjaan berjalan pada penyewaan VM yang diinginkan.

Templat Penyedia LSF untuk CycleCloud

Penyedia LSF CycleCloud mengekspos konfigurasi melalui templat penyedia. Konfigurasi ini adalah subset dari konfigurasi lengkap nodearray.

Berikut adalah contoh templat LSF untuk Cyclecloud dari cyclecloudprov_templates.json:

{
    "templateId": "ondemand",
    "attributes": {
        "type": ["String", "X86_64"],
        "ncores": ["Numeric", "44"],
        "ncpus": ["Numeric", "44"],
        "mem": ["Numeric", "327830"],
        "cyclecloudhost": ["Boolean", "1"],
        "nodearray" : ["String", "ondemand"]
    },
    "priority" : 250,
    "nodeArray": "ondemand",
    "vmType" : "Standard_HC44rs",
    "subnetId" : "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/azurecyclecloud-lab/providers/Microsoft.Network/virtualNetworks/hpc-network/subnets/compute",
    "imageId" : "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/azurecyclecloud-lab/providers/Microsoft.Compute/images/lsf-worker-a4bc2f10",
    "maxNumber": 500,
    "keyPairLocation": "/opt/cycle_server/.ssh/id_rsa_admin.pem",
    "customScriptUri": "https://aka.ms/user_data.sh",
    "userData": "nodearray_name=ondemand"
}

Atribut Templat LSF untuk CycleCloud

Templat penyedia LSF tidak mengekspos semua atribut nodearray. Atribut-atribut ini dianggap sebagai penggantian dari konfigurasi nodearray CycleCloud. Satu-satunya atribut templat LSF yang diperlukan adalah:

  • templateId
  • nodeArray

Anda dapat menghilangkan atribut lain atau mungkin tidak diperlukan sama sekali. CycleCloud menyimpulkan atribut ini:

  • imageId - Azure VM Image, misalnya, "/subscriptions/xxxxxxxx-xxxx-xxxx-xxx-xxxxxxxxxxxx/resourceGroups/my-images-rg/providers/Microsoft.Compute/images/lsf-execute-201910230416-80a9a87f" - ambil alih untuk konfigurasi kluster CycleCloud.
  • subnetId - Subnet Azure, misalnya, "resource_group/vnet/subnet" - menggantikan konfigurasi kluster CycleCloud.
  • vmType - misalnya, "Standard_HC44rs" - override untuk konfigurasi kluster CycleCloud.
  • keyPairLocation - misalnya, "~/.ssh/id_rsa_beta" - override untuk konfigurasi kluster CycleCloud.
  • customScriptUri - Misalnya, http://10.1.0.4/user_data.sh. Tidak ada skrip jika tidak ditentukan.
  • userData - Misalnya, "nodearray_name=gpumpi;placement_group_id=gpumpipg1". Kosong jika tidak ditentukan.

Catatan tentang PlacementGroups

Pusat data Azure memiliki kemampuan jaringan InfiniBand untuk skenario HPC. Tidak seperti Ethernet normal, jaringan ini memiliki rentang terbatas. "PlacementGroups" menjelaskan tingkat jaringan InfiniBand. Jika VM berada di grup penempatan yang sama dan merupakan jenis VM khusus dengan dukungan InfiniBand, VM tersebut berbagi jaringan InfiniBand.

Grup penempatan ini memerlukan penanganan khusus di LSF dan CycleCloud.

Berikut adalah contoh templat LSF untuk CycleCloud dari cyclecloudprov_templates.json:

{
  "templateId": "ondemandmpi-1",
  "attributes": {
    "nodearray": ["String", "ondemandmpi" ],
    "zone": [  "String",  "westus2"],
    "mem": [  "Numeric",  8192.0],
    "ncpus": [  "Numeric",  2],
    "cyclecloudmpi": [  "Boolean",  1],
    "placementgroup": [  "String",  "ondemandmpipg1"],
    "ncores": [  "Numeric",  2],
    "cyclecloudhost": [  "Boolean",  1],
    "type": [  "String",  "X86_64"],
    "cyclecloudlowprio": [  "Boolean",  0]
  },
  "maxNumber": 40,
  "nodeArray": "ondemandmpi",
  "placementGroupName": "ondemandmpipg1",
  "priority": 448,
  "customScriptUri": "https://aka.ms/user_data.sh",
  "userData" : "nodearray_name=ondemandmpi;placement_group_id=ondemandmpipg1"
}

Dalam placementGroupName file ini bisa apa saja kecuali menentukan nama placementGroup di CycleCloud. Simpul apa pun yang dipinjam dari CycleCloud dari templat ini berada di placementGroup ini dan, jika mereka adalah VM berkemampuan InfiniBand, bagikan jaringan IB.

Properti placementGroupName cocok dengan atribut placementgrouphost . Kecocokan ini disengaja dan diperlukan. Atur properti placement_group_id di userData untuk digunakan dalam user_data.sh pada waktu mulai host. Atribut ondemandmpi mungkin tampak asing tetapi digunakan untuk mencegah pekerjaan ini cocok pada host di mana placementGroup tidak terdefinisi.

Saat Anda menggunakan grup penempatan, nilai Azure.MaxScaleSetSize properti menentukan ukuran grup penempatan maksimum. Properti ini secara tidak langsung membatasi berapa banyak simpul yang dapat Anda tambahkan ke grup penempatan tetapi LSF tidak mempertimbangkannya. Setel MaxNumber templat LSF menjadi Azure.MaxScaleSetSize dalam templat kluster.

user_data.sh

Templat menyediakan dua atribut untuk menjalankan skrip user_data.sh : customScriptUri dan userData. Atribut ini adalah variabel URI dan lingkungan kustom dari skrip yang dikelola pengguna yang berjalan pada startup simpul. customScriptUri tidak dapat memerlukan autentikasi karena perintah CURL anonim mengunduh skrip. Gunakan skrip ini untuk:

  1. Konfigurasikan daemon LSF pekerja, terutama LSF_LOCAL_RESOURCES dan LSF_MASTER_LIST.
    • Jika LSF_TOP berada di sistem file bersama, berguna untuk membuat salinan lsf.conf lokal dan mengatur LSF_ENVDIR variabel sebelum memulai daemon.
  2. Mulai daemon lim, res, dan sbatch.

Penyedia CycleCloud mengatur beberapa variabel lingkungan default.

  • rc_account
  • template_id
  • NamaPenyedia
  • nama kluster
  • cyclecloud_nodeid (atur variabel ini ke instanceId sumber daya)

Variabel data pengguna lain yang dapat berguna dalam mengelola sumber daya di penyedia CycleCloud adalah:

  • nodearray_name
  • id_kelompok_penempatan

Nota

Meskipun Windows adalah platform LSF yang didukung secara resmi, CycleCloud tidak mendukung menjalankan LSF di Windows saat ini.