학습 개요

AI Platform Training을 사용하여 클라우드에서 TensorFlow, scikit-learn, XGBoost 학습 애플리케이션을 실행할 수 있습니다. AI Platform Training은 런타임 버전에서 호스팅된 프레임워크를 사용하여 머신러닝 모델을 학습시키는 데 필요한 종속 항목을 제공합니다. 또한 커스텀 컨테이너를 사용하여 다른 머신러닝 프레임워크에서 학습 작업을 실행할 수 있습니다. 이 페이지에서는 AI Platform Training의 주요 개념을 설명합니다. 학습 프로세스를 바로 시작하려면 학습 작업을 시작하는 방법을 참조하세요.

학습 방식

AI Platform Training은 클라우드의 컴퓨팅 리소스에서 학습 작업을 실행합니다. 학습 애플리케이션을 작성하지 않고도 데이터세트를 대상으로 기본 제공 알고리즘(베타)을 학습시킬 수 있습니다. 기본 제공 알고리즘이 사용 사례에 맞지 않으면 AI Platform Training에서 실행할 학습 애플리케이션을 만들 수 있습니다.

학습 애플리케이션을 사용하는 개략적인 절차는 다음과 같습니다.

  1. Python 애플리케이션을 만들어 모델을 학습시키고 개발 환경에서 로컬로 실행하는 것처럼 빌드할 수 있습니다.
  2. AI Platform Training에서 액세스할 수 있는 소스에 학습 및 확인 데이터를 가져옵니다. 일반적으로는 Cloud Storage, Bigtable 또는 AI Platform Training에서 사용하는 동일한 Google Cloud 프로젝트와 연결된 다른 Google Cloud 스토리지 서비스로 가져오는 것을 의미합니다.
  3. 애플리케이션을 실행할 준비가 되면 프로젝트가 액세스할 수 있는 Cloud Storage 버킷에 패키징하여 전송해야 합니다. Google Cloud CLI를 사용하여 학습 작업을 실행하면 이 프로세스가 자동화됩니다.
  4. AI Platform Training 서비스는 작업에 필요한 리소스를 설정합니다. 작업 구성을 기반으로 가상 머신(학습 인스턴스라고 함)을 하나 이상 할당합니다. 각 학습 인스턴스는 다음과 같은 방식으로 설정됩니다.
    • 작업에서 사용하는 AI Platform Training 버전에 표준 머신 이미지 적용
    • 애플리케이션 패키지를 로드하고 pip로 설치
    • 종속 항목으로 지정하는 추가 패키지 설치
  5. 학습 서비스는 학습 작업 생성 시 지정한 명령줄 인수를 통해 애플리케이션을 실행합니다.
  6. 다음과 같은 방법으로 실행 중인 작업에 대한 정보를 가져올 수 있습니다.
    • Cloud Logging에서
    • 작업 세부정보 요청 또는 gcloud 명령줄 도구를 사용해 로그 스트리밍 실행
    • 학습 서비스에 대해 프로그래매틱 방식으로 상태 요청 실행
  7. 학습 작업이 성공하거나 복구할 수 없는 오류가 발생하는 경우 AI Platform Training은 모든 작업 프로세스를 중지하고 리소스를 삭제합니다.

일반적인 머신러닝 애플리케이션

AI Platform Training 서비스는 애플리케이션에 미치는 영향이 최소화되도록 설계되었습니다. 따라서 개발자가 모델 코드에 집중할 수 있습니다.

대부분의 머신러닝 애플리케이션은 다음 기능을 제공합니다.

  • 학습 데이터와 평가 데이터를 가져올 수 있는 방법을 제공합니다.
  • 데이터 인스턴스를 처리합니다.
  • 평가 데이터를 사용하여 모델의 정확성을 테스트합니다(올바른 값을 예측하는 빈도).
  • (TensorFlow 학습 애플리케이션의 경우) 프로세스에서 일정 간격으로 체크포인트를 출력하여 모델 진행 상황에 대한 스냅샷을 가져오는 방법을 제공합니다.
  • 애플리케이션 종료 시 학습된 모델을 내보내는 방법을 제공합니다.

