LLM 기반의 서비스 만들 때 LLM을 이용한 서비스를 많을때 필요한 과정을 선택할 때, 다음과 같은 요소들을 고려해야 합니다: 복잡성, 비용, 품질 등.
[
- Train from Scratch: 모델을 처음부터 학습시키는 방법
- Prompt Engineering: 사용자에게 적절한 질문을 유도하기 위해 프롬프트를 설계
- RAG 활용: Retrieval-Augmented Generation(RAG) 기술을 사용하여 외부 정보의 맥락을 가져오고, 이를 기반으로 언어 모델이 답변을 생성
- Fine-tuning: 미세 조정 학습을 통해 사전 레이블링된 데이터를 활용하여 모델을 특정 작업에 맞게 조정
데이터 소스: 다양한 데이터와 데이터베이스가 필요합니다. 필요한 경우 플랫폼 내에서 데이터를 변환할 수도 있으며, 데이터 조작을 지원하는 AI 에이전트도 필요할 수 있습니다.
청크 크기: 청크 크기는 텍스트를 어떻게 분할할지 결정하며, 성능에 영향을 미치며 사용 사례에 따라 다릅니다. 인접한 청크 사이의 겹침도 고려해야 하므로 정보가 갑자기 끊기지 않도록 해야 합니다.
임베딩 기술 및 문서 검색기(RAG): 텍스트 청크는 벡터 데이터베이스에 임베딩되어 저장되며, 이는 관련 정보를 사용하여 질문에 답변하는 강력한 검색기를 구축하는 데 도움이 됩니다. 이는 지식 중심적인 다양한 사용 사례에 특히 유용합니다.
LLM (Language Model): LLM의 합성 능력은 검색기와 결합하여 사용자 정의 LLM 챗봇을 생성하고 데이터셋 및 작업에 가장 적합한 LLM을 선택하는 강력한 솔루션을 제공합니다
자동화 및 평가: 적절한 모델 및 구성을 선택하는 것은 어렵습니다. 또한 평가 데이터셋을 업로드하여 플랫폼이 조합을 비교하고 사용 사례에 대한 최적의 솔루션을 결정할 수 있도록 합니다. 측정 항목에는 BLEU 점수, METEOR 등이 포함됩니다.
배포 및 모니터링: 이 과정은 반복적인 성격을 가지며 항상 새로운 데이터가 사용 가능합니다. LLM을 배포하고 새로운 데이터를 계속 통합하거나 미세 조정하기 위한 파이프라인을 설정할 수 있습니다. 솔루션을 운영 중인 경우 성능을 정기적으로 평가하고 모니터링하여 솔루션이 저하되지 않도록 해야 합니다.
7가지 핵심 패턴
“성능 향상 vs. 비용/리스크 감소” 과 “데이터 친화 vs 사용자 친화”
- RAG (Retrieval-Augmented Generation)
- 좋은 임베딩은 유사 항목 검색 같은 다운스트림 작업을 잘 수행하는 것
- Huggingface의 Massive Text Embedding Benchmark (MTEB) 2는 분류,클러스터링,검색,요약 같은 다양한 작업에서 모델의 점수를 매김
RAG는 외부 데이터나 정보를 활용하여 모델의 출력을 개선하는 기술입니다. 이를 통해 모델은 외부 지식을 활용하여 보다 정확하고 유용한 결과를 생성하며, 검색된 컨텍스트를 모델의 입력으로 통합하여 사실성을 높입니다. RAG는 최신 정보에 접근하거나 편향된 데이터를 업데이트하기에도 유용하며, 텍스트 임베딩 기술을 이해하는 것이 중요합니다.좋은 임베딩은 유사 항목 검색 같은 다운스트림 작업을 잘 수행하는 것이다.
- Fine-tuning (미세 조정)
- Soft prompt tuning & Prefix Tuning
- Low-Rank Adaptation (LoRA) & QLoRA
미세 조정은 사전 훈련된 모델을 특정 작업에 맞게 조정하는 과정입니다. 모델은 이미 대량의 데이터로 사전 훈련되었으며, 미세 조정은 작은 작업별 데이터 세트를 사용하여 모델을 개선하는 데 사용됩니다. 미세 조정은 모델의 성능을 향상시키고 모델을 더욱 특정한 작업에 적합하게 만듭니다.
-
Caching (캐싱)
캐싱은 이전에 계산한 결과를 저장하고 재사용하여 레이턴시를 줄이고 비용을 절감하는 기술입니다. 특히 대규모 언어 모델에서는 입력 요청과 관련된 응답을 캐싱하여 동일한 요청에 대한 처리를 빠르게 할 수 있습니다. 캐싱을 적용할 때 사용자 요청 패턴을 고려하는 것이 중요합니다.
-
Guardrails (가드레일)
가드레일은 모델의 출력을 검증하여 품질과 안전성을 보장합니다. 모델이 생성하는 결과물이 신뢰할 수 있고 안전하며 사용자에게 적절한지 확인하기 위한 접근 방식을 제공합니다. 이를 통해 모델의 오류나 불안전한 결과를 방지하고 품질을 관리할 수 있습니다.
-
Defensive UX (방어적 사용자 경험)
방어적 사용자 경험은 사용자와 모델 간의 상호작용에서 발생할 수 있는 부정확성이나 오류를 예측하고 관리하기 위한 디자인 전략을 제공합니다. 이는 사용자가 모델과 상호작용하는 동안 신뢰성을 높이고 오용을 방지하며 사용자 경험을 개선하기 위한 것입니다.
-
Collect user feedback (사용자 피드백 수집)
사용자 피드백을 수집하면 모델을 개선하고 사용자 요구를 파악할 수 있습니다. 사용자의 선호도와 의견은 모델의 향후 개선과 평가에 도움이 되며, 명시적 또는 암시적인 피드백을 통해 수집할 수 있습니다. 이를 통해 모델을 개선하고 사용자에게 더 나은 서비스를 제공할 수 있습니다.
- Evals (평가)
모델의 성능을 측정하고 향상시키기 위해 다양한 평가 척도와 벤치마크 데이터를 사용합니다. 이러한 평가는 모델이 얼마나 잘 동작하고 있는지를 측정하고 모델의 품질을 개선하는 데 사용됩니다. 주요 메트릭은 BLEU, ROUGE, BERTScore, MoverScore 등이 있으며, 최근에는 강력한 언어 모델을 기반으로 다른 모델을 평가하는 참조 없는 메트릭도 등장하고 있습니다.
1. 오픈 소스 LLM의 Fine-Tuning
이 접근 방식에서, 오픈 소스 언어 모델(Large Language Model)을 기반으로 시작합니다. 대표적으로 GPT-3와 같은 모델을 사용할 수 있습니다. 그러나 이 모델은 처음에는 일반적인 언어 이해 능력만 가지고 있으며 특정 도메인 또는 회사의 내부 지식에 대한 이해가 없습니다.
미세 조정은 이 오픈 소스 모델을 특정 고객 또는 기업의 데이터에 맞게 조정하는 과정을 의미합니다. 이렇게 조정된 모델은 해당 도메인의 언어와 내부 용어를 이해하고, 그 도메인에서 일어나는 대화를 더 잘 처리할 수 있습니다.
그러나 이 접근 방식에는 몇 가지 고려해야 할 사항이 있습니다. 첫째, 데이터의 양과 질이 중요합니다. 모델을 미세 조정하려면 충분한 양의 풍부하고 정확한 데이터가 필요합니다. 또한 데이터에 문법 오류가 많으면 모델의 성능이 저하될 수 있습니다.
2. 검색 증강 생성 (RAG)
첫 번째 단계 - 데이터 분할 및 저장:
회사 또는 기관의 내부 정보를 청크(작은 조각)로 나누고 이를 벡터 저장소에 저장합니다. 청크는 특정 주제, 도메인 또는 문서와 관련된 정보를 담고 있습니다.
두 번째 단계 - 검색 및 생성:
사용자가 질문을 하면, 먼저 벡터 저장소에서 관련 청크를 검색합니다. 이때 청크 간에 겹치는 부분을 고려하여 정보를 찾습니다.
그런 다음, 언어 모델(Large Language Model)에 이 관련 정보를 제공하여 질문에 대한 답변을 생성합니다.
이러한 방식으로, RAG 접근 방식은 검색 기술과 생성 기술을 조합하여 도메인 특정 정보에 기반한 답변을 생성합니다.
- 청크 크기: 청크 크기를 결정하는 것이 중요하며, 작은 청크는 정보를 잘게 나누어 정확성을 높이지만, 더 많은 청크를 처리해야 합니다. 큰 청크는 처리해야 할 청크 수를 줄이지만 더 많은 컨텍스트 정보를 잃을 수 있습니다.
- 인접한 청크 간의 겹침: 인접한 청크 간에 겹침이 필요하며, 이를 통해 정보가 잘림 없이 전달됩니다.
- 임베딩 기술: 청크와 질문을 벡터로 변환하고 저장하는 임베딩 기술의 선택은 성능에 영향을 미칩니다.
- 문서 검색기: 벡터 저장소 또는 문서 검색기는 데이터를 효율적으로 저장하고 검색하기 위해 필요합니다.
- 이렇게, RAG 접근 방식은 정보 검색과 언어 생성을 결합하여 도메인 특정한 질문에 대한 답변을 생성하는 데 사용됩니다.
RAG와 Fine-tuning을 선택할 때 고려해야 할 요소
외부 데이터 접근 필요성: 외부 데이터에 접근해야 하는 경우 RAG를 사용합니다.
LLM의 행동 조절 필요성 (문체, 특정 도메인 지식): 모델의 행동을 조절해야 하는 경우 Fine-tuning을 고려합니다.
환각 증상 조절의 중요성: 환각 증상 조절이 중요하다면 RAG를 통해 적절한 문맥을 주입해야 합니다.
라벨링된 데이터 양: 라벨링된 데이터가 풍부하다면 Fine-tuning을, 그렇지 않다면 RAG를 고려합니다.
데이터의 정적 또는 동적성: 데이터가 자주 변경되는 동적인 데이터라면 RAG를, 자주 변경되지 않는 정적 데이터라면 Fine-tuning을 고려합니다.
응답 결과의 투명성 및 해석 가능성 필요성: 원천 데이터의 투명성이 필요하다면 RAG를, 그렇지 않다면 Fine-tuning을 고려합니다.
보통 다음과 같은 Use case를 고려할 때:
- Q/A System (질의응답 시스템): 외부 데이터 접근이 필요한 경우 RAG를 먼저 고려합니다.
- Summarization (요약): Fine-tuning을 먼저 고려합니다.
- Customer Service Chat Bot (고객 서비스 챗봇): RAG와 Fine-tuning을 혼합한 Hybrid 방식을 고려할 수 있습니다.
자료출처
LLM 기반 시스템 및 제품 구축을 위한 패턴 (eugeneyan.com)
CustomGPT를 만들고 AI로 회사를 강화하십시오 - 최고의 LLM 선택 - Abacus.AI 블로그
RAG 대 미세 조정(towardsdatascience.com)