Super Kawaii Cute Cat Kaoani

NLP/LLM

[LLM] 테스트케이스 작성

zozni 2024. 7. 2. 10:51
728x90
반응형
SMALL

< 모델 비교 > 

모델은 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 기법을 활용하여 문장 생성 속도를 비약적으로 높인 방법론이다.

 

vLLM 구조

 

현재까지는 리눅스에서만 설치 가능.

 

LLM은 기본적으로 한번에 하나의 토큰밖에 생성하지 못하므로 iterative함.

-> LLM이 커짐에 따라 파라미터가 많아져 비싸진 토큰 생성 과정을 생성이 끝날때까지 반복해서 하나의 토큰밖에 생성하지 못한다.

-> 이는 GPU의 연산 능력을 제대로 활용하지 못하는 memory-bound 과정임.

-> 많은 요청을 하나의 배치로 묶을 수 있으며 이를 위해서는 GPU 메모리를 효율적으로 관리해야 한다

 

여기서, KV Cache는 트랜스포머 모델의 각 레이어에서 생성된 키(K)와 값(V) 텐서를 저장하여 동일한 입력에 대해 반복적인 계산을 피하고 성능을 최적화한다. (장점: 추론 속도 향상, 메모리 사용 최적화)

 

[Paged Attention]

메모리 할당 비효율 문제, 메모리를 공유할 수 없다는 문제로 인해 고안된 attention 방식이다. 

 

즉, 필요할 때만 dynamic하게 메모리를 할당하여 쓰므로, 남는 메모리를 줄일 수 있다. 또 블록 단위로 저장되기 때문에 메모리를 공유하는 것도 가능하다.

 

 

1
2

 

3
4

 

(결론임니다~)

- 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 기반의 벡터 검색을 결합한 복합 검색.

 

출처 : Medium 포스트

 

 

 

 

 

 

 

 

 

 

 

 

< LangGraph >

[LangGraph]

autoGPT 처럼 에이전트가 여러 개 있는것.

검색, 차트를 그리는, 코드를 작성하는 여러 가지 종류의 에이전트들이 존재.

어떤 임무를 주고 검색이 필요하다하면 검색 에이전트, 차트를 그려야하면 차트를 그리는 에이전트가 와서 동작. 이게 기존의 멀티 에이전트의 동작 방식이다.

'LangGraph' 는 기존에 나와 있던 멀티 에이전트 콜라보레이션과 뭐가 다르냐면

[출처] 테디노트

 

!! @ 가장 큰 차이점 : 주기(cycle)를 가진다!

 

1번 어떤 에이전트가 있고, 2번, 3번 어떤 에이전트가 있어서 이거를 필요에 따라서 그냥 무작위로 가져다가 역할을 수행하고 끝내고 이러한 동작을 반복하는게 아니라 

 

그 안에 어떠한 에코 시스템, 사이클이 존재한다는 것이다. 

 

그래서 1번은 Researcher가 먼저 이걸 수행을 해. 이걸 다 됐으면 라우터한테 전달을 하고 라우터가 판단을 내려서 그 다음에 chart Generator 한테 역할을 줘. 

이게 아니라면 다시 돌아가서 Researcher 네가 이 역할을 해. 이런식으로 명확한 흐름도가  있다라는 것! 

 

두 번째 차이점은 전역 상태(Global State).

 

현재 상태가 글로벌하게 정의가 되어 있고 그 글로벌한 state를 여러 에이전트가 바라보고 있다.

쉽게 요약하자면, 만약 지금 검색을 하고 있다고 하면 지금 검색을 하고 있구나. 이 검색 에이전트가 동작을 하고 있구나 

그리고 차트를 그린다고 하면 지금 차트를 그리고 있는 상황이구나, 이런 것들을 멀티 에이전트들이 공유를 한다라는 것이다.

 

상태 관리. 여기서는 'State'라는 말을 사용하는데, 상태 관리를 할 수 있고 상태에 컨디션을 줘가지고 

어떤 특정 조건에 따라서 발동되는 에이전트가 다르게 처리를 할 수 있는게 가장 큰 차이점이다.

 

+ 또 하나의 차이점은 도표에도 명확하게 나와 있듯이 

그래프를 그려서 이런 사이클을 우리가 만들 수 있다. 그리고 그 사이클들이 애매모호한게 아니라 명확하게 그려진다는 점이 가장 큰 차이점이라고 볼 수 있다. 

 

 

 

 

 

 

728x90
반응형
LIST