다음은 컨테이너 기반 모델에 대해 정의된 예제 모델 어댑터입니다. 사용된 이미지는 간단한 플라스크 서버로 /mirror
엔드포인트에서 수신하며, 요청 오브젝트의 "text"를 유일한 필드로 받습니다. 모델 어댑터는 응답 오브젝트의 "returnedText" 필드에 그 텍스트를 그대로 반환합니다.
container_context
오브젝트의 전체 정의는 API: ModelAdapter 관련 문서에서 확인할 수 있습니다.
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
import requests import json import pandas as pd import palantir_models as pm class ExampleIdentityFunctionModelAdapter(pm.ContainerModelAdapter): """ :display-name: 예제 동일 함수 모델 어댑터 :description: 컨테이너 기반 모델용 모델 어댑터 참조 예제 """ def __init__(self, shared_volume_path, model_host_and_port): self.shared_volume_path = shared_volume_path self.model_host_and_port = model_host_and_port @classmethod def init_container(cls, container_context): shared_volume_path = container_context.shared_empty_dir_mount_path # 이 어댑터는 하나의 컨테이너 이름과 하나의 제공된 서비스 URI만 기대합니다. model_host_and_port = list(container_context.services.values())[0][0] return cls(shared_volume_path, model_host_and_port) @classmethod def api(cls): inputs = {"input_df": pm.Pandas(columns=[("text", str)])} outputs = {"output_df": pm.Pandas(columns=[("text", str), ("returnedText", str)])} return inputs, outputs def predict(self, input_df): def run_inference_on_row(row): request = {"text": row.text} # 모델에게 요청을 전달하고 응답을 받습니다. response = requests.post("http://" + self.model_host_and_port + "/mirror", json=request) json_res = json.loads(response.content.decode("utf-8")) return (row.text, json_res["returnedText"]) results = [run_inference_on_row(row) for row in input_df.itertuples()] columns = ["text", "returnedText"] return pd.DataFrame(results, columns=columns)