LLM 엔지니어링 (LLM Engineer's Handbook)
RAG, 파인튜닝, LLMOps로 완성하는 실무 중심의 LLM 애플리케이션 개발
폴 이우수틴, 막심 라본 지음
조우철 옮김
LLM 관련 따끈따끈한 신작 입니다.
### 대상 독자 ###
책에서는 관심있는 누구나를 그 대상으로 하고 있지만,
"소프트웨어 개발에 대한 기본 지식이 있다면 좀 더 수월 하지만," 이 맞겠죠~
왜냐 하면, "학습을 위한 준비" 과정에서 "최소한 소프트웨어 개발 원칙과 실무에 대한 기본적인 이해가 필요하다." 라는 문구가 있기 때문이져
### 코드 예제 ###
https://github.com/PacktPublishing/LLM-Engineers-Handbook
아래 링크는 역자가 원본 리포지터리를 포크한 후 실행한 코드와 발생한 오류를 해결한 결과를 확인 할 수 있는 URL 입니다.
https://github.com/inrap8206/LLM-Engineers-Handbook
### 책 구성 ###
이 책은 총 11개의 장에 하나의 부록으로 구성되어 있습니다.
LLM Twin 이라는 LLM 애플리케이션 개발 프로젝트를 설계 부터 모델 개발, 구축 및 배포까지를 예제를 기반으로 학습하고 실습 해보면서 LLM 서비스 개발의 전체 과정을 학습할 수 있도록 구성되어 있습니다.
1장, LLM Twin 개념과 아키텍처 소개
LLM Twin 프로젝트 소개 및 제품 기획 아키텍처 설계에 대해서 다룹니다.
2장, 도구 및 설치
LLM Twin 프로젝트를 구현하고 배포하는데 사용되는 도구를 소개 합니다.
파이썬, MLOps와 LLMOps 도구, 데이터 저장을 위한 데이터베이스 (MongoDB, Qdrant), AWS 사용 준비
3장, 데이터 엔지니어링
데이터 엔지니어링에서 데이터 수집에 대해서 학습합니다.
LLM Twin의 데이터 수집 파이프라인 설계
LLM Twin의 데이터 수집 파이프라인
원시데이터를 데이터 웨어하우스로 수집
4장, RAG 특성 파이프라인
RAG 의 기본 개념과 작동 원리를 중심으로 이론적 배경을 학습합니다.
RAG 이해
고급 RAG 개요
LLM Twin의 RAG 특성 파이프라인 아키텍처
LLM Twin의 RAG 특성 파이프라인 구현
5장, 지도 학습 파인튜닝 (SFT)
SFT가 무엇인가, 그리고 필요한 이유에 대해서 알고
지시문 데이터셋 생성
SFT 기술
파인튜닝 구현
에 대해서 학습합니다.
6장, 선호도 정렬을 활용한 파인튜닝
AI 시스템을 인간의 선호도에 맞추기 위한 더 많은 기술들이 개발 되었고, 이를 선호도 정렬이라는 포괄적인 용어로 묶어서 부른다고 합니다.
이런 "선호도 정렬" 을 활용한 파인 튜닝에 대해 필요한 이유와 알고리즘, 그리고 알고리즘에 필요한 데이터 유형에 대해 학습합니다.
선호도 데이터셋 이해
선호도 데이터셋 생성
직접 선호 최적화 (DPO)
DPO를 활용한 모델 정렬 실습
7장, LLM 평가
LLM 평가 방법을 이해하고, 다양한 기법을 사용해 모델과 RAG 시스템을 평가하는 방법을 학습합니다.
모델 평가
RAG 평가
TwinLlama-3.1-8B 평가
8장, 추론 최적화
추측 디코딩, 모델 병렬처리, 가중치 양자화를 살펴보고, 추론 엔진을 이해하고 추론 최적화 관점에서 특징들을 학습합니다.
모델 최적화 전략
모델 병렬 처리
모델 양자화
9장, RAG 추론 파이프라인
RAG 시스템에서 검색 과정에 대해서 학습합니다.
LLM Twin의 RAG 추론 파이프라인 이해
LLM Twin의 고급 RAG 기법 탐구
LLM Twin의 RAG 추론 파이프라인 구현
10장, 추론 파이프라인 배포
LLM 애플리케이션의 추론 파이프라인을 배포하는 방법을 학습합니다.
배포 유형 선택 기준
추론 배포 유형 이해
모델 서빙에서 모놀리식 아키텍처와 마이크로서비스 아키텍처 비교
LLM Twin 추론 파이프라인 배포 전략 탐구
LLM Twin 서비스 배포
사용량 급증에 대응하기 위한 오토스케일링 기능
11장, MLOps와 LLMOps
LLMOps 의 등장 배경 및 LLM Twin 파이프라인을 클라우드에 배포, LLMOps를 LLM Twin에 적용하는 방법을 학습합니다.
### 책 내용 구성 ###
처음 접하는 학습자들도 쉽게 접근하고 이해를 돕기 위해 그림 표 그리고 예제 코드들을 적절하게 구성 및 배치 하였고, 각 장의 마지막에 "요약" 섹션을 두어 학습한 내용을 다시 한번 상기 시킬 수 있도록 구성되어 있습니다.
그리고 각 장 및 섹션 마다 학습 하고자하는 방향 및 학습 목표 그리고 학습해야 하는 이유에 대해서 먼저 정리 해줌으로써 좀 더 체계 적으로 각 장을 학습 할 수 있도록 지표를 마련해 주고 있습니다.
아래는 4장의 내용들 일부를 캡처한 것입니다.
*** 캡처 처럼 각 장에서 학습할 내용에 대해서 미리 알려 주고, 주요 내용을 목록으로 정리해 주고 있습니다.
*** 지나가도 되지만 알면 좋을 내용들에 대해서 노트 블럭으로 추가 설명을 해주고 있습니다.
### 결론 ###
확실히 LLM을 처음 접하 더라도 쉽게(?) 까지는 아니지만 어느정도 이해 할 수 있게 설명이 상세한 편이고 이해도를 높이기 위해
많은 노력이 들어간 책 입니다.
하나의 프로젝트를 만들어 가는 과정에서 학습할 수 있는 형태로 구성된 것도 실제 프로젝트에 참여하여 개발 해가는 과정을 격어 보는
형태이기에 실전 위주로 학습하는 형태를 선호 한다면 추천할 만한 책 입니다.