cb-spider
cb-spider copied to clipboard
[GCP:GPU] Fix to Provision VMs with GPU Accelerators
GCP 에서 GPU 와 같은 게스트 가속기가 포함되지 않은 머신 타입에 대한 프로비저닝 불가 개선 작업(#1125 )
[작업 방향]
- 제안해주신 방법처럼
- 400 bad request
~not support live migration
에러 발생하는 경우 - OnHostMaintenance 설정을 TERMINATE 로 변경하여
- 재요청을 하는 방식으로 수정했습니다.
- 다만 google 에서
not support live migration
에러 메시지를 변경하는 경우 정상 작동하지 않을 리스크가 있습니다.
[작업 내용]
- GPU 기능을 테스트하기 위한 임시 조치 코드를 제거
- 게스트 가속기가 있는 인스턴스 인스턴스 생성시 400 에러와 함께 'not support live migration' 구문이 에러에 포함되어 있는 경우 'OnHostMaintenance'를 'TERMINATE'로 설정하여 VM 생성 요청을 다시 보내는 코드를 추가
[테스트]
- 로컬 spider admin web 에서
-
machine type: e2-standard-2
-
machine type: g2-standard-4
-> GPU 머신 유형
-
- 상기 2개의 머신 타입으로 프로비저닝 -> 기대 동작대로 작동 확인
[참고사항]
- 인스턴스 유지 보수 중 라이브 마이그레이션 제한 사항의 경우 GPU 가 연결된 vm 뿐만 아니라,
- 다른 조건의 vm 도 포함되는 것으로 보입니다. (링크)
Could you please check and revise Korean texts? Note - All output of print and log statements should be in English. :wink:
cloud-control-manager/cloud-driver/drivers/gcp/resources/VMHandler.go
27:+ cblogger.Error("VM 생성 실패")
- 패치 캄사합니다.
- 아래 공유 해주신 타입들 또한 동일 오류 메시지를 포함할 터이니(추측)
- GPU type과 동일하게 예외 처리 되겠지요?
- 다만, 에러 메시지를 좀더 일반화할 필요는 있어 보입니다.(위 comment 참고 부탁 드립니다)
다른 조건의 vm 도 포함되는 것으로 보입니다. (링크)
@powerkimhub
아래 공유 해주신 타입들 또한 동일 오류 메시지를 포함할 터이니(추측)
- 위 내용과 관련하여 테스트를 추가 진행하였습니다.
- 선점형, spot, 컨피덴셜, TPU 를 제외하고 스파이더에서 테스트가 가능한 방식으로 프로비저닝 해본 결과
- GPU 관련 인스턴스는 동일한 에러를 반환하는 것으로 확인했습니다. -
a2, a3, g2 패밀리
Instances with guest accelerators do not support live migration
- 반면 스토리지 최적화 VM 패밀리인 z3 는 다음과 같았습니다. -
z3 패밀리
OnHostMaintenance must be set to TERMINATE for machine type - z3-highmem-88(인스턴스 타입이 들어감)
- 테스트 결과 VM 타입별로 프로비저닝시 live migration 설정 관련한 에러가 다를 수 있을 것으로 판단됩니다.
- 현재 GCP 측에 live migration 지원 VM 여부에 대해 참고할 수 있는 api 문의를 해 둔 상태이며 진행 사항 공유드리겠습니다.
- 존재하지 않는 경우 일단은 기존 개발 방향에서 'OnHostMaintenance must be set to TERMINATE~' 와 같은 메시지 포함 여부 추가 가능합니다.
- 다만 하드 코딩된 메시지로 분기 처리하는 방법은 여전히 리스크가 존재합니다.
- 추후 선점형, spot VM 의 경우에는 프로비저닝시 OnHostMaintenance 관련 필드를 옵션으로 추가하는 방식을 고려할 수 있습니다.
다만, 에러 메시지를 좀더 일반화할 필요는 있어 보입니다.
- common 한 메시지로 수정하겠습니다.
@hippo-an
-
미확인 부분 추가 시험 및 현황 공유 캄사 드립니다.
-
관련 API 문의 결과가 마땅치 않거나, 에러 메시지 불확실성을 고려한다면,
-
다음 방법도 후보가 될 수 있겠습니다.
-
공유 해주신 정보를 요약하면, 아래
[Live Migration 지원 불가 케이스]
테이블과 같은데- 현재 Spider가 제공하는 VM 유형 만을 고려한다면,
- VM 생성 요청 전에 VM Spec name에 포함된
a2-
,a3-
,g2-
,z3-
등의 포함 여부로 예외 처리 가능 - Risk
- 추후, Spider가 Spot VM 등을 지원한다면 에러 발생
- 추후, GCP에
a4-*
,z4-*
등 동일 VM 유형에 신규 Spec이 추가될 경우 에러 발생
- ※ 적절한 API 지원이 없다고 했을 때, 추가 고려 해봤는데 이 방법도 좋은 방법은 아니네요.
[Live Migration 지원 불가 케이스]
VM 유형 CB-Spider 지원 가능 대상 관련 Spec 컨피덴셜 VM (AMD N2D 아닌 경우) X - GPU 연결된 VM ✔️ a2-highgpu-1g
, ...Cloud TPU X - 선점형 VM X - Spot VM X - 스토리지 최적화 VM (Z3) ✔️ z3-highmem-88
, ...
- 답변이 늦었습니다.
- 관련 api 문의 결과 machine type 혹은 machine type family 로 live migration support 여부를 확인할 수 있는 api 를
- 확인하지 못했습니다.
추가 고려 방식
- machine type get api 를 호출하여 응답값에 포함된 "accelerators" 항목 포함 여부로 gpu machine type 확인 [제약 사항]
- n1 machine type 은 범용으로 사용하거나 gpu accelerator 를 추가해서 GPU 프로비저닝이 가능
- z3 스토리지 최적화 타입인 z3 의 경우 accelerators 항목이 존재하지 않으나 onHostMaintenance 설정은 TERMINATE 만 가능
결론
순번 | 방법 | 제약 사항 |
---|---|---|
1 | OnHostMaintenance 설정 없이(default: MIGRATE) VM 프로비저닝 요청 후, 400 에러 발생 시 에러 메시지 포함 여부 확인 후 OnHostMaintenance 설정 값을 TERMINATE 로 변경하여 프로비저닝 재요청 | 1)응답 메시지 공통 포함 여부 처리 어려움 2)TERMINATE 설정의 경우 프로비저닝 요청 2번 호출 |
2 | VM 생성 요청 전에 VM Spec name에 포함된 a2-, a3-, g2-, z3- 등의 포함 여부로 OnHostMaintenance 를 TERMINATE 로 설정 | 1) 추후, Spider가 Spot VM 등을 지원한다면 에러 발생 2) 추후, GCP에 a4-, z4- 등 동일 VM 유형에 신규 Spec이 추가될 경우 에러 발생 |
3 | machine type get api 를 호출하여 응답값에 포함된 "accelerators" 포함 여부로 gpu 지원 machine type 확인 | 1) GPU accelerators 항목만으로 live migration 을 설정하는 방식이 올바르지 않아 보임 2) 추후, Spider 가 gpu accelerator 추가를 통한 프로비저닝 지원시, n1 타입에 대해 에러 발생 3) z3-* 와 같이 스토리지 최적화 타입의 경우 accelerators 항목이 없음에도 TERMINATE 로 설정이 필요해 결국 VM spec name 으로 필터 필요 |
위 의견을 조합해서 사용하여 에러 확률을 낮추는 방식이 좋을 듯 합니다. 의견 주시면 해당 방식으로 작업 진행하도록 하겠습니다.
@hippo-an
- 현황 정리 및 공유 캄사 드립니다.
- 현 시점에서는
1안
으로, 다음 2가지 케이스의 에러 메시지 발생시 재요청으로 반영하는 것이 좋을 것 같습니다.- (1)
GPU 연결된 VM
관련 에러 메시지:Instances with guest accelerators do not support live migration
- (2)
스토리지 최적화 VM
관련 에러 메시지:OnHostMaintenance must be set to TERMINATE for machine type - z3-highmem-88
- (1)
- 가정
- 향후, GCP 에러 메시지 변경시 에러 발생이 가능함
- Spider를 통해서는
n1 + gpu 추가 설정
,Spot VM
등과 같은 요청은 입력되지 않음 - ※ 향후, 전제 조건이 변경되어 관련 에러가 발생하더라도 오류 메시지가 명확하니 그때 patch하면 될 것 같습니다.
@powerkimhub
- 브랜치명을 더 직관적인 이름으로 바꾸고 pr 을 올리려다
- 브랜치가 삭제되어 자동 close 가 되어 브랜치 restore 후 PR reopen 했습니다.
- 말씀주신 방안으로 수정하고 추후 변경이나 이슈에 대응해서
- patch 하는 방식으로 진행하도록 하겠습니다.
@hippo-an
- 말씀주신 방안으로 수정하고 추후 변경이나 이슈에 대응해서
- patch 하는 방식으로 진행하도록 하겠습니다. <=======
- 현재 코드 변경 사항을 봤을 때,
- 최종 방법으로 patch하신 것으로 보이는데 맞지요?
- 아니면, 좀더 작업을 진행하시려는 지요?
- 헷갈리게 말씀을 드렸네요.
- 최종 논의 방식으로 patch 작업했습니다. (0dd40d1f1de7c096a7128cc4d40e4e5034561952)
@hippo-an
- 넵, 캄사합니다.