오늘 할 일: 갈고 닦기
article thumbnail

 

한빛미디어 서평단 <나는리뷰어다> 활동을 위해서 책을 협찬 받아 작성된 서평입니다.

 


https://www.hanbit.co.kr/store/books/look.php?p_code=B2599445240

 

핸즈온 LLM

LLM, 눈으로 익히고 손으로 구현하라. 트랜스포머 구조부터 시맨틱 검색, 미세 튜닝, 프롬프트 엔지니어링까지 그림과 실전 코드로 만들면서 배우는 대규모 언어 모델의 모든 것

www.hanbit.co.kr

 

 

도서 선택 이유

 



본격적으로 언어모델에 대한 업무를 수행하며 보다 깊은 이해가 필요하기 시작했다. 단순하게 지피티나 gemini와 같은 대형언어모델의 API를 통해 서비스를 구축하는 것이 아니라 소형언어모델을 이용해 분류를 한다던가 (당장 할지 안할지는 모르겠지만) 미세 튜닝까지 염두에 두어야 하는 상황이다.

 

 

지식을 배우기 위해 역시 최적의 방법은 책과 강의지 않나 싶다. 업무를 하며 IT 지식이 궁금할 때 빠르게 생성언어모델에게 물어보며 익히고는 있지만, 책이나 강의에서 제공하는 체계적인 깊이를 따라가기엔 아직 부족하지 않나 싶다. 언어 모델에 대한 깊은 이해, 특히 튜닝과 관련해 니즈가 생길 시점에 좋은 기회로 한빛미디어에서 핸즈온 LLM 도서를 제공 받았다.

 

 



목차와 주요 내용 소개

 


본 도서는 크게 세 챕터로 구성되어있다. 1부는 대규모 언어모델의 동작 원리에 대해서, 2부는 분류, RAG 등다양한 사용 사례에 맞게 대규모 언어 모델을 사용하는 법에 대해서, 마지막으로 3부는 대규모 언어 모델을 훈련 및 미세 튜닝하는 방법에 대해 설명한다.

 

 

1부: 언어 모델 이해하기



1부는 언어 모델에 대한 일반적인 이해로 시작한다. 어텐션 메커니즘의 등장부터 최근 각광 받고 있는 오픈소스 언어모델까지 개론적인 이해를 할 수 있도록 돕는다. 이후에는 핵심요소인 토큰화와 임베딩을 주의 깊게 살펴보고, 이후에는 트랜스포머 구조에 대해 자세하게 살펴본다.

 

내가 언어모델을 처음으로 익힌 게 2년 전이었다. 오랜만에 들여다보니 헷갈리는 부분도 있고 처음보는 개념도 있어서(그 사이에 새로 나온 개념이라기보다 개인적으로는 처음 보는 개념들..) 복습 겸 학습에 도움이 되었다. 특히 이미지로 개념을 쉽게 전달하려는 노력이 돋보였다. 아무래도 텍스트나 코드만으로 정보를 전달하기에는 어려운 부분이 분명히 있다보니, 이런 이미지를 활용하려는 구성이 큰 장점으로 느껴졌다.

 

 

3.1.6 트랜스포머 블록 내부 중

 

 

2부: 사전 훈련된 언어 모델 사용하기



2부는 일반적인 사례에서 LLM을 사용하는 방법들을 다룬다. 나는 특히 6장 프롬프트 엔지니어링, 7장 고급 텍스트 생성 기술과 도구를 눈여겨 봤다.

 

6장 내용인 프롬프트 엔지니어링은 나름 체계가 있으면서도 명확한 답이 없는 예술 영역이지 않나 싶다. 언어모델에게 시키려는 일과 예시, 제약사항 등을 나름 잘 따라서 작성했음에도 불구하고 대충 쓴 초안보다 결과가 못할 때도 있어서 쉽지 않다. 저자가 212페이지에서 언급했듯, “프롬프트 구성은 기본적으로 반복적인 실험 과정”이다. 그럼에도 실험을 하며 최적을 찾아야하는 것이 업무이니.. 할 일은 해야지🥹 최근에 작업 중인 프롬프트에서 예시를 다양화하고 생각 단계도 함께 제안했는데 내용이 너무 길어진 것이 문제인지(하필 소형언어모델을 테스트하고 있다) 오히려 짧았던 버전보다 결과가 좋지 않았다. 출근하게 되면 Let's think step-by-step을 꼭 추가해야겠다.

 

7장에서는 대화요약과 에이전트 내용이 도움되었다. 현재 구축한 챗봇에서는 window 사이즈로 제공하는 정보를 제한하고 있는데, 아무래도 더 앞단의 내용은 제외되다보니, 좀더 상호작용이 될 수 있는 챗봇을 만들기 위해서는 이후에 요약 기능을 넣어야 되지 않을까 싶다(그런데 생각해보니 다른 레퍼런스들은 매 세션마다 초기화되었던 것 같아서.. 챗봇을 놓을 플랫폼에 따라 도입을 고민해볼 필요는 있겠다..) 또한 에이전트의 경우, 요즘 너무 빼놓을 수 없는 주제여서 관심을 갖고 보았다. Langchain과 검색 도구를 이용해 에이전트를 만드는 예제와 함께 설명을 해주었는데, 제안하는 ReAct 프롬프트는 한번 테스트해보면 재밌을 것 같다. 프롬프트에는 "repeat N times"라고 써있는데 호출 횟수와 비용을 아끼려면 횟수는 제한하는 게 좋지 않을까 싶다.

 



