Community

[Dev.to] LLM 성능 향상을 위한 5가지 기법

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

알림

알림이 없습니다