모델 통합모델 에셋Externally hosted models외부 호스팅된 모델 통합하기

본 번역은 검증되지 않았습니다. AIP를 통해 영문원문으로부터 번역되었습니다.

외부 호스팅된 모델 통합하기

경고

Batch deployments는 현재 외부 모델에 대해 지원되지 않습니다. 대신 외부 모델을 사용하는 Python 변환을 구성하세요.

Foundry는 Azure Machine Learning, Amazon SageMaker, OpenAI, Vertex AI 등의 제 3자 애플리케이션, 서비스 또는 모델 제공자에 호스팅된 모델을 대신하는 모델을 생성할 수 있게 해줍니다. 이로 인해 Foundry 외부에서 개발된 모델이 Foundry 사용자, 파이프라인, 운영 애플리케이션에서 사용할 수 있게 됩니다.

외부 호스팅된 모델이 통합되면 Foundry는 다음을 제공합니다:

  • 배치 변환과 실시간 모델 호스팅과의 통합.
  • 완전한 버전 관리, 세밀한 권한 설정, 그리고 거버넌스 모델 계보.
  • Modelling Objective를 통한 모델 관리 및 실시간 배포.
  • Foundry 온톨로지에 대한 바인딩, 모델에 대한 함수와 what-if 시나리오 분석을 통한 운영화 가능.

외부 호스팅된 모델에 대한 사용자 정의 연결 만들기

외부 호스팅된 모델에 대한 연결을 만들려면 다음이 필요합니다:

  • 외부 호스팅된 모델에 연결하기 위한 연결 세부 정보.
  • Foundry가 외부 호스팅된 모델과 연결 및 인터페이스를 생성하는 방법을 알려주는 모델 어댑터.
  • Foundry가 외부 호스팅된 모델에 연결할 수 있게 해주는 Foundry 출구 정책.

아래의 단계를 따라 외부 호스팅된 모델을 대신하는 모델을 만들 수 있습니다.

1. 새로운 모델 생성

첫 번째 단계는 새로운 모델을 생성하는 것입니다. 이는 Foundry 프로젝트에서 +New > Model을 선택하거나 새롭거나 기존의 Modelling Objective를 통해 수행할 수 있습니다. Modelling Objective에서는 Add model을 선택합니다.

아래의 스크린샷은 Foundry 프로젝트에서 +New > Model을 선택하여 새 모델을 생성하는 과정을 보여줍니다.

새 모델 생성을 보여주는 비어있는 compass 프로젝트

아래의 스크린샷은 Modelling Objective에서 Add model을 선택하여 새 모델을 생성하는 과정을 보여줍니다.

비어있는 Modelling Objective

2. 모델 추가 방법 선택

Connect an externally hosted model을 선택한 다음 Next를 선택합니다.

Palantir Foundry에서 외부 호스팅된 모델 연결 선택

3. 출구 정책 설정

외부 호스팅된 모델에 대한 소스로 Custom connection을 선택하고 드롭다운에서 egress policy를 선택한 다음 Next를 선택합니다.

출구 정책은 Foundry 프로젝트 또는 아티팩트가 Foundry에서 외부 시스템으로 데이터를 전송하도록 합니다. 출구 정책은 귀하의 조직의 Foundry 보안 모델에 의해 제어될 수 있습니다. 필요한 권한이 있는 경우, Control Panel application에서 새로운 출구 정책을 검색하고 구성할 수 있습니다.

Palantir Foundry에서 외부 호스팅된 모델에 대한 출구 정책 선택

4. 모델 어댑터 구성

이 모델에 대한 모델 어댑터를 선택합니다. 모델 어댑터는 로드 시간에 ExternalModelContext를 가져와 외부 호스팅된 모델에 대한 연결을 초기화하도록 구성되어야 합니다. 자세한 정보는 모델 어댑터 생성 방법에 대한 문서를 참조하고, 외부 모델에 대한 example model adapters를 검토하며, ExternalModelContextAPI definition을 확인하세요.

