NIRVANA

[LangChain] LangChain노트 CH04 정리 본문

AI/LangChain

[LangChain] LangChain노트 CH04 정리

녜잉 2024. 7. 12. 13:06

CH04 모델 

모델, 혹은 LLM 단계는 이전 프롬프트 단계에서 구성된 입력을 기반으로 대규모 언어 모델을 활용하여 응답을 생성하는 과정을 의미 

RAG 시스템의 핵심적인 부분, 언어 모델의 능력을 최대한 활용하여 사용자의 질문에 대해 정확하고 자연스러운 답변을 생성 

 

LLM의 필요성

1. 사용자 의도 이해: LLM은 다양한 언어의 구조와 의미를 깊이 이해하고 있으며, 이를 바탕으로 복잡한 질문에 답할 수 있음. 자연어 이해와 자연어 생성 능력이 결합되어, 자연스럽고 유익한 응답 제공 

 

2. 문맥적 적응성: LLM은 주어진 문맥을 고려하여 응답을 생성, 사용자의 질문에 더욱 정확하게 대응 가능하며 사전학습된 지식외 사용자가 제공한 정보에 기반한 답변을 문맥을 참고하여 답변 

 

 

LLM의 중요성

LLM단계는 사용자의 질문에 대한 답변의 질과 자연스러움을 결정짓는 핵심 요소

해당 단계에서 LLM은 지금까지의 모든 데이터와 정보를 종합, 사용자의 질문에 최적화된 답변을 생성

LLM의 성능은 RAG 시스템의 전체적인 성능과 사용자 만족도에 직접적으로 영향을 미치며, RAG를 사용하는 많은 응용 분야에서 매우 중요한 역할을 함 

 


 

01. 다양한 LLM 모델 활용 

OpenAI

oepnAI 사의 채팅 전용 LLM

 

객체 생성 시, 다음의 옵션 값 지정 가능 

 

temperature

  • 0~2사이의 값을 선택

max_token

  • 채팅 완성에서 생성할 토큰의 최대 개수 

model_name

  • 적용 가능한 모델 

 

ChatAnthropic

인공지능 안전성과 연구에 중점을 둔 미국의 스타트업 기업, 대표적 모델로 Claude가 있음 

 

ChatCohere

Cohere는 기업용 인공지능 솔루션을 제공하는 선도적인 AI 기업

 

Command R+

  • Cohere의 최신 LLM
  • 기업용으로 최적화된 모델 
  • 128k 토콘의 긴 컨텍스트 윈도우, 고급 검색 강화 생성 기능
  • 10개 주요 비즈니스 언어 지원
  • 복잡한 비즈니스 프로세스 자동화를 위한 도구 사용 기능 

Aya

  • Cohere for AI에서 개발한 오픈소스 다국어 LLM
  • 101개의 언어를 지원, 기존 오픈소스 모델의 두 배 이상
  • 5억 1300만 개의 데이터 포인트를 포함하는 대규모 다국어 훈련 데이터셋 함께 공개 

 

ChatUpstage

대규모 언어 모델과 문서 AI 분야에 특화된 국내 스타트업 

 

주요 제품 및 기술

1. Solar LLM: Upstage의 주력 대규모 언어 모델 

2. Document AI Pack: OCR 기술 기반의 문서 처리 솔루션

3. AskUp Seargest: 개인화된 검색 및 추천 서비스, chatGPT 통합 무료 챗봇 AskUP의 업그레이드 버전

 

 

Xionic

한국 유망 인공지능 스타트업, 기업용 생성형 AI 솔루션 개발 

 

주요 제품

1. STORM Platform: 기업이 생성형 AI를 기술적 고민 없이 바로 적용할 수 있도록 하는 플랫폼

2. STORM Answer: 기업에 최적화된 생성형 AI솔루션으로 비즈니스 생산성 향상을 목표로 함

3. Xionic: 상업적 이용이 가능한 라이센스의 한국어 AI 모델 

 

LogicKor

한국어 언어 모델의 다분야 사고력을 평가하기 위해 만들어진 벤치마크 리더보드 

  • 목적: 한국어 언어 모델의 다양한 분야에서 사고력을 측정 벤치마크
  • 평가 영역: 한국어 추론, 수학, 글쓰기, 코딩, 이해력 등 

주요 특정

1. 다양한 모델 평가: 국내외 다양한 언어 모델들의 성능을 비교할 수 있음

2. 객관적 성능 측정: 모델의 실제 성능을 다각도로 평가, 객관적인 지표 제공

3. 오픈 소스: 누구나 접근하고 결과를 확인할 수 있는 오픈 플랫폼 

 


 

02. 캐싱 

랭체인은 LLM을 위한 선택적 캐싱 레이어를 제공

  • 동일한 완료를 여러 번 요청하는 경우, LLM 공급자에 대한 API 호출 횟수를 줄여 비용 절감 가능
  • LLM 제공 업체에 대한 API 호출 횟수를 줄여 애플리케이션 속도 높이기 가능 

 


03. 토큰 사용량 확인 

현재 OpenAI 에서만 구현

 


 

04. 모델 직렬화 

랭체인은 직렬화 체계를 공유

is_lc_serializable 클래스 메서드를 실행, 랭체인 클래스가 직렬화 가능한지 확인 가능

 


05. 구글 생성 AI

  • ChatGoogleGenerativeAI 클래스는 구글의 Generative AI 모델을 사용하여 대화형 AI 시스템을 구현하는 데 사용
  • 해당 클래스를 통해 사용자는 구글의 대화형 AI 모델과 상호 작용 가능
  • 모델과의 대화는 채팅 형식으로 진행, 사용자의 입력에 따라 모델이 적절한 응답을 생성
  • ChatGoogleGenerativeAI 클래스는 랭체인 프레임워크와 통합, 다른 랭체인 컴포넌트와 사용 가능

 

