학습에 VPC 네트워크 피어링 사용

Virtual Private Cloud(VPC)와 피어링하도록 AI Platform Training 작업을 구성할 수 있습니다. 이렇게 하면 학습 작업이 Google Cloud 또는 온프레미스 네트워크 내의 비공개 IP 주소에 액세스할 수 있습니다. 비공개 IP를 사용하여 학습 작업에 연결하면 공개 IP를 사용할 때보다 네트워크 보안이 향상되고 네트워크 지연 시간이 줄어듭니다.

이 가이드에서는 VPC 네트워크 피어링을 사용하여 AI Platform Training 작업과 네트워크를 피어링하도록 AI Platform Training에 비공개 IP를 구성하는 방법을 설명합니다. 이 가이드는 이미 Google Cloud 네트워킹 개념에 익숙한 네트워킹 관리자에게 권장됩니다.

개요

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

  • VPC의 비공개 서비스 액세스를 구성합니다. 이렇게 하면 VPC와 Google의 공유 VPC 네트워크 간에 피어링 연결이 설정됩니다.
  • AI Platform Training을 위해 예약해야 하는 IP 범위를 고려하세요.
  • 해당되는 경우 AI Platform Training이 가져올 수 있도록 커스텀 경로를 내보냅니다.
  • 피어링 연결 상태를 확인합니다.
  • 네트워크에 학습 작업을 제출합니다.
  • 네트워크에 작업을 제출하기 전에 다른 네트워크에 활성 학습 작업이 있는지 확인하세요.
  • 학습 작업이 네트워크의 비공개 IP에 액세스할 수 있는지 테스트합니다.

시작하기 전에

  • AI Platform Training 작업과 피어링할 VPC를 선택합니다.
  • AI Platform Training으로 학습 작업을 실행할 Google Cloud 프로젝트를 선택하거나 만듭니다.
  • Google Cloud 프로젝트에 결제가 사용 설정되어 있는지 확인합니다.

  • Enable the Compute Engine API, AI Platform Training & Prediction, and the Service Networking APIs.

    Enable the APIs

  • 필요한 경우 공유 VPC를 사용할 수 있습니다. 공유 VPC를 사용하는 경우 일반적으로 VPC 호스트 프로젝트와 별도의 Google Cloud 프로젝트에서 학습 작업을 실행합니다. 두 프로젝트 모두에서 Compute Engine API와 Service Networking API를 사용 설정합니다. 공유 VPC 프로비저닝 방법을 알아보세요.
  • 이 가이드의 gcloud 명령줄 예시를 실행하려면 gcloud CLI를 설치합니다.

권한

프로젝트 소유자나 편집자가 아닌 경우 네트워킹 리소스를 관리하는 데 필요한 권한이 포함된 Compute 네트워크 관리자 역할이 있어야 합니다.

AI Platform Training에서 작업을 실행하려면 AI Platform Training 관리자 또는 AI Platform Training 개발자 역할에 포함된 권한이 필요합니다. AI Platform Training IAM 역할에 대해 자세히 알아보세요.

온프레미스 네트워크와 피어링

온프레미스 네트워크와의 VPC 네트워크 피어링의 경우 추가 단계가 있습니다.

  1. 온프레미스 네트워크를 VPC에 연결합니다. VPN 터널 또는 상호 연결을 사용할 수 있습니다.
  2. VPC에서 온프레미스 네트워크까지 커스텀 경로를 설정합니다.
  3. AI Platform Training이 가져올 수 있도록 커스텀 경로를 내보냅니다.

VPC의 비공개 서비스 액세스 설정

비공개 서비스 액세스를 설정하면 네트워크와 Google 또는 타사 서비스(서비스 제작자) 소유 네트워크 간에 비공개 연결이 설정됩니다. 이 경우 AI Platform Training이 서비스 제작자입니다. 비공개 서비스 액세스를 설정하려면 서비스 제작자를 위한 IP 범위를 예약한 다음 AI Platform Training과의 피어링 연결을 만듭니다.

