5 Developer Techniques to Enhance LLMs Performance!
DEV Community
대규모 언어 모델(LLM)은 그럴듯하지만 잘못된 정보를 생성하는 환각과 같은 문제로 인해 성능을 최적화하는 것은 여전히 어려운 과제입니다. 다음의 검색 증강 생성(RAG) 및 미세 조정 기술을 비롯한 다양한 LLM의 성능을 향상시키는 기법들을 충분히 이해하여 성능을 개선할 수 있습니다.
< RAG 및 미세 조정(RAG & Finetuning) >
RAG
➤ LLM에 추가적인 컨텍스트 계층이 필요할 때 사용
➤ 외부 지식을 활용하여 모델의 응답을 향상
➤ 평가 결과 지식 격차가 발견되거나 모델에 더 폭넓은 컨텍스트가 필요할 때
➤ LLM을 개선하는 가장 저렴한 방법
미세 조정(Fine-tuning)
➤ 애플리케이션의 특정 작업, 고유한 음성 및 컨텍스트에 맞게 LLM을 조정하는 전문화에 관한 것
➤ 철저한 평가를 통해 모델의 숙련도를 측정한 후에 미세 조정 결정
➤ LLM이 업계별 전문 용어를 이해해야 하거나, 일관된 개성을 유지해야 하거나, 특정 도메인에 대한 깊은 이해가 필요한 심층적인 답변을 제공해야 하는 경우
➤ LLM의 미세 조정은 올바르게 수행하면 모델의 성능 크게 향상
< LLM에서 청크 크기의 중요성 >
청킹(Chunking)
➤대규모 텍스트 데이터를 의미적으로 의미 있는 작은 단위로 나누는 프로세스
청크의 크기
➤ 대규모 데이터 세트와 복잡한 언어 모델에서 정보 검색의 효과와 효율성에 직접적인 영향을 미치기 때문에 의미론적 검색 작업에서 매우 중요
➤ 청크 크기가 작을수록 텍스트 내에서 더 자세한 정보를 캡처하여 더 세분화된 정보 제공. 단, 문맥이 부족하여 잠재적인 모호성이나 불완전한 이해로 이어질 가능성 존재
➤ 청크 크기가 클수록 더 넓은 맥락을 제공하여 텍스트를 포괄적으로 볼 수 있음. 일관성을 향상시키지만 노이즈나 관련 없는 정보가 포함될 수도 있음
➤ 최적의 청크 크기는 세분성과 일관성의 균형을 유지하여 각 청크가 일관된 의미 단위를 나타냄. 하지만 일률적인 최적의 청크 크기는 존재하지 않고, 이상적인 청크 크기는 특정 사용 사례와 시스템의 원하는 결과에 따라 달라짐
청크 크기의 최상의 결과를 얻을 수 있는 최적의 프로세스
➤ 동일한 문서를 청크 크기와 같이 여러 가지 방법으로 청크업: 128, 256, 512, 1024.
➤ 검색하는 동안 각 검색기에서 관련 청크를 가져와서 검색을 위해 함께 조합
➤ 리랭커를 사용해 결과의 순위 선정
청크는 일반적으로 올바른 검색에 도움이 되는 문맥적 의미를 저장하기 위해 벡터 임베딩으로 변환됩니다.
< 모델을 미세 조정(Fine-tune)하는 방법 >
미세 조정에는 대규모 언어 모델을 기본으로 사용하고 도메인 기반 데이터 세트로 추가 학습하여 특정 작업에 대한 성능을 향상시키는 것이 포함됩니다.
감독된 미세 조정(Supervised Fine-tuning)
➤ 이 방법은 텍스트 분류나 명명된 개체 인식과 같은 특정 작업과 관련된 레이블이 지정된 데이터 세트에 대해 모델을 훈련시키는 것
소수 학습(Few-shot Learning)
➤ 대규모의 라벨링된 데이터 세트를 수집할 수 없는 상황에서는 소수 샷 학습 유용
➤ 이 방법은 몇 개의 예제만 사용하여 모델에 작업의 맥락을 제공하므로 광범위한 미세 조정의 필요성을 우회
전이 학습(Transfer Learning)
➤ 모든 미세 조정은 전이 학습의 한 형태이지만, 이 특정 범주는 모델이 초기 학습과는 다른 작업을 처리할 수 있도록 설계됨
➤ 일반 데이터 세트에서 습득한 광범위한 지식을 활용하여 보다 전문적이거나 관련된 작업에 적용
도메인별 미세 조정(Domain-specific Fine-tuning)
➤ 특정 산업이나 도메인에 대한 텍스트를 이해하고 생성할 수 있도록 모델을 준비하는 데 중점
➤ 대상 도메인의 텍스트에 대해 모델을 미세 조정함으로써 도메인별 작업에 대한 더 나은 맥락과 전문성 확보
< 인간 피드백을 통한 강화 학습(RLHF, Reinforcement Learning with Human Feedback) >
OpenAI의 ChatGPT에 적용
➤ ChatGPT는 쿼리를 하는 사람을 위해 실제와 같은 대화형 답변을 생성하며, 이를 위해 RLHF사용
➤ ChatGPT는 방대한 양의 데이터로 학습된 대규모 언어 모델(LLM)을 사용하여 문장을 구성할 다음 단어 예측
RLHF
➤ RLHF는 지속적인 개선을 위해 사람의 피드백을 수집하고 강화 학습으로 모델을 개선하는 과정을 반복하기 때문에 반복적인 프로세스
➤ 강화 학습을 통한 인간 피드백(RHLF)을 사용하면 인간의 피드백에 맞춰 모델의 정확도 향상시킴
➤ 보상 모델은 모델 응답의 품질과 정렬에 대한 채점 메커니즘을 통해 피드백 제공
➤ 이는 사람이 피드백을 제공하는 것과 유사하지만 비용 최적화
➤ 모델은 분포에서 샘플링된 프롬프트에 대한 응답 생성
➤ 모델의 응답은 보상 모델을 통해 점수가 매겨지고, 보상에 따라 RL 정책이 모델의 가중치를 업데이트
➤ RL 정책은 보상을 최대화하도록 설계. 보상을 극대화하는 것 외에도 기본 모델의 행동과 과도한 차이를 방지하기 위해 또 다른 제약 조건 추가. 이는 사전 학습된 모델과 학습된 모델의 응답을 KL 발산 점수와 비교하여 목적 함수의 일부로 추가하는 방식
< RAG는 만능해결책이 아닙니다! >
다음은 검색 증강 생성(RAG) 사용 여부를 결정하는 데 도움이 되는 순서입니다
데이터 세트 크기 및 특이성
➤ 데이터 세트가 크고 다양하다면 RAG를 고려하세요.
➤ 데이터 세트가 작고 구체적이라면 RAG를 사용하지 마세요.
크고 다양한 데이터 세트의 경우
➤ 컨텍스트 정보가 필요한 경우 RAG를 사용합니다.
➤ 복잡성 및 지연 시간 증가를 감당할 수 있다면 RAG를 사용하세요.
➤ 향상된 검색 및 답변 품질을 목표로 한다면 RAG를 사용하세요.
작고 구체적인 데이터 세트의 경우
➤ 외부 지식이 필요하지 않은 경우에는 RAG를 사용하지 마세요.
➤ 빠른 응답 시간을 선호하는 경우에는 RAG를 사용하지 마세요.
➤ 간단한 Q&A나 고정된 데이터 소스가 포함된 작업이라면 RAG를 사용하지 마세요.
< 시맨틱 캐싱을 통한 LLM 및 RAG 개선 >
오늘날의 AI/ML 애플리케이션을 위한 RAG에서는 빠른 검색이 필수
시맨틱 캐시
➤ RAG는 이 기능을 어느 정도 향상시키지만, 다양한 사용자 쿼리를 저장하고 벡터 데이터베이스의 정보로 강화된 프롬프트를 생성할지 아니면 캐시로 생성할지를 결정하는 시맨틱 캐시 계층을 중간에 통합하는 것은 필수입니다.
➤ 시맨틱 캐싱 시스템은 유사하거나 동일한 사용자 요청을 식별하는 것을 목표로 합니다.
➤ 일치하는 요청이 발견되면 시스템은 캐시에서 해당 정보를 검색하여 원본 소스에서 정보를 가져올 필요성을 줄여줍니다.
< LLM 평가 >
LLM 평가 메트릭은 관심 있는 기준에 따라 LLM의 출력에 점수를 매기는 지표
➤ 다행히도 메트릭 점수를 계산하는 방법에는 임베딩 모델과 LLM을 포함한 신경망을 활용하는 방법도 있고, 전적으로 통계 분석에 기반한 방법도 있는 등 다양한 방법 존재
G-Eval
➤ 양식 채우기 패러다임으로 평가 작업을 직접 수행
➤ G-Eval은 최근에 개발된 프레임워크로, "더 나은 인간 정렬을 갖춘 GPT-4를 사용한 NLG 평가"라는 제목의 논문에서 LLM을 사용하여 LLM 출력(일명 LLM-Evals)을 평가하는 데 사용
➤ G-Eval은 먼저 생각의 연쇄(CoT,chain of thoughts)를 사용하여 일련의 평가 단계를 생성한 다음 생성된 단계를 사용하여 양식 채우기 패러다임을 통해 최종 점수 결정
GPTScore
➤ GPTScore는 목표 텍스트 생성의 조건부 확률을 평가 지표로 사용
SelfCheckGPT
➤ 간단한 샘플링 기반 접근 방식으로 LLM 결과물의 사실 확인에 사용
➤ 이 방법은 환각 출력은 재현할 수 없다고 가정하지만, LLM이 특정 개념에 대한 지식을 가지고 있다면 샘플링된 응답은 유사하고 일관된 사실을 포함할 가능성
➤ 셀프체크GPT는 환각 감지를 참조가 필요 없는 프로세스로 만들기 때문에 프로덕션 환경에서 매우 유용
QAG(질문 답변 생성) 점수
➤ LLM의 높은 추론 능력을 활용하여 LLM의 결과물을 안정적으로 평가하는 점수
➤ 이 점수는 주관식 질문(생성 또는 사전 설정 가능)에 대한 답변(일반적으로 '예' 또는 '아니오')을 사용하여 최종 지표 점수를 계산합니다. LLM을 사용하여 점수를 직접 생성하지 않기 때문에 신뢰 가능
source: https://dev.to/pavanbelagatti/5-developer-techniques-to-enhance-llms-performance-3bbn
다음 내용이 궁금하다면?
이미 회원이신가요?
2024년 7월 27일 오후 12:12