본문으로 건너뛰기

추론 개요

학습 완료된 model로 실제 이미지를 추론하고 결과를 받아볼 수 있습니다.

추론이란​

Model 학습이 완료되면 새로운 이미지를 입력하여 예측 결과를 얻을 수 있습니다. KeyNet Platform은 사용자가 이미지를 업로드하면 자동으로 추론을 실행하고 시각화된 결과를 보여줍니다.

추론 Flow​

1. Model 학습 완료​

모델 학습을 통해 ONNX model을 생성하고 Platform에 업로드합니다.

2. 추론 함수 작성​

전처리, 추론, 후처리 로직을 담은 Python 함수를 작성합니다.

추론 함수의 역할:

  • 전처리: 사용자 이미지 → model 입력 형식 변환 (크기 조정, 정규화 등)
  • 추론: Triton Inference Server로 model 호출
  • 후처리: model 출력 → 시각화된 결과 이미지 생성

자세한 내용: 추론 함수 작성

3. 함수 배포​

작성한 함수를 Platform에 배포합니다.

v0.8.5 업데이트

v0.8.5부터 keynet-inference push CLI 명령어를 사용하여 추론 함수를 자동으로 빌드하고 배포할 수 있습니다.

방법 1: CLI 배포 (권장)

keynet login https://gateway.aiplatform.re.kr
keynet-inference push inference.py

CLI가 자동으로 Docker 이미지 빌드, Harbor push, 함수 등록을 처리합니다.

자세한 내용: CLI 배포

방법 2: 수동 배포 (레거시)

Dockerfile을 직접 작성하고 수동으로 빌드/배포하는 방식입니다. 복잡한 시스템 의존성이 필요한 특수한 경우에만 사용합니다.

자세한 내용: 수동 배포

4. 이미지 업로드 및 추론​

Platform에서 이미지를 업로드하면 배포된 함수가 자동으로 실행됩니다.

5. 결과 확인​

시각화된 결과 이미지와 예측 정보를 확인합니다.

왜 전처리/후처리가 필요한가​

Platform은 사용자로부터 이미지 파일만 입력으로 받습니다. 하지만:

  • Model마다 입력 형식이 다릅니다 (크기, 정규화, channel 순서 등)
  • 추론 결과는 숫자 배열이므로 시각적으로 표현해야 합니다

따라서 사용자가 직접 전처리와 후처리 로직을 작성해야 합니다.

전처리 예시:

# 800x600 RGB 이미지를 224x224로 변환하고 정규화
resized = image.resize((224, 224))
normalized = array(resized) / 255.0

후처리 예시:

# 모델 출력에서 예측 클래스 추출 및 이미지에 표시
predicted_class = argmax(outputs)
draw.text((10, 10), f"Prediction: {predicted_class}", fill="red")

자세한 예제: 추론 함수 작성

Apache OpenWhisk​

Platform은 Apache OpenWhisk를 기반으로 합니다.

OpenWhisk Base Image​

추론 함수는 OpenWhisk Python base image를 사용해야 합니다.

사용 가능한 이미지:

이미지Python 버전
openwhisk/action-python-v3.9Python 3.9
openwhisk/action-python-v3.10Python 3.10
openwhisk/action-python-v3.11Python 3.11
openwhisk/action-python-v3.12Python 3.12

기본 사용:

@keynet_function(
name="my-inference",
description="Custom inference function",
base_image="openwhisk/action-python-v3.12:latest", # 권장
)
def main(args: dict):
# 추론 로직
storage = Storage()

# ... 전처리, 추론, 후처리 ...

# 결과 업로드 및 반환 (필수 형식)
result_url = storage.put(result_buffer)
return {"url": result_url}
반환값 형식

추론 함수는 반드시 {"url": <storage.put() 결과>} 형식으로 반환해야 합니다.

버전 선택

Python 3.12 (openwhisk/action-python-v3.12:latest)를 권장합니다.

CLI 배포 사용 시 base_image를 지정하면 자동으로 해당 이미지 기반 Dockerfile이 생성됩니다.

커스텀 런타임​

수동 배포 시 필요한 의존성을 포함한 Docker 이미지를 직접 작성합니다:

FROM openwhisk/action-python-v3.12:latest

RUN pip install --no-cache-dir \
keynet-inference==0.8.5 \
Pillow==10.4.0 \
numpy==1.26.4

자세한 내용: 수동 배포

다음 단계​

시작하기

처음 사용하시는 경우 CLI 배포 방식을 권장합니다.

권장 순서:

  1. 추론 함수 작성 - 전처리/추론/후처리 로직 작성
  2. CLI로 배포 - keynet-inference push로 자동 배포
  3. Platform에서 테스트 - 모델 바인딩 및 추론 실행

레거시 방식이 필요한 경우: