GPT-4와 같은 대부분의 대형 언어 모델 (LLM)은 일반화되고 구식 데이터 세트에 대해 교육을받습니다. 그들은 일반적인 질문에 응답하는 데 탁월하지만 최근 뉴스, 최신 개발 및 도메인 별 주제에 대한 질문으로 어려움을 겪고 있습니다. 그러한 경우, 그들은 부정확 한 반응을 환각 시키거나 제공 할 수 있습니다.
Claude 3.5 Sonnet과 같은 더 나은 성능 모델의 출현에도 불구하고, 우리는 여전히 사용자 정의 된 응답을 생성하기위한 미세 조정을 모델링하거나 RAG (Respreval-Augmented Generation) 시스템을 사용하여 기본 모델에 대한 추가 컨텍스트를 제공해야합니다.
.
이 튜토리얼에서는 LLM 응답을 개선하는 데 사용되는 두 가지 별개의 기술을 탐색 할 것입니다. 우리는 그들의 차이점을 조사하고 결과를 평가하여 이론을 실천할 것입니다.
또한, 우리는 미세 조정 된 모델과 RAG 시스템을 결합하여 두 세계의 최고를 활용하는 하이브리드 기술로 뛰어들 것입니다. 마지막으로 특정 사용 사례 및 요구 사항을 기반 으로이 세 가지 방법 중에서 선택하는 방법을 배웁니다.
헝겊과 미세 조정의 개요
Rag 및 미세 조정 기술은 도메인 별 쿼리에 대한 응답 생성을 향상 시키지만 본질적으로 완전히 다른 기술입니다. 그들에 대해 배우자.
검색 세대 (rag)
검색 세대 생성은 GPT-4O와 같은 대규모 언어 모델이 외부 데이터 소스를 사용하여 컨텍스트 인식이되는 프로세스입니다. 리트리버와 발전기의 조합입니다. 리트리버는 인터넷이나 벡터 데이터베이스에서 데이터를 가져 와서 원래 사용자의 쿼리와 함께 생성기에 제공합니다. 발전기는 추가 컨텍스트를 사용하여 매우 정확하고 관련성이 높은 응답을 생성합니다.
더 알아 보려면 우리의 기사를 읽으려면 검색 증강 세대 (RAG) 란 무엇입니까? 기본에 대한 가이드와 RAG 응용 프로그램의 내부 작업 및 다양한 사용 사례를 이해합니다.
미세 조정
미세 조정은 도메인 별 데이터 세트를 사용하여 미리 훈련 된 모델을 조정하는 프로세스입니다. 미리 훈련 된 모델은 인터넷에서 폐기 된 여러 대형 일반 데이터 세트에 대해 훈련됩니다. 그들은 일반적인 질문에 잘 응답하지만, 도메인 별 질문에 응답하면서 어려움을 겪거나 환각시킬 것입니다.
예를 들어, 미리 훈련 된 모델은 일반적인 대화 능력에 능숙 할 수 있지만 복잡한 의료 절차 나 법적 선례에 대해 물었을 때 잘못된 답변을 할 수 있습니다.
의료 또는 법적 데이터 세트에서 미세 조정하면 모델이 정확성과 관련성이 높아지는 해당 분야의 질문을 이해하고 응답 할 수 있습니다.
미세 조정 LLMS 튜토리얼에 대한 입문 안내서를 따라 시각적 가이드로 미리 훈련 된 모델을 사용자 정의하는 방법에 대해 알아보십시오.
헝겊 vs. 미세 조정
우리는 LLMS의 응답 생성을 향상시키기위한 각 방법론에 대해 배웠습니다. 차이점을 살펴보면 더 잘 이해해 봅시다.
1. 학습 스타일 <.>
Rag는 동적 학습 스타일을 사용하여 언어 모델이 데이터베이스, 인터넷 또는 API의 최신 및 가장 정확한 데이터에 액세스하고 사용할 수 있습니다. 이 접근법은 생성 된 응답이 항상 최신의 관련이 있고 관련이 있습니다.
미세 조정에는 정적 학습이 포함되며, 여기서 모델은 교육 단계에서 새로운 데이터 세트를 통해 학습합니다. 이 방법은 모델이 도메인 별 응답 생성에 적응할 수 있지만, 재 훈련없이 새로운 정보를 통합 할 수는 없습니다.
2. 적응성
래그는 일반화에 가장 적합합니다. 검색 프로세스를 사용하여 다른 데이터 소스에서 정보를 가져옵니다. 래그는 모델의 응답을 바꾸지 않습니다. 모델을 안내하기위한 추가 정보 만 제공합니다.
미세 조정은 모델 출력을 사용자 정의하고 교육 데이터 세트와 밀접하게 관련된 특수 도메인에서 모델 성능을 향상시킵니다. 또한 응답 생성 스타일을 변경하고 때로는 RAG 시스템보다 더 관련성있는 답변을 제공합니다.
3. 자원 강도
rag는 모델 추론 중에 수행되기 때문에 자원 집약적입니다. Rag가없는 간단한 LLM과 비교하여 Rag는 더 많은 메모리와 컴퓨팅이 필요합니다.
미세 조정은 컴퓨팅 집약적이지만 한 번 수행됩니다. 훈련 과정에서 여러 GPU와 높은 메모리가 필요하지만 그 후 RAG 시스템에 비해 자원 친화적입니다.
4. 비용
Rag는 더 나은 응답 생성을 위해 최고 수준의 임베딩 모델과 LLM이 필요합니다. 또한 빠른 벡터 데이터베이스가 필요합니다. API 및 운영 비용은 매우 빠르게 상승 할 수 있습니다
미세 조정은 훈련 과정에서 한 번만 비용이 많이 듭니다. 그러나 그 후에는 RAG보다 훨씬 저렴한 모델 추론 비용을 지불하게됩니다.
전반적으로 평균적으로 미세 조정 비용은 모든 것이 고려되면 헝겊보다 비용이 많이 듭니다.
5. 구현 복잡성
RAG 시스템은 소프트웨어 엔지니어가 구축 할 수 있으며 중간 기술 전문 지식이 필요합니다. LLM 디자인, 벡터 데이터베이스, 임베딩, 프롬프트 엔지니어 등에 대해 배워야하며 시간이 필요하지만 한 달 안에 쉽게 배우기가 쉽습니다.
모델 미세 조정에는 높은 기술 전문 지식이 필요합니다. 데이터 세트 준비에서 튜닝 매개 변수 설정 설정에 이르기까지 모델 성능 모니터링에 이르기까지 자연어 처리 분야에서 수년간의 경험이 필요합니다. 실제 사례 로 이론을 시험에 넣습니다
미세 조정 모델, 래그 응용 프로그램 및 하이브리드 접근법에 동일한 프롬프트를 제공하여 결과를 평가하여 이론을 테스트합시다. 하이브리드 접근법은 미세 조정 된 모델과 RAG 응용 프로그램을 결합합니다. 이 예를 들어, 우리는 다양한 건강 상태에 대한 환자와 의사 간의 대화가 포함 된 Hugging Face의 Ruslanmv/Ai-Medical-Chatbot 데이터 세트를 사용할 것입니다.
llama 3
를 사용한 헝겊 응용 프로그램 구축
우리는 llama 3 및 langchain 생태계를 사용하여 Rag 응용 프로그램을 구축하는 것으로 시작합니다.
당신은 또한 코드를 따라 llamaindex를 사용하여 Llamaindex를 사용하여 Llamaindex를 사용하여 Rag 애플리케이션을 구축하는 법을 배울 수 있습니다. 1. 필요한 모든 Python 패키지를 설치하십시오
2. Langchain 및 Transformers 라이브러리에서 필요한 기능을로드하십시오.
3. 제한된 모델 및 데이터 세트에 액세스하려면 API 키를 사용하여 Hugging Face 허브에 로그인하는 것이 좋습니다.
4. huggingfacedatasetloader에 데이터 세트 이름과 열 이름을 제공하여 데이터 세트를로드하십시오. "닥터"열은 우리의 주요 문서가 될 것이며 나머지 열은 메타 데이터가 될 것입니다. %%capture
%pip install -U langchain langchainhub langchain_community langchain-huggingface faiss-gpu transformers accelerate
로그인 후 복사
로그인 후 복사
로그인 후 복사
5. 데이터 세트를 처음 1000 행으로 제한합니다. 데이터 세트를 줄이면 벡터 데이터베이스의 데이터 저장 시간을 줄이는 데 도움이됩니다.
from langchain.document_loaders import HuggingFaceDatasetLoader
from langchain.text_splitter import RecursiveCharacterTextSplitter
from langchain.embeddings import HuggingFaceEmbeddings
from langchain.vectorstores import FAISS
from transformers import AutoTokenizer, AutoModelForCausalLM,pipeline
from langchain_huggingface import HuggingFacePipeline
from langchain.chains import RetrievalQA
로그인 후 복사
로그인 후 복사
로그인 후 복사
우리가 볼 수 있듯이, "닥터"열은 페이지 내용이며 나머지는 메타 데이터로 간주됩니다.
from huggingface_hub import login
from kaggle_secrets import UserSecretsClient
user_secrets = UserSecretsClient()
hf_token = user_secrets.get_secret("HUGGINGFACE_TOKEN")
login(token = hf_token)
로그인 후 복사
6. GPU 가속을 활성화하는 것과 같은 특정 매개 변수를 사용하여 포옹면에서 임베딩 모델을로드하십시오.
7. 샘플 텍스트를 제공하여 임베딩 모델을 테스트하십시오.
# Specify the dataset name
dataset_name = "ruslanmv/ai-medical-chatbot"
# Create a loader instance using dataset columns
loader_doctor = HuggingFaceDatasetLoader(dataset_name,"Doctor")
# Load the data
doctor_data = loader_doctor.load()
# Select the first 1000 entries
doctor_data = doctor_data[:1000]
doctor_data[:2]
로그인 후 복사
8. 데이터를 임베딩으로 변환하고 벡터 데이터베이스에 저장하십시오.
9. 로컬 디렉토리에 벡터 데이터베이스를 저장하십시오.
10. 샘플 프롬프트를 사용하여 유사성 검색을 수행하십시오.
# Define the path to the embedding model
modelPath = "sentence-transformers/all-MiniLM-L12-v2"
# GPU acceleration
model_kwargs = {'device':'cuda'}
# Create a dictionary with encoding options
encode_kwargs = {'normalize_embeddings': False}
# Initialize an instance of HuggingFaceEmbeddings with the specified parameters
embeddings = HuggingFaceEmbeddings(
model_name=modelPath,
model_kwargs=model_kwargs,
encode_kwargs=encode_kwargs
)
text = "Why are you a doctor?"
query_result = embeddings.embed_query(text)
query_result[:3]
로그인 후 복사
[-0.059351932257413864, 0.08008933067321777, 0.040729623287916183]
로그인 후 복사
11. 벡터 데이터베이스 인스턴스를 리트리버로 변환하십시오. 이것은 우리가 래그 체인을 만드는 데 도움이 될 것입니다.
12. LLAMA 3 8B 채팅 모델을 사용하여 토큰 화기 및 모델을로드하십시오.
13. 테스트 생성 파이프 라인을 만듭니다.
vector_db = FAISS.from_documents(doctor_data, embeddings)
vector_db.save_local("/kaggle/working/faiss_doctor_index")
question = "Hi Doctor, I have a headache, help me."
searchDocs = vector_db.similarity_search(question)
print(searchDocs[0].page_content)
로그인 후 복사
14. 파이프 라인을 Langchain LLM 클라이언트로 변환하십시오.
15. 리트리버, 사용자 쿼리, 래그 프롬프트 및 LLM을 사용하여 질문 및 답변 체인을 만듭니다.
retriever = vector_db.as_retriever()
로그인 후 복사
16. 의사에게 질문을하여 Q & A 체인을 테스트하십시오.
데이터 세트와 매우 유사하지만 스타일을 선택하지는 않습니다. 그것은 맥락을 이해하고 그것을 사용하여 고유 한 스타일로 응답을 작성했습니다.
또 다른 질문으로 다시 시도해 봅시다.
이것은 매우 직접적인 답입니다. 어쩌면 우리는 의사와 환자 챗봇의 헝겊 접근법을 사용하는 대신 모델을 미세 조정해야 할 수도 있습니다.
%%capture
%pip install -U langchain langchainhub langchain_community langchain-huggingface faiss-gpu transformers accelerate
로그인 후 복사
로그인 후 복사
로그인 후 복사
코드를 실행하는 데 어려움을 겪고 있다면 Kaggle 노트북 : Llama 3을 사용하여 Rag 응용 프로그램 구축을 참조하십시오.
Rag Performance를 향상시키는 방법을 따르면 청킹, 재고 및 쿼리 변환과 같은 기술로 RAG 시스템 성능을 향상시키는 방법을 배우십시오 : 예제 자습서가있는 5 가지 주요 기술.
의료 데이터에 대한 미세 조정 라마 3
우리는 이전 튜토리얼 : 미세 조정 llama 3 및 로컬로 사용하기 때문에 의사와 환자 데이터 세트의 모델을 미세 조정하지 않을 것입니다. 단계별 가이드. 우리가 할 일은 미세 조정 모델을로드하고 결과를 평가하기 위해 동일한 질문을 제공하는 것입니다. 미세 조정 된 모델은 포옹 페이스와 Kaggle에서 사용할 수 있습니다.
OpenAI API를 사용하여 GPT-4 모델을 미세 조정하는 데 관심이 있다면 팔로우하기 쉬운 DataCamp 튜토리얼 미세 조정 OpenAI의 GPT-4 : 단계별 안내서를 참조하십시오.
출처 : Kingabzpro/llama-3-8B-Chat-Doctor
1. Transformer 라이브러리를 사용하여 토 케이저 및 모델을로드하십시오.
2. 올바른 매개 변수를 사용하여 Kaggle GPU T4 X2 환경에서 모델을로드하십시오.
3. 채팅 템플릿을 메시지에 적용하십시오.
4. 모델 및 토큰 화기를 사용하여 텍스트 생성 파이프 라인을 만듭니다.
5. 파이프 라인 객체에 프롬프트를 제공하고 응답을 생성하십시오.
응답은 데이터 세트와 매우 유사합니다. 스타일은 동일하지만 직접적인 답변을하는 대신 환자가 추가 검사를 받음을 시사합니다. .
6. 두 번째 질문을하자.
스타일은 동일하며 반응은 상당히 공감적이고 설명 적입니다. from langchain.document_loaders import HuggingFaceDatasetLoader
from langchain.text_splitter import RecursiveCharacterTextSplitter
from langchain.embeddings import HuggingFaceEmbeddings
from langchain.vectorstores import FAISS
from transformers import AutoTokenizer, AutoModelForCausalLM,pipeline
from langchain_huggingface import HuggingFacePipeline
from langchain.chains import RetrievalQA
로그인 후 복사
로그인 후 복사
로그인 후 복사
코드를 실행하는 데 어려움을 겪고 있다면 Kaggle 노트북 : 미세 조정 된 llama 3 hf 추론을 참조하십시오. .
하이브리드 접근법 (Rag Fine Tuning)
이제 우리는 이제 미세 조정 된 모델에 추가 컨텍스트를 제공하여 응답을 추가로 조정하고 균형을 찾습니다.
모든 코드를 다시 쓰지 않고 Q & A 체인을 사용하여 응답 생성으로 직접 다이빙합니다. 미세 조정 모델과 Rag Q & A 체인을 결합한 방법에 대한 완전한 코드를 보려면 하이브리드 접근법 (Rag Fine Tuning) Kaggle 노트북을 살펴보십시오.
체인에 우리가 헝겊과 미세 조정 된 모델을 요청한 것과 동일한 질문을 제공하십시오.
답변은 매우 정확하며 응답은 의사의 스타일로 생성됩니다.
%%capture
%pip install -U langchain langchainhub langchain_community langchain-huggingface faiss-gpu transformers accelerate
로그인 후 복사
로그인 후 복사
로그인 후 복사
두 번째 질문을하자.
이것은 이상합니다. 우리는 여드름이 고름으로 채워 졌는지 아닌지에 대한 추가 맥락을 제공하지 않았습니다. 하이브리드 모델이 일부 쿼리에는 적용되지 않을 수 있습니다.
의사 환자 챗봇의 경우 미세 조정 된 모델은 스타일 채택과 정확도에 탁월합니다. 그러나 이것은 다른 사용 사례에 따라 다를 수 있으므로 특정 사용 사례에 가장 적합한 방법을 결정하기 위해 광범위한 테스트를 수행하는 것이 중요합니다.
하이브리드 접근법의 공식 용어는 RAFT (검색 증강 미세 조정)입니다. 래프트가 무엇인지 읽어서 자세히 알아보십시오. RAG와 미세 조정을 LLM을 특수한 도메인 블로그에 적응시키기 위해 결합.
래그 대 미세 조정 대 래프트 중에서 선택하는 방법
모두 사용 사례와 사용 가능한 리소스에 따라 다릅니다. 자원이 제한된 스타트 업이라면 Open AI API 및 Langchain 프레임 워크를 사용하여 Rag Room of Concept를 구축하십시오. 이를 위해서는 제한된 리소스, 전문 지식 및 데이터 세트가 필요합니다.
중간 기업이고 응답 정확도를 향상시키고 클라우드에 오픈 소스 모델을 배포하기 위해 미세 조정하려면 데이터 과학자 및 기계 학습 운영 엔지니어와 같은 전문가를 고용해야합니다. 미세 조정에는 최고 수준의 GPU, 대형 메모리, 정리 된 데이터 세트 및 LLM을 이해하는 기술 팀이 필요합니다. from langchain.document_loaders import HuggingFaceDatasetLoader
from langchain.text_splitter import RecursiveCharacterTextSplitter
from langchain.embeddings import HuggingFaceEmbeddings
from langchain.vectorstores import FAISS
from transformers import AutoTokenizer, AutoModelForCausalLM,pipeline
from langchain_huggingface import HuggingFacePipeline
from langchain.chains import RetrievalQA
로그인 후 복사
로그인 후 복사
로그인 후 복사
하이브리드 솔루션은 리소스와 컴퓨팅 집약적입니다. 또한 미세 조정과 헝겊의 균형을 잡을 수있는 LLMOPS 엔지니어가 필요합니다. Rag의 좋은 품질과 미세 조정 모델을 활용하여 응답 생성을 더욱 향상시키려는 경우 이것을 고려해야합니다.
헝겊, 미세 조정 및 래프트 솔루션에 대한 개요는 아래 표를 참조하십시오.
rag
미세 조정
raft
장점
|
상황에 맞는 이해, 환각을 최소화하고, 새로운 데이터에 쉽게 적응하고, 비용 효율적으로 적응합니다. |
작업 별 전문 지식, 커스터마이즈, 향상된 정확도, 견고성 증가
는 걸레와 미세 조정, 더 깊은 이해와 맥락의 강점을 결합합니다.
|
단점 |
데이터 소스 관리, 복잡성.
데이터 편견, 자원 집약적, 높은 계산 비용, 실질적인 메모리 요구 사항, 시간 및 전문 지식 집약적.
구현의 복잡성은 검색 및 미세 조정 프로세스의 균형을 유지해야합니다
|
구현 복잡성 |
프롬프트 엔지니어보다 높음
|
rag보다 높습니다. 고도로 기술 전문가가 필요합니다.
세 가지 중 가장 복잡한
|
학습 스타일
| dynamic
정적
|
동적 정적
|
적응성 |
새로운 데이터 및 진화 사실에 쉽게 적응합니다
출력을 특정 작업 및 도메인으로 사용자 정의하십시오
실시간 데이터와 특정 작업 모두에 적응합니다
|
비용 |
낮은
|
보통
|
높이
자원 강도
|
낮음. 자원은 추론 중에 사용됩니다.
|
보통. 리소스는 미세 조정 중에 사용됩니다.
|
높이
|
결론
큰 언어 모델은 오늘날 AI 개발의 핵심입니다. 회사는 교육에 수백만 달러를 소비하지 않고 이러한 모델을 개선하고 사용자 정의 할 수있는 다양한 방법을 찾고 있습니다. 매개 변수 최적화 및 프롬프트 엔지니어링으로 시작합니다. 그들은 더 나은 반응을 얻고 환각을 줄이기 위해 Rag를 선택하거나 모델을 미세 조정합니다. 응답을 개선하기위한 다른 기술이 있지만 가장 인기있는 옵션이 있습니다.
이 튜토리얼에서 우리는 이론과 실제 사례를 통해 헝겊과 미세 조정의 차이점에 대해 배웠습니다. 우리는 또한 하이브리드 모델을 탐색했으며 어떤 방법이 당신에게 가장 적합한 지 비교했습니다.
LLM 및 관련된 다양한 기술에 대한 자세한 내용은 Llamaindex를 사용한 Rag의 코드와 Langchain을 사용하여 LLM 애플리케이션을 배포하는 코드를 확인하십시오.
|
위 내용은 Rag vs Fine Tuning : 실제 사례가있는 포괄적 인 튜토리얼의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!