Private Service Connect 인터페이스 (PSC-I)를 사용하여 파이프라인 실행의 비공개 연결을 구성할 수 있습니다. 비공개 연결에는 Vertex AI Private Service Connect를 사용하는 것이 좋습니다. IP 소진 가능성을 줄이고 전이 피어링을 지원하기 때문입니다.
Vertex AI Pipelines는 학습을 위해 기본 PSC-I 인프라를 사용하여 커스텀 학습 작업에 연결 세부정보를 전달합니다. 커스텀 학습에서 PSC-I를 사용하는 것의 제한사항과 가격에 관한 자세한 내용은 Vertex AI 학습에 Private Service Connect 인터페이스 사용을 참고하세요.
제한사항
Private Service Connect 인터페이스에서는 외부 IP 주소를 지원하지 않습니다.
가격 책정
Private Service Connect 인터페이스의 가격은 모든 네트워킹 가격 책정 페이지에 설명되어 있습니다.
시작하기 전에
Vertex AI Pipelines에서 PSC-I를 사용하려면 먼저 Vertex AI 리소스에 Private Service Connect 인터페이스를 설정해야 합니다.
PSC-I로 파이프라인 실행 만들기
파이프라인 작업을 만들려면 먼저 파이프라인 사양을 만들어야 합니다. 파이프라인 사양은 컴파일된 파이프라인 정의를 변환하여 만드는 메모리 내 객체입니다.
파이프라인 사양 만들기
다음 안내에 따라 파이프라인 실행을 만드는 데 사용할 수 있는 메모리 내 파이프라인 사양을 만듭니다.
파이프라인을 정의하고 YAML 파일로 컴파일합니다. 파이프라인 정의 및 컴파일에 관한 자세한 내용은 파이프라인 빌드를 참고하세요.
다음 코드 샘플을 사용하여 컴파일된 파이프라인 YAML 파일을 메모리 내 파이프라인 사양으로 변환합니다.
import yaml with open("COMPILED_PIPELINE_PATH", "r") as stream: try: pipeline_spec = yaml.safe_load(stream) print(pipeline_spec) except yaml.YAMLError as exc: print(exc)
COMPILED_PIPELINE_PATH를 컴파일된 파이프라인 YAML 파일의 로컬 경로로 바꿉니다.
파이프라인 실행 만들기
다음 샘플을 사용하여 PSC-I를 사용하여 파이프라인 실행을 만듭니다.
Python
Python용 Vertex AI SDK를 사용하여 PSC-I로 파이프라인 실행을 만들려면 aiplatform_v1beta1/services/pipeline_service
정의를 사용하여 실행을 구성합니다.
# Import aiplatform and the appropriate API version v1beta1
from google.cloud import aiplatform, aiplatform_v1beta1
# Initialize the Vertex SDK using PROJECT_ID and LOCATION
aiplatform.init(project="PROJECT_ID", location="LOCATION")
# Create the API endpoint
client_options = {
"api_endpoint": f"LOCATION-aiplatform.googleapis.com"
}
# Initialize the PipelineServiceClient
client = aiplatform_v1beta1.PipelineServiceClient(client_options=client_options)
# Construct the request
request = aiplatform_v1beta1.CreatePipelineJobRequest(
parent=f"projects/PROJECT_ID/locations/LOCATION",
pipeline_job=aiplatform_v1beta1.PipelineJob(
display_name="DISPLAY_NAME",
pipeline_spec=PIPELINE_SPEC,
runtime_config=aiplatform_v1beta1.PipelineJob.RuntimeConfig(
gcs_output_directory="OUTPUT_DIRECTORY",
),
psc_interface_config=aiplatform_v1beta1.PscInterfaceConfig(
network_attachment="NETWORK_ATTACHMENT_NAME"
),
)
# Make the API call
response = client.create_pipeline_job(request=request)
# Print the response
print(response)
다음을 바꿉니다.
- PROJECT_ID: 파이프라인 실행을 만들려는 프로젝트의 프로젝트 ID입니다.
- LOCATION: 파이프라인 실행을 만들 리전입니다.
- DISPLAY_NAME: 파이프라인 작업의 이름입니다. 표시 이름의 최대 길이는 128자(UTF-8)입니다.
- PIPELINE_SPEC: 파이프라인 사양 만들기에서 만든 파이프라인 사양입니다.
- OUTPUT_DIRECTORY: 출력 아티팩트를 저장할 Cloud Storage 버킷의 URI입니다. 이 경로는 파이프라인의 루트 출력 디렉터리이며 출력 아티팩트의 경로를 생성하는 데 사용됩니다.
- NETWORK_ATTACHMENT_NAME:
PipelineJob
리소스에 연결할 Compute Engine 네트워크 연결의 이름입니다. 네트워크 첨부파일을 가져오려면 시작하기 전에 섹션의 단계를 완료해야 합니다. 네트워크 연결에 관한 자세한 내용은 VPC 네트워크, 서브넷, 네트워크 연결 설정을 참고하세요.
REST
파이프라인 실행을 만들려면 pipelineJobs.create 메서드를 사용하여 POST
요청을 전송합니다.
요청 데이터를 사용하기 전에 다음을 바꿉니다.
- PROJECT_ID: 파이프라인 실행을 만들려는 프로젝트의 프로젝트 ID입니다.
- LOCATION: 파이프라인 실행을 만들 리전입니다.
- DISPLAY_NAME: 파이프라인 작업의 이름입니다. 표시 이름의 최대 길이는 128자(UTF-8)입니다.
- PIPELINE_SPEC: 파이프라인 사양 만들기에서 만든 파이프라인 사양입니다.
- OUTPUT_DIRECTORY: 출력 아티팩트를 저장할 Cloud Storage 버킷의 URI입니다. 이 경로는 파이프라인의 루트 출력 디렉터리이며 출력 아티팩트의 경로를 생성하는 데 사용됩니다.
- NETWORK_ATTACHMENT_NAME:
PipelineJob
리소스에 연결할 Compute Engine 네트워크 연결의 이름입니다. 네트워크 첨부파일을 가져오려면 시작하기 전에 섹션의 단계를 완료해야 합니다. 네트워크 연결에 관한 자세한 내용은 VPC 네트워크, 서브넷, 네트워크 연결 설정을 참고하세요.
HTTP 메서드 및 URL:
POST https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/pipelineJobs
JSON 요청 본문:
{ "display_name": "DISPLAY_NAME", "pipeline_spec": "PIPELINE_SPEC", "runtime_config": { "gcs_output_directory": "OUTPUT_DIRECTORY", }, "psc_interface_config": { "network_attachment": "NETWORK_ATTACHMENT_NAME" } }
요청을 보내려면 다음 옵션 중 하나를 선택합니다.
curl
요청 본문을 request.json
파일에 저장하고 다음 명령어를 실행합니다.
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/pipelineJobs"
PowerShell
요청 본문을 request.json
파일에 저장하고 다음 명령어를 실행합니다.
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/pipelineJobs" | Select-Object -Expand Content
다음과 비슷한 출력이 표시됩니다. PIPELINE_JOB_ID는 파이프라인 실행의 ID를 나타내고 SERVICE_ACCOUNT_NAME는 파이프라인을 실행하는 데 사용된 서비스 계정을 나타냅니다.
{ "name": "projects/PROJECT_ID/locations/LOCATION/pipelineJobs/PIPELINE_JOB_ID", "displayName": "DISPLAY_NAME", "createTime": "20xx-01-01T00:00:00.000000Z", "updateTime": "20xx-01-01T00:00:00.000000Z", "pipelineSpec": PIPELINE_SPEC, "state": "PIPELINE_STATE_PENDING", "labels": { "vertex-ai-pipelines-run-billing-id": "VERTEX_AI_PIPELINES_RUN_BILLING_ID" }, "runtimeConfig": { "gcsOutputDirectory": "OUTPUT_DIRECTORY" }, "serviceAccount": "SERVICE_ACCOUNT_NAME" "pscInterfaceConfig": { "networkAttachment": "NETWORK_ATTACHMENT_NAME" } }