Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[GCP] How can a user lookup a vm image which is not in the image list #1184

Open
seokho-son opened this issue May 2, 2024 · 8 comments
Open
Assignees
Labels
question Further information is requested

Comments

@seokho-son
Copy link
Member

GCP에서 하기 딥러닝 관련 이미지를 활용하고 싶은데,
현재는 CB-SP를 통한 이미지 정보 조회에서 오류가 발생합니다.

  • 이미지ID: c1-deeplearning-tf-2-15-cu121-v20240417-debian-11
  • Description: Google, Deep Learning VM for TensorFlow 2.15 with CUDA 12.1, M120, Debian 11, Python 3.10, with TensorFlow 2.15 for CUDA 12.1 with Intel MKL-DNN preinstalled.
  • Location: asia (Asia Pacific), eu (European Union), us (United States)
  • Labels: capability... : truepublic-image : true
  • Tags : Insufficient permission to list tags.
  • Creation time: Apr 23, 2024, 1:21:06 PM UTC+09:00
  • Family: tf-2-15-gpu-debian-11
  • Encryption type: Google-managed

이미지 조회시 오류: cp-asia-northeast2[Error from: http://localhost:1024/spider/vmimage/c1-deeplearning-tf-2-15-cu121-v20240417-debian-11] Status code: 500 Internal Server Error, Message: {"message":"ProjectId information not found in URL."}
ProjectId information not found in URL.

해당 이미지는 CB-SP에서 리턴하는 GCP 이미지 리스트(8921개 중)에도 포함되어 있지 않습니다.
이 리스트에는 특정 패턴의 이미지만 포함되어 있는 것 같긴하네요. (이미지 아이디 패턴: https://www.googleapis.com/compute/v1/projects/windows-sql-cloud/global/images/sql-server-2014-standard-windows-server-2012-r2-dc-v20160520)

아마도, GCP 드라이버의 경우, 특정 패턴의 이미지 명칭만 수용하는 것으로 보이는데,
처리 방안을 문의 드립니다.

(참고: https://cloud.google.com/deep-learning-vm/docs/images?hl=ko)

@seokho-son seokho-son added the question Further information is requested label May 2, 2024
@seokho-son
Copy link
Member Author

GCP 콘솔에서는 해당 이미지를 활용한 VM 구동을 확인하였습니다.

@powerkimhub
Copy link
Member

@MZC-CSC @CliffSynn @hippo-an (cc: @seokho-son )


[Image 목록 관련]



[제안]

  • (1) 가급적 Image Project List를 API로 획득
  • (2) 부득이 Driver 내 List 유지시 목록 업데이트

@powerkimhub
Copy link
Member

@seokho-son


  • 해당 이미지는 Spider 현재 Image List로는 제공되고 있지 않지만(patch 예정),
  • 다음 조건에서 VM 생성은 가능합니다.
    • Server: 75f73c0 적용된 버전
    • Driver: #1185 이슈 해결 전까지는 VM의 Security Group 정보에 deeplearning-vm이 잘못 포함되어 제공
    • 세부 내용 아래 참고

[Image Name 형식]

  • GetImage 호출 시 Spider가 Image List로 제공하는 url 형식의 name을 사용해야 합니다.
    • image

  • 해당 이미지 정보 호출 예시

    curl -sX GET http://localhost:1024/spider/vmimage/https://www.googleapis.com/compute/v1/projects/deeplearning-platform-release/global/images/tf-2-15-cu121-v20240417-debian-11 -H 'Content-Type: application/json' -d '{"ConnectionName": "gcp-iowa-config"}' |json_pp
    
    {
       "GuestOS" : "tf-2-15-cu121-debian-11",
       "IId" : {
          "NameId" : "https://www.googleapis.com/compute/v1/projects/deeplearning-platform-release/global/images/tf-2-15-cu121-v20240417-debian-11",
          "SystemId" : "https://www.googleapis.com/compute/v1/projects/deeplearning-platform-release/global/images/tf-2-15-cu121-v20240417-debian-11"
       },
       "KeyValueList" : [
          {
             "Key" : "Name",
             "Value" : "tf-2-15-cu121-v20240417-debian-11"
          },
          {
             "Key" : "SourceImage",
             "Value" : ""
          },
          {
             "Key" : "SourceType",
             "Value" : "RAW"
          },
          {
             "Key" : "SelfLink",
             "Value" : "https://www.googleapis.com/compute/v1/projects/deeplearning-platform-release/global/images/tf-2-15-cu121-v20240417-debian-11"
          },
          {
             "Key" : "Family",
             "Value" : "tf-2-15-cu121-debian-11"
          },
          {
             "Key" : "DiskSizeGb",
             "Value" : "50"
          }
       ],
       "Status" : "READY"
    }
    

  • 해당 이미지로 VM 생성 예시

  curl -sX POST http://localhost:1024/spider/vm -H 'Content-Type: application/json' -d '{
    "ConnectionName": "gcp-iowa-config",
    "ReqInfo": {
      "Name": "deeplearning-vm-test",
      "ImageType": "PublicImage",
      "ImageName": "https://www.googleapis.com/compute/v1/projects/deeplearning-platform-release/global/images/tf-2-15-cu121-v20240417-debian-11",
      "VMSpecName": "a2-highgpu-1g",
      "VPCName": "vpc-01",
      "SubnetName": "subnet-01",
      "SecurityGroupNames": ["sg-01"],
      "RootDiskType": "default",
      "DataDiskNames": [],
      "KeyPairName": "keypair-01",
      "VMUserId": "Administrator",
      "VMUserPasswd": "cloudbarista123^"
    }
  }'

@seokho-son
Copy link
Member Author

@powerkimhub 확인 감사합니다.

https://www.googleapis.com/compute/v1/projects/deeplearning-platform-release/global/images/tf-2-15-cu121-v20240417-debian-11

https://www.googleapis.com/compute/v1/projects/deeplearning-platform-release/global/images/ 는 임의로 찾아서 붙여넣기 하면 되는 상황일까요? (tf-2-15-cu121-v20240417-debian-11 이미지 말고도 테스트해봐야 할 이미지가 더 있습니다.)

@powerkimhub
Copy link
Member

  • 넵, 아마도 될거라 생각합니다.

@hippo-an
Copy link
Contributor

hippo-an commented May 8, 2024

안녕하세요. @powerkimhub

말씀하신 내용과 관련하여 image list 를 조회하기 위한 api 를 호출시 사용되는 image project id list 를 조회할 수 있는 api 를 찾아보았지만 찾지 못하였습니다.
지원하는 모든 image project id list 를 확인할 수 있는 문서도 찾지 못했습니다.
일단 Google Cloud Support 에 문의를 남겨두었습니다.

문의에 대한 답변이 오면 답변 남겨드리도록 하겠습니다.


드라이버 내 image project id list 를 업데이트를 하는 방식에 대해서 조사한 내용에 대해 공유드리겠습니다.

image project id 리스트업을 위한 레퍼런스는 다음과 같습니다.

  gcloud compute images list

다음 단계를 따라서 image project id 리스트를 추출했습니다.

  1. 각 레퍼런스에서 추출 가능한 image project id 를 리스트업
  2. 중복 제거 및 모든 리스트를 순회하여 gcloud command 호출
  3. 지원하지 않거나 에러를 발생하는 image project id 를 제거

참고로 호출한 gcloud command 는 다음과 같습니다.

    gcloud compute images list --project "${item}" --no-standard-images

추출된 image project id list 는 다음과 같습니다.

## 기존 spider list 에 존재하는 목록
gce-uefi-images

centos-cloud
cos-cloud
coreos-cloud
debian-cloud
rhel-cloud
rhel-sap-cloud
suse-cloud
suse-sap-cloud
ubuntu-os-cloud
windows-cloud
windows-sql-cloud

## 추가 가능한 항목
almalinux-cloud
cloud-hpc-image-public
deeplearning-platform-release
fedora-cloud
fedora-coreos-cloud
freebsd-org-cloud-dev
ml-images
opensuse-cloud
rocky-linux-cloud
ubuntu-os-pro-cloud
suse-byos-cloud

  • sdk를 이용한 호출이 아닌 gcloud command 를 이용해 호출하였기 때문에 코드 작업시 추가적인 테스트는 필요해보입니다.

@powerkimhub
Copy link
Member

@hippo-an

  • 분석 및 현황 공유 감사드립니다.
  • 일단, Image List에 추가 가능한 항목 반영 부탁 드립니다.
  • 관련하여, 다음 3가지 API 점검 부탁 드립니다.
      ListImage() ([]*ImageInfo, error)
      GetImage(imageIID IID) (ImageInfo, error)
      CheckWindowsImage(imageIID IID) (bool, error)
    
  • 추가로, driver image list code 관련 부분에 현재 issue 링크 남겨 주시기 바랍니다.

@hippo-an
Copy link
Contributor

@powerkimhub
안녕하세요. 로컬에서 해당 리스트 반영 및 api 점검 결과 입니다.

참고 - image 조회에서 사용되는 project id 란 Public Image 가 속한 Image Family 의 개념입니다.

ListImage() ([]*ImageInfo, error)

  • GCP ImageHandler 에 project id 에 추가 가능한 항목을 반영한 후
  • ImageList 조회 호출 시 문제 없이 호출이 가능합니다.
  • 다만 deeplearning-platform-release 만 조회한 응답 결과는 zone: us-central1-a 기준 2만건이 넘으며
  • 해당 project id (deeplearning-platform-release) 를 제외하고 조회한 결과는 약 16000 건으로
  • 다른 모든 이미지 응답 결과의 수보다 더 많은 이미지를 조회합니다.
  • 따라서 ImageList 조회 성능이 상당히 느려지며 (로컬 환경에서 api 요청부터 응답까지 160~180초 내외로 소요되며 렌더링까지 약 300초)
  • adminweb 에서 렌더링 이후 사용이 거의 불가능합니다.

GetImage(imageIID IID) (ImageInfo, error), CheckWindowsImage(imageIID IID) (bool, error)

  • GCP ImageHandler 에서 ImageList 를 조회 시
  • ImageInfo 라는 struct 의 ImageIID 에 속한 NameId 와 SystemId 를 응답값의 image selflink 로 설정하게 됩니다.
"ImageIId": {
    "NameId": "https://www.googleapis.com/compute/v1/projects/ubuntu-os-cloud/global/images/ubuntu-minimal-1804-bionic-v20191024",
    "SystemId": "https://www.googleapis.com/compute/v1/projects/ubuntu-os-cloud/global/images/ubuntu-minimal-1804-bionic-v20191024"
  },
  • selflink 에 포함된 project id (url 경로의 /projects 다음 인덱스로 위 예시의 경우 ubuntu-os-cloud입니다.) 와 image name (예시의 경우 ubuntu-minimal-1804-bionic-v20191024) 은
  • GCP 의 이미지 단건 조회 시 반드시 필요한 값입니다.
  • 적절한 format 으로 image IID 를 채우는 경우
  • 오류 없이 이미지 정보 조회가 가능합니다.

  • 추가적으로 GCP ImageHandler 내부의 두 메서드
  • FindImageInfoByNameFindImageInfo 에서도 Image project id list 를 사용하지만,
  • 실제로는 해당 함수를 사용하는 곳은 테스트 코드에서만 사용하거나, 참조가 없는 것으로 확인했습니다.

리스트 추가는 바로 반영 가능하나, 사용 측면에서 고려가 필요해 보입니다.

@powerkimhub powerkimhub pinned this issue Jun 18, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
question Further information is requested
Projects
None yet
Development

No branches or pull requests

5 participants