Docs Menu
Docs Home
/

MongoDB Atlas 및 Fireworks AI 로 AI 성능 최적화하기

MongoDB Atlas 와 Fireworks AI 더 빠른 AI 추론, 비용 절감, 효율적인 RAG 애플리케이션을 제공합니다.

사용 사례: 생성형 AI, 모델 성능 튜닝

산업: 금융 서비스

제품: MongoDB Atlas

파트너: Fireworks AI, LangChain

AI 애플리케이션에는 고성능과 비용 효율성 모두 필요합니다. 엔터프라이즈는 속도와 효율성 의 향상이 비용 이점으로 이어지도록 가격 대비 성능 비율을 최적화해야 합니다. MongoDB 와 Fireworks AI 비용을 절감하면서 성능을 개선하는 솔루션을 제공합니다. MongoDB 데이터 관리 처리하고 Fireworks AI 모델을 최적화합니다. 이를 함께 사용하면 지연 시간 과 처리량 향상하는 동시에 운영 비용을 최소화할 수 있습니다.

이 솔루션은 다음 주제를 다룹니다.

  • MongoDB 및 Fireworks AI 사용하여 성능을 향상하고 TCO 를 줄이는 방법

  • MongoDB Atlas 및 생성형 인공지능 모델을 사용하여 RAG 를 최적화하는 캐싱 전략

  • 비슷한 응답 품질로 더 빠른 성능을 위해 LLMSLM 미세 조정

  • 모델을 미세 조정하고, 추론을 가속화하며, hardware 요구 사항을 줄이는 Fireworks AI 플랫폼 기술

  • 지연 시간 , 메모리 사용량, 비용 효율성 측면의 개선 사항을 수량화한 크레딧 카드 추천 사례 연구

  • 프로덕션 배포서버 및 확장 위한 권장사항

이 솔루션은 실용적인 예시와 성능 지표 통해 비용을 절감하면서 AI 성능을 향상할 수 있는 실행 가능한 전략을 제공합니다.

MongoDB의 유연한 스키마, 효율적인 인덱싱 및 분산된 아키텍처를 활성화 조직은 온디맨드 방식으로 데이터 인프라를 확장하다 할 수 있습니다. Fireworks AI의 모델 역량 최적화 기능과 결합된 이 솔루션은 비용을 절감하면서 AI 성능을 향상시킵니다.

파이어옵티마이저 프레임워크 MongoDB Fireworks AI의 모델 조정 프로세스 와 통합하여 다음 구성 요소를 통해 배치 추론을 가속화합니다.

  • FireAttention: 요청 처리 향상하고 리소스 사용률을 최적화합니다.

  • 매개변수 효율적인 미세 조정: LoRAQLoRA 메서드를 사용하여 추적 또는 레이블 데이터로 모델을 효율적으로 미세 조정하여 계산 요구 사항을 줄입니다.

FireOptimizer

그림 1. FireOptimizer 아키텍처는 적응형 최적화와 고품질 추론을 위한 것입니다.

이 솔루션은 다음과 같은 이점을 제공합니다.

  • 추론 속도 개선: Fire 옵티마이저의 적응형 추측 실행은 프로덕션 워크로드의 지연 시간 최대 3배 개선합니다.

  • 자동화된 최적화: 파이어옵티마이저는 복잡한 최적화 프로세스를 자동으로 처리합니다.

LLM은 한 번에 한 토큰씩 출력을 생성하므로 출력이 긴 경우 응답 속도가 느려집니다. 추측 디코딩은 메인 LLM 프로세스 중에 더 작은 초안 모델을 사용하여 여러 토큰 후보를 생성함으로써 이 프로세스 가속화합니다. LLM은 정확한 예측만 평가하고 유지합니다.

일반 데이터로 훈련된 기존 초안 모델은 일반 작업에는 잘 작동하지만 코딩이나 재무 분석과 같은 특수 도메인에서는 정확도가 낮습니다.

Fireworks AI 사용하면 적응형 추측 실행을 통해 일반적인 모델 대신 도메인별 또는 사용자 프로필 맞춤 모델을 사용하여 이러한 접근 방식을 개선할 수 있습니다. 이 최적화는 코드 생성의 정확성과 적중률을 29%에서 76%로 높이고 추론 비용을 줄이며 최대 3x까지 지연 시간 을 개선합니다.

