TensorFlow 또는 PyTorch와 같은 머신러닝 프레임워크를 사용하여 커스텀 학습 모델로 추론을 실행하려면 모델을 저장하고 Vertex AI에 업로드하고, 예측 엔드포인트를 만들고, 생성된 엔드포인트에서 트래픽을 제공하도록 모델을 배포해야 합니다.
모델 입력
모델을 저장하고 Vertex AI에 업로드하기 전에 모델이 Earth Engine에서 지원하는 페이로드 형식의 데이터를 허용하는지 확인해야 합니다. 자세한 내용은 페이로드 형식 페이지를 참고하세요.
모델 아티팩트
다음 단계는 Vertex AI에서 호스팅할 수 있는 형식으로 모델을 저장하는 것입니다.
TensorFlow
TensorFlow 기반 모델은 여러 형식으로 저장할 수 있지만 Vertex AI에는 SavedModel 형식이 필요합니다. Keras 기반 모델은 tf.keras.Model.export()
를 사용하여 SavedModel로 내보내야 합니다.
다른 TensorFlow 모델은 더 원시적인 tf.saved_model.save()
를 사용해야 합니다.
자세한 내용은 SavedModel 형식에 관한 문서를 참고하세요.
PyTorch
PyTorch 모델은 예측 서빙을 위해 모델 아티팩트를 준비하는 방법이 약간 다릅니다. 커스텀 학습 모델을 만드는 경우 먼저 모델을 저장해야 합니다. 성능상의 이유로 PyTorch 모델을 TorchScript로 변환하고 다음과 같이 모델 파일을 저장하는 것이 좋습니다.
model_scripted = torch.jit.script(model) # Export to TorchScript
model_scripted.save('model.pt') # Save
모델 파일이 저장되면 Vertex AI에 배포할 수 있도록 보관처리해야 합니다. 사전 빌드된 컨테이너를 사용하는 경우 모델의 이름은 'model'이어야 합니다. 모델을 보관처리하려면 맞춤 핸들러와 모델에 필요한 추가 파일을 포함하여 torch-model-archiver를 실행해야 합니다. 다음은 그 예입니다.
torch-model-archiver -f \
--model-name model \
--version 1.0 \
--serialized-file $model_file \
--handler $hander_file \
--extra-files $index_to_name_file \
--export-path $model_path
Vertex AI에 모델 배포
모델 파일이 저장되면 다음 단계는 모델을 Vertex AI에 업로드하는 것입니다. 모델 아티팩트가 아직 Google Cloud Storage에 없는 경우 먼저 gsutil cp $model_path
gs://${your-bucket}/models/model
와 같은 명령어를 사용하여 모델 보관 파일을 복사합니다.
복사한 후 Vertex AI의 모델 레지스트리를 사용하여 모델을 업로드하거나 gcloud 명령줄을 사용하여 다음과 같이 실행할 수 있습니다.
gcloud ai models upload \
--artifact-uri=gs://{your-bucket}/models/model \
--display-name=${display-name} \
--container-image-uri=${model-container} \
--container-grpc-ports=8500
팁: 최적의 성능을 위해 container-grpc-ports
플래그를 사용하여 gRPC 예측을 사용 설정하세요. gRPC 예측에 관한 자세한 내용은 페이로드 형식 문서를 참고하세요.
이 플래그는 gcloud 명령줄 도구를 사용하여만 지정할 수 있습니다.
모델 엔드포인트 관리
모델을 Vertex AI에 업로드한 후 엔드포인트를 만들고 새 엔드포인트를 만들거나 gcloud 명령줄을 사용하여 endpoints create
및 endpoints deploy-model
명령어와 함께 온라인 예측 페이지를 통해 모델을 배포합니다. 예를 들면 다음과 같습니다.
모델 만들기:
gcloud ai endpoints create \
--display-name=${endpoint-name}
모델 배포
gcloud ai endpoints deploy-model {endpoint-id} \
--model=${model-id} \
--traffic-split=0=100 \
--display-name=${model-display-name} \
--min-replica-count=${min-replica-count} \
--max-replica-count=${max-replica-count}
모델이 배포되면 Earth Engine에서 모델에 연결하여 추론을 실행할 수 있습니다.