주요 컨텐츠로 이동
Engineering blog

MLflow AI Gateway 및 Llama2를 사용하여 생성형 AI 앱 빌드하기

자체 데이터로 검색 증강 생성(RAG)을 사용하여 정확도를 높이세요.
이 포스트 공유하기

고객 지원 봇, 내부 지식 그래프 또는 Q&A 시스템을 구축하기 위해 고객은 종종 사전 학습된 모델과 독점 데이터를 함께 활용하는 검색 증강 생성(RAG) 애플리케이션을 사용합니다. 그러나 안전한 자격증명 관리 및 오용 방지를 위한 가드레일이 부족하여 고객이 이러한 애플리케이션에 대한 액세스와 개발을 민주화하지 못하고 있습니다. 최근 유니티는 조직이 LLM을 관리하고 실험 및 프로덕션에 사용할 수 있도록 지원하는 확장성이 뛰어난 엔터프라이즈급 API 게이트웨이인 MLflow AI 게이트웨이를 발표했습니다. 오늘 저희는 RAG 애플리케이션을 더 잘 지원하기 위해 AI 게이트웨이를 확장한다는 소식을 알려드리게 되어 기쁩니다. 조직은 이제 프라이빗 호스팅 모델 APIs (Databricks 모델 서빙을 통해), 독점 모델 APIs (OpenAI, Co:here, Anthropic), 그리고 이제 MosaicML을 통해 개방형 모델 APIs 의 거버넌스를 중앙 집중화하여 안심하고 RAG 애플리케이션을 개발 및 배포할 수 있습니다. 

이 블로그 게시물에서는 Databricks 텍스트 생성을 위한 Llama2-70B-Chat 모델과 텍스트 임베딩을 위한 Instructor-XL 모델을 사용하여 레이크하우스 AI 플랫폼에서 RAG 애플리케이션을 구축하고 배포하는 방법을 살펴보고, 이 모델은 MosaicML의 스타터 계층 추론을 통해 호스팅 APIs 및 최적화됩니다. 호스팅 모델을 사용하면 낮은 처리량으로 빠르게 시작하고 비용 효율적으로 실험을 진행할 수 있습니다. 

이 블로그에서 구축 중인 RAG 애플리케이션은 원예 관련 질문에 대한 답변과 식물 관리 권장 사항을 제공합니다. 

이미 RAG에 익숙하고 이 모든 것이 어떻게 결합되는지 예시를 보고 싶으시다면, Llama2, MosaicML 추론 및 벡터 검색을 사용해 RAG 애플리케이션을 구축하는 방법을 보여주는 데모 (예제 노트북 포함)를 Databricks 에서 확인해보세요.

RAG란?

RAG는 고객이 자체 데이터를 활용하여 모델 성능을 개선할 수 있는 인기 있는 아키텍처입니다. 이는 관련 데이터 / 문서를 검색하여 LLM의 컨텍스트로 제공하는 방식으로 이루어집니다. RAG는 최신 정보를 유지하거나 도메인별 지식에 액세스해야 하는 챗봇과 Q&A 시스템에서 성공을 거두었습니다.

AI 게이트웨이를 사용하여 호출 모델에 가드레일 설치하기 APIs

최근에 발표된 MLflow AI 게이트웨이를 통해 조직은 라우트라는 개체를 통해 거버넌스, 자격 증명 관리 및 SaaS LLM을 포함한 모델( APIs)의 요금 제한을 중앙 집중화할 수 있습니다. 라우트 배포를 통해 조직은 LLM에 대한 액세스를 민주화하는 동시에 사용자 행동이 시스템을 남용하거나 다운시키지 않도록 할 수 있습니다. 또한 AI 게이트웨이는 새로운 최신 모델이 출시될 때 경로 뒤의 모델을 쉽게 업그레이드할 수 있도록 LLM을 쿼리하는 표준 인터페이스를 제공합니다. 

일반적으로 조직은 사용 사례별로 경로를 생성하며, 많은 경로가 동일한 모델 API 엔드포인트를 가리킬 수 있으므로 이를 충분히 활용하고 있는지 확인할 수 있습니다. 

