커스텀 학습에 비공개 IP 사용

비공개 IP를 사용하여 학습 작업에 연결하면 공개 IP를 사용할 때보다 네트워크 보안이 향상되고 네트워크 지연 시간이 줄어듭니다. 비공개 IP를 사용하려면 Virtual Private Cloud(VPC)를 사용하여 모든 유형의 Vertex AI 커스텀 학습 작업과 네트워크를 피어링합니다. 이렇게 하면 학습 코드가 Google Cloud 또는 온프레미스 네트워크 내의 비공개 IP 주소에 액세스할 수 있습니다.

이 가이드에서는 이미 .VPC 네트워크 피어링을 설정한 후에 Vertex AI CustomJob, HyperparameterTuningJob 또는 커스텀 TrainingPipeline과 네트워크를 피어링하도록 네트워크에서 커스텀 학습 작업을 실행하는 방법을 보여줍니다.

TPU VM도 사용하는 경우 커스텀 학습에 비공개 IP 주소를 사용할 수 없습니다.

개요

비공개 IP를 사용하여 커스텀 학습 작업을 제출하기 전에 네트워크 및 Vertex AI 간에 피어링 연결을 만들도록 비공개 서비스 액세스를 구성해야 합니다. 이미 설정한 경우 기존 피어링 연결을 사용할 수 있습니다.

이 가이드에서는 다음 작업을 설명합니다.

  • 커스텀 학습을 위해 예약할 IP 범위를 파악합니다.
  • 기존 피어링 연결 상태를 확인합니다.
  • 네트워크에서 Vertex AI 커스텀 학습을 수행합니다.
  • 다른 네트워크에서 학습하기 전에 네트워크에서 진행 중인 능동적 학습이 있는지 확인합니다.
  • 학습 코드가 네트워크의 비공개 IP에 액세스할 수 있는지 테스트합니다.

커스텀 학습을 위한 IP 범위 예약

서비스 제작자를 위해 예약한 IP 범위는 Vertex AI 및 기타 서비스에서 사용할 수 있습니다. 이 테이블은 Vertex AI에서 거의 독점적으로 사용된다는 가정하에 /16에서 /19까지 예약된 범위로 실행할 수 있는 최대 동시 학습 작업 수를 보여줍니다. 동일한 범위를 사용하여 다른 서비스 제작자에 연결하는 경우 IP 소진을 방지하기 위해 더 큰 범위를 할당하세요.

학습 작업의 머신 구성 예약된 범위 최대 동시 작업 수
최대 8개의 노드
예: 첫 번째 작업자 풀의 기본 복제본 1개, 두 번째 작업자 풀의 복제본 6개, 세 번째 작업자 풀의 작업자 1개(매개변수 서버 역할을 함)
/16 63
/17 31
/18 15
/19 7
최대 16개의 노드
예: 첫 번째 작업자 풀의 기본 복제본 1개, 두 번째 작업자 풀의 복제본 14개, 세 번째 작업자 풀의 작업자 1개(매개변수 서버 역할을 함)
/16 31
/17 15
/18 7
/19 3
최대 32개의 노드
예: 첫 번째 작업자 풀의 기본 복제본 1개, 두 번째 작업자 풀의 복제본 30개, 세 번째 작업자 풀의 작업자 1개(매개변수 서버 역할을 함)
/16 15
/17 7
/18 3
/19 1

분산 학습용 작업자 풀 구성에 대해 자세히 알아보세요.

기존 피어링 연결 상태를 확인합니다.

Vertex AI와 함께 사용하는 기존 피어링 연결이 있는 경우 이러한 연결을 나열하여 상태를 확인할 수 있습니다.

gcloud compute networks peerings list --network NETWORK_NAME

피어링 연결 상태가 ACTIVE인지 확인합니다. 활성 피어링 연결에 대해 자세히 알아보세요.

커스텀 학습 수행

커스텀 학습을 수행할 때 Vertex AI가 액세스할 수 있도록 하려는 네트워크의 이름을 지정해야 합니다.

커스텀 학습을 수행하는 방법에 따라 다음 API 필드 중 하나의 네트워크를 지정합니다.