이미 비공개 서비스 액세스가 구성된 VPC가 있고 이 VPC를 사용하여 학습 작업과 피어링하려면 커스텀 경로 내보내기로 이동합니다.

  1. 프로젝트 ID, 리전 이름, 예약된 범위 이름, 네트워크 이름의 환경 변수를 설정합니다.
    • 공유 VPC를 사용하는 경우 VPC 호스트 프로젝트의 프로젝트 ID를 사용합니다. 그렇지 않으면 학습 작업을 실행하는 데 사용하는 Google Cloud 프로젝트의 프로젝트 ID를 사용합니다.
    • AI Platform Training에 사용할 적격 리전을 선택합니다.
  2. 필요한 API를 사용 설정합니다. 공유 VPC를 사용하는 경우 학습 작업을 실행하는 데 사용하는 VPC 호스트 프로젝트와 Google Cloud 프로젝트에서 API를 사용 설정해야 합니다.
  3. gcloud compute addresses create를 사용하여 예약된 범위를 설정합니다.
  4. gcloud services vpc-peerings connect를 사용하여 VPC 호스트 프로젝트와 Google 서비스 네트워킹 간의 피어링 연결을 설정합니다.

    PROJECT_ID=YOUR_PROJECT_ID
    gcloud config set project $PROJECT_ID
    
    REGION=YOUR_REGION
    
    # This is for display only; you can name the range anything.
    PEERING_RANGE_NAME=google-reserved-range
    
    NETWORK=YOUR_NETWORK_NAME
    
    # NOTE: `prefix-length=16` means a CIDR block with mask /16 will be
    # reserved for use by Google services, such as AI Platform Training.
    gcloud compute addresses create $PEERING_RANGE_NAME \
      --global \
      --prefix-length=16 \
      --description="peering range for Google service" \
      --network=$NETWORK \
      --purpose=VPC_PEERING
    
    # Create the VPC connection.
    gcloud services vpc-peerings connect \
      --service=servicenetworking.googleapis.com \
      --network=$NETWORK \
      --ranges=$PEERING_RANGE_NAME \
      --project=$PROJECT_ID
    

비공개 서비스 액세스에 대해 자세히 알아보세요.

AI Platform Training을 위한 IP 범위 예약

서비스 제작자를 위해 예약한 IP 범위는 AI Platform Training 및 기타 서비스에서 사용할 수 있습니다. 따라서 다른 서비스를 예약된 동일한 범위에 연결하려면 IP 소진을 방지할 수 있는 충분한 범위여야 합니다.

각 학습 작업에서 사용하는 주소 수를 다음과 같이 보수적으로 예측할 수 있습니다.

nextPow2(32 * NUMBER_OF_POOLS * max(POOL_SIZE))

다음 표에서는 AI Platform Training에서 거의 독점적으로 사용한다는 가정하에 /16에서 /19까지 예약된 범위로 실행할 수 있는 최대 동시 학습 작업 수를 보여줍니다.

학습 작업의 머신 구성 예약된 범위 최대 동시 작업 수
최대 8개의 노드
예: 작업자 6개, 마스터 1개, 매개변수 서버 1개
/16 63
/17 31
/18 15
/19 7
최대 16개의 노드
예: 작업자 14개, 마스터 1개, 매개변수 서버 1개
/16 31
/17 15
/18 7
/19 3
최대 32개의 노드
예: 작업자 30개, 마스터 1개, 매개변수 서버 1개
/16 15
/17 7
/18 3
/19 1

학습 작업의 머신 유형 지정에 대해 자세히 알아보세요.

커스텀 경로 내보내기

커스텀 경로를 사용하는 경우 AI Platform Training이 가져올 수 있도록 내보내야 합니다. 커스텀 경로를 사용하지 않는 경우 학습 작업 제출로 넘어갑니다.

커스텀 경로를 내보내려면 VPC에서 피어링 연결을 업데이트합니다. 커스텀 경로를 내보내면 온프레미스 네트워크 경로 등 VPC 네트워크에 있는 모든 적격 정적 및 동적 경로가 서비스 제작자 네트워크(이 경우 AI Platform Training)로 전송됩니다. 이렇게 하면 필요한 연결이 설정되고 학습 작업이 온프레미스 네트워크로 트래픽을 다시 보낼 수 있습니다.

온프레미스 네트워크와의 비공개 연결에 대해 자세히 알아보세요.

콘솔

  1. Google Cloud 콘솔에서 VPC 네트워크 피어링 페이지로 이동합니다.
    VPC 네트워크 피어링 페이지로 이동
  2. 업데이트할 피어링 연결을 선택합니다.
  3. 수정을 클릭합니다.
  4. 커스텀 경로 내보내기를 선택합니다.

gcloud

  1. 업데이트할 피어링 연결의 이름을 찾습니다. 여러 피어링 연결이 있는 경우 --format 플래그를 생략합니다.

    gcloud services vpc-peerings list \
      --network=$NETWORK \
      --service=servicenetworking.googleapis.com \
      --project=$PROJECT_ID \
      --format "value(peering)"
    
  2. 커스텀 경로를 내보내도록 피어링 연결을 업데이트합니다.

    gcloud compute networks peerings update PEERING-NAME \
        --network=$NETWORK \
        --export-custom-routes \
        --project=$PROJECT_ID
    

