본문 바로가기

book

LLM 엔지니어링

반응형

LLM에 대한 이야기와 정보가 현재 기술적인 트랜드이고 시대의 흐름입니다.

실무에서 AI프로젝트를 시작하고 싶거나, 구성하는데 주안점을 둔 책이며, 이 책을 통해 LLM 기반 시스템을 구현하고 배포하는

기술을 향상시킬수 있습니다. 이 책은 MLOps의 원리를 깊이 있게 다루고 있고, 오픈소스 LLM를 활용해 실제 문제를 

해결하는 MVP를 개발하는 전 과정을 다루고 있습니다.

 

총 8장으로 구성되어 있으며, p.508 페이지로 구성되어서 많은 정보를 다루고 있습니다.

 

 

 

LLM Twin 개념과 아키텍처 이해

· LLM Twin의 개념은 AI모델인 LLM에 자신의 글쓰기 문제, 어조, 성격을 반영한 AI페르소나이다. 즉 자신의 데이터를 LLM에 파인튜닝하는 개념이다. 이런 개념을 도입한 사례는  아래와 같다.

 - 링크드인 게실물과 X 스레드, 친구와 가족의 메세지, 학술 눈문과 기사 등

· twin은 코파일럿과 차이를 가진다. 코파일럿은 프로그래밍, 글쓰기, 콘텐츠 작성등 다양한 작업에서 사용자를 보조하는 AI도 개념이다.

· 아키텍처는 ML시스템의 패턴인 특성, 학습, 추론 FTI 아키텍처를 이해해야 한다.

 

<LLM Twin의 고수준 아키텍처>

 

 

■ 도구 및 설치

처음 시스템을 구성하기 위해서 어떠한 기술을 사용하고, 적절하고 대중적인 오픈소스에 대해서 정보가 없기 때문에 판단하기 어렵습니다.

또한 하나의 기술만 사용되는 것이 아닌, 여러 기술들이 조합되어서 처리 프로세스 동작시켜야 하기 때문에 이 책에서는 그러한 기준을 제시합니다. 

· python기반으로 환경구성을 예제로 구성합니다. 

 - Poery를 통해서 의존성 및 가상 환경 관리 도구로 사용

 - 허깅 페이스 : 모델 레지스트리 역활로 ML모델의 라이프사이클을 관리하는 중앙화된 저장소

 - Poe the Poet : 작업 시행 도구

 - ZenML : 오케스트레이터, 아트팩트, 메타데이터

 - Comet ML : 실험 추적 도구

 - Opik : 프롬프트 모니터링

 - 몽고DB : NoSQL 데이터베이스

 - Qdrant : 벡터 DB

 - AWS플랫폼 및 세이지메이커 : 학습 및 추론을 위한 컴퓨팅

 이러한 기술적인 요소들에 대해서 키워드 및 주요 역활에 대해서 잘 이해할수 있습니다.

 

 

■ 데이터 엔지니어링

실제 작업을 수행하려면, 원시 데이터 수집이 필요합니다.

크롤링을 통해서 원시 데이터를 다양하게 수집하고 --> 몽고 DB 데이터 웨어하우스에 저장을 하고

 --> ETL 파이프라인을 설계하고 구현을 하게 됩니다.

· 주요 처리 과정

 - 데이터 수집 파이프라인 설계

 - 데이터 수집 파이프라인 구현

 - 원시 데이터를 데이터 웨어하우스로 수집

 

여기서 NoSQL을 이용하기 위해서 데이터 카테고리 구조화를 위해서 아래와 같은 방식으로 처리를 합니다.

ORM 및 ODM 패턴을 사용하는데, 보통 객체지향 프로그래밍을 사용하신 분들은 ORM에 대해서 익숙한 경우가 많습니다.

몽고DB 데이터 웨어하우스와 상호작용을 하기 위해서 기본 ODM클래스인 NoSQLBaseDocument를 구현합니다.

 

필요한 코드에 대해서 전체적으로 구체적으로 설명하고 있습니다.

 

 

■ RAG 특성 파이프라인

RAG는 생성형 AI응용 프로그램을 만들때 반드시 필요한 기술입니다. 

