< 모델 비교 >
모델은 7B부터 13B 사이 크기만 사용!
최신 LLM들의 특징들을 기록할 예정이다.
[EEVE-instruct] (=Solar)
- 한국어 모델 중 가장 뛰어난 성능을 보임
[Qwen2-7B]
- 한국어 파인튜닝된 모델을 사용.
- 기본 질의에도 제대로 답을 못함
- 종종 중국어가 섞여서 출력됨. 맘에 안듬
[Ko-PlatYi-6B]
- 한국어 파인튜닝된 모델
- 사이즈가 작아서 성능이 잘 안나오는 겅향이 있음
[Lamma3-8B]
- 굉장히 좋은 듯
- 답변에 자신이 없으면 이모티콘을 같이 내뱉는 편
- 무료!
[Mistral]
- 낫벧
[GPT4o]
- 조흥ㅁ
- 근데 이제 비싸다
[Claude 3.5 Sonnet]
하이쿠(가장 작음) -> 소네트(중간) -> 오푸스(가장 큼)
- 우와 왜이렇게 빨라
- 문장 질도 좋다. 짱짱맨
- 더존빵돌이 테스트 해봤는데, 역시나 아직 이정도로 복잡한 표는 인식을 못한당
+ 아티팩츠 기능 추가
< vLLM >
LLM에 대한 개발이 가속화되면서 서빙을 위한 다양한 최적화 방식들이 많이 연구되고 있다.
vLLM은 허깅페이스 대비 최대 24배까지 성능을 높일 수 있다.
vLLM은 PagedAttention 기법을 활용하여 문장 생성 속도를 비약적으로 높인 방법론이다.
현재까지는 리눅스에서만 설치 가능.
LLM은 기본적으로 한번에 하나의 토큰밖에 생성하지 못하므로 iterative함.
-> LLM이 커짐에 따라 파라미터가 많아져 비싸진 토큰 생성 과정을 생성이 끝날때까지 반복해서 하나의 토큰밖에 생성하지 못한다.
-> 이는 GPU의 연산 능력을 제대로 활용하지 못하는 memory-bound 과정임.
-> 많은 요청을 하나의 배치로 묶을 수 있으며 이를 위해서는 GPU 메모리를 효율적으로 관리해야 한다
여기서, KV Cache는 트랜스포머 모델의 각 레이어에서 생성된 키(K)와 값(V) 텐서를 저장하여 동일한 입력에 대해 반복적인 계산을 피하고 성능을 최적화한다. (장점: 추론 속도 향상, 메모리 사용 최적화)
[Paged Attention]
메모리 할당 비효율 문제, 메모리를 공유할 수 없다는 문제로 인해 고안된 attention 방식이다.
즉, 필요할 때만 dynamic하게 메모리를 할당하여 쓰므로, 남는 메모리를 줄일 수 있다. 또 블록 단위로 저장되기 때문에 메모리를 공유하는 것도 가능하다.
(결론임니다~)
- vLLM은 PagedAttention 기반의 LLM 서빙엔진이고,
- PagedAttention을 통해 KV cache 메모리의 낭비가 0에 가깝다.
- GPT, OPT, Llama와 같은 널리 사용되는 LLM을 지원한다.
- 단일 GPU에 담을 수 없는 크기도 지원한다.
- 모델이 클수록, seq length가 길수록, 디코딩 방법이 복잡할수록 성능 향상을 보인다.
<Graph RAG>
복합 검색이 가능한 개선된 RAG 시스템.
우선, RAG는 정보 검색과 생성형 AI 기술을 결합하여 사용자 데이터를 손쉽게 생성형 AI 모델에 반영할 수 있는 솔루션이다.
RAG 시스템은 생성형 AI의 단점을 극복하고자 도입되었지만 복잡한 질문들에 대해서는 충분한 맥락을 제공하지 못하는 경우가 있다.
이를 극복하고자, advanced RAG 시스템이 다양하게 등장하고 있다.
RAG를 개선할 수 있는 영역 : 데이터 인덱싱(데이터가 모델이 이해하기 쉬운 방식으로 변환), 데이터 검색(외부 DB를 검색), 데이터 저장소(작업에 맞는 DB를 RAG 시스템의 외부 저장소로 이용)
근데 이제~
복합 검색(Hybrid search)을 이용한 RAG 시스템은 검색과 데이터 저장소의 개선이 함께 이루어진다. 이는 생성형 AI 모델에 더 풍부한 맥락을 제공하여 더 어려운 정보에 대한 검색에 도움을 준다.
Hybrid Search는 다양한 형태로 구성되는데,
- 전문 검색(full-text search), 키워드 검색(keyword search) + 벡터 DB 기반의 벡터 검색을 결합한 복합 검색.
< LangGraph >
[LangGraph]
autoGPT 처럼 에이전트가 여러 개 있는것.
검색, 차트를 그리는, 코드를 작성하는 여러 가지 종류의 에이전트들이 존재.
어떤 임무를 주고 검색이 필요하다하면 검색 에이전트, 차트를 그려야하면 차트를 그리는 에이전트가 와서 동작. 이게 기존의 멀티 에이전트의 동작 방식이다.
'LangGraph' 는 기존에 나와 있던 멀티 에이전트 콜라보레이션과 뭐가 다르냐면
!! @ 가장 큰 차이점 : 주기(cycle)를 가진다!
1번 어떤 에이전트가 있고, 2번, 3번 어떤 에이전트가 있어서 이거를 필요에 따라서 그냥 무작위로 가져다가 역할을 수행하고 끝내고 이러한 동작을 반복하는게 아니라
그 안에 어떠한 에코 시스템, 사이클이 존재한다는 것이다.
그래서 1번은 Researcher가 먼저 이걸 수행을 해. 이걸 다 됐으면 라우터한테 전달을 하고 라우터가 판단을 내려서 그 다음에 chart Generator 한테 역할을 줘.
이게 아니라면 다시 돌아가서 Researcher 네가 이 역할을 해. 이런식으로 명확한 흐름도가 있다라는 것!
두 번째 차이점은 전역 상태(Global State).
현재 상태가 글로벌하게 정의가 되어 있고 그 글로벌한 state를 여러 에이전트가 바라보고 있다.
쉽게 요약하자면, 만약 지금 검색을 하고 있다고 하면 지금 검색을 하고 있구나. 이 검색 에이전트가 동작을 하고 있구나
그리고 차트를 그린다고 하면 지금 차트를 그리고 있는 상황이구나, 이런 것들을 멀티 에이전트들이 공유를 한다라는 것이다.
상태 관리. 여기서는 'State'라는 말을 사용하는데, 상태 관리를 할 수 있고 상태에 컨디션을 줘가지고
어떤 특정 조건에 따라서 발동되는 에이전트가 다르게 처리를 할 수 있는게 가장 큰 차이점이다.
+ 또 하나의 차이점은 도표에도 명확하게 나와 있듯이
그래프를 그려서 이런 사이클을 우리가 만들 수 있다. 그리고 그 사이클들이 애매모호한게 아니라 명확하게 그려진다는 점이 가장 큰 차이점이라고 볼 수 있다.
'NLP > LLM' 카테고리의 다른 글
[Reinforcement Learning] GRPO (Group Relative Policy Optimization) (0) | 2025.02.03 |
---|---|
Claude MCP(Model Context Protocol) 내용 정리 (0) | 2024.12.09 |