다음을 통해 공유


IBM Spectrum LSF

LSF 10.1 FixPack 9(10.1.0.9)부터 Azure CycleCloud는 Resource Connector의 네이티브 공급자입니다. IBM은 설명서를 제공합니다. 이러한 리소스는 CycleCloud에 연결하도록 LSF 마스터 노드를 구성하는 지침을 제공합니다.

LSF는 IBM 라이선스 제품입니다. CycleCloud에서 LSF를 사용하려면 IBM이 고객에게 제공하는 권한 파일이 필요합니다.

참고

LSF는 IBM 라이선스 제품입니다. CycleCloud에서 LSF를 사용하려면 IBM이 고객에게 제공하는 권한 파일이 필요합니다. 이 프로젝트에서 완전히 자동화된 클러스터 또는 VM 이미지 작성기를 사용하려면 LSF 이진 파일 및 권한 파일을 Blob/디렉터리에 추가해야 합니다. 완전히 자동화된 클러스터를 사용하려면 이 프로젝트 LSF 이진 파일 및 권한 파일의 vm 이미지 작성기를 Blob/디렉터리에 추가해야 합니다.

CycleCloud LSF 클러스터 유형의 지원되는 시나리오

LSF는 필요에 따라 호스트를 추가하고 제거하는 주문형 방식으로 작업을 실행하기 위해 Azure에서 호스트를 "대여"할 수 있습니다. LSF 클러스터 유형은 단일 클러스터에서 여러 시나리오를 처리하는 데 유연합니다.

  1. 높은 처리량 작업(CPU & GPU)
  2. 긴밀하게 결합(MPI, CPU & GPU)
  3. 낮은 우선 순위

이러한 시나리오는 함께 여러 nodearray 및 LSF 속성의 구성에 의해 처리됩니다. nodearray는 CycleCloud에서 미리 구성됩니다. LSF의 적절한 구성을 통해 다양한 작업 시나리오를 사용할 수 있습니다.

이러한 권장 사항에 bsub 따라 LSF를 구성하는 경우 리소스 요구 사항을 -R 다음과 같은 방식으로 사용할 수 있습니다.

placementGroup 리소스를 사용하여 InfiniBand 연결된 네트워크에서 작업을 실행합니다.

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

GPU의 경우 확장 GPU 구문에 LSF 지원을 사용하는 것이 좋습니다. 일반적으로 lsf.confLSB_GPU_NEW_SYNTAX=extend에 및 LSF_GPU_AUTOCONFIG=Y의 두 가지 특성을 추가해야 합니다. 확장 구문 지원을 사용하도록 설정하면 placementGroup과 -gpu 함께 GPU 가속을 사용하여 긴밀하게 결합된 작업을 실행합니다.

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

GPU 사용 작업을 병렬 방식으로 실행합니다.

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

낮은 우선 순위 VM에서 대규모 버스트 작업을 실행합니다.

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

CycleCloud LSF 클러스터 유형에 대한 LSF 구성

설명된 대로 이러한 시나리오를 사용하도록 설정하려면 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)

cyclecloudlowprio 제외될 수 있지만 작업이 의도한 VM 테넌트에서 실행되는 추가 검사 제공합니다.

CycleCloud용 LSF 공급자 템플릿

LSF CycleCloud 공급자는 공급자 템플릿을 통해 다양한 구성을 노출합니다. 이러한 구성은 nodearray의 전체 구성의 하위 집합입니다.

다음은 cyclecloudprov_templates.json Cyclecloud에 대한 LSF 템플릿의 예입니다.

{
    "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"
}

CycleCloud에 대한 LSF 템플릿 특성

모든 nodearray 특성이 LSF 공급자 템플릿에 의해 노출되는 것은 아닙니다. CycleCloud nodearray 구성의 재정의로 간주될 수 있습니다. 필요한 LSF 템플릿은 다음과 같습니다.

  • templateId
  • nodeArray