이 RAG 애플리케이션의 경우 임베딩 모델용과 텍스트 생성 모델용의 두 가지 AI 게이트웨이 경로를 만들고자 합니다. 향후 공급업체 종속을 피하기 위해 미세 조정 또는 프라이빗 호스팅을 위한 지원 경로를 확보하기 위해 두 가지 모두에 개방형 모델을 사용하고 있습니다. 이를 위해 MosaicML의 추론 API를 사용합니다. APIs에서 최신 오픈 소스 모델에 빠르고 쉽게 액세스하여 빠른 실험과 토큰 기반 가격 책정을 할 수 있습니다. MosaicML은 텍스트 완성을 위한 MPTLlama2 모델과 텍스트 임베딩을 위한 Instructor 모델을 지원합니다. 이 예시에서는 2조 개의 토큰으로 학습되고 메타에 의해 대화, 안전 및 유용성을 위해 미세 조정된 Llama2-70b-Chat과 HKUNLP의 12억 parameter 인스트럭션 미세 조정 임베딩 모델인 Instructor-XL을 사용하겠습니다.

AI 게이트웨이의 새로운 MosaicML 추론 지원( APIs )을 사용하여 Llama2-70B-Chat의 경로를 쉽게 생성할 수 있습니다:

를 가져옵니다.gateway import create_route

mosaicml_api_key = "your key"
 create_route(
 " completion",
 " llm/v1/completions",
 {
 " name": "llama2-70b-chat",
 " provider": "mosaicml",
 " mosaicml_config": {
 " mosaicml_api_key": mosaicml_api_key,
 },
 },
)

위에서 구성한 텍스트 완성 경로와 유사하게 MosaicML 추론 API를 통해 사용할 수 있는 Instructor-XL에 대한 또 다른 경로를 만들 수 있습니다.

create_route(
 " embeddings",
 " llm/v1/embeddings",
 {
 " name": "instructor-xl",
 " provider": "mosaicml",
 " mosaicml_config": {
 " mosaicml_api_key": mosaicml_api_key,
 },
 },
)

MosaicML 호스팅 모델에 대한 API 키를 받으려면 여기에서 등록하세요.

LangChain을 사용하여 검색 및 텍스트 생성을 통합하기

이제 실시간으로 문서 유사도 조회를 수행할 수 있도록 문서 임베딩에서 벡터 인덱스를 구축해야 합니다. LangChain을 사용하여 임베딩 모델에 대한 AI 게이트웨이 경로를 가리킬 수 있습니다:

# langchain.embeddings.mlflow_gatewayllms에서 벡터 인덱스
를 생성합니다. langchain.vectorstores에서 MLflowAIGatewayEmbeddings
가져오기 Chroma 가져오기

# AI 게이트웨이 경로 검색

mosaicml_embedding_route = MLflowAIGatewayEmbeddings(
 gateway_uri="데이터브릭스",
 route="embedding"
 )

# Chroma에 로드

db = Chroma.from_documents(docs, 임베딩_기능=mosaicml_embedding_route, persist_directory="/tmp/gardening_db")

 

그런 다음 프롬프트 템플릿과 텍스트 생성 모델을 연결해야 합니다:

langchain.llms에서 MLflowAIGateway 가져오기

# Llama2 Chat의 프롬프트 구조를 만듭니다(MPT를 사용하는 경우 프롬프트 구조가 달라집니다)

template = "" " [INST] <<SYS>> 
 당신은 전문적인 원예 답변과 조언으로 정원사를 돕는 AI 도우미입니다. 

다음 단락에 제공된 정보만 사용하여 마지막에 질문에 답하세요. 

이 단락을 참조하여 답안을 설명하세요.

질문이 말이 되지 않거나 사실에 부합하지 않는 경우, 정답이 아닌 대답 대신 그 이유를 설명하세요. 

질문에 대한 답을 모르는 경우 허위 정보를 공유하지 마세요.

<</SYS>> 

 {context}

{question} [/INST]

" " " 

 prompt = PromptTemplate(input_variables=['context', 'question'], template=template)

# AI 게이트웨이 경로 검색

mosaic_completion_route = MLflowAIGateway(
 gateway_uri="databricks",
 route="completion",
 params={ "temperature": 0.1 },
)

