GPTCache와 Milvus로 GPT-4를 준비하고, 멀티모달 AI 비용을 크게 절감하세요
소개
세계가 점점 더 디지털화됨에 따라 방대한 양의 데이터를 이해하고 분석할 수 있는 인공지능(AI) 솔루션에 대한 수요가 증가하고 있습니다. GPT-3.5가 구동하는 OpenAI의 ChatGPT는 이미 자연어 처리(NLP) 분야에 혁신을 일으켰으며 대규모 언어 모델(LLM)에 대한 상당한 관심을 불러일으켰습니다. LLM의 도입이 다양한 산업 전반에서 계속 주목을 받고 성장함에 따라, 멀티모달 데이터를 처리할 수 있는 더 발전된 대규모 AI 모델에 대한 필요성도 커지고 있습니다. 기술 업계는 시각적 입력을 가능하게 하여 훨씬 더 강력하고 다재다능해질 것으로 기대되는 GPT-4에 대한 기대감으로 이미 들썩이고 있습니다. GPT-4를 이미지 생성 모델과 협업시키는 것 또한 엄청난 잠재력을 지니고 있습니다. 다가오는 이 혁명에 대비하기 위해 Zilliz는 Milvus와 통합된 GPTCache를 선보였습니다. 이는 기업이 멀티모달 AI에서 막대한 비용을 절감할 수 있도록 돕는 판도를 바꾸는 솔루션입니다.
멀티모달 AI는 음성, 시각, 언어, 제스처와 같은 여러 지각 및 의사소통 방식을 통합하여 더 지능적이고 효과적인 AI 시스템을 만드는 것을 의미합니다. 이 접근 방식은 AI 모델이 인간의 상호작용과 환경을 더 잘 이해하고 해석하며, 더 정확하고 미묘한 응답을 생성할 수 있게 해줍니다. 멀티모달 AI는 의료, 교육, 엔터테인먼트, 교통 등 다양한 분야에 적용됩니다. 멀티모달 AI 시스템의 몇 가지 예로는 Siri와 Alexa 같은 가상 비서, 자율주행차, 이미지와 환자 데이터를 함께 분석하는 의료 진단 도구가 있습니다.
이 글에서는 GPTCache의 세부 사항을 자세히 살펴보고, 멀티모달 시나리오에서 더 원활하고 강력한 사용자 경험을 제공하기 위해 Milvus와 함께 어떻게 작동하는지 알아보겠습니다.
멀티모달 AI를 위한 시맨틱 캐시
대부분의 경우 멀티모달 AI 애플리케이션에서 원하는 결과를 얻으려면 대규모 모델을 사용해야 합니다. 그러나 이러한 모델이나 호출을 처리하는 데는 시간이 많이 걸리고 비용이 많이 들 수 있습니다. 바로 이때 GPTCache가 유용합니다. 이는 대규모 모델에 요청을 보내기 전에 시스템이 먼저 캐시에서 잠재적인 답변을 검색할 수 있게 해줍니다. GPTCache는 전체 프로세스의 속도를 높이고 대규모 모델 운영 비용을 줄이는 데 도움이 됩니다.
GPTCache로 시맨틱 캐시 살펴보기
시맨틱 캐시는 개념의 지식 표현을 저장하고 검색합니다. 이는 의미 정보나 지식을 구조화된 방식으로 저장하고 검색하도록 설계되었습니다. 따라서 AI 시스템은 쿼리나 요청을 더 잘 이해하고 응답할 수 있습니다. 시맨틱 캐시의 기본 아이디어는 자주 묻는 질문이나 쿼리에 대해 미리 계산된 답변을 제공함으로써 관련 정보에 더 빠르게 접근할 수 있게 하는 것이며, 이는 AI 애플리케이션의 성능과 효율성을 향상하는 데 도움이 될 수 있습니다.
GPTCache는 대규모 모델과 관련된 API 호출의 응답 시간을 최적화하고 비용을 절감하기 위해 개발된 프로젝트입니다. 우리는 모델 응답을 저장하고 Milvus의 강력한 기능을 활용하는 시맨틱 캐시를 만들기 위해 GPTcache를 설계했습니다. 이 기술은 Milvus를 기반으로 구축되었으며, 대규모 모델 어댑터, 컨텍스트 매니저, 임베딩 생성기, 캐시 매니저, 유사도 평가기, 전/후처리기와 같은 여러 핵심 구성 요소를 통합합니다.
GPTCache 아키텍처
어댑터는 GPTCache가 어떤 대규모 모델과도 원활하게 작동하도록 보장합니다. 컨텍스트 매니저는 더 높은 유연성을 제공하여 시스템이 다양한 단계에서 여러 데이터를 처리할 수 있게 합니다. 임베딩 생성기는 데이터를 벡터 저장 및 의미 검색을 위한 임베딩으로 변환합니다. 모든 벡터와 기타 유용한 데이터는 캐시에 저장됩니다. Milvus는 대규모 데이터 저장을 지원할 뿐만 아니라 유사도 검색의 속도를 높이고 성능을 개선하는 데도 도움이 됩니다. 마지막으로, 평가기는 캐시에서 검색된 잠재적 답변이 사용자 요구에 충분히 적합한지 평가하는 역할을 합니다. 다음 코드 스니펫은 GPTCache에서 다양한 모듈로 캐시를 초기화하는 방법을 보여줍니다.
from gptcache import cache
from gptcache.manager import get_data_manager, CacheBase, VectorBase, ObjectBase
from gptcache.processor.pre import get_prompt
from gptcache.processor.post import temperature_softmax
from gptcache.embedding import Onnx
from gptcache.similarity_evaluation.distance import SearchDistanceEvaluation
onnx = Onnx()
cache_base = CacheBase('sqlite')
vector_base = VectorBase(
'milvus',
host='localhost',
port='19530',
dimension=onnx.dimension
)
object_base = ObjectBase('local', path='./objects')
data_manager = get_data_manager(cache_base, vector_base, object_base)
cache.init(
pre_embedding_func=get_prompt, # Pre-process
embedding_func=onnx.to_embeddings, # Embedding generator
data_manager=data_manager, # Cache manager
similarity_evaluation=SearchDistanceEvaluation() # Evaluator
post_process_messages_func=temperature_softmax # Post-process
)
벡터 데이터베이스에 의미 데이터 캐싱하기
GPTCache와 같은 의미 캐시의 핵심 요소 중 하나는 벡터 데이터베이스입니다. 구체적으로, GPTCache의 임베딩 생성기는 데이터를 벡터 저장 및 의미 검색을 위한 임베딩으로 변환합니다. Milvus와 같은 벡터 데이터베이스에 벡터를 저장하면 대규모 데이터 저장을 지원할 뿐만 아니라 유사도 검색의 속도를 높이고 성능을 개선하는 데도 도움이 됩니다. 이를 통해 캐시에서 잠재적 답변을 더 효율적으로 검색할 수 있습니다.
사전 학습된 멀티모달 모델은 다양한 유형의 입력을 표현하기 위한 벡터 공간을 학습합니다. 그 결과, 다른 모달리티가 제공하는 상호 보완적인 정보를 포착할 수 있습니다. 이 패러다임은 시스템이 다양한 모달리티의 데이터를 통합된 방식으로 해석할 수 있게 하여, 의미 검색을 통해 더 정확하고 효율적인 처리를 가능하게 합니다. 벡터 데이터베이스는 벡터 유사도 알고리즘을 통해 멀티모달 입력에 대한 의미 검색을 가능하게 합니다. 데이터를 행과 열에 저장하는 기존 데이터베이스와 달리, 벡터 데이터베이스는 비정형 데이터를 벡터로 저장하고 검색합니다. 벡터 데이터베이스는 다양한 데이터 유형을 벡터로 처리하는 멀티모달 AI 애플리케이션에서 흔히 사용되는 고차원 데이터를 관리합니다.
Milvus 사용의 이점
Milvus 생태계는 데이터베이스 모니터링, 데이터 마이그레이션, 데이터 크기 추정에 유용한 도구를 제공합니다. Milvus를 더 간단하게 구현하고 유지 관리하기 위해 클라우드 네이티브 서비스인 Zilliz Cloud가 있습니다. Milvus와 GPTCache의 조합은 멀티모달 AI 애플리케이션의 기능과 성능을 향상시키는 강력한 솔루션을 제공합니다. 대량의 데이터, 복잡한 모델, 다양한 데이터 유형 중 무엇을 다루고 있든, 이 접근 방식은 데이터 처리를 간소화하고 결과의 정확도와 속도를 개선하는 데 도움이 될 수 있습니다. 멀티모달 AI에서 Milvus를 GPTCache와 통합하면 여러 강력한 이점을 얻을 수 있습니다. 가장 주목할 만한 몇 가지는 다음과 같습니다.
- 효율적인 데이터 저장 및 검색
Milvus는 대규모 벡터 데이터를 저장하고 검색하기 위해 특별히 설계되었습니다. 또한 벡터는 딥러닝 모델이 사용하는 "공통 언어"입니다. Milvus는 벡터를 쉽게 처리하여 멀티모달 데이터에 빠르고 효율적으로 접근할 수 있게 합니다. Milvus를 사용하면 더 빠른 응답 시간과 더 나은 사용자 경험을 얻을 수 있습니다.
- 향상된 유연성과 확장성
AI 애플리케이션이 처리하는 데이터의 양이 증가함에 따라 확장 가능한 솔루션에 대한 필요성도 커집니다. Milvus를 통합하면 시스템은 증가하는 수요를 충족하기 위해 원활하게 확장될 수 있습니다. 또한 Milvus는 멀티모달 AI의 전반적인 유연성과 기능을 개선할 수 있는 광범위한 기능을 제공합니다.
- 향상된 정확도와 성능
Milvus가 제공하는 데이터의 통합 저장 및 검색 덕분에, 멀티모달 AI 애플리케이션은 다양한 데이터 유형의 입력을 더 빠르고 정확하게 처리할 수 있습니다. 이는 더 정확한 결과와 전반적인 시스템 성능 향상으로 이어질 수 있습니다.
- 사용 편의성
Milvus는 pip를 통한 빠른 시작을 포함하여 로컬 배포를 위한 다양한 옵션을 제공합니다. 또한 Zilliz Cloud를 통해 클라우드 서비스를 제공하여 사용자가 Milvus 인스턴스를 빠르게 시작하고 확장할 수 있게 합니다. Milvus는 Python, Java, Go(추가 개발 중)를 포함한 여러 언어 SDK도 지원하므로 기존 애플리케이션에 쉽게 통합할 수 있습니다. 또한 Milvus는 서버와 쉽게 상호 작용할 수 있도록 Restful API를 제공합니다.
- 인기와 신뢰성
Milvus는 높은 확장성과 성능으로 인해 엄청난 인기를 얻었습니다. 1,000개 이상의 엔터프라이즈 사용자와 활발한 오픈 소스 커뮤니티를 보유한 Milvus는 방대한 양의 정형 및 비정형 데이터를 관리하기 위한 신뢰할 수 있는 솔루션으로 자리매김했습니다. LF AI & Data Foundation 졸업 프로젝트로서 Milvus는 기관의 지원도 받아, 효율적이고 신뢰할 수 있는 데이터 관리 솔루션을 찾는 조직을 위한 대표적인 데이터베이스로서의 입지를 더욱 공고히 하고 있습니다.
출력 다양성 증가를 위한 캐시 제약 극복
다양한 출력을 생성할 수 있는 멀티모달 AI는 광범위한 사용자의 요구를 충족할 수 있는 포괄적이고 효과적인 솔루션을 제공하는 데 필수적입니다. 출력의 다양성은 사용자 경험을 향상시키고 AI 시스템의 전반적인 기능을 개선하는 데 도움이 됩니다. 또한 출력 다양성은 가상 비서, 챗봇, 음성 인식 시스템과 같이 광범위한 출력 유형이 필요한 애플리케이션에 매우 중요합니다.
시맨틱 캐시는 데이터를 검색하는 효율적인 방법이지만, 사용자 응답의 다양성을 제한할 수 있습니다. 이는 대형 모델에서 새로운 답변을 생성하는 것보다 캐시된 답변을 우선시합니다. 즉, 시스템은 이전에 캐시된 정보에 크게 의존하여 동일하거나 유사한 출력을 계속 생성할 수 있습니다. 그 결과 출력이 반복적이 되고 새로움이 부족해질 수 있으며, 이는 다양하고 창의적인 응답이 필요한 상황에서 문제가 될 수 있습니다.
이 문제를 해결하기 위해 머신 러닝에서 temperature는 유용한 도구가 되었습니다. Temperature는 응답 콘텐츠의 무작위성 또는 다양성을 결정하며, 더 높은 temperature 값은 가장 가능성이 높은 출력 너머의 가능성을 더 많이 탐색할 수 있게 합니다. 이는 창의적이고 예상치 못한 출력으로 이어질 수 있으며, 더 넓은 범위의 선호도와 스타일을 수용합니다. 반면, 더 낮은 temperature 값은 더 집중적이고 결정론적인 응답을 생성하여 정확하고 일관된 결과를 만들어냅니다. temperature 조정을 통해 캐시 제약을 극복함으로써, 멀티모달 AI 애플리케이션은 더 광범위한 사용자의 요구를 충족하는 더 포괄적이고 효과적인 솔루션을 생성할 수 있습니다.
GPTCache의 Temperature
멀티모달 AI에서 적절한 temperature 값을 선택하는 것은 무작위성과 일관성의 균형을 맞추고 사용자 또는 애플리케이션의 특정 요구와 선호에 부합하도록 하는 데 필수적입니다. GPTCache의 temperature는 주로 머신 러닝에서의 temperature라는 일반적인 개념을 유지합니다. 이는 워크플로에서 3가지 옵션을 통해 구현됩니다:
- 평가 후 선택
모델 로짓에 대한 Softmax 활성화는 딥러닝에서 temperature를 포함하는 일반적인 기법입니다. GPTCache도 마찬가지로 softmax 함수를 사용하여 후보 답변의 유사도 점수를 확률 목록으로 변환합니다. 점수가 높을수록 최종 답변으로 선택될 가능성이 더 큽니다. Temperature는 가능성 분포의 선명도를 제어합니다. 이는 점수가 더 높은 답변이 선택될 가능성이 더 높다는 의미입니다. GPTCache의 후처리기 temperature_softmax는 이 알고리즘을 따라 점수 또는 신뢰 수준이 주어진 후보 목록에서 항목을 선택합니다.
from gptcache.processor.post import temperature_softmax
messages = ["message 1", "message 2", "message 3"]
scores = [0.9, 0.5, 0.1]
answer = temperature_softmax(messages, scores, temperature=0.5)
- 캐시 없이 모델 호출
캐시를 검색하지 않고 대규모 모델을 직접 호출할 가능성을 적용합니다. 이 가능성은 temperature의 영향을 받습니다. 더 높은 temperature는 캐시 검색을 건너뛸 가능성이 더 높다는 의미이고, 더 낮은 temperature는 캐시 검색을 건너뛸 가능성을 감소시킵니다. 다음은 temperatuer_softmax를 사용하여 temperature로 캐시 건너뛰기 또는 확인 결정을 제어하는 예시입니다.
from gptcache.processor.post import temperature_softmax
def skip_cache(temperature):
if 0 < temperature < 2:
cache_skip_options = [True, False]
prob_cache_skip = [0, 1]
cache_skip = temperature_softmax(
messages=cache_skip_options,
scores=prob_cache_skip,
temperature=temperature)
)
elif temperature >= 2:
cache_skip = True
else: # temperature <= 0
cache_skip = False
return cache_skip
- 캐시의 결과 편집
작은 모델이나 일부 도구를 사용하여 답변을 편집하는 이 옵션에는 출력의 데이터 타입을 변환할 수 있는 기능을 가진 편집기가 필요합니다.
멀티모달 애플리케이션
더 많은 사람들이 ChatGPT에 만족하고 GPT-3.5에만 의존하는 대신 GPT-4의 도움을 찾고 있습니다. 또한 현재 추세는 순수 LLM에서 멀티모달 애플리케이션으로 이동하고 있습니다. 멀티모달 AI는 주로 텍스트, 시각 자료, 오디오를 포함하는 여러 양식의 데이터와 상호작용합니다. AI 기술이 발전함에 따라 GPTCache와 Milvus는 지능형 멀티모달 시스템을 구축하기 위한 흥미롭고 혁신적인 접근 방식을 나타냅니다. 다음 예시는 GPTCache와 Milvus가 멀티모달 상황에서 어떻게 구현되었는지 보여줍니다.
1. 텍스트-이미지: 이미지 생성
AI를 통한 이미지 생성은 최근 몇 년 동안 뜨거운 주제였습니다. 이는 사전 학습된 멀티모달 텍스트-이미지 모델을 사용하여 텍스트 설명이나 지시에 기반해 이미지를 생성하는 것을 의미합니다. 이 기술은 최근 몇 년 동안 크게 발전했습니다. 우리는 인간이 촬영한 사진과 구별하기 어려운 설득력 있는 이미지를 만들어낼 수 있는 이미지 생성 모델과 애플리케이션에서 놀라운 발전을 보았습니다.
Prompt | a white siamese cat
이미지 생성 과정은 텍스트 프롬프트를 입력으로 사용하는 것을 포함합니다. GPTCache를 사용하면 프롬프트에 대한 의미론적 검색 기능으로 이미지 생성이 더 쉬워집니다. 시스템은 Milvus를 사용하여 텍스트 임베딩을 비교하고 캐시에 저장된 유사한 프롬프트를 감지합니다. 그런 다음 캐시에서 해당 이미지를 검색합니다. 캐시에 만족스러운 결과가 없으면 GPTCache가 이미지 생성 모델을 호출합니다. 모델의 이미지 및 텍스트 출력은 GPTCache에 의해 저장되어 데이터베이스를 풍부하게 합니다. 임베딩 생성기는 각 텍스트 프롬프트를 벡터로 변환한 다음, 저장 및 검색을 용이하게 하기 위해 Milvus에 저장합니다.
아래 예제 코드는 GPTCache에 맞게 조정된 OpenAI 서비스를 호출하여 텍스트 "a whilte siamese cat."이 주어졌을 때 이미지를 생성합니다. 요청은 temperature와 top_k 값을 통해 매번 생성되는 이미지의 다양성을 조절합니다. temperature를 기본값인 0.0에서 더 높은 값인 0.8로 변경하면, 동일한 텍스트가 주어져도 요청이 매번 다른 이미지를 얻을 가능성이 더 높아집니다.
from gptcache.adapter import openai
cache.set_openai_key()
response = openai.Image.create(
prompt="a white siamese cat",
temperature=0.8, # optional, defaults to 0.0.
top_k=10 # optional, defaults to 5 if temperature>0.0 else 1.
)
GPTCache는 현재 OpenAI Image Creation, Stability.AI API, Stable Diffusions at HuggingFace를 포함하여 대부분의 인기 있는 이미지 생성 모델 또는 서비스에 대한 내장 어댑터를 제공합니다. bootcamp는 OpenAI를 사용한 Image Generation 튜토리얼을 제공합니다.
2. 이미지-텍스트: 이미지 캡셔닝
이미지 캡셔닝은 일반적으로 사전 학습된 멀티모달 이미지-텍스트 모델을 사용하여 이미지에 대한 텍스트 설명을 생성합니다. 이 기술은 컴퓨터가 이미지의 내용을 이해하고 사람들이 해석할 수 있도록 자연어로 설명하게 해줍니다. 이미지 캡셔닝은 챗봇에 통합함으로써 훨씬 더 견고한 솔루션을 제공할 수도 있습니다. 이는 제품의 시각적 측면과 대화형 측면 사이의 원활한 전환을 가능하게 하여 전반적인 사용자 경험을 향상시킵니다.
침대 위에 누워 있는 큰 갈색 개
이미지 캡셔닝과 관련하여, GPTCache는 먼저 이미지 임베딩으로 측정되는 입력 이미지와 유사한 이미지를 찾기 위해 캐시를 스캔합니다. 그런 다음 반환되는 캡션의 품질을 보장하기 위해, 평가자가 입력 이미지와 캐시에서 검색된 이미지 또는 캡션 간의 관련성 또는 유사성에 대한 추가 평가를 수행합니다. 예를 들어 ResNets 또는 ViTs와 같은 사전 학습된 비주얼 모델은 이미지 유사성을 평가할 수 있습니다. 또한 CLIP과 같은 텍스트-이미지 모델을 적용하여 이미지와 텍스트 간의 유사성을 측정할 수 있습니다. 캐시에 일치하는 항목이 없으면, 시스템은 주어진 이미지에 대한 캡션을 생성하기 위해 멀티모달 모델을 활용합니다. 그 후 GPTCache는 이미지와 해당 캡션을 모두 저장하며, 이미지와 캡션은 Milvus에 벡터로 저장됩니다.
GPTCache는 이미 Replicate BLIP 및 miniGPT-4와 같은 인기 있는 이미지 캡셔닝 서비스에 적응했습니다. 더 많은 이미지-텍스트 서비스와 로컬 호스팅 멀티모달 모델을 지원할 계획입니다.
3. 오디오-텍스트: 음성 전사
오디오-텍스트 변환은 음성 전사라고도 하며, 녹음된 대화, 회의 또는 강의와 같은 오디오 콘텐츠를 작성된 텍스트로 변환합니다. 이 기술을 통해 청취에 어려움이 있거나 콘텐츠를 듣기보다 읽는 것을 선호하는 개인이 정보를 더 쉽게 접근하고 이해할 수 있습니다. ChatGPT와 같은 챗봇에 전사 내용을 전달하는 것 외에도, 사용자는 전사 내용을 활용하여 더 많은 것을 탐색할 수 있습니다.
오디오 파일 | 버번 한 잔, 스카치 한 잔, 계산서 하나
오디오 파일은 일반적으로 음성 전사의 초기 입력으로 사용됩니다. GPTCache를 활성화하면 첫 번째 단계는 각 입력에 대한 오디오 임베딩을 생성하는 것입니다. 그런 다음 시스템은 Milvus를 사용하여 유사도 검색을 수행하고, 캐시에서 잠재적인 전사 내용을 검색합니다. 마지막으로, 평가 후 해당 답변을 찾을 수 없을 때 자동 음성 인식(ASR) 모델 또는 서비스가 호출됩니다. ASR 모델이 생성한 모든 오디오와 전사 내용의 쌍은 캐시에 저장됩니다. Milvus를 사용하여 오디오 데이터를 벡터로 저장하면 캐시에서 유사한 오디오를 매칭할 수 있습니다. 또한 오디오 데이터의 양이 증가함에 따라 확장성도 확보할 수 있습니다.
GPTCache와 Milvus는 여러 ASR 호출의 필요성을 크게 줄여 속도와 효율성을 향상시킵니다. Speech to Text의 GPTCache 부트캠프는 GPTCache를 활성화하고 OpenAI Transcriptions에 Milvus를 적용하는 예제 튜토리얼을 제공합니다.
결론
멀티모달 AI 모델의 사용은 점점 인기를 얻고 있으며, 복잡한 데이터에 대한 보다 포괄적인 분석과 이해를 가능하게 합니다. 비정형 데이터를 지원하는 Milvus는 멀티모달 애플리케이션을 구축하고 확장하기 위한 이상적인 솔루션입니다. 또한 세션 관리, 컨텍스트 인식, 서버 지원과 같은 더 많은 기능을 GPTCache에 추가하면 멀티모달 AI의 역량이 더욱 향상됩니다. 이러한 발전으로 멀티모달 AI 모델은 더 많은 잠재적 사용 사례와 시나리오를 갖게 되었습니다. 멀티모달 AI 애플리케이션에 대한 더 많은 인사이트를 얻으려면 GPTCache Bootcamp를 계속 주목해 주세요.
계속 읽기

From Vector Database to Vector Lakebase
Zilliz offers a fully managed Vector Lakebase powered by Milvus, unifying real-time vector search, lake-scale discovery, and Al data operations.

Creating Collections in Zilliz Cloud Just Got Way Easier
We've enhanced the entire collection creation experience to bring advanced capabilities directly into the interface, making it faster and easier to build production-ready schemas without switching tools.

Similarity Metrics for Vector Search
Exploring five similarity metrics for vector search: L2 or Euclidean distance, cosine distance, inner product, and hamming distance.



