MongoDB 및 Fireworks AI로 AI 최적화: 더 빠른 추론, 비용 절감, 효율적인 RAG 애플리케이션이 가능해집니다.
산업: 금융 서비스
제품: MongoDB Atlas
파트너: Fireworks AI, LangChain
솔루션 개요
오늘날의 AI 기반 환경에서, 높은 성능을 제공하는 것은 전투의 절반에 불과합니다. 진정한 성공은 성능과 총소유비용(TCO) 간의 완벽한 균형을 이루는 데 있습니다. 엔터프라이즈는 지속적으로 가격 대비 성능 비율을 최적화하는 과제에 직면해 있으며, 속도나 효율성의 모든 향상이 실질적인 비용 절감으로 이어지도록 보장해야 합니다. MongoDB와 Fireworks.AI의 전략적 파트너십에 참여하세요. 이 강력한 조합은 조직이 리소스를 절약하면서 성능을 향상시킬 수 있도록 합니다. MongoDB의 강력한 데이터 관리 기능과 Fireworks.AI의 모델 최적화 도구를 원활하게 결합한 이 협업은 지연 시간과 처리량을 향상시킬 뿐만 아니라 운영 비용을 효과적으로 최소화합니다.
이 글에서 다루는 주제는 다음과 같습니다.
MongoDB와 Fireworks.AI를 활용하여 성능을 향상시키고 TCO를 줄이는 방법.
생성형 AI 모델과 함께 MongoDB Atlas를 활용할 때 나중에 검색 증강 생성(RAG)을 최적화하는 데 도움이 되는 쿼리와 응답을 캐싱하기 위한 전략입니다.
대규모 언어 모델(LLM)을 기반으로 소규모 언어 모델(SLM)을 미세 조정하여 비슷한 품질의 응답을 유지하면서 더 빠른 성능을 달성합니다.
LLM에 대한 모델 미세 조정, 추론 속도 가속화, 하드웨어 요구 사항 감소를 위해 Fireworks.AI 플랫폼에서 사용되는 기술입니다.
신용카드 추천 시스템을 다룬 사례 연구로, 지연 시간, 메모리 사용률, 비용 효율성에서 측정 가능한 개선을 보여줍니다.
프로덕션 환경에서 이러한 솔루션을 배포하고 확장하기 위한 권장사항입니다.
독자는 이 문서를 읽은 후 실용적인 예시와 성능 지표를 통해 비용을 절감하면서 AI 성능을 향상시키는 포괄적이고 실행 가능한 전략을 습득할 수 있습니다.
MongoDB와 Fireworks AI의 위력
MongoDB는 유연한 스키마, 효율적인 인덱싱, 분산된 아키텍처로 유명하며, 조직이 필요에 따라 데이터 인프라를 확장할 수 있게 합니다. Fireworks.AI의 최첨단 모델 튜닝 역량과 결합하면, 기업들은 재정적 부담 없이 뛰어난 효율성과 성능 향상을 이룰 수 있습니다.
FireOptimizer 및 FireAttention 소개: 핵심 구성 요소
이 최적화된 접근 방식의 중심에는 FireOptimizer 프레임워크가 있으며, 이는 MongoDB의 유연하고 고성능 데이터베이스를 Fireworks.AI의 모델 튜닝 프로세스와 통합합니다.
이 프레임워크는 FireAttention과 같은 솔루션을 통해 배치 추론을 가속화합니다. FireAttention은 기존 하드웨어를 활용하여 요청 처리 성능을 향상시키고 리소스 활용을 최적화하는 방법입니다. 또한, Parameter-Efficient Fine-Tuning(PEFT)은 LoRA 및 QLoRA와 같은 방법을 포함하여 추적 데이터 또는 라벨 데이터를 사용하여 모델을 특수화된 작업에 효율적으로 미세 조정함으로써 이동성을 향상시키고 계산 자원을 절감합니다.
그림 1. FireOptimizer 아키텍처는 적응형 최적화와 고품질 추론을 위한 것입니다.
달성할 수 있는 주요 이점은 다음과 같습니다.
더 빠른 추론: FireOptimizer의 적응형 추측 실행을 통해 다양한 모델의 프로덕션 워크로드에서 지연 시간이 최대 3배 개선되어 애플리케이션이 항상 높은 응답성을 유지합니다.
번거로움 없는 최적화: FireOptimizer는 복잡한 최적화 과정을 자동화하여 사용자가 애플리케이션 개발에 집중할 수 있도록 하고, 나머지는 저희가 처리합니다.
FireOptimizer 프레임워크를 더 깊이 탐구해 보겠습니다.
FireOptimizer: 적응을 통해 더 스마트한 토큰 생성
LLM은 일반적으로 한 단어(또는 토큰)씩 출력을 생성하며, 이는 특히 긴 출력의 경우 응답 속도를 느리게 할 수 있습니다. 이 과정을 가속화하기 위해 '추론 디코딩'이라는 기술이 사용됩니다. 이것은 초안 모델이라고 불리는 더 작고 빠른 모델을 포함하며, 주요 LLM이 처리 중일 때 미리 여러 가능한 단어나 구문을 빠르게 생성합니다. 주요 LLM은 이러한 추측을 평가한 후 정확한 것만 보관합니다. 이 기술은 일반적으로 추측 실행 또는 디코딩이라고 합니다.
이 전통적인 접근 방식의 한계는 대부분의 초안 모델이 일반적인 데이터(예: 공개 대화)로 학습된다는 점에 있습니다. 이 접근 방식은 일반적인 작업에는 효과적이지만, 코딩이나 금융 분석과 같은 전문적인 시나리오에서는 정확도 또는 '적중률'이 크게 감소합니다.
반면, Fireworks AI는 적응형 추측 실행을 통해 이 접근 방식을 강화합니다. 모든 상황에 맞는 단일 초안 모델을 사용하는 대신, 특정 도메인이나 사용자 프로필에 맞게 사용자 지정된 모델을 사용합니다. 이 적응형 접근 방식을 사용하여 도메인별 특성에 따라 예측을 최적화합니다. 이 방법은 정확성을 향상시키고, 코드 생성 작업에서 적중률을 29%에서 76%로 증가시키며, 추론 비용을 줄여 지연 시간을 최대 3배까지 개선합니다.
독점 LLM 서비스 스택: 긴 컨텍스트 워크로드 처리 마스터하기
문서 분석이나 코드 완성과 같은 애플리케이션에서 긴 프롬프트(8K-32K 토큰)를 처리하는 것은 중요하지만, 종종 시스템을 매우 느리게 만듭니다. Fireworks AI의 FireAttention V2는 이 문제를 해결하여 장기 컨텍스트 작업에 대해 12배 더 빠른 처리를 제공합니다.
작동 방식:
최적화된 주의력 확장: 긴 입력을 처리할 때 계산 오버헤드를 줄입니다.
다중 호스트 배포: GPU 전체에 워크로드를 효율적으로 분산합니다.
고급 커널: 더 빠른 실행을 위해 작업을 간소화합니다.
FireAttention V3를 통해 Fireworks AI는 AMD의 MI300 GPU에 대한 리드를 확장하여 NVIDIA에 비해 비용 효율적인 대안을 제공합니다. 주요 성과 하이라이트는 다음과 같습니다.
1.4배~1.8배 더 높은 처리량: LLaMA 8B 및 70B와 같은 모델의 경우 표준 설정과 비교한 결과입니다.
최대 5.5배 속도 향상: 저지연 시간 시나리오에서 AMD의 자체 vLLM보다 성능이 뛰어납니다.
이 도약은 재설계된 어텐션 커널과 더 스마트한 메모리 사용과 같은 아키텍처 조정에서 비롯되었으며, AMD GPU가 이제 LLM 추론에서 강력한 경쟁자로 자리 잡았음을 입증합니다.
위의 역량을 통해 FireAttention은 긴 컨텍스트 입력(8K–32K 토큰)을 효율적으로 처리하여 문서 분석이나 다중 턴 대화와 같은 도메인별 작업에 중요한 소규모 언어 모델의 미세 조정을 크게 향상시킬 수 있습니다. 최적화된 주의 메커니즘은 계산 오버헤드를 줄여 훈련 주기를 단축하고 더 큰 배치 크기를 허용합니다. 다중 호스트 GPU 배포 및 고급 어텐션 커널 지원을 통해 하드웨어 전반의 워크로드를 간소화하여 처리량을 개선하고 지연 시간을 줄이며, 미세 조정을 더 빠르고 저렴하게 수행할 수 있습니다.
규모의 효율성: 적응형 리소스 최적화
Fireworks AI의 최적화는 적응형 추측을 넘어 확장됩니다. 처리량과 비용 효율성을 극대화하는 세 가지 중요한 기술은 다음과 같습니다.
적응형 캐싱: 빈번한 계산(예: 반복적인 API 호출)을 재사용하여 중복 작업을 건너뛰고, 트래픽이 많은 워크로드의 지연 시간을 30~50% 줄입니다.
사용자 정의 가능한 양자화: 4-/8-비트 정밀도와 모델 품질을 조화롭게 유지하여 배치 처리와 같은 작업에서 >99%의 정확도를 유지하면서 속도를 두 배로 높입니다.
분산된 서빙: 워크로드 유형에 맞춰 하드웨어 할당을 조정합니다. 예를 들어 여러 경량 모델 복사본(예: 8 GPU → 8 병렬 인스턴스)을 호스팅하거나, 복잡한 작업을 위해 대규모 모델(예: LLaMA 70B)을 GPU에 걸쳐 샤드합니다.
솔루션 구축
더 작고 효율적인 모델을 위한 미세 조정 전략: MongoDB를 활용한 실용적인 크레딧 애플리케이션 데모
더 작고 효율성이 높은 모델은 미세 조정에 대한 독특한 기회를 제공하여, 리소스 효율성을 유지하면서도 전문적인 적응을 가능하게 합니다. 클라우드, 온디바이스, 전용 하드웨어와 같은 다양한 매체에 맞게 미세 조정되거나 최적화된 SLM을 만드는 것이 매우 경쟁이 치열해짐에 따라 이 분야에서는 지속적인 연구가 진행되어 왔습니다.
이러한 미세 조정 기법은 다음과 같이 분류할 수 있습니다.
부가적인 매개변수 효율적 미세 조정(PEFT)
이 카테고리에는 기존 사전 훈련된 모델의 원래 가중치를 변경하지 않고 추가 학습 가능한 매개변수를 도입하는 접근 방식이 포함됩니다.
어댑터: 이 방법은 사전 훈련된 모델의 레이어 사이에 작은 훈련 가능한 레이어인 어댑터 모듈을 삽입하는 것을 포함합니다. 이 어댑터는 작업별 변환을 학습하여 사전 학습된 매개변수를 변경하지 않고도 새로운 작업에 적응할 수 있습니다.
소프트 프롬프트: 입력 시퀀스에 추가되는 훈련 가능한 벡터 임베딩입니다. 이들은 지침 역할을 하여 원하는 작업을 향한 모델의 행동에 영향을 미칩니다.
접두사 조정: 이 기술은 입력 시퀀스에 학습 가능한 접두사를 추가하는 것을 포함합니다. 이 접두사는 핵심 모델 아키텍처를 수정하지 않고도 작업별 정보를 학습합니다.
이 중 가장 널리 사용되는 기술은 PEFT 기반 기술입니다. PEFT 기술은 대규모 사전 학습 모델에 적용될 때, 모델의 매개변수 중 일부만 조정하여 새로운 작업에 적응시킬 수 있습니다. 이 접근 방식은 특히 작은 데이터 세트에서 과적합을 방지하는 데 도움이 되며, 완전한 미세 조정에 비해 계산 및 메모리 요구 사항을 크게 줄입니다. PEFT는 LLM에서의 치명적인 망각을 완화합니다. 이 기술들은 전체 재훈련 없이 모델을 효율적으로 맞춤화할 수 있게 하여, 리소스가 제한된 환경에 이상적입니다.
당사는 PEFT LoRA 기술을 채택하여 모델의 상호작용에서 생성된 추적 데이터와 특정 작업에 명시적으로 주석이 달린 라벨링 데이터를 결합함으로써, 대규모 계산 리소스를 필요로 하지 않고도 작은 모델을 특정 작업에서 높은 성능으로 미세 조정할 수 있습니다.
실제 응용 사례를 강조하기 위해 MongoDB 신용카드 애플리케이션 데모를 통해 MongoDB를 사용하여 예측 분석으로 신용 점수를 평가하고, 생성형 인공지능으로 신용 점수 결과를 설명하며, LLM을 활용한 RAG 접근법으로 신용카드 추천을 수행하는 방법을 보여줍니다. 이 미세 조정 예시의 목적은 LLMs를 사용하여 크레딧 등급 설명을 간소화하는 데 중점을 두는 것입니다. 이 애플리케이션은 사용자 프로필 생성, 제품 추천, 요약 작업을 통한 순위 재조정 등 다양한 기능 범위를 포괄합니다. 애플리케이션 설계 및 소스 코드의 세부 사항은 MongoDB 신용카드 애플리케이션 솔루션 라이브러리 페이지에서 찾을 수 있습니다.
현재의 도전 과제
LLM은 수십억 개의 매개변수를 처리해야 하는 복잡한 계산으로 인해 응답 시간이 느려질 수 있습니다. 예를 들어, 신용카드 추천을 생성하기 위해 여러 개의 LLM 쿼리가 필요할 수 있으며, 이로 인해 총 응답 시간이 10초~20초가 될 수 있습니다(각 쿼리는 5초 이상 소요됩니다). 또한 LLM을 수백만 명의 사용자를 위해 프로덕션 환경에 배포하고 확장하는 것은 어렵고 비용이 많이 들 수 있습니다.
소형 언어 모델로의 전환
SLM을 활용하면 엔터프라이즈는 처리 속도와 비용 효율성에서 상당한 이점을 얻을 수 있습니다. SLM은 컴퓨팅 능력이 덜 필요하므로 리소스가 제한된 장치에 적합하며, 빠른 응답을 제공하고 운영 비용을 낮춥니다.
매개변수 효율적인 미세 조정 및 LoRA
PEFT와 LoRA 방법은 매개변수의 일부만 최적화하여 효율성을 크게 향상시킵니다. 이 접근 방식은 메모리 요구 사항을 줄이고 운영 비용을 절감합니다. MongoDB와의 시너지는 데이터 처리 능력을 향상시키고 효율적인 모델 튜닝 과정을 촉진합니다.
MongoDB 고유 값
MongoDB는 필수적이며, 원활한 데이터 관리와 실시간 통합을 제공하여 운영 효율성을 향상시킵니다. MongoDB는 추적 데이터를 JSON 형식으로 저장하고, 효율적인 검색 및 저장을 가능하게 하여 모델 미세 조정 과정에 상당한 가치를 제공합니다. MongoDB는 동일한 데이터에 대한 반복 요청 시 LLM을 불필요하게 호출하지 않도록 캐싱 레이어로도 작동합니다.
Fireworks AI를 사용하여 소형 언어 모델을 미세 조정하는 단계별 가이드
신용카드 크레딧 애플리케이션 데모의 중요한 측면은 고객에게 신용 점수 또는 신용 등급을 명확하고 일상적인 언어로 설명하는 것입니다. Meta의 LLaMA 3.1-405B와 같은 최첨단 LLM은 고객의 대체 신용 점수 또는 신용 등급을 예측하는 데 사용되는 모델의 사용자 프로필 매개변수, 모델 입력 기능 및 기능 중요도와 같은 요소를 사용하여 이러한 설명을 생성할 수 있습니다. 그러나 이러한 작업은 효과적인 추론과 설명을 위해 필요한 매개변수의 수가 제한적이기 때문에 SLM을 통해 일관되게 달성할 수 없습니다. 원하는 결과를 달성하기 위해, 위에서 설명한 미세 조정 프로세스를 Fireworks AI 미세 조정 플랫폼을 활용해야 합니다.
다음 단계에서는 플랫폼을 사용하여 SLM을 세부적으로 조정하는 방법을 단계별로 안내합니다.
이 플랫폼과 도구를 활용하는 방법은 다음과 같습니다.
그림 2. LLM/SLM 미세 조정 프로세스
미세 조정 프로세스는 관련된 작업별 데이터를 수집하는 것으로 시작됩니다. 그림 2에서 볼 수 있듯이, MongoDB Atlas는 범용 데이터베이스로서, 신용카드 애플리케이션에 대한 사용자의 입력을 기반으로 특정 사용자에 대한 LLM/SLM 응답을 캐시하는 데 활용할 수 있습니다(사용자는 웹 UI에서 자신의 신용 프로필을 시뮬레이션할 수 있습니다). 아래는 MongoDB Atlas에서 LLM/SLM 응답을 캐시하기 위한 데코레이터 설정 방법을 보여주는 Python 샘플 코드입니다.
class mdbcache: def __init__(self, function): self.function = function def __call__(self, *args, **kwargs): key = str(args) + str(kwargs) ele = ccol.find_one({"key": key}) if ele: return ele["response"] value = self.function(*args, **kwargs) ccol.insert_one({"key":key, "response": value}) return value def invoke_llm(prompt): """ Invoke the language model with the given prompt with cache. The llm.invoke method can invoke either a LLM or SLM based on the Fireworks Model ID provided at the start of applicaiton. Args: prompt (str): The prompt to pass to the LLM. """ response = llm.invoke(prompt) return response
도표에 나타난 바와 같이, 미세 조정 과정에 필요한 교육 데이터 세트는 시뮬레이터를 사용하여 생성할 수 있습니다. 여기서 당사는 계층적 표본 추출 방법을 사용하여 세 가지 신용 등급(우수, 보통, 불량)에 대해 동일한 수의 샘플을 선택하기 위해 사용자 프로필을 시뮬레이션하고 있습니다. 이 데모에서는 약 1300개 이상의 샘플 응답을 생성했습니다.
이제 생성된 응답을 Fireworks AI 플랫폼이 지원하는 형식으로 변환하여 파인 튜닝 프로세스를 시작해야 합니다. 아래 미세 조정 과정에서 사용되는 파일 “cc_cache.jsonl”은 다음 코드를 실행하여 생성할 수 있습니다.
from pymongo import MongoClient import pandas as pd import json client = MongoClient("mongodb+srv://<uid>:<pwd>@bfsi-demo.2wqno.mongodb.net/?retryWrites=true&w=majority") df = pd.DataFrame.from_records(client["bfsi-genai"]["cc_cache"].find({},{"_id": 0})) df["prompt"] = df["key"].apply(lambda x: x.strip('(').strip('"').strip(")").strip("\\")) del df["key"] df["response"] = df["response"].apply(lambda x: x.strip()) df.to_json("cc_cache.jsonl", orient="records", lines=True) # transform cache to messages messages = [] for item in df.iterrows(): messages += [{"messages": [{"role": "user", "content": item["prompt"].strip(" \\")}, {"role": "assistant", "content": item["response"]}]}] with open("cc_cache.jsonl", "w") as f: for item in messages: f.write(json.dumps(item) + "\n")
이제 데이터 세트를 준비하고 'cc_cache.jsonl' 파일을 생성했으므로 아래 단계에 따라 사전 학습된 'llama-v3p1-8b-instruct' 모델의 미세 조정을 시작할 수 있습니다.
MongoDB와 Fireworks.AI의 원활한 통합은 AI 모델 성능을 비용 효율적이고 효율적으로 향상시키는 프로세스를 간소화합니다. 이는 위에서 제공된 세부적인 단계별 가이드에서 명확히 드러납니다.
Fireworks 플랫폼에서 서버리스 API로 모델을 배포한 후, 그림 2에 표시된 모델 id(models/ft-m88hxaga-pi11m)를 사용하여 선택한 언어 모델 프레임워크로 미세 조정된 SLM 모델을 호출할 수 있습니다.
주요 학습 사항
신용카드 추천을 위한 SLM을 미세 조정한 결과 놀라운 성과를 거두었습니다.
대체 신용카드 상품 추천 프로세스의 맥락에서 위의 미세 조정 단계를 SLM 모델에 적용한 결과, 미세 조정된 SLM을 사용하여 프로세스의 응답 시간이 크게 개선된 것을 확인했습니다.
응답 시간 개선: 원래 대형 LLM의 응답 시간은 약 5초였습니다. SLM을 사용하면 지연 시간을 약 19배로 줄일 수 있습니다.
import time class tiktok: """ Decorator to time the execution of a function and log the time taken. """ def __init__(self, function): self.function = function def __call__(self, *args, **kwargs): import time start = time.time() value = self.function(*args, **kwargs) end = time.time() print(f"Time taken for {self.function.__name__}: {end - start} seconds") return value def invoke_llm(prompt): """ Invoke the language model with the given prompt with cache. The invole LLM method can invoke either a LLM or SLM based on the Fireworks Model ID initialised. Args: prompt (str): The prompt to pass to the LLM. """ ... 모델추론 시간 1 (초)추론 시간 2 (초)추론 시간 3 (초)평균 시간 (초)llama-v3p1-405b-instruct
5.5954
7.5936
4.9121
6.0337
SLM - 미세 조정된 llama-v3p1-8b
0.3554
0.0480
0.0473
0.1502
메모리 감소: LLM은 일반적으로 많은 메모리를 필요로 하며, 보통 8x80GB VRAM 범위에 해당합니다. SLM은 약 16GB의 VRAM 메모리로 효율적으로 작동할 수 있으며, 메모리 사용량을 97.5% 줄일 수 있습니다.
하드웨어 감소: LLM을 배포하려면 고성능 GPU 또는 여러 서버가 필요합니다. SLM을 사용하면 하드웨어 요구사항을 크게 줄일 수 있어, 표준 CPU나 단일 서버에 배포할 수 있으며, 이로 인해 하드웨어 비용이 대폭 감소합니다.
결론
MongoDB와 Fireworks AI의 통합은 SLM(지도 학습 모델) 교육의 효율성과 비용 효율성을 크게 향상시킵니다. 이 파트너십은 고급 AI 솔루션을 더 쉽게 접근할 수 있고 경제적으로 실현 가능하게 하여, 미래에 대비한 AI 투자를 보장합니다. 이 협업의 주요 가치 제안은 다음과 같습니다.
총 소유 비용 절감: Fireworks AI의 LoRA 및 qLoRA 기술은 저랭크 적응 및 양자화를 적용하여 SLM의 미세 조정과 관련된 비용을 절감하여 계산 리소스 요구를 최소화합니다. MongoDB는 분산된 아키텍처, 유연한 스키마, 효율적인 인덱싱을 통해 데이터 인프라를 온디맨드로 확장하고 저장 비용을 최소화하여 자본 지출(CapEx)과 운영 비용(OpEx)을 줄입니다.
통합 데이터 및 AI 워크플로: MongoDB는 실시간 데이터 통합을 통해 AI 모델에 즉각적인 데이터 가용성을 제공하여 효율성을 향상시킵니다. Fireworks AI의 미세 조정 도구와의 통합은 AI 모델을 지속적으로 업데이트하고 관련성을 유지하는 효율적인 워크플로를 보장하여, 의사결정을 개선하고 정확한 인사이트를 제공합니다.
강력한 RAG 솔루션: MongoDB Atlas와 Fireworks AI의 원활한 결합은 RAG 프레임워크 생성을 간소화하고 데이터 저장 및 검색 기능을 향상시킵니다. MongoDB Atlas는 확장 가능한 저장소 임베딩을 위한 플랫폼을 제공하며, Fireworks AI는 managed LLM/SLM 호스팅 및 기타 기능을 제공합니다. 우리는 함께 관련 정보 검색을 통해 사용자 경험을 개선하는 확장 가능한 지능적인 시스템을 구현합니다.
이 전략을 채택한 조직은 AI 성능을 가속화하고, 리소스를 절약하며, 미래를 대비한 솔루션을 통해 다양한 부문에서 혁신과 경쟁 우위를 확보할 수 있습니다.
추가 읽기
Fireworks AI 플랫폼이 추론 속도와 처리량을 가속화하는 방법:
FireAttention V2: 이 혁신은 온라인 추론 중 긴 컨텍스트를 처리하는 효율성을 개선하여 최대 12배 더 빠른 처리를 달성합니다.
FireAttention V3: 이 발전은 AMD 하드웨어를 GPU 추론을 위한 실행 가능한 대안으로 사용할 수 있게 하여 하드웨어 옵션을 넓히고 잠재적으로 비용을 절감할 수 있게 합니다.
FireOptimizer: 이 도구는 프로덕션 추론 워크로드의 지연 시간과 품질을 사용자 정의할 수 있게 하여 사용자가 특정 요구 사항에 맞춰 성능을 조정할 수 있도록 합니다.
사용된 기술 및 제품
MongoDB 개발자 데이터 플랫폼
파트너 기술
작성자
Wei You Pan, MongoDB
Ashwin Gangadhar, MongoDB
Peyman Parsi, MongoDB
베니 첸, Fireworks AI
Ayaan Momin, Fireworks AI