LiteLLM 예산 초기화 시각과 타임존

LiteLLM 예산 초기화 시각과 타임존 (Budget Reset Times and Timezones)

예산이 "언제 다시 차오르는지"를 예측 가능하게 만드는 건 운영에서 꽤 중요합니다. LiteLLM은 예산 초기화 시각을 달력 경계(자정, 월요일, 1일 등)에 맞춰 자연스럽게 정렬해 줍니다. 여기에 타임존과 하루 중 초기화 시각까지 지정할 수 있어요.

출처: 공식문서 - Budget Reset Times and Timezones

예산 초기화가 동작하는 방식

기본적으로 모든 예산은 설정된 타임존의 자정(00:00:00)에 초기화되며, 흔한 기간에 대해서는 특별 처리가 적용됩니다. 초기화가 일어나는 하루 중 시각은 budget_reset_time으로 설정할 수 있는데, 아래 표는 기본 자정 동작을 보여줍니다.

기간 초기화 동작
일일 (24h/1d) 매일 자정
주간 (7d) 월요일 자정
월간 (30d) 매월 1일 자정

하루보다 짧은 기간(예: 1h, 30m, 10s)은 현재 시각에서 그 간격만큼 앞으로 밀려나므로, 하루 중 시각은 적용되지 않습니다.

타임존 설정하기

모든 예산 초기화에 쓸 타임존을 설정 파일에 지정합니다.

litellm_settings:
  max_budget: 100 # (float) sets max budget as $100 USD
  budget_duration: 30d # (number)(s/m/h/d)
  timezone: "US/Eastern" # Any valid timezone string

이렇게 하면 예산 초기화가 UTC가 아니라 지정한 타임존의 자정에 일어납니다. 타임존을 지정하지 않으면 기본적으로 UTC가 사용됩니다.

하루 중 초기화 시각 설정하기 (budget_reset_time)

INFO: budget_reset_time은 v1.94.0 이후 릴리스에 도입됩니다.

기본적으로 일·주·월 예산은 자정에 초기화됩니다. budget_reset_time을 설정하면 설정된 타임존 기준으로 예산 리셋이 일어날 벽시계 시각을 고를 수 있습니다. 예를 들어 예산 롤오버를 업무 시작 시각이나 상위 프로바이더의 청구 경계에 맞추고 싶을 때 유용합니다.

litellm_settings:
  max_budget: 100 # (float) sets max budget as $100 USD
  budget_duration: 1d # (number)(s/m/h/d)
  timezone: "US/Eastern" # Any valid timezone string
  budget_reset_time: "09:00" # (string) "HH:MM" or "HH:MM:SS", 24-hour clock

위 설정을 쓰면 일일 예산은 매일 09:00 US/Eastern에, 주간 예산은 월요일 09:00에, 월간 예산은 1일 09:00에 초기화됩니다. 값은 24시간제 "HH:MM" 또는 "HH:MM:SS" 문자열이며 반드시 따옴표로 감싸야 합니다. 생략하면 초기화는 자정에 유지됩니다. 잘못된 값은 조용히 자정으로 떨어지는 대신 시작 시 config 로드가 실패하므로, 오타가 즉시 드러납니다. 하루보다 짧은 기간은 하루 중 시각이 의미 없으므로 budget_reset_time을 무시합니다.

지원 타임존

Python의 zoneinfo 모듈 기반으로, 유효한 IANA 타임존 문자열을 모두 지원합니다. DST(서머타임) 전환은 자동으로 처리됩니다.

흔히 쓰는 값:

타임존 설명
UTC 협정 세계시
US/Eastern 미국 동부
US/Pacific 미국 태평양
Europe/London 영국
Asia/Kolkata 인도 표준시 (IST)
Asia/Bangkok 인도차이나 표준시 (ICT)
Asia/Tokyo 일본 표준시
Australia/Sydney 호주 동부

더 알아보기