Skip to main content

Shell

구조

Shell 모델 패키지는 다음과 같은 기본 구조를 가집니다.

├── main.py
├── prepare.sh
└── run.sh
  • main.py: 모델 서버의 메인 애플리케이션 파일
  • prepare.sh: 환경 설정 및 의존성 설치 스크립트
  • run.sh: 모델 서버 실행 스크립트

환경

Shell 배포 환경은 buildpack-deps:jammy (Ubuntu 22.04) 기반으로 동작하며, 사용자가 제공한 run.sh 스크립트를 실행합니다. 압축 해제된 모델 파일은 /user_function 디렉토리에 위치합니다.

prepare.sh

prepare.sh 스크립트를 통해 모델 실행에 필요한 환경을 설정할 수 있습니다. 시스템 패키지 및 Python 패키지를 설치하고, 필요한 초기 설정을 수행합니다.

prepare.sh 예시:

#!/bin/bash
set -e

if [ -f packages.txt ]; then
xargs sudo apt-get update && apt-get --no-install-recommends -y install < packages.txt
fi

if [ -f requirements.txt ]; then
pip install --no-cache-dir -r requirements.txt
fi

실행

실행 컨테이너에서 Shell 모델은 다음 명령어를 통해 실행됩니다. 로컬 환경에서도 동일한 명령어로 정상 실행 여부를 확인할 수 있습니다.

/user_function/run.sh

run.sh

run.sh 스크립트는 모델 서버를 시작하는 역할을 합니다.

run.sh 예시:

#!/bin/bash
set -e

python main.py

서버 준비 상태

모델의 엔드포인트에 /readyz를 반드시 포함해야 합니다. 이 엔드포인트는 모델이 요청을 받을 수 있는 상태인지 확인하는 헬스 체크 용도로 사용됩니다. HTTP 200 상태 코드를 반환해야 서버가 정상 작동 중인 것으로 간주됩니다.

readyz 엔드포인트 구현 예시 (FastAPI):

from fastapi import FastAPI
import uvicorn

app = FastAPI()

@app.get('/readyz')
async def readiness():
"""
서버가 요청을 처리할 준비가 되었으면 HTTP 200 response 반환
"""
return {"status": "ready"}

if __name__ == '__main__':
uvicorn.run(app, host='0.0.0.0', port=8080)