프로젝트

[Spring AI] 생성형 AI의 비용, 성능 최적화

밤린 2024. 9. 3. 14:15

"새싹 해커톤"과 "공개 sw 개발자 대회"에 장애인의 디지털 격차 해소를 위한 서비스를 개발했습니다. 그때 발생한 비용이슈와 해결방법에 대해 공유하고자 작성합니다. 최근 많은 기업들이 인공지능(AI) 기술을 도입하여 다양한 문제를 해결하고 있습니다. 그중에서도 텍스트 생성 AI 모델인 OpenAI의 GPT-4는 뛰어난 성능을 자랑하지만, 높은 API 호출 비용과 응답 속도 문제는 실무에서의 도입을 어렵게 만드는 요인 중 하나입니다. 저희 팀 또한 이러한 문제에 직면했습니다. 

문제 정의 및 아키텍처 설계

우선, 비용이 어느 부분에서 많이 발생하는 지 분석했습니다. 저희 팀이 AI모델을 사용하는 곳은 Embedding과 채팅을 텍스트를 생성하는 부분입니다. 아래 사진을 보면 어느 부분에서 많이 발생하는 지 확인할 수 있습니다.

사진을 보면 텍스트 생성에서 발생하는 비용이 Embedding을 하면서 발생하는 비용보다 훨씬 크다는 것을 확인해 볼 수 있습니다. 따라서 이런 텍스트 생성부분에서 비용을 줄일 수 있는 방법들을 생각했습니다. 그 결과 OpenAI의 GPT-4 API를 활용한 텍스트 생성 시스템에서 발생하는 비용과 성능 문제를 해결하기 위해 캐싱 전략을 적용했습니다.

기본 아키텍처는 GPT-4 모델을 통해 생성된 텍스트를 기반으로 응답을 제공하며, GPT-3.5-turbo 모델을 사용하여 임베딩과 유사도 계산을 수행하는 구조로 설계되었습니다.

 

저희 시스템의 구조에는 일정 시간마다 웹 크롤링을 통해 데이터를 수집하여 vectorDB에 넣는 부분도 있으나, 본 글은 생성형 AI의 최적화에 대해서만 기술하겠습니다.

아키텍처의 구성은 Spring AI를 활용하는 기본적인 RAG구성과 동일합니다. vectorDB에 데이터를 Embedding을 해서 넣고, 사용자가 질의를 했을 때, 프롬프트로 받은 질의와 vectorDB에서 유사한 chunk를 가져와서 chat Model에 넘기고 이를 받아 사용자에게 전달합니다.

이때, Cache DB는 사용자의 질의를 받아 유사도 검사를 하여 일정 유사도 이상의 질의라면 캐싱된 데이터를 반환함으로써 텍스트 생성에 들어가는 비용을 줄이고, 성능을 향상시켰습니다.

기본 아키텍처

  1. 정확한 응답을 위한 RAG(Relevant Answer Generation) 구축:
    • VectorDB 연동: 사용자의 질의에 대한 정확한 정보를 사전에 VectorDB에 저장하여, 실시간으로 관련 정보를 검색합니다.
    • ChatModel 연동: 검색된 정보를 GPT-4에 전달하여 더욱 정확한 응답을 생성합니다.
  2. 효율적인 응답을 위한 Cache DB 구축:
    • 응답 캐싱: GPT-4를 통해 생성된 응답을 Cache DB에 저장하여 동일하거나 유사한 요청에 대해 빠르게 응답할 수 있도록 합니다.
    • 유효기간 설정: 캐시된 데이터에 유효기간을 설정하여 최신 정보를 유지합니다.
    • 조회 및 갱신: 유사한 요청이 있을 경우, 캐시된 데이터를 우선 반환하고 필요 시 새로운 데이터를 생성하여 캐시를 갱신합니다.

캐싱 전략을 통한 비용 절감 분석

비용 산정 전제조건

  • 모델 사용:
    • GPT-4: 텍스트 생성 용도.
    • GPT-3.5-turbo: 임베딩 용도.
  • 쿼리 수: 한 달에 100,000건의 쿼리 처리 가정.
  • 쿼리 당 토큰 수: 평균 50 tokens 사용.
  • 캐싱 성공률: 30%의 쿼리가 캐싱된 데이터를 사용하게 된다고 가정.

API 비용 계산

  1. GPT-4 비용:
    • GPT-4의 비용은 1,000 tokens 당 $0.03
    • 쿼리 당 평균 tokens 수 50이라면, 쿼리 당 비용은 $0.0015.
    • 월간 GPT-4 비용: $150.
  2. GPT-3.5-turbo 임베딩 비용:
    • 임베딩 비용은 1,000 tokens 당 $0.002
    • 쿼리 당 임베딩 비용은 $0.0001.
    • 월간 임베딩 비용: $10.
  3. 캐싱 전략에 따른 비용 절감 효과:
    • 30%의 쿼리가 캐싱된 데이터를 사용하여 GPT-4 생성을 하지 않음.
    • 절감된 비용: $45.
    • 실제 GPT-4 사용 비용: $105.
    • 총 비용: $115.
    • 비용 절감율: 23.3%.

성능 향상 분석

캐싱 전략 도입으로 인한 성능 향상 효과를 다음과 같이 분석했습니다.

  1. 응답 속도 비교:
    • 캐싱 적용 전: 평균 응답 시간 8376ms.
    • 캐싱 적용 후: 평균 응답 시간 475ms.
  2. 응답 속도 향상:
    • 응답 시간이 약 94.33% 감소, 17.64배 이상의 성능 향상.

 

향후 발전 방향

Cache DB의 유효기간 및 캐시 전략

캐시 데이터의 유효기간이 너무 길거나 짧을 경우, 성능 최적화에 부정적인 영향을 줄 수 있습니다. 현재 프로젝트에는 캐시 유효기간을 설정해두지 않았으나, 차후 이에 대한 부분은 도메인에 맞춰 최적화해 나가려 합니다. 유효기간이 지나치게 짧으면 캐시 히트율이 낮아지고, 반대로 너무 길면 오래된 정보가 반환될 위험이 있기 때문에 이를 고려해서 유효기간을 설정해야 합니다.

 

따라서, 캐시 유효기간을 더 세밀하게 조정하고, 각 쿼리 유형이나 중요도에 따라 다른 유효기간을 설정할 수 있는 방법을 고려해 볼 수 있습니다. 또한, 특정 이벤트나 조건에 따라 캐시를 자동 갱신하는 것도 고려하고 있습니다.

비용 절감과 성능 최적화의 균형

지금은 유사도 설정을 올리거나 내리면서 주관적으로 판단하기에 유사한 문장에 해당하는 최적점을 찾아 유사도 검사를 진행했습니다. 하지만, 이러한 설정은 주관적인 판단이기에 사용자의 질의따라 정확도가 달라져 정확하지 않습니다. 또한, 캐싱 성공률을 적절하게 설정하여 실시간 생성 사이의 균형을 맞추는 것이 중요합니다. 이러한 점들을 고려하여 정확성, 비용 절감 그리고 성능 최적화의 균형을 유지하기 위해 고민하고 있습니다.