이 초보자 가이드는 Vertex AI에 대한 커스텀 학습을 소개합니다. 커스텀 학습은 TensorFlow, PyTorch, XGBoost와 같은 ML 프레임워크를 사용하여 모델을 학습시키는 것을 말합니다.
학습 목표
Vertex AI 환경 수준: 초급
예상 읽기 시간: 15분
학습 내용
- 커스텀 학습에 관리형 서비스를 사용할 때의 이점
- 학습 코드 패키징 권장사항
- 학습 작업을 제출하고 모니터링하는 방법
관리형 학습 서비스를 사용하는 이유는 무엇인가요?
새로운 ML 문제를 작업하고 있다고 가정해 보겠습니다. 노트북을 열고 데이터를 가져온 후 실험을 실행합니다. 이 시나리오에서는 원하는 ML 프레임워크로 모델을 만들고 노트북 셀을 실행하여 학습 루프를 실행합니다. 학습이 완료되면 모델 결과를 평가하고 변경한 후 학습을 다시 실행합니다. 이 워크플로는 실험에 유용하지만 ML을 사용하여 프로덕션 애플리케이션을 빌드하는 방법을 고려할 때 노트북의 셀을 수동으로 실행하는 것이 가장 편리한 옵션이 아닐 수 있습니다.
예를 들어 데이터 세트와 모델이 큰 경우 분산 학습을 시도해 볼 수 있습니다. 또한 프로덕션 설정에서는 모델을 한 번만 학습할 필요가 없습니다. 시간이 지나면서 모델을 다시 학습시켜 최신 상태로 유지하고 유용한 결과를 계속 얻을 수 있습니다. 대규모 실험을 자동화하거나 프로덕션 애플리케이션을 위해 모델을 다시 학습시키려는 경우 관리형 ML 학습 서비스를 활용하면 워크플로가 간소화됩니다.
이 가이드에서는 Vertex AI에서 커스텀 모델을 학습시키는 방법을 소개합니다. 학습 서비스는 완전 관리형이기 때문에 Vertex AI는 컴퓨팅 리소스를 자동으로 프로비저닝하고, 학습 작업을 수행하고, 학습 작업이 완료되면 컴퓨팅 리소스를 반드시 삭제합니다. 여기에서는 다루지 않지만 추가 맞춤설정, 기능 및 서비스와 상호작용하는 방법이 포함됩니다. 이 가이드에서는 개요를 제공합니다. 자세한 내용은 Vertex AI Training 문서를 참조하세요.
커스텀 학습 개요
Vertex AI에서 커스텀 모델을 학습시키는 방법은 다음과 같은 표준 워크플로를 따릅니다.
학습 애플리케이션 코드를 패키징합니다.
커스텀 학습 작업을 구성하고 제출합니다.
커스텀 학습 작업을 모니터링합니다.
학습 애플리케이션 코드 패키징
컨테이너로 Vertex AI에서 커스텀 학습 작업을 실행합니다. 컨테이너는 코드 실행에 필요한 특정 라이브러리 버전과 같은 종속 항목과 함께 애플리케이션 코드의 패키지입니다(이 경우에는 학습 코드). 컨테이너는 종속 항목 관리를 지원할 뿐만 아니라 거의 모든 곳에서 컨테이너를 실행할 수 있으므로 이동성이 향상됩니다. 이식 가능한 구성요소를 만들기 위해 매개변수 및 종속 항목이 포함된 학습 코드를 패키징하는 것은 ML 애플리케이션을 프로토타입에서 프로덕션으로 이동할 때 중요한 단계입니다.
커스텀 학습 작업을 실행하려면 먼저 학습 애플리케이션을 패키징해야 합니다. 이 경우 학습 애플리케이션은 데이터 로드, 데이터 사전 처리, 모델 정의, 학습 루프 실행과 같은 작업을 수행하는 하나 이상의 파일을 의미합니다. Vertex AI 학습 서비스는 개발자가 제공하는 모든 코드를 실행하므로 학습 애플리케이션에 포함할 단계는 개발자가 결정합니다.
Vertex AI는 TensorFlow, PyTorch, XGBoost, Scikit-learn에 사전 빌드된 컨테이너를 제공합니다. 이러한 컨테이너는 정기적으로 업데이트되며 학습 코드에 필요할 수 있는 공통 라이브러리를 포함합니다. 이러한 컨테이너 중 하나를 사용하여 학습 코드를 실행하거나 학습 코드 및 종속 항목이 사전 설치된 커스텀 컨테이너를 만들 수 있습니다.
Vertex AI에서 코드를 패키징하는 방법은 다음과 같이 세 가지가 있습니다.
- 단일 Python 파일을 제출합니다.
- Python 소스 배포를 만듭니다.
- 커스텀 컨테이너를 사용합니다.
Python 파일
이 옵션은 빠른 실험에 적합합니다. 학습 애플리케이션을 실행하는 데 필요한 모든 코드가 하나의 Python 파일에 있고 사전 빌드된 Vertex AI 학습 컨테이너 중 하나에 애플리케이션을 실행하는 데 필요한 모든 라이브러리가 있는 경우 이 옵션을 사용할 수 있습니다. 학습 애플리케이션을 단일 Python 파일로 패키징하는 예시는 노트북 튜토리얼의 커스텀 학습 및 일괄 예측을 참조하세요.
Python 소스 배포
학습 애플리케이션이 포함된 Python 소스 배포를 만들 수 있습니다. Cloud Storage 버킷에 학습 코드 및 종속 항목이 포함된 소스 배포를 저장합니다. 학습 애플리케이션을 Python 소스 배포로 패키징하는 예시는 노트북 튜토리얼의 PyTorch 분류 모델 학습, 조정, 배포를 참조하세요.
커스텀 컨테이너
이 옵션은 애플리케이션을 보다 세부적으로 제어하거나 Python으로 작성되지 않은 코드를 실행하려는 경우에 유용합니다. 이 경우 Dockerfile을 작성하고 커스텀 이미지를 빌드하여 Artifact Registry에 푸시해야 합니다. 학습 애플리케이션 컨테이너화에 대한 예시는 노트북 튜토리얼의 프로파일러를 사용하여 모델 학습 성능 프로파일링을 참조하세요.
권장되는 학습 애플리케이션 구조
코드를 Python 소스 배포나 커스텀 컨테이너로 패키징하려면 다음과 같이 애플리케이션을 구성하는 것이 좋습니다.
training-application-dir/
....setup.py
....Dockerfile
trainer/
....task.py
....model.py
....utils.py
모든 학습 애플리케이션 코드를 저장할 디렉터리를 만듭니다. 이 경우는 training-application-dir
입니다. 이 디렉터리에는 Python 소스 배포를 사용하는 경우 setup.py
파일이 포함되고 커스텀 컨테이너를 사용하는 경우 Dockerfile
이 포함됩니다.
두 경우 모두 이 상위 디렉터리에는 학습 실행을 위한 모든 코드가 포함된 하위 디렉터리 trainer
도 포함됩니다. trainer
내에서 task.py
는 애플리케이션의 기본 진입점입니다. 이 파일은 모델 학습을 실행합니다. 모든 코드를 이 파일에 넣을 수도 있지만 프로덕션 애플리케이션의 경우 추가 파일(예: model.py
, data.py
, utils.py
등)이 있을 수 있습니다.
커스텀 학습 실행
Vertex AI의 학습 작업은 컴퓨팅 리소스를 자동으로 프로비저닝하고 학습 애플리케이션 코드를 실행하며 학습 작업이 완료되면 컴퓨팅 리소스를 반드시 삭제합니다.
보다 복잡한 워크플로를 빌드할 때 Python용 Vertex AI SDK를 사용하여 학습 작업을 구성, 제출, 모니터링할 수 있습니다. 하지만 커스텀 학습 작업을 처음 실행한다면 Google Cloud 콘솔을 사용하는 것이 더 쉬울 수 있습니다.
- Cloud 콘솔의 Vertex AI 섹션에서 학습으로 이동합니다. 만들기 버튼을 클릭하여 새 학습 작업을 만들 수 있습니다.
- 모델 학습 방법에서 커스텀 학습(고급)을 선택합니다.
- 학습 컨테이너 섹션에서 애플리케이션을 패키징한 방법에 따라 사전 빌드된 컨테이너 또는 커스텀 컨테이너를 선택합니다.
- 컴퓨팅 및 가격 책정에서 학습 작업의 하드웨어를 지정합니다. 단일 노드 학습의 경우 작업자 풀 0만 구성하면 됩니다. 분산형 학습을 실행하는 데 관심이 있다면 다른 작업자 풀을 이해해야 하며, 분산 학습에 대해 자세히 알아볼 수 있습니다.
예측 컨테이너 구성은 선택사항입니다. Vertex AI에서만 모델을 학습시키고 저장된 모델 아티팩트에 액세스하려는 경우 이 단계를 건너뛸 수 있습니다. Vertex AI 관리형 예측 서비스에서 결과 모델을 호스팅하고 배포하려면 예측 컨테이너를 구성해야 합니다. 여기에서 예측 컨테이너에 대해 자세히 알아보세요.
학습 작업 모니터링
Google Cloud 콘솔에서 학습 작업을 모니터링할 수 있습니다. 실행된 모든 작업 목록이 표시됩니다. 특정 작업을 클릭하고 문제가 발생한 로그를 검사할 수 있습니다.