8K-32K 토큰을 사용하는 긴 프롬프트는 문서 분석 또는 코드 완성과 같은 애플리케이션에 성능 병목 현상을 일으킵니다. Firework AI의 FireAttention V2 는 다음 기능을 통해 긴 컨텍스트 작업에 대해 12배 더 빠른 처리 제공하여 이러한 과제 해결합니다.

  • 최적화된 어텐션 확장: 긴 입력에 대한 계산 오버헤드 감소

  • 멀티 호스팅 배포서버: 여러 GPU에 워크로드를 효율적으로 분산합니다.

  • 고급 커널: 더 빠른 실행을 위한 작업 간소화

FireAttention V3 는 AMD의 MI300 GPU로 지원 확장하여,Nvidia의 비용 효율적인 대안을 제공합니다. 성능 개선 사항은 다음과 같습니다.

  • 1.4x~1.8x LLaMA 8B 및 70B와 같은 모델의 처리량 향상

  • 지연 시간이 짧은 시나리오에서 최대 5.5배 속도 향상

  • 재설계된 어텐션 커널과 최적화된 메모리 사용을 통해 성능 향상

이러한 기능은 도메인별 작업에 대한 긴 컨텍스트 입력을 효율적으로 처리 수 있도록 하여 SLM의 미세 조정을 향상합니다. 최적화된 어텐션 메커니즘은 계산 오버헤드 줄이고, 더 빠른 교육 주기를 지원하며, 멀티 GPU 호스팅하다 배포서버 전반에서 더 큰 배치 크기를 활성화합니다.

Fireworks AI 최적화는 처리량 과 비용 효율성을 극대화하는 세 가지 기술을 통해 적응형 추측을 뛰어넘습니다.

  • 적응형 캐싱: 빈번한 계산을 재사용하여 중복 작업을 건너뛰고 트래픽이 많은 워크로드의 지연 시간 30~50% 줄입니다.

  • 사용자 지정 가능한 양자화: 배치 처리 작업에서 99% 이상의 정확도를 유지하면서 4-/8비트 정밀도와 모델 품질의 균형을 맞추고 속도를 두 배로 늘립니다.

  • 세분화된 서빙: 여러 개의 경량 모델 복사본을 호스팅하거나 복잡한 작업을 위해 대규모 모델을 여러 GPU에 샤딩 하여 워크로드 유형에 맞게 hardware 할당을 조정합니다.

더 작고 효율적인 모델은 리소스 효율성 유지하면서 특수 조정을 위한 미세 조정할 수 있는 기회를 제공합니다. 클라우드, 온디바이스 및 전용 hardware 배포서버를 위해 SLM을 최적화하기 위한 연구는 계속되고 있습니다.

미세 조정 기술에는 다음이 포함됩니다.

1

이 범주는 원래 가중치를 수정하지 않고 기존 사전 학습된 모델에 추가 학습 가능한 매개변수를 도입합니다.

  • 어댑터: 모델 계층 사이에 학습 가능한 작은 계층을 삽입합니다. 어댑터는 사전 훈련된 매개변수를 변경하지 않고 작업별 변환을 학습 .

  • 소프트 프롬프트: 입력 시퀀스에 학습 가능한 벡터 임베딩이 추가됩니다. 모델 동작을 원하는 작업으로 가이드.

  • 접두사 조정: 입력 시퀀스에 학습 가능한 접두사를 추가합니다. 접두사는 핵심 모델 수정 없이 작업별 정보를 학습 .

2

이 접근 방식은 낮은 순위 근사치를 사용하여 기존 모델 가중치를 다시 매개변수화하여 학습 가능한 매개변수를 줄입니다.

  • 낮은 순위 적응: 낮은 순위 매트릭스를 사용하여 어텐션 계층의 가중치 업데이트를 근사화합니다. 이렇게 하면 학습 가능한 매개변수가 줄어듭니다.

  • 양자화된 LoRA: 양자화 기술을 사용하여 LoRA 를 향상하여 메모리 사용량과 계산 비용을 줄입니다.

3

이 범주는 사전 학습된 특정 모델 매개변수를 선택적으로 미세 조정하여 계산 효율성 개선합니다.

  • BitFit: 편향 텀들 또는 기타 특정 매개변수만 미세 조정하여 계산 효율성 개선합니다.

  • DiffPruning: 모델 성능에 최소한으로 기여하는 매개변수를 식별하고 제거하여 학습 가능한 매개변수를 줄입니다.

4

