본문으로 건너뛰기

API 요청

API 환경

MLflow

mlflow inference server에서는 아래와 같은 url을 제공합니다.

  • /invocations: inference 경로입니다. 인풋 데이터를 POST 요청을 통해 전달하고 추론 결과를 반환합니다.
  • /ping: health checks 위해 사용합니다.
  • /health: /ping 동일합니다.
  • /version: MLflow 버전을 반환합니다.

더 자세한 내용은 아래 페이지를 참고해주세요.

https://mlflow.org/docs/latest/deployment/deploy-model-locally.html#inference-server-specification

BentoML

  • 사용자 지정 API: BentoML service 내 정의된 API 를 통해 추론을 진행하고 결과를 반환합니다.
  • /livez: Kubernetes를 위한 헬스 체크 엔드포인트로, 정상적인 경우 200 OK 상태 코드로 응답합니다.
  • /readyz: /readyz 엔드포인트에서 200 OK 상태가 반환되면 서비스가 트래픽을 수용할 준비가 되었음을 나타냅니다. 그 시점부터 Kubernetes는 /livez 엔드포인트를 사용하여 주기적인 상태 점검을 수행합니다.
  • /metrics: Prometheus 메트릭 엔드포인트로, /metrics 의 반환 값을 통해 Prometheus 는 서비스의 메트릭을 수집하는 데 사용할 수 있습니다.

API 요청하기

요청을 할 때, API Key를 통해 요청해야 합니다. 그렇지 않은 경우 승인되지 않은 요청으로 해당 요청을 처리하지 않습니다.

API 정보에서 API URL을 확인할 수 있습니다. 이 곳에서 확인한 URL 뒤에 경로를 추가하여 사용할 수 있습니다.

MLflow API 요청하기

API URL 뒤에 경로를 추가하여 요청할 수 있습니다. 아래에서 몇가지 예시를 설명합니다.

  • /ping 요청을 하는 경우
    • API URL 뒤에 /ping을 추가하여 요청합니다.
    • https://api-cloud-function.elice.io/2ff51a26-9c2d-414c-86dc-56ae903291a5/ping
  • 추론 요청을 하는 경우
    • API URL 뒤에 /invocations를 추가하여 요청합니다.
    • https://api-cloud-function.elice.io/2ff51a26-9c2d-414c-86dc-56ae903291a5/invocations

만약 curl 명령을 통해 요청한다면 아래와 같은 형태가 될 것 입니다.

curl --location 'https://api-cloud-function.elice.io/{{api_id}}/invocations' \
--header 'Authorization: Bearer {{api_key}}' \
--header 'Content-Type: application/json' \
--data '{
"inputs": [ {{your_data}} ]
}'

MLflow에서 허용하는 데이터 형태에 대해 확인하려면 아래 문서를 참고해주시기 바랍니다. https://mlflow.org/docs/latest/deployment/deploy-model-locally.html#accepted-input-formats

BentoML API 요청하기

API URL 뒤에 경로를 추가하여 요청할 수 있습니다. 아래에서 몇가지 예시를 설명합니다.

  • /readyz 요청을 하는 경우
    • API URL 뒤에 /readyz을 추가하여 요청합니다.
    • https://api-cloud-function.elice.io/3ed3b4e7-46cb-459f-abd9-e30680e8b11f/readyz
  • 추론 요청을 하는 경우
    • 사용자 지정 API 엔드포인트 경로를 추가하여 요청합니다.
    • https://api-cloud-function.elice.io/3ed3b4e7-46cb-459f-abd9-e30680e8b11f/generate

만약 curl 명령을 통해 요청한다면 아래와 같은 형태가 될 것 입니다.

curl -X 'POST' \
'https://api-cloud-function.elice.io/3ed3b4e7-46cb-459f-abd9-e30680e8b11f/generate' \
-H 'accept: image/*' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer {{api_key}}' \
-d '{
"prompt": "a tiny astronaut hatching from an egg on the moon",
"height": 512,
"width": 512,
"num_inference_steps": 4,
"guidance_scale": 0
}'