분산형 학습 구조

AI Platform Training에서 분산형 TensorFlow 작업을 실행하는 경우 학습 클러스터에 여러 머신(노드)을 지정합니다. 학습 서비스는 개발자가 지정한 머신 유형에 리소스를 할당합니다. 제공된 노드에서 실행 중인 작업을 복제본이라 합니다. 분산형 TensorFlow 모델에 따라 학습 클러스터의 각 복제본은 분산 학습에서 단일 역할 또는 작업을 받습니다.

  • 마스터: 정확히 복제본 하나가 마스터 작업자로 지정됩니다. 이 작업은 다른 작업을 관리하고 작업 상태를 전체적으로 보고합니다. 학습 서비스는 작업이 성공하거나 복구할 수 없는 오류가 발생할 때까지 실행됩니다. 분산 학습의 경우, 마스터 복제본 상태는 전체 작업 상태를 나타냅니다.

    단일 프로세스 작업을 실행 중인 경우 유일한 복제본은 작업의 마스터입니다.

  • 작업자: 복제본 한 개 이상을 작업자로 지정할 수 있습니다. 이러한 복제본은 작업 구성에서 지정한 대로 작업의 일부분을 수행합니다.

  • 매개변수 서버: 복제본 한 개 이상을 매개변수 서버로 지정할 수 있습니다. 이러한 복제본은 작업자 간 공유 모델 상태를 조정합니다.

분산형 학습 전략

노드가 여러 개인 모델을 학습시키는 데에는 세 가지의 기본적인 전략이 있습니다.

  • 동기 업데이트를 사용하는 데이터 병렬 학습
  • 비동기 업데이트를 사용하는 데이터 병렬 학습
  • 모델 병렬 학습

데이터 병렬 전략은 모델 구조와 관계없이 사용할 수 있기 때문에 커스텀 모델에 분산 학습 방식을 적용하는 좋은 시작점이 됩니다. 데이터 병렬 학습에서는 모델 전체가 모든 작업자 노드에 공유됩니다. 각 노드는 미니 배치 처리에서와 같은 방식으로 학습 데이터세트의 일부를 사용하여 경사 벡터를 독립적으로 계산합니다. 계산된 경사 벡터는 매개변수 서버 노드로 수집되며, 경사 벡터의 총 합계로 모델 매개변수가 업데이트됩니다. 10,000개의 배치를 10개의 작업자 노드로 분산하면 각 노드는 약 1,000개의 배치를 처리하게 됩니다.

데이터 병렬 학습은 동기 또는 비동기 업데이트를 통해 수행할 수 있습니다. 비동기 업데이트를 사용하는 경우, 다음 그림에 표시된 대로 매개변수 서버는 작업자 노드에서 각 경사 벡터를 수신한 즉시 독립적으로 적용합니다.

비동기 업데이트를 사용하는 데이터 병렬 학습 다이어그램

데이터 병렬 분산형 학습을 수행하는 방법을 알아보려면 TensorFlow의 MultiWorkerMirroredStrategyParameterServerStrategy에 대해 읽어보세요. 그런 다음 AI Platform Training에서 분산형 학습을 구성하는 방법을 알아보세요.

모델 병렬 학습에 대해 자세히 알아보려면 Mesh TensorFlow에 대해 읽어보세요.

애플리케이션 패키징

AI Platform Training에서 학습 애플리케이션을 실행하려면 먼저 애플리케이션과 해당 종속 항목을 패키징해야 합니다. 그런 다음 이 패키지를 Google Cloud 프로젝트에서 액세스할 수 있는 Cloud Storage 버킷에 업로드해야 합니다.

Google Cloud CLI는 대부분의 프로세스를 자동화합니다. 특히 gcloud ai-platform jobs submit training을 사용하여 애플리케이션 패키지를 업로드하고 학습 작업을 제출할 수 있습니다.

학습 애플리케이션 패키징에 대한 자세한 안내를 참조하세요.

학습 작업 제출

AI Platform Training에서는 모델 학습을 비동기(일괄) 서비스로 제공합니다. 명령줄에서 gcloud ai-platform jobs submit training을 실행하거나 projects.jobs.create의 API에 요청을 전송하면 학습 작업을 제출할 수 있습니다.