이러한 전략은 사전 훈련된 특정 모델 계층을 동결하고 다른 계층을 미세 조정하여 적응을 최적화합니다.

  • 동결 및 재구성: 특정 모델 계층을 동결하고 나머지 계층을 미세 조정하여 적응을 최적화합니다.

  • FishMask: 마스크를 사용하여 특정 작업을 위해 레이어를 선택적으로 고정하거나 미세 조정합니다.

가장 널리 사용되는 기술은 PEFT입니다. PEFT 기술은 매개변수의 일부를 조정하여 사전 훈련된 대규모 모델을 새로운 작업에 맞게 조정합니다. 이 접근 방식은 과적합을 방지하고, 전체 미세 조정에 비해 계산 및 메모리 요구 사항을 줄이며, LLM에서 치명적인 망각을 완화합니다. PEFT를 사용하면 전체 재교육 없이 효율적인 모델 사용자 지정이 가능하므로 리소스가 제한된 환경에 이상적입니다.

모델 상호 작용에서 생성된 추적 데이터 및 작업에 대해 명시적으로 주석이 달린 레이블이 지정된 데이터와 함께 PEFT LoRA 기술을 사용하면 광범위한 계산 리소스 없이도 특정 작업에서 고성능을 위해 작은 모델을 미세 조정할 수 있습니다.

실용적인 애플리케이션의 경우, 이 예시 MongoDB 크레딧 카드 애플리케이션 데모를 사용합니다. 데모에서는 예측 분석 사용한 MongoDB 의 크레딧 점수 산정, 생성형 인공지능 사용한 크레딧 점수 산정 결과 설명, LLM과 RAG를 사용하여 크레딧 카드 추천을 수행하는 방법을 설명합니다. 이 세부 조정 예시 LLM을 사용하여 크레딧 등급 설명을 간소화하는 데 중점을 둡니다. 이 애플리케이션 에는 사용자 프로필 생성, 제품 추천 및 요약을 통한 순위 재지정이 포함됩니다. 애플리케이션 설계 및 소스 코드 세부 정보는 MongoDB 크레딧 카드 애플리케이션 솔루션 라이브러리 페이지.에서 확인하세요.

LLM은 수십억 개의 매개변수에 대한 복잡한 계산으로 인해 응답 시간이 느려집니다. 크레딧 카드 추천에는 여러 개의 LLM 쿼리가 필요하므로 총 응답 시간이 10 ~ 20 초가 소요되며 각 쿼리 5 초 이상 걸립니다. LLM은 수백만 명의 사용자를 위해 배포 하고 확장하다 가 어렵고 비용이 많이 듭니다.

  • 작은 언어 모델: SLM은 더 빠른 처리 속도와 비용 효율성을 제공합니다. SLM은 컴퓨팅 성능을 덜 필요로 하므로 리소스가 제한된 장치에 적합합니다. 응답 속도가 빨라지고 운영 비용이 절감됩니다.

  • PEFT 및 LoRA: PEFT와 LoRA는 매개변수 하위 집합을 최적화하여 효율성 개선합니다. 이 접근 방식은 메모리 요구 사항과 운영 비용을 줄입니다. MongoDB 통합은 데이터 처리를 향상시키고 효율적인 모델 튜닝을 가능하게 합니다.

  • MongoDB: MongoDB 운영 효율성 개선하는 데이터 관리 및 실시간 통합을 제공합니다. MongoDB 추적 데이터를 JSON 으로 저장하고 효율적인 검색 및 저장 지원하여 모델 미세 조정에 가치를 더합니다. MongoDB 동일한 요청에 대해 반복적인 LLM 호출을 방지하기 위해 캐싱 계층 역할을 합니다.

크레딧 카드 애플리케이션 데모는 고객에게 크레딧 점수를 명확한 언어로 설명합니다. 메타의 LLaMA 3.1-405B와 같은 LLM은 고객의 크레딧 점수나 평점을 예측하는 모델의 사용자 프로필 매개변수, 모델 입력 특성, 기능 중요도를 사용하여 이러한 설명을 생성합니다. SLM은 효과적인 추론과 설명을 위한 제한된 매개 변수로 인해 이러한 작업을 일관되게 달성할 수 없습니다. Fireworks AI 미세 조정 플랫폼으로 미세 조정 프로세스 사용하여 원하는 결과를 얻을 수 있습니다.

SLM을 미세 조정하는 프로세스 에서는 다음 워크플로를 사용합니다.

LLM 미세 조정 프로세스