# 프롬프트와 게이트웨이 경로를 체인으로 감싸기

retrieval_qa_chain = RetrievalQA.from_chain_type(llm=mosaic_completion_route), chain_type="stuff", retriever=db.as_retriever(), chain_type_kwargs={"프롬프트": 프롬프트})

RetrievalQA 체인은 두 구성 요소를 서로 연결하여 벡터 데이터베이스에서 검색된 문서가 텍스트 요약 모델의 컨텍스트에 시드를 제공하도록 합니다:

질문 = "내 바이올린 무화과 나무가 잎을 떨어뜨리는 이유는 무엇인가요?"

retrieval_qa_chain.run(쿼리)

이제 MLflow LangChain 플레이버를 사용하여 체인을 로깅하고 Databricks CPU 모델 서빙 엔드포인트에 배포할 수 있습니다. MLflow를 사용하면 모델 버전 관리 기능을 자동으로 제공하여 프로덕션 프로세스를 더욱 엄격하게 관리할 수 있습니다.

개념 증명을 완료한 후, 실험 품질 개선을 위한 요소

요구 사항에 따라 다양한 실험을 실행하여 애플리케이션을 프로덕션 환경으로 전환하는데 적합한 최적화를 찾을 수 있습니다. MLflow 추적 및 평가 APIs를 사용하여 모든 parameter, 기본 모델, 성능 메트릭 및 모델 출력을 기록하여 비교할 수 있습니다. MLflow의 새로운 평가 UI를 사용하면 모델 결과물을 나란히 쉽게 비교할 수 있으며, 모든 MLflow 추적 및 평가 데이터는 추가 분석을 위해 쿼리 가능한 형식으로 저장됩니다. 우리가 흔히 볼 수 있는 몇 가지 실험:

  1. 지연 시간 - 지연 시간과 비용을 줄이려면 더 작은 모델을 사용해보세요.
  2. 품질 - 자체 데이터로 오픈 소스 모델을 미세 조정해보세요. 이렇게 하면 도메인별 지식과 원하는 응답 형식을 준수하는 데 도움이 될 수 있습니다.
  3. 개인 정보 보호 - Databricks 에서 모델을 비공개로 호스팅하여 사용 사례 전반에서 엔드포인트를 최대한 활용하기 위한 LLM 최적화 GPU 모델 서비스 및 AI 게이트웨이를 사용해보세요.

지금 바로 레이크하우스 AI에서 MosaicML을 사용하여 RAG 애플리케이션 개발 시작하기

Databricks 레이크하우스 AI 플랫폼을 통해 개발자는 자신 있게 제너레이티브 AI 애플리케이션을 빠르게 구축하고 배포할 수 있습니다.

위의 채팅 애플리케이션을 조직에 복제하려면 레이크하우스에서 Llama2, MosaicML 추론 및 Vector Search를 사용하여 워크스페이스에 직접 전체 RAG 챗봇 데모를 설치하세요.

LLM RAG 챗봇 데모 살펴보기

 

RAG 애플리케이션을 더 자세히 살펴보고 개선하세요:

Databricks 무료로 시작하기

관련 포스트

Platform blog

Meta의 Llama 2와 데이터브릭스로 생성형 AI앱 구축하기

오늘 Meta는 최신 대규모 언어 모델(LLM)인 Llama 2 를 상업적 용도 1 의 오픈 소스로 공개했습니다. 이는 오픈 소스 AI의 중요한 발전이며, 출시...
Company blog

Databricks + MosaicML

오늘 우리는 기업을 위한 생성형 AI 모델을 만들고 맞춤화하기 위한 선도적인 플랫폼인 MosaicML의 인수를 완료했다는 소식을 전하게 되어 기쁩니다. Databricks를 설립한 이래로 Databricks의...
Platform blog

레이크하우스 AI: 생성형 AI 어플리케이션을 만들기 위한 데이터 중심의 접근 방식

생성형 AI는 모든 비즈니스에 혁신적인 영향을 미칠 것입니다. 데이터브릭스는 10년간 AI 혁신을 선도해 왔으며, 수천 명의 고객과 적극적으로 협력하여 AI 솔루션을 제공하고, 오픈...
모든 데이터 사이언스 및 ML 포스트 보기