Palantir Foundry에서 외부 호스팅된 모델에 대한 모델 어댑터 정의

5. 모델 연결 구성

사용자 정의 모델 연결에 대한 모델 연결 세부 정보를 정의합니다. 연결 구성에는 두 가지 구성 요소가 있습니다:

  • URL (선택 사항): 이는 모델 어댑터에 제공되는 기본 URL입니다. 이는 모델 추론 함수의 URL이 될 것입니다.
  • Connection Configuration (선택 사항): 연결 구성은 암호화되지 않고 플랫폼 내 모델 메타데이터와 함께 볼 수 있습니다. 이 구성 요소는 모델 이름, 추론 파라미터, 임계값 등의 특정 구성 세부 정보를 저장할 수 있습니다.

Palantir Foundry에서 외부 호스팅된 모델에 대한 모델 구성 정의

6. 자격 증명 구성

사용자 정의 모델 연결에 대한 자격 증명 구성을 정의한 다음 Next를 선택합니다.

  • Credentials Configuration (선택 사항): 자격 증명은 암호화되어 모델과 함께 안전하게 저장됩니다. 이 자격 증명은 모델 로드 시간에 복호화되고 모델 어댑터에 제공됩니다. 외부 모델에 대한 기본 액세스 권한과 관계없이 모델에 액세스 권한이 있는 사용자는 이 모델을 사용하여 추론을 수행할 수 있습니다. 모델 세부 정보를 저장하려면 Next를 선택하세요.

Palantir Foundry에서 외부 호스팅된 모델에 대한 모델 자격 증명 정의

7. 세부 정보 구성 및 모델 제출

이 모델에 대한 모델 저장 위치, 모델 이름 및 버전 노트를 입력합니다. 이는 모델의 Foundry 이름, 위치, 메타데이터를 정의합니다.

이 모델을 Modelling Objective에서 생성하는 경우, 모델을 생성하고 이 모델을 Modelling Objective에 제출하기 위해 Submit을 선택합니다. Modelling Objective에서는 모델로 이동하여 구성을 볼 수 있으며, 연결된 자격 증명을 선택적으로 업데이트할 수 있습니다.

이 모델을 Foundry 프로젝트에서 생성하는 경우, 이 모델을 저장하기 위해 Done을 선택합니다.

Palantir Foundry에서 외부 호스팅된 모델에 대한 모델 저장 위치 정의

외부 호스팅된 모델 보기

외부 호스팅된 모델은 사용자가 자격 증명을 업데이트하고, 연결 구성을 보고, 출구 정책 RID를 복사하여 사용자가 Python Transforms를 구성할 수 있게 합니다.

Palantir Foundry의 외부 모델 뷰

Modelling Objective에서의 외부 모델 제출

Palantir Foundry에서의 외부 모델 뷰

외부 호스팅된 모델 테스트 및 운영화

외부 호스팅된 모델을 테스트하고 운영화하는 몇 가지 방법이 있습니다. 다음을 수행할 수 있습니다:

Modelling Objective에서의 실시간 배포

Foundry에서 실시간 추론을 위한 실시간 배포 설정을 위한 지침을 따릅니다.

모델이 같은 Foundry 프로젝트의 Modelling Objective에 호스팅되는 경우, 출구 정책은 실시간 배포에 자동으로 추가됩니다. 그렇지 않은 경우, 호스팅 프로젝트에 출구 정책을 가져와야 합니다.

Modelling Objective에서의 배치 파이프라인

외부 호스팅된 모델은 현재 배치 배포 또는 Modelling Objective에서의 자동 모델 평가를 지원하지 않습니다.

Python 변환

외부 모델을 사용하는 Python 변환을 구성하려면, 해당 연결에 대해 수동으로 네트워크 Egress를 활성화해야 합니다.

다음으로, 모델 버전에서 필요한 출구 정책 이름을 찾아 Python 변환을 해당 모델 입력으로 구성할 수 있습니다.

Palantir Foundry에서 외부 호스팅된 모델의 뷰에 있는 출구 및 자격 증명 RIDs