그림 2. LLM/SLM 미세 조정 프로세스

미세 조정 프로세스는 관련 작업별 데이터를 수집하는 것으로 시작됩니다. 그림 2 은 MongoDB Atlas 크레딧 카드 애플리케이션 입력을 기반으로 특정 사용자에 대한 LLM/SLM 응답을 캐시하는 방법을 보여줍니다. 사용자는 웹 UI 에서 크레딧 프로필을 시뮬레이션할 수 있습니다. 다음 Python 코드 스니펫은 MongoDB Atlas 에서 LLM/SLM 응답을 캐시 하도록 데코레이터를 설정하다 하는 방법을 보여줍니다.

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
@mdbcache
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 application.
Args:
prompt (str): The prompt to pass to the LLM.
"""
response = llm.invoke(prompt)
return response

다이어그램에 표시된 대로 시뮬레이터를 사용하여 교육 데이터 세트를 생성할 수 있습니다. 이 예시 계층화된 샘플링을 사용하여 사용자 프로필을 시뮬레이션하여 세 가지 크레딧 등급(양호, 보통, 나쁨) 모두에 대해 동일한 샘플을 선택합니다. 이 데모는 약 1,300 개의 샘플 응답을 생성합니다.

생성된 응답을 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 모델을 미세 조정합니다.

1
pip install firectl
2
firectl login
3
firectl create dataset <dataset_name> cc_cache.jsonl
4
firectl create sftj --base-model accounts/fireworks/models/llama-v3p1-8b-instruct --dataset <dataset_name> --output-model ccmodel --lora-rank 8 --epochs 1
5
세부 조정 프로세스 모니터링

그림 3. 세부 조정 프로세스 모니터링

6
firectl deploy ccmodel

이 절차는 MongoDB 와 Fireworks AI 통합을 통해 AI 모델 성능을 비용 효율적으로 개선하는 방법을 보여줍니다.

Fireworks 플랫폼에 서버리스 API 로 모델을 배포한 후 그림 2 에 표시된 모델 ID models/ft-m88hxaga-pi11m를 사용하여 선호하는 언어 모델 프레임워크 로 미세 조정된 SLM 모델을 호출합니다.

크레딧 카드 추천을 위해 SLM을 미세 조정하면 다음과 같은 결과가 나타납니다.

  1. 응답 시간 개선: LLM 응답 시간은 평균 5 초입니다. SLM은 이 시간을 약 0.15 초로 줄여 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
    @tiktok
    @mdbcache
    def invoke_llm(prompt):
    """
    Invoke the language model with the given prompt with cache. The
    invoke LLM method can invoke either a LLM or SLM based on the
    Fireworks Model ID initialized.
    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

  2. 메모리 감소: LLM에는 일반적으로 8x80GB VRAM이 필요합니다. SLM은 16 GB VRAM으로 작동하여 메모리 사용량을 97.5%줄입니다.

  3. hardware 감소: LLM에는 고급 GPU 또는 여러 대의 서버가 필요합니다. SLM은 표준 CPU 또는 단일 서버에 배포 할 수 있으므로 hardware 비용을 절감할 수 있습니다.

  • 총 소유 비용 절감: LoRA 및 QLoRA 기술은 SLM 미세 조정을 위한 계산 요구 사항을 줄입니다. MongoDB의 분산된 아키텍처와 효율적인 인덱싱 온디맨드 확장하다 인프라를 확장하여 저장 비용을 최소화하고 운영 비용을 절감합니다.

  • 데이터 및 AI 워크플로 간소화: MongoDB AI 모델의 실시간 데이터 통합을 지원합니다. Fireworks AI의 미세 조정 도구와 통합되면 모델을 업데이트 상태로 유지하고 의사 결정의 정확성을 높이는 워크플로가 생성됩니다.

  • RAG 솔루션 향상: MongoDB Atlas 와 Fireworks AI 결합하여 데이터 저장 및 검색이 향상된 RAG 프레임워크를 만듭니다. MongoDB Atlas 확장 가능한 임베딩 저장 제공하고, Fireworks AI managed LLM/SLM 호스팅을 제공합니다.

  • Wei You Pan, MongoDB

  • Ashwin Gangadhar, MongoDB

  • Peyman Parsi, MongoDB

  • 베니 첸, Fireworks AI

  • Ayaan Momin, Fireworks AI

돌아가기

Agentic AI 통한 문서 인텔리전스

이 페이지의 내용