학습 작업 시작에 대한 자세한 안내를 참조하세요.

작업 ID

학습 작업 이름을 다음 규칙을 준수하는 이름으로 지정해야 합니다.

  • 이름은 Google Cloud 프로젝트 내에서 고유해야 합니다.
  • 이름에는 대소문자가 혼합된 문자, 숫자, 밑줄만 사용할 수 있습니다.
  • 이름은 문자로 시작해야 합니다.
  • 이름은 128자(영문 기준) 이하여야 합니다.

원하는 작업 이름 지정 규칙을 사용할 수 있습니다. 작업을 많이 실행하지 않는 경우에는 이름 선택이 그렇게 중요하지 않을 수 있습니다. 많은 작업을 실행하는 경우에는 대량 목록에서 작업 ID를 찾아야 할 수 있습니다. 작업 ID를 구분하기 쉽게 만드는 것이 좋습니다.

일반적으로 지정된 모델과 연결된 모든 작업에 기본 이름을 정의한 다음 날짜/시간 문자열을 추가하는 방법을 사용합니다. 이 규칙을 따르면 모델의 모든 작업이 오름차순으로 그룹화되기 때문에 이름별로 작업 목록을 정렬하기 쉽습니다.

확장 등급

AI Platform Training에서 학습 작업을 실행할 경우 필요한 머신의 수와 유형을 지정해야 합니다. 프로세스를 더 쉽게 수행하려면 확장 등급이라는 사전 정의된 클러스터 사양 집합에서 지정할 수 있습니다. 아니면 커스텀 등급을 선택하고 머신 유형을 지정해도 됩니다.

확장 등급을 지정하려면 작업 구성의 TrainingInput 객체에 확장 등급을 추가합니다. gcloud 명령어를 사용하여 학습 작업을 제출하는 경우 동일한 식별자를 사용할 수 있습니다.

확장 등급 및 머신 유형에 대한 자세한 정의를 참조하세요.

초매개변수 조정

초매개변수 조정을 사용하려면 학습 작업을 만들 때 구성 세부정보를 포함해야 합니다. 초매개변수 조정에 대한 개념 가이드초매개변수 조정 사용 방법을 참조하세요.

리전과 영역

Google Cloud는 여러 영역으로 분할되는 리전을 사용하여 실제 컴퓨팅 리소스의 지리적 위치를 정의합니다. AI Platform Training에서 학습 작업을 실행할 경우 작업을 실행할 리전을 지정합니다.

Cloud Storage에 학습 데이터세트를 저장하는 경우 학습 데이터에 사용하는 Cloud Storage 버킷과 동일한 리전에 있는 학습 작업을 실행해야 합니다. 데이터 버킷과 다른 리전에서 작업을 실행해야 하는 경우에는 작업 시간이 오래 걸릴 수 있습니다.

모델 학습 및 온라인/일괄 예측을 포함하여 AI Platform Training 서비스에 사용할 수 있는 리전을 알아보려면 리전 가이드를 참조하세요.

job-dir를 공통 출력 디렉터리로 사용

작업을 구성할 때 작업 디렉터리를 설정하여 작업의 출력 디렉터리를 지정할 수 있습니다. 작업을 제출하면 AI Platform Training은 다음 작업을 수행합니다.

  • 작업이 실행되기 전에 문제를 해결할 수 있도록 디렉터리 유효성을 검사합니다.
  • 애플리케이션 경로를 --job-dir이라는 명령줄 인수로 전달합니다.

애플리케이션에서 --job-dir 인수를 고려해야 합니다. 다른 매개변수를 파싱할 때 인수를 캡처하여 애플리케이션의 출력을 저장할 때 사용합니다. 학습 작업 시작 가이드를 참조하세요.

런타임 버전

AI Platform Training의 호스팅된 머신러닝 프레임워크 중 하나로 학습시키려면 지원되는 AI Platform Training 런타임 버전을 지정하여 학습 작업에 사용합니다. 런타임 버전은 할당된 학습 인스턴스에 설치된 TensorFlow, scikit-learn, XGBoost 및 기타 Python 패키지 버전을 나타냅니다. 필요한 기능을 제공하는 버전을 지정합니다. 학습 작업을 클라우드뿐 아니라 로컬에서 실행하는 경우 로컬 및 클라우드 작업이 동일한 런타임 버전을 사용하는지 확인하세요.

