AutoML을 사용하는 대신 클라우드에서 고유한 머신러닝(ML) 학습 코드를 실행하려면 Vertex AI에서 커스텀 학습을 수행합니다. 이 문서에서는 학습 코드를 작성할 때 고려해야 할 권장사항에 대해 설명합니다.
학습 코드 구조 선택
먼저 ML 학습 코드에 사용할 구조를 결정합니다. 다음 형식 중 하나로 Vertex AI에 학습 코드를 제공할 수 있습니다.
사전 빌드된 컨테이너에 사용할 Python 스크립트. Vertex AI SDK를 사용하여 커스텀 작업을 만듭니다. 이 메서드는 단일 Python 스크립트로 학습 애플리케이션을 제공할 수 있게 해줍니다.
사전 빌드된 컨테이너에 사용할 Python 학습 애플리케이션. ML 모델을 학습시키고 이를 Cloud Storage로 내보내는 코드로 Python 소스 배포를 만듭니다. 이 학습 애플리케이션은 사용하려는 사전 빌드된 컨테이너에 포함된 종속 항목을 사용할 수 있습니다.
학습용으로 사전 빌드된 Vertex AI 컨테이너 중 하나에 학습에 필요한 모든 종속 항목이 포함되어 있으면 이 옵션을 사용합니다. 예를 들어 PyTorch, scikit-learn, TensorFlow 또는 XGBoost로 학습시키려는 경우 이 옵션이 더 효과적일 수 있습니다.
이 옵션과 관련된 권장사항에 대해 자세히 알아보려면 Python 학습 애플리케이션 만들기 가이드를 참조하세요.
커스텀 컨테이너 이미지. ML 모델을 학습하고 이를 Cloud Storage로 내보내는 코드로 Docker 컨테이너 이미지를 만듭니다. 컨테이너 이미지에 코드에 필요한 종속 항목을 포함합니다.
학습용으로 사전 빌드된 Vertex AI 컨테이너 중 하나에 포함되지 않은 종속 항목을 사용하려면 이 옵션을 사용합니다. 예를 들어 사전 빌드된 컨테이너에서 사용할 수 없는 Python ML 프레임워크를 사용하여 학습을 수행하거나 Python 이외의 프로그래밍 언어를 사용하여 학습을 수행하려면 이 옵션이 더 효과적입니다.
이 옵션과 관련된 권장사항에 대해 자세히 알아보려면 커스텀 컨테이너 이미지 만들기 가이드를 참조하세요.
이 문서의 나머지 부분에서는 두 가지 학습 코드 구조와 관련된 권장사항을 설명합니다.
모든 커스텀 학습 코드에 대한 권장사항
Vertex AI를 위해 커스텀 학습 코드를 작성할 때는 Google Cloud에서 관리되는 하나 이상의 가상 머신(VM) 인스턴스에서 코드가 실행된다는 것에 주의하세요. 이 섹션에서는 모든 커스텀 학습 코드에 적용될 수 있는 권장사항을 설명합니다.
코드에서 Google Cloud 서비스에 액세스
이후 몇몇 후속 섹션에서는 코드에서 다른 Google Cloud 서비스에 액세스하는 방법을 설명합니다. Google Cloud 서비스에 액세스하려면 학습 코드를 작성하여 애플리케이션 기본 사용자 인증 정보(ADC)를 사용합니다. 많은 Google Cloud 클라이언트 라이브러리는 기본적으로 ADC로 인증합니다. 환경 변수를 구성할 필요가 없습니다. Vertex AI는 프로젝트의 Vertex AI 커스텀 코드 서비스 에이전트(기본값) 또는 커스텀 서비스 계정으로 인증하도록 ADC를 자동으로 구성합니다 (이미 구성한 경우).
그러나 코드에서 Google Cloud 클라이언트 라이브러리를 사용할 때 Vertex AI가 기본적으로 올바른 Google Cloud 프로젝트에 연결되는 것은 아닙니다. 권한 오류가 발생하는 경우 잘못된 프로젝트에 연결하는 것이 문제일 수 있습니다.
이 문제는 Vertex AI가 Google Cloud 프로젝트에서 코드를 직접 실행하지 않기 때문에 발생합니다. 대신 Vertex AI는 Google에서 관리하는 여러 개별 프로젝트 중 하나에서 코드를 실행합니다. Vertex AI는 이 프로젝트를 프로젝트와 관련된 작업에만 사용합니다. 따라서 학습 또는 예측 코드의 환경에서 프로젝트 ID를 추론하려고 시도하지 마세요. 프로젝트 ID를 명시적으로 지정하세요.
학습 코드에서 프로젝트 ID를 하드코딩하지 않으려면 CLOUD_ML_PROJECT_ID
환경 변수를 참조하세요. Vertex AI는 커스텀 학습을 시작한 프로젝트의 프로젝트 번호를 포함하도록 모든 커스텀 학습 컨테이너에서 이 환경 변수를 설정합니다. 많은 Google Cloud 도구는 프로젝트 ID를 가져올 때마다 해당 프로젝트 번호를 그대로 사용합니다.
예를 들어 Google BigQuery용 Python 클라이언트를 사용하여 동일한 프로젝트의 BigQuery 테이블에 액세스하려는 경우 학습 코드에서 프로젝트를 유추하려고 시도하지 마세요.
암시적 프로젝트 선택
from google.cloud import bigquery
client = bigquery.Client()
대신 프로젝트를 명시적으로 선택하는 코드를 사용합니다.
명시적 프로젝트 선택
import os
from google.cloud import bigquery
project_number = os.environ["CLOUD_ML_PROJECT_ID"]
client = bigquery.Client(project=project_number)
이러한 방식으로 코드를 구성한 후 권한 오류가 발생하면 코드에서 액세스할 수 있는 리소스에 대한 다음 섹션을 참조하여 학습 코드에 사용할 수 있는 권한을 조정하세요.
코드로 액세스할 수 있는 리소스
기본적으로 학습 애플리케이션은 프로젝트의 Vertex AI 커스텀 코드 서비스 에이전트(CCSA)에서 사용할 수 있는 모든 Google Cloud 리소스에 액세스할 수 있습니다. Vertex AI 서비스 에이전트에 다른 리소스에 대한 액세스 권한 부여의 안내에 따라 CCSA 및 그에 따른 학습 애플리케이션에 제한된 수의 다른 리소스에 대한 액세스 권한을 부여할 수 있습니다. 학습 애플리케이션이 해당 페이지에 나열되지 않은 Google Cloud 리소스에 대한 읽기 수준 이상의 액세스 권한이 필요한 경우 커스텀 서비스 계정을 사용해서만 수행될 수 있는 https://www.googleapis.com/auth/cloud-platform 범위의 OAuth 2.0 액세스 토큰을 얻어야 합니다.
예를 들어 학습 코드가 Cloud Storage 리소스에 액세스할 수 있도록 다음과 같이 구성할 수 있습니다.
기본적으로 Vertex AI는 커스텀 학습을 수행하는 Google Cloud 프로젝트에서 Cloud Storage 버킷에 액세스할 수 있습니다. 또한 다른 프로젝트의 Cloud Storage 버킷에 대한 액세스 권한을 Vertex AI에 부여하거나 커스텀 서비스 계정을 사용하여 특정 작업으로 액세스할 수 있는 버킷을 정확하게 맞춤설정할 수 있습니다.
Cloud Storage FUSE로 Cloud Storage 파일을 읽고 씁니다.
모든 커스텀 학습 작업에서 Vertex AI는 각 학습 노드 파일 시스템의 /gcs/
디렉터리에 액세스할 수 있는 Cloud Storage 버킷을 마운트합니다. Cloud Storage용 Python 클라이언트 또는 다른 라이브러리를 사용하여 Cloud Storage에 액세스하는 것보다 편리한 대안으로 로컬 파일 시스템을 직접 읽고 쓸 수 있으므로 Cloud Storage에서 데이터를 읽거나 Cloud Storage에 데이터를 쓸 수 있습니다. 예를 들어 gs://BUCKET/data.csv
에서 데이터를 로드하려면 다음 Python 코드를 사용할 수 있습니다.
file = open('/gcs/BUCKET/data.csv', 'r')
Vertex AI는 Cloud Storage FUSE를 사용하여 스토리지 버킷을 마운트합니다. Cloud Storage FUSE에서 마운트한 디렉터리는 POSIX 규정을 준수하지 않습니다.
커스텀 학습에 사용하는 사용자 인증 정보에 따라 이러한 방식으로 액세스할 수 있는 버킷이 결정됩니다. 코드에서 액세스할 수 있는 리소스에 대한 이전 섹션에서는 기본적으로 액세스할 수 있는 버킷과 이 액세스를 맞춤설정하는 방법을 설명합니다.
입력 데이터 로드하기
ML 코드는 일반적으로 모델 학습을 위해 학습 데이터에서 작동합니다. Python 학습 애플리케이션 또는 커스텀 컨테이너 이미지를 만들 때 어느 경우든 코드와 함께 학습 데이터를 저장하지 마세요. 데이터를 코드와 함께 저장하면 프로젝트 구성이 잘못되어 다른 데이터 세트에 코드를 재사용하기 어렵고 큰 데이터 세트의 경우 오류를 일으킬 수 있습니다.
Vertex AI 관리형 데이터 세트에서 데이터를 로드하거나 BigQuery 또는 Cloud Storage와 같이 Vertex AI 외부의 소스에서 데이터를 로드하도록 자체 코드를 작성할 수 있습니다.
Cloud Storage에서 데이터를 로드할 때 최고의 성능을 발휘하려면 커스텀 학습을 수행하는 리전의 버킷을 사용합니다. Cloud Storage에서 데이터를 저장하는 방법을 알아보려면 스토리지 버킷 만들기 및 객체 업로드를 참조하세요.
데이터를 로드할 수 있는 Cloud Storage 버킷에 대해 알아보려면 코드에서 액세스할 수 있는 리소스에 대한 이전 섹션을 참조하세요.
학습 코드의 Cloud Storage에서 데이터를 로드하려면 이전 섹션에서 설명한 Cloud Storage FUSE 기능을 사용하거나 ADC를 지원하는 라이브러리를 사용합니다. 코드에서 모든 인증 사용자 인증 정보를 명시적으로 제공할 필요가 없습니다.
예를 들어 객체 다운로드에 대한 Cloud Storage 가이드에 설명된 클라이언트 라이브러리 중 하나를 사용할 수 있습니다. 특히 Cloud Storage용 Python 클라이언트는 사전 빌드된 컨테이너에 포함되어 있습니다.
TensorFlow의 tf.io.gfile.GFile
클래스도 ADC를 지원합니다.
대규모 데이터 세트 로드
커스텀 학습 중 사용할 머신 유형에 따라 VM이 큰 데이터 세트 전체를 메모리에 로드하지 못할 수 있습니다.
메모리에 들어가지 못할 정도로 큰 데이터를 읽어야 할 경우에는 데이터를 스트리밍하거나 증분식으로 읽습니다. ML 프레임워크마다 이를 수행하기 위한 권장사항이 다릅니다. 예를 들어 TensorFlow의 tf.data.Dataset
클래스는 Cloud Storage에서 TFRecord 또는 텍스트 데이터를 스트리밍할 수 있습니다.
데이터 동시 로드로 여러 VM에서 커스텀 학습을 수행하는 것도 각 VM이 메모리에 로드하는 데이터 양을 줄일 수 있는 방법입니다. 이 문서의 분산 학습을 위한 코드 작성 섹션을 참조하세요.
학습된 ML 모델 내보내기
ML 코드는 일반적으로 학습이 종료될 때 하나 이상의 모델 아티팩트의 형식으로 학습된 모델을 내보냅니다. 그런 후 모델 아티펙트를 사용하여 예측을 수행할 수 있습니다.
커스텀 학습이 완료된 다음에는 학습 코드를 실행한 VM에 더 이상 액세스할 수 없습니다. 따라서 학습 코드가 Vertex AI 외부 위치에 모델 아티팩트를 내보내야 합니다.
모델 아티팩트는 Cloud Storage 버킷으로 내보내는 것이 좋습니다. 코드에서 액세스할 수 있는 리소스에 대한 이전 섹션에서 설명한 대로 Vertex AI는 커스텀 학습을 수행하는 Google Cloud 프로젝트에서 모든 Cloud Storage 버킷에 액세스할 수 있습니다. 모델 아티팩트를 내보내기 위해 ADC를 지원하는 라이브러리를 사용하세요. 예를 들어 Keras 모델 저장을 위한 TensorFlow API는 아티팩트를 Cloud Storage 경로로 직접 내보낼 수 있습니다.
Vertex AI에서 예측을 제공하기 위해 학습된 모델을 사용하려면 해당 코드가 예측을 위해 사전 빌드된 컨테이너 중 하나와 호환되는 형식으로 모델 아티팩트를 내보내야 합니다. 자세한 내용은 예측을 위해 모델 아티팩트 내보내기 가이드를 참조하세요.
특수한 Cloud Storage 디렉터리의 환경 변수
baseOutputDirectory
API 필드를 지정하면 Vertex AI가 학습 코드를 실행할 때 다음 환경 변수를 설정합니다.
AIP_MODEL_DIR
: 모델 아티팩트 저장을 위한 디렉터리의 Cloud Storage URIAIP_CHECKPOINT_DIR
: 체크포인트 저장을 위한 디렉터리의 Cloud Storage URIAIP_TENSORBOARD_LOG_DIR
: TensorBoard 로그 저장을 위한 디렉터리의 Cloud Storage URI 커스텀 학습에서 Vertex AI TensorBoard 사용 보기
이러한 환경 변수의 값은 초매개변수 조정을 사용하는지 여부에 따라 약간 달라집니다. 자세한 내용은 baseOutputDirectory
API 참조를 확인하세요.
이러한 환경 변수를 사용하면 다른 데이터 또는 구성 옵션 등에 같은 학습 코드를 여러 번 쉽게 재사용할 수 있고, baseOutputDirectory
API 필드만 변경하여 모델 아티펙트와 체크포인트를 다른 위치에 쉽게 저장할 수 있습니다. 하지만 원치 않는 경우에는 코드에 환경 변수를 사용할 필요가 없습니다. 예를 들어 체크포인트를 저장하고 모델 아티팩트를 내보내기 위해 하드코딩된 위치를 사용할 수도 있습니다.
또한 커스텀 학습을 위해 TrainingPipeline
을 사용하고 modelToUpload.artifactUri
필드를 지정하지 않으면 Vertex AI에서 modelToUpload.artifactUri
에 AIP_MODEL_DIR
환경 변수 값을 사용합니다. (초매개변수 조정을 위해 Vertex AI는 최선의 방식으로 AIP_MODEL_DIR
환경 변수의 값을 사용합니다.)
다시 시작 복원력 보장
학습 코드를 실행하는 VM은 간혹 다시 시작됩니다. 예를 들어 Google Cloud는 유지보수를 위해 VM을 다시 시작해야 할 수 있습니다. VM이 다시 시작되면 Vertex AI가 해당 코드 실행을 처음부터 다시 시작합니다.
학습 코드가 4시간 넘게 실행될 것으로 예상되는 경우 다시 시작 시 복원력이 우수해지도록 코드에 몇 가지 동작을 추가합니다.
VM이 다시 시작될 경우 진행 상태가 손실되지 않도록 최소 4시간마다 한 번씩 학습 진행 상태를 Cloud Storage에 자주 내보냅니다.
학습 코드를 시작할 때 내보내기 위치에 이미 학습 진행 상태가 존재하는지 확인합니다. 그렇다면 처음부터 학습을 시작하는 대신 저장된 학습 상태를 로드합니다.
4시간은 엄격한 한도가 아닌 가이드라인입니다. 복원력 보장이 중요한 경우 이러한 동작이 장기간 실행될 것으로 예상되지 않더라도 이러한 동작을 코드에 추가하는 것이 좋습니다.
이러한 동작을 수행하는 방법은 사용되는 ML 프레임워크에 따라 달라집니다. 예를 들어 TensorFlow Keras를 사용하는 경우 이 목적으로 ModelCheckpoint
콜백을 사용하는 방법을 참조하세요.
Vertex AI에서 VM을 관리하는 방법에 대한 자세한 내용은 커스텀 학습 서비스 이해를 참조하세요.
선택적인 커스텀 학습 기능 권장사항
선택적인 특정 커스텀 학습 기능을 사용하려면 학습 코드를 추가로 변경해야 할 수 있습니다. 이 섹션에서는 초매개변수 조정, GPU, 분산 학습, Vertex AI TensorBoard를 위한 코드 권장사항을 설명합니다.
자동 로깅을 사용 설정하는 코드 작성
Vertex AI SDK for Python으로 자동 로깅을 사용 설정하여 커스텀 작업을 제출할 때 매개변수 및 성능 측정항목을 자동으로 캡처할 수 있습니다. 자세한 내용은 실험 추적으로 학습 작업 실행을 참조하세요.
컨테이너 로그를 반환하는 코드 작성
서비스 또는 작업에서 로그를 작성하면 로그가 다음 위치 중 한 곳에 작성되는 한 Cloud Logging에서 자동으로 감지됩니다.
- 표준 출력(
stdout
) 또는 표준 오류(stderr
) 스트림 output*.log
이름 지정 규칙을 따르는/var/log-storage/
의 로그 파일- syslog(
/dev/log
) - 많이 사용되는 언어로 제공되는 Cloud Logging 클라이언트 라이브러리를 사용하여 작성된 로그
대부분의 개발자는 표준 출력 및 표준 오류를 사용하여 로그를 작성할 수 있어야 합니다.
이러한 지원되는 위치에 작성된 컨테이너 로그는 Vertex AI 커스텀 학습 서비스, 버전, 위치 또는 커스텀 학습 작업과 자동으로 연결됩니다. 이러한 로그에 포함된 예외는 Error Reporting에서 캡처하여 보고합니다.
로그에서 단순 텍스트와 구조화된 JSON 사용 비교
로그를 작성할 때 간단한 텍스트 문자열을 전송하거나 한 줄의 직렬화된 JSON('구조화된' 데이터라도 함)을 보낼 수 있습니다. 이 구조화된 JSON은 Cloud Logging에서 감지 후 파싱하여 jsonPayload
에 배치합니다. 이에 반해 간단한 텍스트 메시지는 textPayload
에 배치됩니다.
구조화된 로그 작성
구조화된 JSON 로그는 여러 방법으로 전달할 수 있습니다. 가장 일반적인 방법은 Python 로깅 라이브러리를 사용하거나 print
를 사용하여 원시 JSON을 전달하는 것입니다.
Python 로깅 라이브러리
import json import logging from pythonjsonlogger import jsonlogger class CustomJsonFormatter(jsonlogger.JsonFormatter): """Formats log lines in JSON.""" def process_log_record(self, log_record): """Modifies fields in the log_record to match Cloud Logging's expectations.""" log_record['severity'] = log_record['levelname'] log_record['timestampSeconds'] = int(log_record['created']) log_record['timestampNanos'] = int( (log_record['created'] % 1) * 1000 * 1000 * 1000) return log_record def configure_logger(): """Configures python logger to format logs as JSON.""" formatter = CustomJsonFormatter( '%(name)s|%(levelname)s|%(message)s|%(created)f' '|%(lineno)d|%(pathname)s', '%Y-%m-%dT%H:%M:%S') root_logger = logging.getLogger() handler = logging.StreamHandler() handler.setFormatter(formatter) root_logger.addHandler(handler) root_logger.setLevel(logging.WARNING) logging.warning("This is a warning log")
원시 JSON
import json def log(severity, message): global_extras = {"debug_key": "debug_value"} structured_log = {"severity": severity, "message": message, **global_extras} print(json.dumps(structured_log)) def main(args): log("DEBUG", "Debugging the application.") log("INFO", "Info.") log("WARNING", "Warning.") log("ERROR", "Error.") log("CRITICAL", "Critical.")
메시지의 특수 JSON 필드
구조화된 로그를 JSON 사전으로 제공하면 일부 특수 필드가 jsonPayload
에서 삭제되고 특수 필드 문서에 설명된 대로 생성된 LogEntry의 해당 필드에 작성됩니다.
예를 들어 JSON에 severity
속성이 포함되어 있으면 이 속성은 jsonPayload
에서 삭제되고 대신 로그 항목의 severity
로 표시됩니다. message
속성이 있으면 이 속성은 로그 항목의 기본 표시 텍스트로 사용됩니다.
컨테이너 로그와 요청 로그의 상관관계(서비스만 해당)
로그 탐색기에서 trace
가 동일하여 상관관계가 있는 여러 로그 항목을 '상위-하위' 형식으로 조회할 수 있습니다. 요청 로그 항목의 왼쪽에 있는 삼각형 아이콘을 클릭하면 해당 요청과 관련된 컨테이너 로그가 요청 로그 아래에 중첩되어 표시됩니다.
Cloud Logging 클라이언트 라이브러리를 사용하는 경우를 제외하고 컨테이너 로그와 요청 로그의 상관관계는 자동으로 지정되지 않습니다.
클라이언트 라이브러리를 사용하지 않고 컨테이너 로그와 요청 로그의 상관관계를 지정하려면 X-Cloud-Trace-Context
헤더에서 추출된 trace 식별자가 있는 logging.googleapis.com/trace
필드가 포함된 구조화된 JSON 로그 줄을 사용할 수 있습니다.
로그 보기
Google Cloud 콘솔에서 컨테이너 로그를 보려면 다음 안내를 따르세요.
Google Cloud 콘솔에서 Vertex AI 커스텀 작업 페이지로 이동합니다.
로그를 보려는 커스텀 작업의 이름을 클릭합니다.
로그 보기를 클릭합니다.
초매개변수 조정을 위한 코드 작성
Vertex AI는 ML 학습 코드에서 초매개변수 조정을 수행할 수 있습니다. Vertex AI에서 초매개변수 조정의 작동 방법 및 HyperparameterTuningJob
리소스 구성 방법을 참조하세요.
초매개변수 조정을 사용하려면 학습 코드에서 다음을 수행해야 합니다.
조정할 초매개변수를 나타내는 명령줄 인수를 파싱하고 파싱된 값을 사용하여 학습에 맞게 초매개변수를 설정합니다.
초매개변수 조정 측정항목을 간헐적으로 Vertex AI에 보고합니다.
명령줄 인수 파싱
초매개변수 조정을 위해 Vertex AI는 매번 서로 다른 명령줄 인수를 사용해서 학습 코드를 여러 번 실행합니다. 학습 코드는 이러한 명령줄 인수를 파싱하고 이를 학습을 위한 초매개변수로 사용해야 합니다. 예를 들어 옵티마이저의 학습률을 조정하기 위해 --learning_rate
라는 명령줄 인수를 파싱해야 할 수 있습니다. Vertex AI에서 제공되는 명령줄 인수 구성 방법을 참조하세요.
Python의 argparse
라이브러리를 사용하여 명령줄 인수를 파싱하는 것이 좋습니다.
초매개변수 조정 측정항목 보고
학습 코드는 Vertex AI를 최적화하기 위해 시도 중인 초매개변수 측정항목을 간헐적으로 보고해야 합니다. 예를 들어 모델의 정확도를 극대화하기 위해 각 학습 에포크가 종료될 때 이 측정항목을 보고할 수 있습니다. Vertex AI는 이 정보를 사용하여 다음 학습 시도에 사용할 초매개변수를 결정합니다. 초매개변수 조정 측정항목 선택 및 지정을 참조하세요.
cloudml-hypertune
Python 라이브러리를 사용하여 초매개변수 조정 측정항목을 보고합니다. 이 라이브러리는 모든 학습용으로 사전 빌드된 컨테이너에 포함되어 있습니다. pip
를 사용하여 이를 커스텀 컨테이너에 설치할 수 있습니다.
이 라이브러리를 설치하고 사용하는 방법은 cloudml-hypertune
GitHub 저장소를 참고하거나 Vertex AI: 초매개변수 조정 Codelab을 참조하세요.
GPU 코드 작성
커스텀 학습 코드 실행을 위해 그래픽 처리 장치(GPU)가 있는 VM을 선택할 수 있습니다. GPU가 사용 설정된 VM을 사용하도록 커스텀 학습 구성을 참조하세요.
GPU를 사용하여 학습을 수행하려면 학습 코드가 이를 활용할 수 있도록 해야 합니다. 사용하는 ML 프레임워크에 따라 코드 변경이 필요할 수도 있습니다. 예를 들어 TensorFlow Keras를 사용하는 경우에는 GPU가 2개 이상 필요한 경우에만 코드를 조정해야 합니다. 일부 ML 프레임워크는 GPU를 전혀 사용할 수 없습니다.
또한 컨테이너에서 GPU가 지원되는지 확인합니다. GPU를 지원하는 학습용으로 사전 빌드된 컨테이너를 선택하거나 커스텀 컨테이너에 NVIDIA CUDA 툴킷 및 NVIDIA cuDNN을 설치합니다.
이를 위한 한 가지 방법은 nvidia/cuda
Docker 저장소의 기본 이미지를 사용하는 것입니다. 또 다른 방법은 Deep Learning Containers 인스턴스를 기본 이미지로 사용하는 것입니다.
분산 학습을 위한 코드 작성
대규모 데이터 세트로 학습을 수행하려면 Vertex AI에서 관리되는 분산 클러스터의 여러 VM으로 코드를 실행할 수 있습니다. 학습용으로 여러 VM을 구성하는 방법을 참조하세요.
TensorFlow 및 PyTorch와 같은 일부 ML 프레임워크에서는 여러 머신에서 동일한 학습 코드를 실행하여 각 머신의 환경 변수에 따라 작업을 구분하는 방법을 자동으로 조정할 수 있습니다. Vertex AI가 ML 프레임워크에서 이러한 조정이 가능하도록 환경 변수를 설정하는지 확인합니다.
또는 각각의 여러 작업자 풀에서 서로 다른 컨테이너를 실행할 수 있습니다. 작업자 풀은 동일한 컴퓨팅 옵션 및 컨테이너를 사용하도록 구성하는 VM 그룹입니다. 이 경우에도 VM 간 통신을 조정하기 위해 Vertex AI에서 설정된 환경 변수를 사용해야 할 수 있습니다. 무엇이든 원하는 임의 작업을 수행하도록 각 작업자 풀에서 학습 코드를 사용자 정의할 수 있습니다. 이를 수행하는 방법은 원하는 목적 및 사용되는 ML 프레임워크에 따라 달라집니다.
Vertex AI TensorBoard를 사용한 커스텀 학습 실험 추적 및 시각화
Vertex AI TensorBoard는 머신러닝 실험 시각화용 Google 오픈소스 프로젝트인 TensorBoard의 관리형 버전입니다. Vertex AI TensorBoard로 ML 실험을 추적, 시각화, 비교하고 팀과 공유할 수 있습니다. 또한 Cloud Profiler를 사용하여 성능 병목 현상을 파악하고 해결함으로써 모델을 더 빠르고 저렴하게 학습시킬 수도 있습니다.
커스텀 학습에서 Vertex AI TensorBoard를 사용하려면 다음을 수행해야 합니다.
프로젝트에서 Vertex AI 텐서보드 인스턴스를 만들어 실험을 저장합니다(텐서보드 인스턴스 만들기 참조).
적절한 권한으로 커스텀 학습 작업을 실행하도록 서비스 계정을 구성합니다.
텐서보드 호환 로그를 Cloud Storage에 기록하도록 커스텀 학습 코드를 조정합니다(학습 스크립트 변경사항 참조).
단계별 안내는 커스텀 학습으로 Vertex AI 텐서보드 사용을 참조하세요.
다음 단계
사전 빌드된 컨테이너로 사용할 Python 학습 애플리케이션 만들기 또는 커스텀 컨테이너 이미지 만들기 세부정보를 참조하세요.
커스텀 학습을 수행할지 여부가 확실하지 않으면 커스텀 학습과 AutoML 비교를 참조하세요.