Vertex AI는 대규모 모델 학습을 운영할 수 있게 해주는 관리형 학습 서비스를 제공합니다. Vertex AI를 사용하여 Google Cloud 인프라에서 모든 머신러닝(ML) 프레임워크를 기반으로 학습 애플리케이션을 실행할 수 있습니다. 다음과 같은 인기 있는 ML 프레임워크의 경우 모델 학습 및 서비스를 간단하게 준비할 수 있는 통합 지원이 Vertex AI에 포함되어 있습니다.
이 페이지에서는 Vertex AI에 대한 커스텀 학습의 이점, 관련 워크플로, 사용 가능한 여러 학습 옵션에 대해 설명합니다.
Vertex AI의 대규모 학습 운영
모델 학습 운영에는 몇 가지 도전과제가 있습니다. 이러한 도전과제에는 모델 학습에 필요한 시간과 비용, 컴퓨팅 인프라를 관리하는 데 필요한 기술 수준, 엔터프라이즈급 보안 요구 등이 포함됩니다. Vertex AI는 다른 다양한 이점을 제공하면서 이러한 도전과제를 해결해줍니다.
완전 관리형 컴퓨팅 인프라
|
Vertex AI의 모델 학습은 물리적 인프라를 관리할 필요가 없는 완전 관리형 서비스입니다. 서버를 프로비저닝하거나 관리할 필요 없이 ML 모델을 학습시킬 수 있습니다. 사용한 컴퓨팅 리소스에 대해서만 비용을 지불합니다. Vertex AI는 또한 작업 로깅, 큐 추가 및 모니터링을 처리합니다. |
고성능
|
Vertex AI 학습 작업은 ML 모델 학습에 맞게 최적화되어 있으며 GKE 클러스터에서 학습 애플리케이션을 직접 실행하는 것보다 더 빠른 성능을 제공합니다. 또한 Vertex AI 텐서보드 프로파일러를 사용하여 학습 작업에서 성능 병목 현상을 식별하고 디버그할 수 있습니다. |
분산형 학습
|
Reduction Server는 NVIDIA 그래픽 처리 장치(GPU)에서 다중 노드 분산 학습의 처리량을 늘리고 지연 시간을 줄일 수 있는 Vertex AI의 all-reduce 알고리즘입니다. 이 최적화는 대규모 학습 작업을 완료하는 시간과 비용을 줄이는 데 도움이 됩니다. |
초매개변수 최적화
|
초매개변수 조정 작업은 여러 다른 초매개변수 값을 사용하여 학습 애플리케이션을 여러 번 실행합니다. 테스트할 값 범위를 지정하면 Vertex AI가 이 범위 내에서 모델에 대한 최적 값을 탐색합니다. |
엔터프라이즈 보안
|
Vertex AI는 다음과 같은 엔터프라이즈 보안 값을 제공합니다.
|
ML 작업(MLOps) 통합
|
Vertex AI는 통합 MLOps 도구 및 다음 목적으로 사용할 수 있는 기능 모음을 제공합니다.
|
커스텀 학습 워크플로
다음 다이어그램은 Vertex AI에서 커스텀 학습 워크플로에 대한 고급 개요를 보여줍니다. 이어지는 섹션에서는 각 단계에 대해 자세히 설명합니다.
학습 데이터 로드 및 준비
최고 성능 및 지원을 위해서는 다음 Google Cloud 서비스 중 하나를 데이터 소스로 사용합니다.
또한 모델 학습을 위해 학습 파이프라인을 사용할 때 Vertex AI 관리형 데이터 세트를 데이터 소스로 지정할 수 있습니다. 동일한 데이터 세트를 사용하여 커스텀 모델과 AutoML 모델을 학습시키면 두 모델의 성능을 비교할 수 있습니다.
학습 애플리케이션 준비
Vertex AI에서 사용할 학습 애플리케이션을 준비하려면 다음을 수행합니다.
- Vertex AI의 학습 코드 권장사항을 구현합니다.
- 사용할 컨테이너 이미지 유형을 확인합니다.
- 선택한 컨테이너 이미지 유형을 기준으로 학습 애플리케이션을 지원되는 형식으로 패키징합니다.
학습 코드 권장사항 구현
학습 애플리케이션은 Vertex AI용 학습 코드 권장사항을 구현합니다. 이러한 권장사항은 학습 애플리케이션이 다음 작업을 수행하도록 지원하기 위한 것입니다.
- Google Cloud 서비스 액세스
- 입력 데이터 로드
- 실험 추적에 자동 로깅을 사용 설정
- 모델 아티팩트 내보내기
- Vertex AI의 환경 변수 사용
- VM 다시 시작 복원력 보장
컨테이너 유형 선택
Vertex AI는 Docker 컨테이너 이미지에서 학습 애플리케이션을 실행합니다. Docker 컨테이너 이미지는 코드 및 모든 종속 항목을 포함하는 자체 포함형 소프트웨어 패키지이며 거의 모든 컴퓨팅 환경에서 실행될 수 있습니다. 사용할 사전 빌드된 컨테이너 이미지의 URI를 지정하거나 학습 애플리케이션 및 종속 항목이 사전 설치된 커스텀 컨테이너 이미지를 만들고 업로드할 수 있습니다.
다음 표에서는 사전 빌드된 컨테이너 이미지와 커스텀 컨테이너 이미지 간의 차이점을 보여줍니다.
사양 | 사전 빌드된 컨테이너 이미지 | 커스텀 컨테이너 이미지 |
---|---|---|
ML 프레임워크 | 각 컨테이너 이미지는 ML 프레임워크에 따라 달라집니다. | ML 프레임워크를 사용하거나, 아무 것도 사용하지 마세요. |
ML 프레임워크 버전 | 각 컨테이너 이미지는 ML 프레임워크 버전에 따라 달라집니다. | 마이너 버전과 나이틀리 빌드를 포함하여 모든 ML 프레임워크 버전을 사용하세요. |
애플리케이션 종속 항목 | ML 프레임워크에 대한 일반 종속 항목은 사전 설치되어 있습니다. 학습 애플리케이션에 설치할 추가 종속 항목을 지정할 수 있습니다. | 학습 애플리케이션에 필요한 종속 항목을 사전 설치하세요. |
애플리케이션 배포 형식 |
|
커스텀 컨테이너 이미지에 학습 애플리케이션을 사전 설치합니다. |
설정 작업 | 낮음 | 높음 |
추천 대상 | 사전 빌드된 컨테이너 이미지를 사용할 수 있는 ML 프레임워크 및 프레임워크 버전을 기반으로 하는 Python 학습 애플리케이션 |
|
학습 애플리케이션 패키징
사용할 컨테이너 이미지 유형을 결정한 후에는 컨테이너 이미지 유형에 따라 학습 애플리케이션을 다음 형식 중 하나로 패키징합니다.
사전 빌드된 컨테이너에 사용하기 위한 단일 Python 파일
학습 애플리케이션을 단일 Python 파일로 작성하고 Python용 Vertex AI SDK를 사용하여
CustomJob
또는CustomTrainingJob
클래스를 만듭니다. Python 파일은 Python 소스 배포에 패키징되고 사전 빌드된 컨테이너 이미지에 설치됩니다. 학습 애플리케이션을 단일 Python 파일로 전송하는 것이 프로토타입에 적합합니다. 프로덕션 학습 애플리케이션의 경우에는 학습 애플리케이션이 여러 파일로 구성될 가능성이 높습니다.사전 빌드된 컨테이너에 사용하기 위한 Python 소스 배포
하나 이상의 Python 소스 배포에 학습 애플리케이션을 패키징하고 이를 Cloud Storage 버킷에 업로드합니다. Vertex AI는 학습 작업을 만들 때 사전 빌드된 컨테이너 이미지에 소스 배포를 설치합니다.
커스텀 컨테이너 이미지
학습 애플리케이션 및 종속 항목이 사전 설치된 자체 Docker 컨테이너 이미지를 만들고 이를 Artifact Registry에 업로드합니다. 학습 애플리케이션이 Python으로 작성된 경우 Google Cloud CLI 명령어 하나를 사용하여 이러한 단계를 수행할 수 있습니다.
학습 작업 구성
Vertex AI 학습 작업은 다음 태스크를 수행합니다.
- 하나(단일 노드 학습) 또는 그 이상의(분산 학습) 가상 머신(VM)을 프로비저닝합니다.
- 프로비저닝된 VM에서 컨테이너화된 학습 애플리케이션을 실행합니다.
- 학습 작업이 완료된 후 VM을 삭제합니다.
Vertex AI는 학습 애플리케이션 실행을 위해 세 가지 유형의 학습 작업을 제공합니다.
-
커스텀 작업(
CustomJob
)은 학습 애플리케이션을 실행합니다. 사전 빌드된 컨테이너 이미지를 사용하는 경우 모델 아티팩트가 지정된 Cloud Storage 버킷으로 출력됩니다. 커스텀 컨테이너 이미지의 경우 학습 애플리케이션이 모델 아티팩트를 다른 위치로 출력할 수도 있습니다. -
초매개변수 조정 작업(
HyperparameterTuningJob
)은 수행 성능이 최적인 초매개변수 값을 사용하여 모델 아티팩트를 생성할 때까지 여러 다른 초매개변수 값을 사용하여 학습 애플리케이션을 여러 번 실행합니다. 테스트할 초매개변수 값 범위와 최적화할 측정항목을 지정할 수 있습니다. -
학습 파이프라인(
CustomTrainingJob
)은 커스텀 작업 또는 초매개변수 조정 작업을 실행하고 선택적으로 모델 아티팩트를 Vertex AI로 내보내서 모델 리소스를 생성합니다. Vertex AI 관리 데이터 세트를 데이터 소스로 지정할 수 있습니다.
학습 작업을 만들 때는 학습 애플리케이션 실행에 사용할 컴퓨팅 리소스를 지정하고 컨테이너 설정을 구성합니다.
컴퓨팅 구성
학습 작업에 사용할 컴퓨팅 리소스를 지정합니다. Vertex AI는 하나의 VM에서 학습 작업이 실행되는 단일 노드 학습과 여러 VM에서 학습 작업이 실행되는 분산 학습을 지원합니다.
학습 작업에 지정할 수 있는 컴퓨팅 리소스는 다음과 같습니다.
VM 머신 유형
서로 다른 머신 유형은 서로 다른 CPU, 메모리 크기 및 대역폭을 제공합니다.
그래픽 처리 장치(GPU)
A2 또는 N1 유형의 VM에 하나 이상의 GPU를 추가할 수 있습니다. 학습 애플리케이션이 GPU를 사용하도록 설계된 경우 GPU를 추가하면 성능이 크게 향상될 수 있습니다.
Tensor Processing Unit(TPU)
TPU는 특히 머신러닝 워크로드를 가속화하도록 설계되었습니다. 학습에 TPU VM을 사용하는 경우 작업자 풀을 하나만 지정할 수 있습니다. 이 작업자 풀에는 복제본을 하나만 포함할 수 있습니다.
부팅 디스크
SSD(기본값) 또는 HDD를 부팅 디스크로 사용할 수 있습니다. 학습 애플리케이션이 디스크에 읽기 및 쓰기를 수행할 때 SSD를 사용하면 성능이 향상될 수 있습니다. 학습 애플리케이션은 디스크에 쓰는 임시 데이터 양을 기반으로 부팅 디스크의 크기를 지정할 수도 있습니다. 부팅 디스크는 100GiB(기본값)에서 64,000GiB 사이여야 합니다. 작업자 풀의 모든 VM은 동일한 부팅 디스크 유형 및 크기를 사용해야 합니다.
컨테이너 구성
수행해야 하는 컨테이너 구성은 사전 빌드된 컨테이너 이미지 또는 커스텀 컨테이너 이미지를 사용하는지 여부에 따라 달라집니다.
사전 빌드된 컨테이너 구성:
- 사용할 사전 빌드된 컨테이너 이미지의 URI를 지정합니다.
- 학습 애플리케이션이 Python 소스 배포로 패키징된 경우 패키지가 있는 위치의 Cloud Storage URI를 지정합니다.
- 학습 애플리케이션의 진입점 모듈을 지정합니다.
- 선택사항: 학습 애플리케이션의 진입점 모듈에 전달할 명령줄 인수 목록을 지정합니다.
커스텀 컨테이너 구성:
- ���스텀 컨테이너 이미지의 URI를 지정합니다. Artifact Registry 또는 Docker Hub의 URI일 수 있습니다.
- 선택사항: 컨테이너 이미지에서
ENTRYPOINT
또는CMD
안내를 재정의합니다.
학습 작업 만들기
데이터 및 학습 애플리케이션이 준비된 후 다음 학습 작업 중 하나를 만들어서 학습 애플리케이션을 실행합니다.
학습 작업을 만들려면 Google Cloud 콘솔, Google Cloud CLI, Python용 Vertex AI SDK, Vertex AI API를 사용할 수 있습니다.
(선택사항) 모델 아티팩트를 Vertex AI로 가져오기
학습 애플리케이션은 하나 이상의 모델 아티팩트를 일반적으로 Cloud Storage 버킷에 해당하는 지정된 위치로 출력합니다. 모델 아티팩트에서 Vertex AI의 예측을 수행하려면 먼저 모델 아티팩트를 Vertex AI Model Registry로 가져옵니다.
학습용 컨테이너 이미지와 같이 Vertex AI에서는 예측을 위해 사전 빌드된 컨테이너 이미지 또는 커스텀 컨테이너 이미지를 사용하도록 선택할 수 있습니다. ML 프레임워크 및 프레임워크 버전에서 예측을 위해 사전 빌드된 컨테이너 이미지를 사용할 수 있는 경우 사전 빌드된 컨테이너 이미지를 사용하는 것이 좋습니다.
다음 단계
- 모델에서 예측 수행
- 모델 평가
- Vertex AI에서 TensorFlow Keras 이미지 분류 모델 학습에 대한 단계별 안내를 위해 Hello 커스텀 학습 튜토리얼 시도하기