Keyboard shortcuts

Press ← or → to navigate between chapters

Press ? to show this help

Press Esc to hide this help

외부 호스팅 모델 연결

외부 호스팅 모델은 Azure Machine Learning, Amazon SageMaker, OpenAI, Vertex AI 등의 서비스에 있는 모델을 Foundry 모델이 대신 호출하는 방식입니다. Foundry의 버전, 세부 권한과 계보를 관리하고 Modeling Objectives의 온라인 배포 및 온톨로지 함수에서 사용할 수 있습니다.

Foundry에서 모델을 관리하거나 평가할 필요가 없거나 특정 객체 타입에 연결할 필요가 없는 범용 모델이라면 외부 API를 직접 호출하는 경로도 있습니다. 이 경우 자격 증명을 Data Connection 소스에 저장하고 송신 정책과 함께 외부 변환으로 가져와 배치 추론하거나 외부 함수를 통해 온라인 추론합니다.

언어 모델을 AIP Logic 또는 Pipeline Builder의 Use LLM 노드에서 사용하려면 AIP에 외부 언어 모델 등록을 검토합니다. AIP에 등록하기 위해 이 외부 모델 리소스를 먼저 만들 필요는 없습니다.

준비할 연결 정보

외부 서비스 접속 정보, 실제 클라이언트를 초기화하고 추론하는 모델 어댑터, 외부 호스트에 접근할 Foundry 송신 정책이 필요합니다. 모델 어댑터는 Model Adapter Library에서 게시하고 태그를 만듭니다.

Modeling Objective의 배치 배포와 자동 모델 평가는 외부 호스팅 모델에서 지원하지 않습니다. 배치 추론은 아래의 Python 변환 경로를 사용합니다.

모델 생성

프로젝트의 + New > Model로 만들거나 Modeling Objective의 Add model에서 시작합니다.

Connect an externally hosted model을 선택하고 Next를 누릅니다.

송신 정책과 어댑터

Custom connection을 선택하고 사용할 egress policy를 고릅니다. 이 정책은 프로젝트나 리소스가 Foundry 데이터를 외부 시스템으로 보내도록 허용합니다. 조직의 보안 모델과 권한에 따라 관리하며 필요한 권한이 있으면 Control Panel에서 정책을 조회하고 구성할 수 있습니다.

게시한 모델 어댑터를 선택합니다. ExternalModelAdapter의 init_external은 로드 시 전달된 연결 설정과 복호화한 자격 증명으로 클라이언트를 초기화합니다.

연결 설정과 비밀 정보

URL은 어댑터에 전달할 기본 URL이며 일반 연결 단계에서는 선택 항목입니다. Connection Configuration도 선택 사전이지만 선택한 어댑터가 요구하는 키는 반드시 제공해야 합니다. 이 사전은 암호화하지 않으며 모델 메타데이터에서 조회할 수 있습니다. 모델 이름, 추론 매개변수와 임계값 같은 비밀이 아닌 값을 둡니다.

Credentials Configuration에는 비밀 값을 저장합니다. 암호화하여 모델과 함께 보관하고 로드 시 복호화하여 어댑터에 전달합니다. 모델에 접근할 수 있는 사용자는 자신의 외부 서비스 권한과 관계없이 이 자격 증명으로 모델을 추론할 수 있습니다. 따라서 모델의 접근 권한을 정할 때 외부 추론 권한의 위임 범위도 고려해야 합니다.

저장과 제출

저장 위치, 모델 이름과 버전 메모를 정합니다. Modeling Objective에서 시작했다면 Submit으로 모델을 만들고 목표에 제출합니다. 프로젝트에서 시작했다면 Done으로 모델을 저장합니다.

모델 페이지에서 연결 설정을 보고 자격 증명을 갱신하거나 송신 정책 RID를 복사할 수 있습니다.

온라인 배포와 프로젝트 관계

Modeling Objective에서 온라인 배포로 사용할 수 있습니다. 목표가 모델과 같은 Foundry 프로젝트에 있으면 모델의 송신 정책을 온라인 배포에 자동 추가합니다. 다른 프로젝트에 호스팅한다면 그 프로젝트로 정책을 가져와야 합니다.

Python 변환에서 배치 추론

변환의 네트워크 송신을 별도로 활성화하고 모델 버전에 지정한 것과 같은 송신 정책을 사용합니다. 모델 페이지에서 필요한 정책 RID를 확인합니다.

어댑터 라이브러리와 transforms-external-systems가 필요합니다. 다음은 Python 3.11 및 external-model-adapters 1.0.0을 사용하는 저장소 의존성 예시입니다. 어댑터 패키지 이름과 버전은 실제 게시한 값으로 바꾸고 선택한 제공자 SDK의 Python 조건을 충족해야 합니다. PYTHON_TRANSFORMS_VERSION은 저장소가 관리하는 변환 라이브러리 버전 값입니다.

requirements:
  build:
    - python 3.11.*
    - setuptools
  run:
    - python 3.11.*
    - transforms {{ PYTHON_TRANSFORMS_VERSION }}
    - transforms-expectations
    - transforms-verbs
    - transforms-external-systems
    - external-model-adapters 1.0.0

아래 상수는 승인된 실제 정책 RID 및 Marking ID로 바꾸고 리소스 경로를 설정합니다. 모델 API는 df_out이라는 Pandas 출력을 제공해야 합니다. CBAC 환경에서는 출력 데이터셋을 미리 만듭니다.

from transforms.api import transform, lightweight, Input, Output
from palantir_models.transforms import ModelInput
from transforms.external.systems import EgressPolicy, use_external_systems, ExportControl

EGRESS_POLICY_RID = "YOUR_MODEL_EGRESS_POLICY_RID"
EXPORT_MARKING_IDS = ["YOUR_APPROVED_EXPORT_MARKING_ID"]

@lightweight
@use_external_systems(
    export_control=ExportControl(markings=EXPORT_MARKING_IDS),
    egress=EgressPolicy(EGRESS_POLICY_RID),
)
@transform(
    output=Output("/Models/data/external_inferences"),
    model=ModelInput("/Models/external/regression_model"),
    foundry_input=Input("/Models/data/regression_features"),
)
def compute(export_control, egress, output, model, foundry_input):
    results = model.transform(foundry_input.pandas())
    output.write_pandas(results.df_out)

어댑터의 접속 계약

ExternalModelAdapter의 init_external이 받는 ExternalContext에는 base_url, connection_config 및 resolved_credentials가 있습니다. 이 값을 실제 클라이언트 생성자에 전달하여 인스턴스를 반환합니다. 일반 ModelAdapter.load가 받는 중첩된 ExternalModelExecutionContext와 구분합니다.

api는 모델의 이름 있는 입력과 출력을 선언하고 predict는 제공자 API의 요청 및 응답으로 변환합니다. 예를 들어 일부 표 모델은 instances 안에 features 행 배열을 받고 응답의 predictions에 행별 결과를 담습니다. 해당 서비스의 JSON 구조에 맞춰 표로 변환해야 하며 모든 제공자가 같은 요청이나 응답 형식을 쓰지는 않습니다.

구체적인 구현과 설정은 다음과 같습니다.