cb-spider icon indicating copy to clipboard operation
cb-spider copied to clipboard

[GCP:GPU] Fix to Provision VMs with GPU Accelerators

Open hippo-an opened this issue 10 months ago • 4 comments

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 에서
    1. machine type: e2-standard-2
    2. machine type: g2-standard-4 -> GPU 머신 유형
  • 상기 2개의 머신 타입으로 프로비저닝 -> 기대 동작대로 작동 확인

[참고사항]

  • 인스턴스 유지 보수 중 라이브 마이그레이션 제한 사항의 경우 GPU 가 연결된 vm 뿐만 아니라,
  • 다른 조건의 vm 도 포함되는 것으로 보입니다. (링크)

hippo-an avatar Apr 15 '24 07:04 hippo-an

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 생성 실패")

github-actions[bot] avatar Apr 15 '24 07:04 github-actions[bot]

  • 패치 캄사합니다.
  • 아래 공유 해주신 타입들 또한 동일 오류 메시지를 포함할 터이니(추측)
  • GPU type과 동일하게 예외 처리 되겠지요?
  • 다만, 에러 메시지를 좀더 일반화할 필요는 있어 보입니다.(위 comment 참고 부탁 드립니다)

다른 조건의 vm 도 포함되는 것으로 보입니다. (링크)

powerkimhub avatar Apr 15 '24 08:04 powerkimhub

@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 avatar Apr 15 '24 10:04 hippo-an

@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, ...

powerkimhub avatar Apr 15 '24 12:04 powerkimhub

  • 답변이 늦었습니다.
  • 관련 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 avatar Apr 22 '24 02:04 hippo-an

@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
  • 가정
    • 향후, GCP 에러 메시지 변경시 에러 발생이 가능함
    • Spider를 통해서는 n1 + gpu 추가 설정, Spot VM 등과 같은 요청은 입력되지 않음
    • ※ 향후, 전제 조건이 변경되어 관련 에러가 발생하더라도 오류 메시지가 명확하니 그때 patch하면 될 것 같습니다.

powerkimhub avatar Apr 22 '24 05:04 powerkimhub

@powerkimhub

  • 브랜치명을 더 직관적인 이름으로 바꾸고 pr 을 올리려다
  • 브랜치가 삭제되어 자동 close 가 되어 브랜치 restore 후 PR reopen 했습니다.

  • 말씀주신 방안으로 수정하고 추후 변경이나 이슈에 대응해서
  • patch 하는 방식으로 진행하도록 하겠습니다.

hippo-an avatar Apr 23 '24 00:04 hippo-an

@hippo-an

  • 말씀주신 방안으로 수정하고 추후 변경이나 이슈에 대응해서
  • patch 하는 방식으로 진행하도록 하겠습니다. <=======

  • 현재 코드 변경 사항을 봤을 때,
  • 최종 방법으로 patch하신 것으로 보이는데 맞지요?
  • 아니면, 좀더 작업을 진행하시려는 지요?

powerkimhub avatar Apr 23 '24 02:04 powerkimhub

  • 헷갈리게 말씀을 드렸네요.
  • 최종 논의 방식으로 patch 작업했습니다. (0dd40d1f1de7c096a7128cc4d40e4e5034561952)

hippo-an avatar Apr 23 '24 02:04 hippo-an

@hippo-an

  • 넵, 캄사합니다.

powerkimhub avatar Apr 23 '24 02:04 powerkimhub