Keyboard shortcuts

Press ← or → to navigate between chapters

Press ? to show this help

Press Esc to hide this help

컨테이너 이미지로 모델 버전 만들기

모델 리소스를 생성하고 그 리소스에 이미지를 푸시한 뒤 사용할 이미지, 어댑터와 실행 설정을 모델 버전으로 저장합니다. 모델 리소스의 권한이 이미지 접근을 제어합니다. Viewer 권한을 가진 사용자는 이미지를 Foundry 밖으로 다시 pull할 수 있으므로 공유 범위를 먼저 정합니다.

이미지 요구 조건

  • Dockerfile의 userID는 0이 아닌 숫자여야 합니다. root 또는 사용자 이름만 지정한 이미지로 실행하지 않습니다.
  • 플랫폼은 linux/amd64여야 합니다. 필요한 경우 Docker build의 --platform linux/amd64를 사용합니다.
  • latest 이외의 태그 또는 다이제스트로 이미지를 지정합니다. latest 태그의 이미지는 실행하지 않습니다.
  • 이미지 레이어는 각각 약 10 GB 미만을 강력히 권장합니다. 더 큰 레이어가 필요하면 Palantir 담당자에게 문의합니다.
  • 노출 포트는 1024부터 65535 사이여야 합니다. 0부터 1023은 root용 예약 범위이므로 사용할 수 없습니다.
  • 컨테이너 로그를 수집하려면 /bin/sh 실행 파일과 set 및 tee 명령이 필요합니다.

별도 bring your own container 변환에서 요구하는 UID 5001은 그 변환 방식의 추가 조건입니다. 여기의 컨테이너 모델은 위의 숫자 및 비 root 조건을 따릅니다.

모델 리소스 생성

Modeling Objective에서 + Add model > Import containerized model을 선택합니다.

이미지 푸시

모델 페이지의 이미지 푸시 안내를 엽니다.

Generate token으로 인증 토큰을 만들고 화면에서 제공하는 기본 명령을 복사합니다. example-package:<TAG> 부분을 로컬 Docker 저장소의 실제 이미지 이름과 latest가 아닌 태그 또는 다이제스트로 바꿉니다. 명령을 실행하면 모델의 Viewer 사용자도 가져올 수 있는 이미지로 게시됩니다.

이미지 크기에 따라 목록에 나타나기까지 몇 분 걸릴 수 있습니다. 이미지가 표시되면 Create model version을 선택합니다. 먼저 Model Adapter Library 템플릿에서 컨테이너 어댑터를 작성하고 게시해야 합니다.

게시 전 어댑터 연결 시험

sidecar 데코레이터를 활성화한 변환 저장소에서 방금 만든 모델을 backing Artifacts 저장소로 선택할 수 있습니다. 테스트용 myproject/testAdapter.py에 어댑터 예제의 ExampleIdentityFunctionModelAdapter를 정의하고 수동 초기화합니다. 게시할 어댑터는 Model Adapter Library에서 관리합니다.

아래 예제는 image-name:1.0.0 이미지가 8080 포트의 /mirror 서비스를 제공하는 경우입니다. 이미지, 태그와 데이터셋 경로를 실제 값으로 맞춥니다.

from transforms.api import transform, Input, Output
from transforms.sidecar import sidecar, Volume
from myproject.testAdapter import ExampleIdentityFunctionModelAdapter

@sidecar(image="image-name", tag="1.0.0", volumes=[Volume("shared")])
@transform(
    output=Output("/Models/data/container_test_output"),
    source_df=Input("/Models/data/container_test_input"),
)
def compute(source_df, output):
    adapter = ExampleIdentityFunctionModelAdapter(
        "/opt/palantir/sidecars/shared-volumes/shared", "localhost:8080",
    )
    adapter.transform_write(source_df, output)

버전 설정

Configure model Version에서 버전에 포함할 이미지를 하나 이상 선택하고 Next를 누릅니다.

Model details에서 의미적 버전 변경 종류를 정합니다. 설명과 설정 파일은 선택 사항입니다. Model adapter에서 게시한 저장소를 고르면 Select a model adapter에 그 저장소의 유효한 어댑터 최신 버전들이 나타납니다.

이미지마다 메모리 제약, 인자, 환경 변수와 실행 명령을 선택적으로 정합니다. requests 등으로 통신하는 어댑터는 이미지의 실제 수신 포트를 지정해야 합니다. 이미지가 텔레메트리를 지원하면 Enable telemetry를 켭니다.

모델 버전 조회와 소비

생성한 버전은 Model overview에 표시되며 왼쪽에서 이전 버전을 선택할 수 있습니다. 오른쪽 위 + 또는 Actions로 Modeling Objective에 제출할 수 있습니다.

Python 변환에서 컨테이너 기반 모델을 사용할 때에는 모델 버전 RID를 명시해야 합니다. 어댑터 라이브러리도 변환 저장소에 의존성으로 추가합니다. 아래 상수에는 모델 페이지에서 복사한 실제 RID를 넣고 데이터셋 경로를 설정합니다.

from transforms.api import transform, Input, Output
from palantir_models.transforms import ModelInput

MODEL_RID = "YOUR_MODEL_RID"
MODEL_VERSION_RID = "YOUR_MODEL_VERSION_RID"

@transform(
    output=Output("/Models/data/container_inference_output"),
    model=ModelInput(MODEL_RID, model_version=MODEL_VERSION_RID),
    source_df=Input("/Models/data/container_inference_input"),
)
def compute(model, source_df, output):
    model.transform_write(source_df, output)

CBAC 환경에서는 변환 출력 데이터셋을 미리 생성합니다. 이미지 크기와 다중 컨테이너 및 배포별 로그 조건은 운영 제약에서 확인합니다.