LLM - 지연 시간 최적화

JunMyung Lee·2025년 1월 31일
0

LLM

목록 보기
6/7

OpenAI Docs

OpenAI에서 제안하는 지연 시간 최소화 방안을 소개합니다. LLM을 실제 서비스에 활용할 때, 다양한 프롬프트 요청이 필수적입니다. 각 프롬프트를 각각의 시간에 맞춰 기다린다면, 불필요하게 긴 대기 시간이 발생할 수 있습니다. 본 글에서는 이러한 지연 시간을 최소화할 수 있는 전략을 공유합니다.

지연시간 최적화를 위한 7가지 원칙

  • 토큰을 더 빠르게 처리하기
  • 더 적은 수의 토큰을 생성하기
  • 더 적은 수의 입력 토큰을 사용하기
  • 더 적은 요청을 하기
  • 병렬화하기
  • 사용자의 대기 시간을 줄이기
  • LLM을 기본값으로 설정하지 않기

토큰을 더 빠르게 처리하기

LLM의 추론 속도는 토큰을 처리하는 속도로 TPM(분 당 토큰)과 TPS(초 당 토큰)으로 측정됩니다. 이 속도에 주로 영향을 미치는 요소는 모델의 크기인데, 작고 효율적인 모델을 사용하는 것이 큰 모델보다 나을 수 있습니다.

  • 상세한 프롬프트 추가
  • 예제 사례 추가
  • 피드백 기반 미세 조정

더 적은 수의 토큰을 생성하기

LLM을 사용할 때, 생성되는 토큰은 지연 시간을 증가시킵니다. 출력되는 토큰을 50% 줄이는 것이 대기 시간을 약 50% 줄일 수 있습니다.

  • 자연어 생성 요청 시 더 간략히 요청하기
  • 모델 학습을 통해 짧은 응답 도출
  • 구조화된 출력 요청 시
    • 함수 이름 축약
    • 매개 변수 병합

더 적은 수의 입력 토큰을 사용하기

입력 토큰을 줄이면 대기 시간이 감소하지만, 이는 큰 요소는 아닙니다. 프롬프트를 50% 줄이면 대기 시간이 1~5% 정도 개선됩니다.

  • 입력 텍스트 필터링
    • 후보 문서 필터링
    • HTML 태그 정리
    • 텍스트 요약 처리

더 적은 요청을 하기

요청 하나마다 발생하는 대기 시간이 쌓이면, 시스템 전체의 지연을 야기합니다. 만약 LLM이 여러 순차적인 단계를 처리해야 한다면, 각 단계별로 별도 요청을 보내는 대신, 한 번의 프롬프트로 모두 처리할 수 있습니다.

  • 여러 작업을 하나의 프롬프트로 통합하여, 모델이 단일 응답으로 결과를 줄 수 있도록 합니다.
  • JSON 형식의 응답을 유도하여, 결과를 쉽게 파싱하고 적용할 수 있게 합니다.

병렬화하기

작업들이 순차적일 필요가 없다면 병렬로 처리해보세요. 이렇게 하면 전반적인 처리 속도를 높일 수 있습니다. 순차 처리가 필요하다면 투기적 실행을 통해 효율성을 높일 수 있습니다.

  • 1단계와 2단계를 동시에 시작합니다.
  • 1단계의 결과 확인 후, 필요하면 2단계에서의 요청을 취소하고 다시 시도합니다.

사용자의 대기 시간을 줄이기

사용자 경험을 개선하려면 대기 시간을 최소화해야 합니다. 실시간으로 피드백을 제공하면 사용자는 더 이상 답답함을 느끼지 않을 것입니다.

  • Streaming: 대기 시간을 1초 이하로 줄이는 가장 효과적인 방법입니다.
  • Chunking: 답변을 필터링이나 번역이 필요한 부분으로 나눠서 보여줍니다.
  • Show your steps: 진행 중인 단계를 사용자에게 시각적으로 제공하여 투명성을 높입니다.
  • Loading states: 진행률을 표시하여 사용자가 현재 상태를 이해할 수 있게 합니다.

LLM을 기본값으로 설정하지 않기

모든 작업에 LLM을 활용할 필요는 없습니다. 때로는 전통적인 방법이 더 효과적일 수 있습니다.

  • 하드코딩: 매우 특정한 출력인 경우는 LLM을 사용하지 않고 직접 코딩합니다.
  • 사전 계산: 한정된 입력의 경우 여러 응답을 미리 준비합니다.
  • UI 활용: 요약된 정보나 분석 결과는 직접 전하는 것이 더 효과적일 수 있습니다.
  • 전통적인 최적화 기법: 바이너리 검색이나 캐싱 같은 기법은 여전히 유용합니다.
profile
11년차 검색개발자 입니다. 여러 지식과 함께 실제 서비스를 운영 하면서 발생한 이슈에 대해서 정리하고 공유하고자 합니다.

0개의 댓글

관련 채용 정보