의존성

이 예에서는 Python 변환 저장소에 다음의 의존성이 설정되어 있습니다. 모델 추론에 필요한 external-model-adapters와 외부 시스템과 상호 작용하는 transforms-external-systems에 대한 의존성을 추가합니다.

Copied!
1 2 3 4 5 6 7 8 9 10 11 12 requirements: build: - python 3.8.* # 파이썬 3.8 버전 필요 - setuptools # setuptools 필요 run: - python 3.8.* # 파이썬 3.8 버전 필요 - transforms {{ PYTHON_TRANSFORMS_VERSION }} # 파이썬 변환 라이브러리 버전 - transforms-expectations # 변환 예상치 라이브러리 - transforms-verbs # 변환 동사 라이브러리 - transforms-external-systems # 변환 외부 시스템 라이브러리 - external-model-adapters 1.0.0 # 외부 모델 어댑터 버전 1.0.0

변환 예시

이 간단한 예시는 외부 호스팅된 모델을 가져와 추론을 수행합니다. 계산 Function에 입력으로 추가된 필수 export_controlegress 정책에 주의하세요. egress 정책은 모델에서 정의한 것과 동일한 egress 정책을 사용해야 합니다.

Copied!
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 from transforms.api import transform, Input, Output from palantir_models.transforms import ModelInput from transforms.external.systems import EgressPolicy, use_external_systems, ExportControl # 외부 시스템 사용 정책 설정 @use_external_systems( export_control=ExportControl(markings=['<MARKING_ID>']), # 수출 통제 정책 설정 egress=EgressPolicy('ri.resource-policy-manager.<RID>') # 출구 정책 설정 ) @transform( output=Output("/Foundry/Externally Hosted Models/data/inferences"), # 출력 경로 설정 model=ModelInput("/Foundry/Externally Hosted Models/models/Regression Model"), # 모델 경로 설정 foundry_input=Input("/Foundry/Externally Hosted Models/data/regression_features_input") # 입력 데이터 경로 설정 ) def compute( export_control, egress, output, model, foundry_input ): input_df = foundry_input.pandas() # 입력 데이터를 판다스 데이터프레임으로 변환 results = model.transform(input_df) # 모델에 데이터프레임 입력하여 결과 계산 output.write_pandas(results.df_out) # 결과 데이터프레임을 출력 경로에 저장

예제 모델 어댑터 구조

아래에는 외부 호스팅 모델과 함께 사용하기 위한 모델 어댑터의 예시 구조를 제공합니다.

추가 정보는 아래를 참조하는 것이 좋습니다:

Copied!
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 import palantir_models as pm import json import pandas as pd class ExampleModelAdapter(pm.ExternalModelAdapter): def __init__(self, url, credentials_map, configuration_map): # "연결 설정" 맵에서 모델 설정 추출 model_name = configuration_map['model_name'] model_parameter = configuration_map['model_parameter'] # "인증 정보 설정" 맵에서 모델 인증 정보 추출 secret_key = credentials_map['secret_key'] # 모델 로드 시점에서 http 클라이언트 초기화 self.client = ExampleClient(url, model_name, model_parameter, secret_key) @classmethod def init_external(cls, external_context: pm.ExternalContext) -> "pm.ExternalModelAdapter": return cls( url=external_context.base_url, credentials_map=external_context.resolved_credentials, configuration_map=external_context.external_model.connection_config, ) @classmethod def api(cls): inputs = {"df_in": pm.Pandas()} outputs = {"df_out": pm.Pandas()} return inputs, outputs def predict(self, df_in): payload = { "instances": df_in.apply(lambda row: {"features": row.tolist()}, axis=1).tolist() } # 클라이언트는 예시이며 외부 모델에 연결하려면 편집해야 함 response = self.client.predict( ContentType="application/json", Body=json.dumps(payload) ) result = response["Body"].read().decode() predictions = pd.DataFrame(json.loads(result)["predictions"]) return predictions