피어링 연결 상태 확인

피어링 연결이 활성 상태인지 확인하려면 다음 명령어를 사용하여 피어링 연결을 나열할 수 있습니다.

gcloud compute networks peerings list --network $NETWORK

방금 만든 피어링의 상태가 ACTIVE로 표시되어야 합니다. 활성 피어링 연결에 대해 자세히 알아보세요.

학습 작업 제출

학습 작업을 제출할 때 AI Platform Training이 액세스할 네트워크의 이름을 지정해야 합니다.

네트워크 이름 없이 학습 작업을 제출하면 학습 작업은 기본적으로 피어링 연결 없이 프로젝트의 비공개 IP에 액세스하지 않고 실행됩니다.

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

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

    PROJECT_NUMBER=$(gcloud projects describe $PROJECT_ID --format="value(projectNumber)")
    cat << EOF > config.yaml
    trainingInput:
      scaleTier: BASIC
      network: projects/$PROJECT_NUMBER/global/networks/$NETWORK
    EOF
    
  2. AI Platform Training에 제출할 학습 애플리케이션을 만듭니다.

  3. 학습 작업에 다른 매개변수를 지정합니다. 학습 작업을 제출하는 데 필요한 매개변수에 대해 자세히 알아보세요.

    TRAINER_PACKAGE_PATH="PATH_TO_YOUR_TRAINING_APPLICATION"
    now=$(date +"%Y%m%d_%H%M%S")
    JOB_NAME="YOUR_JOB_NAME_$now"
    MAIN_TRAINER_MODULE="trainer.task"
    JOB_DIR="gs://PATH_TO_OUTPUT_DIRECTORY"
    REGION="us-east1"
    RUNTIME_VERSION="2.11"
    PYTHON_VERSION="3.7"
    
  4. 작업을 제출하고 config.yaml 파일을 전달합니다.

    gcloud ai-platform jobs submit training $JOB_NAME \
      --module-name $MAIN_TRAINER_MODULE \
      --job-dir $JOB_DIR \
      --region $REGION \
      --runtime-version $RUNTIME_VERSION \
      --python-version $PYTHON_VERSION \
      --package-path $TRAINER_PACKAGE_PATH \
      --config config.yaml
    

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

다른 네트워크에 활성 학습 작업이 아직 있는 동안에는 새 네트워크에 학습 작업을 제출할 수 없습니다. 다른 네트워크로 전환하려면 먼저 제출된 모든 학습 작업이 완료될 때까지 기다리거나 작업을 취소해야 합니다. 예를 들어 테스트를 위해 네트워크를 설정하고 이 테스트 네트워크에 학습 작업을 제출한 경우 프로덕션을 위한 다른 네트워크에 학습 작업을 제출하려면 먼저 테스트 네트워크에서 활성 작업을 검색해 완료 또는 취소되었는지 확인해야 합니다.

네트워크에서 아직 활성 상태인 학습 작업을 나열합니다.

PROJECT_NUMBER=$(gcloud projects describe $PROJECT_ID --format="value(projectNumber)")
NETWORK_FULL_NAME="projects/$PROJECT_NUMBER/global/networks/$NETWORK"

gcloud ai-platform jobs list \
  --filter "(state=queued OR state=running) AND (trainingInput.network=$NETWORK_FULL_NAME)"

다음과 비슷한 출력이 표시될 수 있습니다.

JOB_ID                                             STATUS     CREATED
job_20200502_151443                                QUEUED     2020-05-02T15:14:47

나열된 작업이 있다면 작업이 완료될 때까지 기다리거나 gcloud ai-platform jobs cancel을 사용하여 각 작업을 취소할 수 있습니다.

학습 작업 액세스 테스트

학습 작업이 네트워크의 엔드포인트에 액세스할 수 있는지 테스트하려면 네트워크에 엔드포인트를 설정한 후 여기에 액세스하는 학습 작업을 제출해야 합니다. 자세한 내용은 피어링 연결 테스트 가이드를 참조하세요.

문제 해결하기

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

  • 학습 작업을 제출할 때는 전체 네트워크 이름을 사용하세요.

    'projects/YOUR_PROJECT_NUMBER/global/networks/YOUR_NETWORK_NAME'

  • 네트워크와 피어링된 학습 작업에서 TPU를 사용하지 마세요. TPU는 AI Platform Training의 VPC 네트워크 피어링에서 지원되지 않습니다.

  • 네트워크에 학습 작업을 제출하기 전에 다른 네트워크에 활성 학습 작업이 없는지 확인하세요.

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

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

다음 단계