Gemini는 현재 SystemMessage를 지원하지 않으나, convert_system_message_to_human을 True로 설정하면, 첫번째 human message에 SystemMeassage는 추가 가능 

따라서, convert_system_message_to_human을 True로 설정하면 다음과 같은 동작 가능

  • ChatGoogleGenerativeAI 모델을 Gemini-pro로 초기화
  • convert_system_message_to_human 옵션을 Ture로 설정 

 

Streaming and Batching

ChatGoogleGenerativeAI 는 기본적으로 스트리밍과 배치 처리를 지원

 

Gemini Prompting FAQs

Gemini 프롬프트 유형 및 구조 제한 사항

 

1. 멀티 모달 입력 제공시, human 유형의 메시지는 최대 1개로 제한 2. System 메세지는 허용하지 않음3. 일반적인 채팅 대화의 경우, 메시지는 human/ai/human/ai 교차 패턴을 따라야 함4. LLM의 안전성 검사를 위반하는 메시지는 차단 될 수 있으며, 이 경우 모델은 빈 응답을 반환 

 

Safety Settings

Gemini 모델에는 기본 안전 설정이 있지만 재정의 가능 모델로부터 많은 "Safety Warnings"를 받고 있다면, 모델의 Safety_settings 속성 조정 가능 

 

 

Batch 단위 실행 

  • llm 객체의 batch 메서드를 사용, 여러 개의 프롬프트를 한 번에 처리
  • batch 메서드는 프롬프트 리스트를 받아 각 프롬프트에 대한 응답을 생성
  • 생성된 응답은 results 변수에 저장
  • for 루프를 사용, results의 각 응답 객체에 접근 

 

Multimodal support

사람이 보내는 메시지에 List[dict] 타입의 내용을 전달, 이미지 제공 가능이때, 각 dict는 이미지 값 또는 텍스트 값을 포함해야 함

 

img_url의 값은 다음 중 하나 일 수 있음

  • 공개된 이미지 URL
  • 접근 가능한 gcs 파일 
  • 로컬 파일 경로
  • base64로 인코딩된 이미지 
  • PIL 이미지 

 


6. Huggingface Endpoints 

Hugging Face Hub은 12만 개 이상의 모델, 2만 개의 데이터셋, 5만 개의 데모 앱을 보유한 플랫폼으로, 모두 오픈소스이며 공개적으로 사용가능하다는 특징을 가진다.

 

Hugging Face Hub은 다양한 ML 애플리케이션을 구축하기 위한 다양한 엔드 포인트를 제공

 

HuggingFace Endpoint 클래스를 사용하여 Hugging Face엔드 포인트와 상호 작용 가능 

 

Dedicated Endpoint

무료 서버리스 API를 사용하면 솔루션을 빠르게 구현하고, 반복할 수 있지만 로드가 다른 요청과 공유되므로 대용량 사용 사례에서는 속도 제한이 있을 수 있음

 

따라서 엔터프라이즈 워크로드의겨우 Interface Endpoint - Dedicated를 사용하는 것이 가장 좋음

Interface Endpoint - Dedicated를 사용하면 더 많은 유연성과 속도를 제공하는 완전 관리형 인프라에 엑세스 가능하며 리소스에 지속적인 지원과 가동 시간 보장 및 Auto Scaling 등 옵션이 포함됨 

 


7. 허킹페이스 로컬

실습 코드 참고 

 


 

8. 허깅페이스 파이프라인 

HuggingFacePipeline 클래스를 통해 HunggingFace 모델을 로컬에서 실행 가능

 

Model Loading

모델은 from_model_id 메서드를 사용, 모델 매개변수를 지정함으로써 로드 가능

 

Create Chain

모델이 메모리에 로드되면 프롬프트와 함께 구성, 체인 형성 가능

 

GPU Inference

  • GPU에서 실행할 경우, device=n 매개변수를 지정, 모델을 특정 디바이스에 배치 가능
  • 기본값은 -1, CPU에서 추론 수행
  • 여러 개의 GPU가 있거나 모델이 단일 GPU에 비해 너무 큰 경우, device_map="auto"를 지정 가능
  • 이 경우, Accelerate 라이브러리가 필요하며 모델 가중치를 어떻게 로드할지 자동으로 결정
  • 또한 배치모드로 추론 실행도 가능  

 


9. 올라마

  • 올라마를 사용하면 Llama2와 같은 오픈 소스 대규모 언어 모델을 로컬에서 실행 가능
  • 올라마는 모델 가중치, 구성 및 데이터를 Modelfile로 정의된 단일 패키지로 번들링
  • GPU 사용을 포함하여 설정 및 구성 세부 정보를 최적화

특징 

  • 모든 로컬 메돌은 자동으로 localhost:11434에서 제공됨
  • 명령줄을 통해 직접 상호 작용하려면 ollama run <name-of-model>을 실행
  • Bakllava와 llava와 같은 멀티모달LLM 지원 

 


10. GPT4 ALL

  • 코드, 스토리, 대화를 포함한 방대한 양의 깨끗한 어시스턴트 데이터로 학습된 오픈 소스 챗봇 생태계

 

GTP4ALL 모델 활용

GPT4ALL은 GTP-3와 유사한 대규모 언어 모델, 다양한 자연어 처리 작업에 활용됨

해당 모듈을 사용하면 GTP4ALL 모델을 간편하게 로드하고 추론에 활용 가능