LSF 10.1 FixPack 9(10.1.0.9)부터 Azure CycleCloud는 리소스 커넥터의 네이티브 공급자입니다. IBM은 설명서를 제공합니다. 이러한 리소스는 CycleCloud에 연결하도록 LSF 기본 노드를 구성하는 지침을 제공합니다.
LSF는 IBM 라이선스 제품입니다. CycleCloud에서 LSF를 사용하려면 IBM이 고객에게 제공하는 자격 파일이 필요합니다.
비고
- LSF는 IBM 라이선스 제품입니다. CycleCloud에서 LSF를 사용하려면 IBM이 고객에게 제공하는 자격 파일이 필요합니다. LSF 이진 파일 및 권한 파일을
blobs/디렉터리에 추가하여 이 프로젝트에서 완전히 자동화된 클러스터 또는 VM 이미지 작성기를 사용합니다. - 이 프로젝트에서 완전히 자동화된 클러스터 또는 VM 이미지 작성기를 사용하려면 LSF 이진 파일 및 권한 파일을
blobs/디렉터리에 추가합니다. - LSF는 기본적으로 Azure HPC 이미지의 최근 릴리스에 설치되지 않은
ed패키지에 의존합니다. 선택한 VM 이미지에 포함되지ed않은 경우 cloud-init 를 사용하여 패키지를 추가하는 것이 좋습니다. 예를 들어 RedHat Enterprise Linux, AlmaLinux 또는 CentOS에서 클러스터 템플릿(또는 클러스터 편집 대화 상자를 통해 CycleCloud GUI)에 다음을 추가할 수 있습니다.
[node defaults]
CloudInit = '''#!/bin/bash
yum install -y ed
'''
CycleCloud LSF 클러스터 유형의 지원되는 시나리오
LSF는 Azure에서 호스트를 "대여"하여 필요에 따라 호스트를 추가하고 제거하는 주문형 방식으로 작업을 실행할 수 있습니다. LSF 클러스터 유형은 단일 클러스터에서 여러 시나리오를 처리할 수 있습니다.
- 높은 처리량 작업(CPU 및 GPU)
- MPI, CPU 및 GPU가 긴밀하게 결합된 시스템
- 낮은 우선 순위
여러 노드 배열 및 LSF 속성을 구성하여 이러한 시나리오를 처리합니다. CycleCloud는 노드 배열을 미리 구성합니다. LSF의 적절한 구성을 통해 다양한 작업 시나리오를 사용할 수 있습니다.
이러한 권장 사항에 따라 LSF를 구성하는 경우 bsub 리소스 요구 사항을 -R 다음과 같은 방식으로 사용할 수 있습니다.
리소스를 placementGroup 사용하여 InfiniBand 연결된 네트워크에서 작업을 실행합니다.
-R "span[ptile=2] select[nodearray=='ondemandmpi' && cyclecloudmpi] same[placementgroup]"
GPU의 경우 확장 GPU 구문에 LSF 지원을 사용하는 것이 좋습니다. 일반적으로 lsf.conf: LSB_GPU_NEW_SYNTAX=extend 및 LSF_GPU_AUTOCONFIG=Y.에 이러한 특성을 추가합니다. 확장된 구문 지원이 활성화되면, -gpu와 함께 placementGroup을 사용하여 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.jsonCyclecloud에 대한 예제 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 템플릿 특성
LSF 공급자 템플릿은 모든 nodearray 특성을 노출하지 않습니다. 이러한 특성은 CycleCloud nodearray 구성의 재정의로 간주됩니다. 필요한 LSF 템플릿 특성은 다음과 같습니다.
templateIdnodeArray
다른 특성을 생략하거나 전혀 필요하지 않을 수 있습니다. 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 데이터 센터에는 HPC 시나리오에 대한 InfiniBand 네트워크 기능이 있습니다. 일반 이더넷과 달리 이러한 네트워크에는 제한된 범위가 있습니다. "PlacementGroups"는 InfiniBand 네트워크의 범위를 설명합니다. VM이 동일한 배치 그룹에 있고 특별한 InfiniBand 사용 VM 유형인 경우 InfiniBand 네트워크를 공유합니다.
이러한 배치 그룹은 LSF 및 CycleCloud에서 특별한 처리를 필요로 합니다.
다음은 cyclecloudprov_templates.jsonCycleCloud에 대한 예제 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에서 userData 속성을 설정하여 호스트 시작 시간에 user_data.sh에서 사용합니다.
특성은 ondemandmpi 불필요한 것처럼 보일 수 있지만 정의되지 않은 호스트 placementGroup 에서 이 작업이 일치하지 않도록 하는 데 사용됩니다.
배치 그룹을 사용하는 경우 속성 값에 Azure.MaxScaleSetSize 따라 최대 배치 그룹 크기가 결정됩니다.
이 속성은 배치 그룹에 추가할 수 있는 노드 수를 간접적으로 제한하지만 LSF는 이를 고려하지 않습니다. LSF 템플릿의 MaxNumber를 클러스터 템플릿의 Azure.MaxScaleSetSize와 동일하게 설정하십시오.
user_data.sh
템플릿은 user_data.sh 스크립트를 실행하기 위한 두 가지 customScriptUriuserData특성을 제공합니다. 이러한 특성은 노드 시작 시 실행되는 사용자 관리형 스크립트의 URI 및 사용자 지정 환경 변수입니다.
customScriptUri 익명 CURL 명령이 스크립트를 다운로드하므로 인증을 요구할 수 없습니다. 이 스크립트를 사용하여 다음을 수행합니다.
- 작업자 LSF 디먼, 특히
LSF_LOCAL_RESOURCES및LSF_MASTER_LIST를 구성합니다.- 공유 파일 시스템에 있는 경우
LSF_TOP디먼을 시작하기 전에 로컬 복사본lsf.conf을 만들고 변수를LSF_ENVDIR설정하는 것이 유용합니다.
- 공유 파일 시스템에 있는 경우
- lim, res 및 sbatch 디먼을 시작합니다.
CycleCloud 공급자는 몇 가지 기본 환경 변수를 설정합니다.
- rc_account
- 템플릿_아이디
- 제공자이름
- 클러스터 이름
- cyclecloud_nodeid(이 변수를 리소스로
instanceId설정)
CycleCloud 공급자에서 리소스를 관리하는 데 유용할 수 있는 다른 사용자 데이터 변수는 다음과 같습니다.
- 노드배열_이름
- placement_group_id
비고
Windows는 공식적으로 지원되는 LSF 플랫폼이지만 CycleCloud는 현재 Windows에서 LSF 실행을 지원하지 않습니다.