Replicate의 청구 방식
Replicate의 시간 기반 가격 책정은 모델에 따라 달라지지 않습니다. SDXL로 이미지를 생성하든 Llama 3를 실행하든, 청구 금액은 하드웨어 등급과 실행 시간에 따라 결정됩니다. Replicate는 각 모델마다 별도의 가격을 책정하지 않고도 수천 개의 오픈 소스 모델을 호스팅할 수 있습니다.
아래 구현에서는 Replicate의 가격 페이지에 더 이상 나열되지 않는 A40 및 A100 (40GB) tier에 대한 예시 meter도 사용합니다. 제공하는 각 하드웨어 tier마다 하나의 meter를 생성하세요.
각 실행은 사용한 하드웨어의 meter에서 측정됩니다:
- 하드웨어별 요금: 초당 요금은 사용한 컴퓨팅 리소스에 따라 달라집니다. 각 하드웨어 등급에는 고유한 요금이 적용됩니다.
- 순수 사용량 기반 모델: 월간 요금, 포함된 할당량, 초과 요금이 없습니다. 사용자는 예를 들어 “A100에서 12.4초”와 같이 생성 횟수가 아니라 실제 컴퓨팅 시간에 대해 정확히 비용을 지불합니다.
- 초 단위 정밀도: 시간 또는 분 단위로 청구하는 제공업체는 짧은 작업에서 사용하지 않은 시간까지 청구합니다. 초 단위 청구는 소규모 실험과 대규모 프로덕션 워크로드 모두에서 이러한 낭비를 제거합니다.
공개 모델의 경우 Replicate는 모델이 요청을 실제로 처리하는 시간에 대해서만 요금을 청구합니다. 설정(콜드 부트) 및 유휴 시간은 무료입니다. 비공개 모델과 deployment는 전용 하드웨어에서 실행되므로 인스턴스가 온라인 상태인 모든 시간, 즉 설정, 유휴 및 활성 시간에 대해 비용을 지불합니다(Replicate billing docs).
고유한 특징
- 하드웨어별 미터링: 동일한 모델이라도 더 빠른 하드웨어에서 실행하면 비용이 더 많이 들므로 사용자는 속도와 비용 사이에서 선택할 수 있습니다. 시간에 민감하지 않은 작업에는 T4 GPU가 적합하고, 실시간 애플리케이션에는 A100이 적합합니다.
- 초 단위 정밀도: 청구 금액은 초 단위로 계산되므로 짧은 작업에서 사용하지 않은 시간에 대한 비용을 지불하지 않습니다.
- 구독 없음: 사용자는 약정 없이 시작할 수 있고, 비용은 사용량에 따라 증가합니다. 이는 다양한 모델을 시도하는 스타트업과 개발자에게 적합합니다.
- 모델 비종속: 동일한 청구 로직이 이미지 생성, 텍스트 처리, 오디오 전사 및 비디오 합성에 적용됩니다. 이 플랫폼은 복잡한 가격표 없이 대규모 모델 카탈로그를 지원합니다.
Dodo Payments로 구축하기
Dodo Payments 사용량 기반 청구를 사용하여 이 모델을 구축할 수 있습니다. 각 하드웨어 등급마다 하나의 meter를 만들고, 모든 meter를 단일 product에 연결합니다.1
Create Usage Meters (One Per Hardware Class)
각 하드웨어 등급마다 별도의 meter를 만듭니다. 각 등급에는 고유한 초당 요금이 적용되므로, 별도의 meter를 사용하면 Dodo Payments가 등급별로 요금을 책정하고 invoice 항목을 구분할 수 있습니다.
execution_seconds에 대해 Sum aggregation을 적용하면 billing period 동안 하드웨어 등급별 총 컴퓨팅 시간이 산출됩니다.2
Create a Usage-Based Product
다음 설정으로 Dodo Payments dashboard에 product를 만듭니다:
- Pricing type: Usage Based Billing
- Base Price: $0/month (구독 요금 없음)
- Billing frequency: Monthly
모든 meter의 Free Threshold를 0으로 설정하여 실행 시간의 모든 초가 청구 대상이 되도록 합니다.
3
Send Usage Events
각 모델 실행이 완료되면 Dodo Payments에 usage event를 전송합니다. 각 prediction에 고유한
event_id를 지정하여 재시도된 event가 두 번 집계되지 않도록 합니다.4
Measure Execution Time Precisely
performance.now()를 사용하여 각 모델 실행 시간을 측정하고, 청구를 위해 가장 가까운 10분의 1초 단위로 반올림합니다.5
Create Checkout
사용자가 가입하면 usage-based product에 대한 checkout session을 생성합니다. 그러면 Dodo Payments가 각 cycle마다 사용량을 청구하고 invoice를 발행합니다.
Time Range Ingestion Blueprint로 가속하기
Time Range Ingestion Blueprint는 초 단위 컴퓨팅 추적을 간소화합니다. 각 하드웨어 등급마다 하나의 ingestion instance를 만들고, 각 실행 후trackTimeRange를 호출합니다.
durationMs로 포함하여 event를 생성하고 전송합니다. 각 meter의 Over Property를 durationMs로 설정하거나, 초당 가격 책정을 유지하려면 durationSeconds를 전송합니다. 하드웨어 등급마다 하나의 ingestion instance를 사용하면 Replicate의 다중 등급 metering에 직접 매핑됩니다.
사용자를 위한 비용 추정
사용량 기반 청구 금액은 예측하기 어려울 수 있으므로, 모델을 실행하기 전에 사용자에게 비용 추정치를 보여 주세요. 추정치는 예상치 못한 청구를 방지하고 신뢰를 구축합니다.비용 계산 예시
비용 계산기 구축하기
이 함수는 등급의 초당 요금에 예상 실행 시간을 곱합니다:Enterprise: Reserved Capacity
전용 용량과 콜드 부트가 없는 환경이 필요한 고객을 위해 Replicate는 deployment를 제공합니다. deployment는 온라인 상태인 전체 시간에 대해 요금이 청구되는 전용 인스턴스입니다. Dodo Payments에서 reserved capacity를 모델링하려면 subscription product로 판매합니다:- Product Type: Subscription
- Price: 고정 월 요금(예: “Reserved A100 Instance - $500/month”)
- Billing Cycle: Monthly
고급: Heartbeat Metering
몇 분 또는 몇 시간 동안 실행되는 작업의 경우 마지막에 event 하나만 전송하는 방식은 위험합니다. 프로세스가 중단되면 사용량 데이터가 손실되기 때문입니다. 대신 작업이 실행되는 동안 30~60초마다 usage event를 전송합니다.사용된 주요 Dodo 기능
Usage-Based Billing
사용량을 기준으로 청구하는 product를 설정합니다.
Meters
추적하고 청구할 metric을 정의합니다.
Event Ingestion
사용량 데이터가 발생하는 즉시 Dodo Payments로 전송합니다.
Subscriptions
reserved capacity 및 enterprise plan에 대한 recurring billing을 관리합니다.
Time Range Blueprint
duration helper를 사용한 초 단위 컴퓨팅 추적입니다.