네트워크 이름을 지정하지 않으면 Vertex AI가 피어링 연결 없이 그리고 프로젝트의 비공개 IP에 대한 액세스 없이 커스텀 학습을 실행합니다.

예시: gcloud CLI를 사용하여 CustomJob 만들기

다음 예시에서는 gcloud CLI를 사용해 사전 빌드된 컨테이너를 사용하는 CustomJob을 실행할 때 네트워크를 지정하는 방법을 보여줍니다. 다른 방식으로 커스텀 학습을 수행하는 경우 사용 중인 커스텀 학습 작업의 유형에 설명된 대로 network 필드를 추가합니다.

  1. 네트워크를 지정할 config.yaml 파일을 만듭니다. 공유 VPC를 사용하는 경우 VPC 호스트 프로젝트 번호를 사용합니다.

    네트워크 이름의 형식이 올바른지 확인합니다.

    PROJECT_NUMBER=$(gcloud projects describe $PROJECT_ID --format="value(projectNumber)")
    
    cat <<EOF > config.yaml
    network: projects/PROJECT_NUMBER/global/networks/NETWORK_NAME
    EOF
    
  2. Vertex AI에서 실행할 학습 애플리케이션을 만듭니다.

  3. CustomJob을 만들어 config.yaml 파일로 전달합니다.

    gcloud ai custom-jobs create \
      --region=LOCATION \
      --display-name=JOB_NAME \
      --python-package-uris=PYTHON_PACKAGE_URIS \
      --worker-pool-spec=machine-type=MACHINE_TYPE,replica-count=REPLICA_COUNT,executor-image-uri=PYTHON_PACKAGE_EXECUTOR_IMAGE_URI,python-module=PYTHON_MODULE \
      --config=config.yaml
    

이 명령어의 자리표시자를 바꾸는 방법을 알아보려면 커스텀 학습 작업 만들기를 참조하세요.

다른 네트워크에서 작업 실행

다른 네트워크에서 커스텀 학습을 수행하는 동안에는 새 네트워크에서 커스텀 학습을 수행할 수 없습니다. 다른 네트워크로 전환하려면 먼저 제출된 모든 CustomJob, HyperparameterTuningJob, 커스텀 TrainingPipeline 리소스가 완료될 때까지 기다리거나 리소스를 취소해야 합니다.

학습 작업 액세스 테스트

이 섹션에서는 커스텀 학습 리소스가 네트워크의 비공개 IP에 액세스할 수 있는지 테스트하는 방법을 설명합니다.

  1. VPC 네트워크에 Compute Engine 인스턴스를 만듭니다.
  2. 방화벽 규칙을 검사하여 Vertex AI 네트워크에서의 인그레스를 제한하지 않는지 확인합니다. 제한한다면 Vertex AI 네트워크가 Vertex AI(및 기타 서비스 제작자)를 위해 예약한 IP 범위에 액세스할 수 있도록 하는 규칙을 추가합니다.
  3. Vertex AI CustomJob이 액세스할 엔드포인트를 만들려면 VM 인스턴스에 로컬 서버를 설정합니다.
  4. Vertex AI에서 실행할 Python 학습 애플리케이션을 만듭니다. 모델 학습 코드 대신 이전 단계에서 설정한 엔드포인트에 액세스하는 코드를 만듭니다.
  5. 이전 예시를 따라 CustomJob을 만듭니다.

일반적인 문제

이 섹션에는 Vertex AI를 사용하여 VPC 네트워크 피어링을 구성할 때 발생하는 일반적인 문제가 나와 있습니다.

  • 네트워크를 사용하도록 Vertex AI를 구성할 때 전체 네트워크 이름을 지정합니다.

    'projects/YOUR_PROJECT_NUMBER/global/networks/YOUR_NETWORK_NAME'

  • 다른 네트워크에서 커스텀 학습을 수행하기 전에 네트워크에서 실행 중인 커스텀 학습이 없는지 확인합니다.

  • Vertex AI를 포함하여 네트워크가 연결되는 모든 서비스 제작자에게 충분한 IP 범위를 할당했는지 확인합니다.

추가 문제 해결 정보는 VPC 네트워크 피어링 문제 해결 가이드를 참조하세요.

다음 단계