입력 데이터

학습 작업에 사용할 데이터는 다음 규칙을 준수해야만 AI Platform Training에서 실행될 수 있습니다.

  • 데이터는 학습 코드를 읽고 피드할 수 있는 형식이어야 합니다.
  • 데이터는 코드가 액세스할 수 있는 위치에 있어야 합니다. 이는 일반적으로 Google Cloud Storage 또는 빅데이터 서비스 중 하나에 저장되어야 함을 의미합니다.

출력 데이터

애플리케이션은 일반적으로 학습 중 생성된 체크포인트와 학습이 끝날 때 저장된 모델을 포함한 데이터를 출력합니다. 애플리케이션에서 필요에 따라 다른 데이터를 출력할 수 있습니다. 출력 파일을 학습 작업과 동일한 Google Cloud 프로젝트의 Cloud Storage 버킷에 저장하는 것이 가장 쉽습니다.

VM 다시 시작에 복원력이 우수한 학습 작업 빌드

Google Cloud VM은 가끔씩 다시 시작됩니다. 이렇게 VM이 재시작되더라도 학습 작업을 계속하기 위해서는 모델 체크포인트를 정기적으로 저장하고 최근의 체크포인트를 복원하도록 작업을 구성하세요.

일반적으로 gcloud ai-platform jobs submit training 명령어에서 --job-dir 인수로 지정하는 Cloud Storage 경로에 모델 체크포인트를 저장합니다.

TensorFlow Estimator API는 체크포인트 기능을 자동으로 구현합니다. 모델이 에스티메이터에서 래핑된 경우 VM의 다시 시작 이벤트에 대해 걱정할 필요가 없습니다.

TensorFlow 에스티메이터에서 모델을 래핑할 수 없으면 체크포인트를 저장하고 복원하는 기능을 학습 코드에 작성하세요. TensorFlow는 tf.train 모듈에 다음과 같은 유용한 리소스를 제공합니다.

GPU를 사용한 학습

그래픽 처리 장치(GPU)를 사용하여 AI Platform Training에서 학습 작업을 실행할 수 있습니다. GPU는 고도의 수학적 작업을 빠른 속도로 수행하도록 설계되었으며, 하나 이상의 CPU 코어가 있는 다른 머신을 추가하는 것보다 텐서 데이터에서 특정 작업을 실행 시 더 효과적일 수 있습니다.

AI Platform Training 서비스는 GPU 작업에 특별한 인터페이스를 제공하지 않습니다. 작업을 실행하는 데 GPU 사용 가능 머신을 지정할 수 있으며 서비스가 이를 할당합니다. 예를 들어 TensorFlow 학습 작업에서는 TensorFlow Ops를 코드의 GPU에 할당할 수 있습니다. 작업 유형에 대해 GPU 액세스 권한이 있는 머신 유형을 지정하면 해당 작업 유형에 할당된 각 인스턴스가 항상 동일하게 구성됩니다. 서비스는 각 시스템에서 코드의 단일 복제본을 실행합니다.

커스텀 컨테이너를 사용하는 다른 머신러닝 프레임워크로 학습시키는 경우 해당 프레임워크가 GPU를 사용한 작업에 다른 인터페이스를 제공할 수 있습니다.

일부 모델은 GPU를 실행하여 얻는 이점이 없습니다. GPU는 많은 수학 연산이 있는 크고 복잡한 모델에 사용하는 것이 좋습니다. 그래도 학습을 통해 소규모 데이터 샘플을 실행하여 GPU 지원의 이점을 테스트해야 합니다.

학습 작업에 GPU를 사용하는 방법을 참조하세요.

TPU를 사용한 학습

Cloud TPU를 사용하여 AI Platform Training에서 학습 작업을 실행할 수 있습니다.

학습 작업에 TPU를 사용하는 방법을 참조하세요.

다음 단계