검색 증강 생성 RAG(Retrieval-Augmented Generation)의 약자로써, 이 기술의 핵심적인 역할은 LLM에 학습되지 않은 외부 데이터를 추가로 입력해 특정 작업(요약, 재구성, 데이터 추출)을 수행하는 것입니다. 

LLM을 사용할때, 학습되지 않은 데이터로 작업해야 하는 경우가 많고, LLM데이터를 학습시키기 위해서는 사전 학습이나 파인튜닝이 필요합니다. 대규모 데이터 수집, 고사양 GPU등에 대한 투자가 힘들고 비용이 많이 들기 때문에 RAG는 효율적인 해결적이 될수 있습니다.

 

· RAG 프레임워크 

각각의 역할 및 처리해야 하는 프로세스가 다른 3가지 파이프 라인을 가지고 있습니다.

 - 수집 파이프 라인

 - 검색 파이프 라인

 - 생성 파이프 라인 

· 임베딩 개념을 통해서, 우리가 왜 임베딩기법을 사용해야 하고, 활용해야 하는지 설명합니다.

· RAG의 고급 기법으로 검색 전처리 / 검색 / 검색 후 처리 방식으로 품질향상으로 가질수 있습니다.

 

 

■ 지도 학습 파인 튜닝, 선호도 파인 튜닝

 SFT 지도 학습 파인튜닝은 LLM을 실제 응용 프로그램에 효과적으로 적용하기 위해 반드시 거쳐야 하는 중요한 단계입니다.

LLM 초기 사전 학습 단계에서 다음 토큰을 예측하는 방법을 학습하고, 이후 SFT를 통해 선별된 모델의 성능을 개선합니다.

 

이러한 구성으로 파이프라인을 구성합니다.

각각의 데이터 선별, 중복제거, 정제, 품질평가, 탐색의 과정을 거치면서, 효율적인 파인튜닝 기법도 제시합니다

LoRA, QLoRa등을 다루며, 조금더 구체적으로 실전 파인튜닝을 수행합니다.

· 선호도 데이터셋을 구성하면서 DPO구현도 진행합니다.

 

■ LLM 평가 및 추론 최적화

구성은 하였지만, 모델의 성능과 역량을 확인하기 위한 과정은 중요합니다. 

일반적인 평가방법은 대규모 멀티태스킹 언어 이 (MMLU), LMSYS Chatbox Arena와 같은 벤치마크를 활용하는 것이 

많이 사용됩니다.

 - 모델 평가, RAG평가, TwinLiama-3.1평가 방식으로 내용이 구성되어 있습니다.

· Ragas는 RAG시스템의 평가와 최적화를 위해 개발자에게 표괄적인 도구 세트를 제공하는 오픈소스 툴킷입니다.

· ARES는 RAG시스템을 평가하기 위해 설계된 종합 도구 입니다.

· LLM 배포하는 것은 막대한 연산비용과 대규모 메모리 확보의 어려움으로 쉽지 않아서, 추론에 최적화를 이루어야 하낟.

 - 모델 최적화 전략 : KV캐시, 연속 배칭, 추측 디코딩

 - 모델 병렬 처리 : 데이터 병렬 처리, 파이프라인 병렬 처리, 텐서 병렬 처리, 접근 방식 결합

 - 모델 양자화 : GGUF와 llama.cpp를 활용한 양자화, GPTQ와 EXL2를 사용한 양자화 

 

■ 추론 파이프라인 배포

배포하는 것은 머신러닝 애플리케이션 라이프사이클에서 중요한 단계입니다.

- 온라인 실시간 추론

- 비동기 추론

- 오프라인 배치 변환
의 배포 유형이 있습니다.

 

 

2장에서 언급한 AWS의 세이지메이커를 통한 배포 단계를 수행 합니다.

시대의 흐름에 따라서 다양한 Ops가 생겨나고 있습니다.

DevOps, MLOps, LLMOps에 대해서 11장에서 설명하고 있습니다.

각각의 개념의 차이 및 라이프사이클, 특징점을 다루고 있으며, 개념을 확실히 잡을 수 있습니다.

 

 

 

 

반응형