3부: 언어 모델 훈련 및 미세 튜닝

 

 


3부에서는 베이스모델을 직접 응용하는 내용을 소개한다. 직접 데이터를 이용해 임베딩 모델을 튜닝하거나, 소량의 데이터로 효율적으로 미세 튜닝하는 법, 지시에 더 잘 따르게 하는 지도 학습 미세 튜닝 등을 다룬다. 최근에 다른 강의에서 PEFT, QLoRA와 같은 개념들에 대해 실습 없이 개념만 익혔었는데, 이 책에서는 트랜스포머, peft 라이브러리를 이용한 실전 코드 예제를 소개하고 있어서 유익했다. 데이터를 수집하는 작업이 워낙 공수가 필요해서 당장 업무에 쓰이지는 못하겠지만, 향후에 필요할 수 있으니 테스트하며 익혀보면 좋을 것 같다. 

 


도서의 장단점



좋았던 점

 

이미 앞서 언급했지만, 트랜스포머 같은 핵심 기술들을 이미지로 설명해주는 구성이 특히 마음에 들었다. 아무래도 텍스트보다 시각적으로 보는 게 이해에 훨씬 도움이 되는데, 이 책은 그 점을 잘 챙겨준다.

 

그리고 특정 개념이 나올 때마다 논문, 깃허브, 공식 페이지 등의 링크를 같이 제공해줘서, 검색이나 레퍼런스 정리에 시간을 아낄 수 있었다. (다만 구글플레이 어플로 읽다보면 드래그 선택이 좀 불편하긴 하다… 이건 어플 문제라 감안하고 봐야 할 듯. 웹을 사용하면 좀 더 접근이 편하긴 하다.) 이걸 하나하나 다 읽어보기는 힘들겠지만 특별히 관심있는 영역이 있다면 저자가 첨부한 링크를 따라가서 공부해도 좋겠다.

 

3.2 트랜스포머 아키텍처의 최근 발전 사항(p125).

 

무엇보다 책을 다 읽고 나니까, 이전보다 실무에서 언어모델을 좀 더 자신 있게 적용할 수 있겠다는 느낌이 들었다. 막연했던 개념들이 정리되고, “아 이건 이렇게 써먹을 수 있겠구나” 하는 감각이 생겼다고 봐도 좋겠다.

 


아쉬웠던 점

 

 

외서이고, 언어모델을 다루는 책이다 보니 예제 문장이 외국어인 건 이해한다. 다만 이전에 봤던 책 중엔 코드 예제까지 한글로 번역해준 경우도 있어서, 비교되긴 했다. 영어가 어렵다기보다는, 읽다가 ‘아 이게 무슨 의미지?’ 하고 한번 더 생각해야 하는 그 흐름 끊김이 좀 아쉬웠다.

 

 

그리고 6.5.2 ‘출력 검증 - 문법: 제약 샘플링’ 파트에서는 structured output 관련 내용을 다루고 있는데, 이 원리에 대한 설명이나 예시가 조금 더 자세히 나왔으면 어땠을까 싶다. 프로덕션에서는 언어모델을 기존 시스템과 연결할 때 structured output이 엄청 중요하게 쓰여서 많이들 알고가면 더 좋을 것 같다. 초심자들이 그 포인트를 잘 챙기면 좋을 것 같아서, 혹시 필요할 분들을 위해 허깅페이스에서 잘 정리한 자료도 같이 첨부해둔다.


https://huggingface.co/docs/inference-providers/guides/structured-output

 

Structured Outputs with Inference Providers

In this guide, we’ll show you how to use Inference Providers to generate structured outputs that follow a specific JSON schema. This is incredibly useful for building reliable AI applications that need predictable, parsable responses. Structured outputs

huggingface.co

 

 


총평



언어모델을 실무에 적용하고자 하거나, 언어모델에 대한 체계적이고 자세한 이해가 필요한 개발자, 데이터 사이언티스트이라면 꼭 한 번 읽어볼만한 책이었다. 단순히 모델을 사용하는 수준이 아니라 구조와 튜닝까지 다루기 때문에, 향후 적용 범위를 넓히려는 사람(바로 나)이라면 특히 더 유용할 것이다. 많은 개념이 등장하여 FOMO를 느낄 수도 있겠지만.. 차근차근 따라가면 분명히 얻어가는 것이 많을 책이다. 이미 머신러닝, AI에 대한 선수지식이 있는 사람이라면 크게 어렵지 않게 따라갈 것이다. 완벽하진 않지만 책을 한차례 보고 나니, "이제 언어모델을 더 잘 써볼 수 있겠다"라는 자신감을 얻었다는 점에서 이 책은 충분히 좋은 선택이었다.