다른 구성은 CycleCloud 구성에서 유추되거나 생략할 수 있거나 전혀 필요하지 않습니다.

  • imageId - Azure VM 이미지 예: "/subscriptions/xxxxxxxx-xxxx-xxxx-xxx-xxxxxxxxxxxx/resourceGroups/my-images-rg/providers/Microsoft.Compute/images/lsf-execute-201910230416-80a9a87f" CycleCloud 클러스터 구성에 대한 재정의.
  • subnetId - Azure 서브넷(예: ). "resource_group/vnet/subnet" CycleCloud 클러스터 구성에 대한 재정의.
  • vmType - 예: "Standard_HC44rs" CycleCloud 클러스터 구성에 대한 재정의.
  • keyPairLocation - 예를 들면 입니다. "~/.ssh/id_rsa_beta" CycleCloud 클러스터 구성에 대한 재정의.
  • customScriptUri - 예: "http://10.1.0.4/user_data.sh", 지정하지 않으면 스크립트가 없습니다.
  • userData - 예를 들면 입니다. "nodearray_name=gpumpi;placement_group_id=gpumpipg1" 지정하지 않으면 비어 있습니다.

PlacementGroups에 대한 참고 사항

Azure Datacenters에는 HPC 시나리오에 대한 Infiniband 네트워크 기능이 있습니다. 이러한 네트워크는 일반 이더넷과 달리 범위가 제한됩니다. Infiniband 네트워크 익스텐트 는 "PlacementGroups"로 설명됩니다. VM이 동일한 배치 그룹에 있고 특별한 Infiniband 사용 VM 형식인 경우 Infiniband 네트워크를 공유합니다.

이러한 배치 그룹은 LSF 및 CycleCloud에서 특별한 처리를 필요로 합니다.

다음은 cyclecloudprov_templates.json Cyclecloud에 대한 LSF 템플릿의 예입니다.

{
  "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"
}

이 파일의 은 placementGroupName CycleCloud에서 placementGroup의 이름을 결정하는 것 외에는 아무 것도 될 수 없습니다. 이 템플릿에서 CycleCloud에서 빌린 모든 노드는 이 placementGroup에 상주하며, Infiniband 사용 VM인 경우 IB 네트워크를 공유합니다.

placementGroupName 이 의도적이고 필요한 호스트 특성placementgroup과 일치합니다. 또한 는 placement_group_id 호스트 시작 시간에 user_data.sh 사용할 에 설정 userData 됩니다. 특성은 ondemandmpi 불필요한 것처럼 보일 수 있지만 가 정의되지 않은 호스트 placementGroup 에서 이 작업이 일치하지 않도록 하는 데 사용됩니다.

배치 그룹을 사용하는 경우 속성에 의해 결정되는 최대 배치 그룹 크기가 Azure.MaxScaleSetSize 있는 경우가 많습니다. 이 속성은 배치 그룹에 추가할 수 있는 노드 수를 간접적으로 제한하지만 LSF에서는 고려하지 않습니다. 따라서 클러스터 템플릿에서 와 동일한 LSF 템플릿을 설정하는 MaxNumber 것이 중요합니다 Azure.MaxScaleSetSize .

user_data.sh

템플릿은 user_data.sh 스크립트를 실행하기 위한 특성을 제공합니다. customScriptUri 및 를 선택합니다 userData. 노드 시작 시 실행되는 사용자 관리 스크립트의 URI 및 사용자 지정 환경 변수입니다. 이 스크립트는 동의어 CURL 명령에 의해 다운로드되므로 customScriptUri 인증이 필요하지 않습니다. 이 스크립트를 사용하여 다음을 수행합니다.

  1. 작업자 LSF 디먼을 구성합니다. 특히 LSF_LOCAL_RESOURCESLSF_MASTER_LIST
    • 가 공유 파일 시스템에 있는 경우 LSF_TOP 디먼을 시작하기 전에 의 로컬 복사본 lsf.conf 을 만들고 변수를 LSF_ENVDIR 설정하는 것이 유용할 수 있습니다.
  2. lim, res 및 sbatch 디먼을 시작합니다.

CycleCloud 공급자가 설정한 몇 가지 기본 환경 변수가 있습니다.

  • rc_account
  • template_id
  • providerName
  • clustername
  • cyclecloud_nodeid(리소스 instanceId 로 설정하는 것이 좋습니다.)

CycleCloud 공급자에서 리소스를 관리하는 데 유용할 수 있는 다른 사용자 데이터 변수는 다음과 같습니다.

  • nodearray_name
  • placement_group_id

참고

Windows는 공식적으로 지원되는 LSF 플랫폼이지만 CycleCloud는 현재 Windows에서 LSF 실행을 지원하지 않습니다.