멀티패러다임 프로그래밍 - 객체지향, 함수형, 명령형의 통합적 사고로 구현하는 소프트웨어 설계와 구현
유인동 지음 / 한빛미디어 / 2025년 4월
평점 :
장바구니담기


왜 멀티패러다임이 필요한지 본질을 알게 해주는 저자의 내공에 놀랐고, 이론과 실무의 간극을 없애는 전달력에 한 번 더 놀랐다.

간만에 또 불세출의 명작이 등장했다. 10년 전에 읽었던 멀티패러다임 프로그래밍을 다룬 또 하나의 명작 “브루스 테이트의 세븐 랭귀지《Seven Languages in Seven Weeks》”의 신선함을 다시금 느끼게 해준 명작이 이번엔 국내 저자에 의해 출간되어 더욱 기쁘다.

세븐랭귀지는 Ruby, Io, Prolog, Scala, Erlang, Clojure, Haskell 등 7개의 언어를 다루면서 언어나 패러다임은 도구일뿐 개발자로 하여금 멀티패러다임을 통한 문제 해결 본질에 집중하게끔 나무보다 숲을 보는 안목을 키워줬던 책이다.

반면 본 도서는 앞선 도서 대비 국내 저자의 저술인만큼 가독성이나 전달력 측면에서 현저히 뛰어나고, 또 ES6나 ES2017 등 그 이후 10년 간의 변화를 살펴보며 멀티패러다임 프로그래밍이 어떻게 정착했는지를 엿볼 수 있다.

무엇보다 실무에 즉시 적용할 수 있는 예제가 풍부히 수록되고, 원리에서 출발하여 실무에 적용하는 과정 즉, 왜 활용하는지에 대한 부분을 구체적으로 보여줌으로써 이론과 실무의 간극을 메우는 구성이 탁월하다.

25년 전 대학시절 C언어로 온갖 서비스를 구현하는 고수 선배의 코딩을 어깨너머 지켜본 적이 있다. C언어로 인코더나 디코더를 직접 구현하며 cgi로 웹 프로그램을 만들고, socket 통신은 물론, 게임 등 장르를 가리지 않는 탁월함에 적잖이 놀랐다.

그 중 가장 인상깊었던 프로젝트는 당시 OOP 개념이 지금처럼 전방위에 퍼지지 않았던 시점임에도 절차지향 프로그래밍의 대명사였던 C언어를 가지고 OOP 흉내를 내는 과정이었다.

구조체를 객체와 유사하게 활용하고, 내부에 함수 포인터를 활용하여 메소드 처럼 활용하는 방식이었는데 그도 모잘라 define 매크로를 활용하여 마치 요즘의 타입 추론과 함수형 언어를 흉내내는 것이 영락없는 무림세계 그것도 마교의 교주 천마같은 느낌이었다.

그 과정을 지켜보는 것은 굉장히 흥미로웠는데 까마득한 후배인 나로써는 C언어를 저렇게 Pythonic하게 활용하는 것이 맞는지 궁금증이 들기도 했고, 때로는 안정성에 문제가 있을 것 같은 불안감이 들기도 했고, 그럼에도 필요한 요소요소마다 언어를 철저히 도구로 수려하게 활용함에 감탄하기도 했다.

이런 고수가 있었는가 하면 또 한편으로는 개발자 커뮤니티에선 별 쓰잘데기 없는 논쟁이 벌어지기도 햇다. C언어와 PHP언어 중 무엇이 훌륭하냐는 어리석은 논의였는데 프로그래밍을 당시 무협 세계에 종종 빗대었던 개발자들의 이상한 습성은 흡사 정사대전을 보는 듯 했다.

사실 문제의 본질을 파악하여 해결하기 위한 과정이 중요하기에 도구가 목적이 아닌이상 도구의 쓰임새를 논할일이지 그 자체의 우수성을 따지는 것은 정말 불필요한 논쟁이다. 그럼에도 그때는 범용 언어인 C언가 훨씬 잘낫다느니, 콩나물을 사러가는데 자전거를 타야지 쓸데없이 그랜저를 타고가는게 맞냐며 PHP를 옹호하는 등 각자 나름의 개똥철학을 펼치며 스스로가 좋아하는 문파(?)를 비호하는 어리석은 무림인이 널리고 널렸다.

아무튼 이 책은 다양한 언어들이 가진 특성을 제대로 이해하고 선택하며 문제해결에 최적의 방안을 찾기 위한 언어 및 패러다임의 장점만 뽑아낸 조화를 추구하는 책이다. 더 나아가 저자의 풍부한 경험을 바탕으로 이론과 실무의 간극을 메워준다.

저자는 국내 굴지의 기업에서 경험을 쌓았으며 타입스크립트, 오브젝티브-C, 자바, Node.js 등 다양한 언어를 다뤄왔고, fx.js 창시자로 오픈소스 메인테이너 활동까지 참여해 온 고수이다.

무엇보다 책의 내용과 전달력이 저자의 능력을 입증한다. 책의 내용은 마치 라이브코딩을 보는 듯 전달력이 뛰어나며, 구체적인 예시를 들어 Why 문제에 대한 본질을 전달하는 과정은 예술의 경지에 가깝다.

예를 들어 본문 중에 NodeList가 왜 상속이 아닌 interface를 활용했는지에 대한 답변을 예시를 통해 명쾌하게 설명한 부분이 있다.

한 컨트리뷰터가 NodeList에 Array를 상속받도록 작성하여 배포한 사례를 가정하는 부분이 좋은 예시가 되겠다. 이후 Array에 변경을 가할 때마다 NodeList를 함께 고려해야 하는 의존성이라는 본질을 발견한다. 이는 오픈소스 기여 경험이 있는 개발자라면 흔히 경험을 통해 얻는 좋은 예시인데 이처럼 이론을 실무로 설명할 수 있는 저자의 내공과 경험은 의심할 여지가 없다.

프로그래밍의 패러다임에는 여러 형태가 존재한다. 순차적으로 명령을 수행하는 원시적인 절차지향 프로그래밍에서 부터 객체와 클래스 중심의 객체지향 프로그래밍, 상태 없이 순수 함수 중심을 추구하는 함수형 프로그래밍, 선언적으로 규칙과 조건을 명시하는 논리형 프로그래밍, 그 외에도 데이터 지향 프로그래밍 등 다양한 패러다임이 존재한다.

반면 지난 20~30년간 국내 IT 시장은 너무 편식한 경향이 없지 않다. Java 중심의 OOP에 너무 집중했고 SI 기반이 찍어내기식 돈만 바라보는 업체들의 행태 덕분에 편식은 점차 심해졌고, 건전한 개발자 생태계 발전에 적잖은 걸림돌로 작용했다.

또한 요즘엔 또 다른 의미의 편식이 존재한다. 프레임워크에 너무 의존하다보니, 대체로 후배들은 설계적 관점 즉, 멀티패렅다임 프로그래밍 수준의 숲을 보는 능력이 매우 떨어진다.

앞으로 AI의 물결이 모든 것을 바꾸는 시대가 다가오는데 프롬프팅 하나만 봐도 알 수 있듯 이제 질문을 정말 잘해야하는 시대가 다가왔다. 사실 질문을 잘할 수 있으려면 본질을 파악하는 능력이 중요하다.

본질을 파악하고 가진 요소들을 얼마나 잘 오케스트레이션하여 AI로 하여금 원하는 것을 얼마나 빠르게 얻을 수 있는지에 대한 능력이 중요한 시대가 된 것이다.

GoF 디자인 패턴 등장배경에서 볼 수 있듯 본 도서는 앞으로 AI와 그 사용자들이 만들어 나갈 변화에 필요한 숨은 진의를 파악할 수 있는 AI 시대에 필요한 교본과도 같은 책이라 할 수 있다.

AI가 발전하며 데이터가 더욱 중요해졌고 이는 프로그래밍의 발전 방향에 데이터가 상당한 종속성을 행사하는 계기가 되었다. 개인적으로 이터러블이 프로그래밍 언어론에 지대한 영향력을 행사하는 것은 데이터와 자료구조에 기인한다고 본다.

List, Array와 같은 자료구조를 활용하는 한 for문 형식은 피할 수 없게 되었는데 수치형 집합을 GPU가 병렬 연산하는 트렌드까지 만나면서 한 층 더 나아가 선형대수의 번창에 이르는 변화를 주도했다.

유사 군 데이터를 처리하는데 있어 프로그래밍은 next() 구조를 도입할 수 밖에 없었고 연역적으로 프로그래밍만 독립적으로 놓고 보던 초기 모델은 점차 데이터에 종속된 귀납방식으로 변모했다. 이 또한 어디까지나 문제 해결을 위한 당연 수순이다.

비동기 또한 패러다임을 바꾼 지대한 요소이다. 웹과 모바일의 등장으로 기다림 없이 다른 일을 할 수 있도록 극도의 효율성을 추구하는 과정이 필요한 시대가 되었다. 가장 큰 요인은 I/O 문제에서 발생하는 데 프런트엔드 진영이라면 앞서 언급한 UX 부분 백엔드라면 리소스를 제어하는 부분이 이에 해당한다.

대신 개발자로 하여금 실행 순서를 제어하는 능력을 요하는 부작용(?)이 생겼다. 실무적으로는 가독성이나 안정성 측면에 빨간불을 켠 셈이다. 모든 것은 트레이드 오프가 발생하니 어쩔 수 없는 문제이다.

이 책에서 잘 정리하고 있듯 자바스크립트 진영만 봐도 ES6에서의 Promise 도입, 2017년 async-await 채택의 현상은 이런 시대상을 반영한다.

객체 진영의 반복자 패턴에 함수형 진영의 일급함수가 결합하기 시작한 것이다. class 문법을 도입하며 동시에 순회규약 도입했다. 덕분에 지연평가나 리스트프로세싱이 가능해졌다.

메타 프로그래밍에서 한발 더 나아가 멀티패러다임이 대세가 되면서 함수는 다른 호출측 함수의 인자처럼 활용되며(일급함수-고계함수), 코드를 데이터와 로직이 담긴 List로 보는 관점으로 리스트 프로세싱이 탄생했다.

이 부분에 대한 구체적인 예시는 115p를 참조하면 된다. LISP에 착안하여 map(f, iterator)형식의 Pipe Operator를 만들어 보는 과정의 전반을 이해할 수 있다면 그리 어렵지 않은 이야기인데 이는 저자의 통찰과 전달력 덕분임을 강조하고 싶다.Pipe Operator115

이 책에 소개되진 않았지만 내가 자주 활용하는 Python 진영의 인기쟁이 Pandas 라이브러리에 apply(), map(), applymap(), agg(), transform(), filter(), pipe() 함수 등이 흔히 활용되는 것도 이런 멀티패러다임의 영향이다.

책의 전반부(1~4장)은 멀티패러다임이 등장하게 된 Why 즉, 본질에 집중한다.

수학적 원리, 불변성과 순수성, 예측가능성, 병렬처리, 비동기처리, 데이터처리, 쪼개어 연결하는 과정, typeof 키워드로 안전함을 보장하는 타입 추론, promise, 반복자 이터레이터의 변화, 제너레이터에서 yield와 iterator 반환의 결합, for…of 문법과 Symbol.iterator 시그니처의 활용, 커링, 변수같은 일급함수, 일급함수를 호출하는 고차함수(일급함수의 호출측), 필요한 시점에 필요한 만큼만 꺼내쓰는 지연평가, 고차원의 다형성을 제공하는 제네릭, 객체 모델링, 유연성과 확장성, 책임소재, 협업지향, 추상화, 캡슐화, 전개연산자(…), 구조 분해, 상속과 인터페이스의 활용 방법, 비동기 처리 등 정신없는 풍랑을 거치다보면 어느덧 함수형이 무엇인지, 객체지향이 무엇인지 별 의미가 없는 정반합의 완숙한 경지에 이른다.

후반부는 전반부에서 키운 내공을 바탕으로 현실의 세계를 평정한다. 패턴과 예제 중심으로 문제 해결의 본질을 어떻게 활용할지에 대한 저자의 사고방식을 쫓아가다보면 자연스럽게 내공을 운용할 수 있게 된다.동시성핸들링

명쾌하게 탄탄하게 쌓인 개념을 바탕으로 자연스럽게 손과 머리로 체화되는 과정이란..이렇게 이론과 실무의 경계를 지우는 저자의 내공과 전달력에 경의를 표하고 싶다.

책이란게 원래 사놓고 안보는 독자가 대다수겠지만 초급자에게는 1장만 해석되어도 프로그래밍의 세계가 달리 보일 것이다. 중급자는 5장만 따라해 봐도 본인의 실무 내공에 큰 변화가 있을것 같다.

아마도 보이지 않던것이 보이기 시작할텐데 시간, 속도, 시간복잡도, 프로세스, 메모리와 같은 H/W 리소스에 이르는 보이지 않는 것들이 보이고 신경쓰이기 시작할 것이다.

적어도 IT 서적 중 이렇게 전달력이 높은 저자를 본적이 없다. 다년 간의 내공과 강의 경험 없이는 이게 가능할까 싶다. 우리나라에도 이런 책이 존재한다는 것이 자랑스러울 정도이다. 왠만한 유관분야 원서보다도 이 책으로 시작하는 것을 추천하고 싶다.




댓글(0) 먼댓글(0) 좋아요(1)
좋아요
북마크하기찜하기 thankstoThanksTo
 
 
 
LLM 서비스 설계와 최적화 - 비용은 낮추고 성능은 극대화하는 AI 서비스 구축과 운영 가이드
슈레야스 수브라마니암 지음, 김현준.박은주 옮김 / 한빛미디어 / 2025년 4월
평점 :
장바구니담기


LLM 기반 서비스를 구축하는 데 있어 반드시 알아야 할 설계 지식과 성능-비용 간 트레이드 오프 전략을 다룬 필독서.

오랫동안 기다려온 책이 출간되어 너무 기뻤다. 이 책은 LLM 서비스 구축을 위한 거의 모든 것을 다루고 있고 특히 그동안 레퍼런스가 부족했던 내용들이 가득담겨 있어 매우 유용하다.

LLM 서비스 구축을 위한 핵심 주제인 설계, 인프라 구성, 파인튜닝, 성능-비용 간 트레이드 오프 문제를 다루고 있으며 특히 전략을 세우는 데 있어 데이터 기반의 가이드를 제시하고 있고 AWS 인프라를 담당하는 경력을 갖춘 저자의 글이기에 더욱 신뢰가 간다.

그동안 LLM을 만드는 데 집중해 온 시기였다면 이제 본격적으로 이를 활용하여 저마다의 가치에 AI를 입히고 서비스를 고려하는 단계에 이른 것 같다.

이를 위해 고민해야 할 사항이 많지만 그 중에서도 가장 두려운 요소는 역시 비용 문제이다. 예시로 GPT-4의 경우 모델 훈련 비용이 9천만 달러(약1700억원)에 육박 했다고 하니 일반 기업으로는 LLM 구축은 요원한 일이다.

그렇다고 잘 만들어진 LLM 활용에 집중한다면 비용 문제에서 해방될 수 있을까? 아래 그림은 LLM 활용 또한 비용 문제가 심각하다는 것을 실감나게 보여주는 좋은 예시이다.월별비용예시45

이래 그림은 LLMOps를 한눈에 볼 수 있게 도와준다. 시퀀스다이어그램은 물론 서비스 각 단계가 상당히 복잡하다. 각 단계별로 고려해야 할 요소들이 많으니 비용이 많이 들 수 밖에 없다.LLM시퀀스다이어그램39
LLMOps단계

이에 성능과 비용의 트레이드 오프의 적정선을 찾는 것이 중요한 문제인데 아래 도표를 통해 깔끔하게 파악할 수 있다.모델별 최대기준 비용58

벡터DB의 벤치마크 자료도 어느 기종의 벡터DB를 선택해야 할지 판단하는데 많은 도움을 주는데 이렇듯 저자는 흔히 보기 어려운 깊은 인사이트가 담긴 자료를 다양하게 제시하고 있어 실무에 많은 도움이 된다.벡터DB벤치마크51

이렇게 1장에서 LLM 관련 전반적인 비용 문제의 개요를 다뤘다면 2장에서는 파인튜닝에 집중하여 비용 문제를 해결하는 방법을 다룬다.

비용을 1순위로 두면서도 사내 LLM 기반 인프라 설계 전략을 수립하는데 다양한 방향성을 제시하고, 더불어 최대한 원하는 성능을 보장할 있는 다양한 방법론을 제시하고 있다.

먼저 비용을 산정하는데 있어 매우 유용한 스케일링 법칙이 등장한다. LLM 운영에 있어 가장 많은 제약을 받는 자원은 GPU 메모리이다. 아래 그림은 N(모델 파라미터 수)가 40 x 10^9 인 경우 추정되는 예산(C)을 보여준다. 덕분에 실제 운영 비용을 미리 예측하는 데 있어 꽤 유용한 팁을 얻을 수 있었다.스케일링법칙64
스케일링법칙예시65

이를 통해 파라미터를 얼마나 효율적으로 관리하는 것이 중요한 문제인지 도출된다. 책에서는 파라미터 효율적 파인튜닝(PEFT)으로 일반적으로 흔히 사용하는 프롬프트 튜닝은 물론, 실제 영향을 미치는 가중치는 적을 것이라는 것에 착안한 LoRA 기법을 비롯 프리픽스 튜닝, P튜닝, IA3와 같은 다양한 연구 결과 및 가이드를 제시한다.

그 외에도 특정 작업이나 도메인에 맞춤화 하는 전략, 저차원 행렬 분해 등 다양한 방법이 소개되는 데 개인적으로 미처 존재 여부 조차 알지 못했던 다양한 아이디어를 얻을 수 있어 매우 만족스러웠다.

3장에서는 추론 테크닉에 집중한다. 통상적으로 널리 알려진 대표적인 프롬프트 엔지니어링 기법 - 지시 내리기, 형식 지정, 예시, 평가, 단계별 추론 - 을 잘 정리한 후, 이를 통해 비용을 절감할 수 있는 다양한 방법을 소개한다.

예를 들어, tiktoken 라이브러리를 사용하면 토큰수를 미리 파악하는데 용이하다. 그 외에도 답변 길이를 100자 이내로 제한한다든가, 사용자의 요청을 분해하는 방법도 있다. 프롬프트를 배치 방식으로 관리하거나 텍스트 요약을 활용하여 프롬프트를 제어한다면 토큰 호출 비용을 크게 절감할 수 있다.

그 외에도 자주 발생하는 질의에 대한 백터 스토어 캐싱 방법, 긴 문서를 위한 체이닝 기법도 소개하고 있다. 긴 문서를 잘개 쪼개 병렬 처리 작업으로 비용을 절감시키는 방안인데 아래 그림은 한 눈에 개념을 이해할 수 있도록 도와준다.긴문서용체이닝124

이 외에도 양자화 기법 등을 활용한 모델 최적화 방법이 소개되는 데 이는 이어지는 4장에서 보다 자세히 다룬다.

4장은 트레이드 오프를 고려한 소형 모델을 대안으로 제시한다. 이를 위해서는 조직별 서비스 목적을 분명히 파악하여 비용 문제와의 타협점을 찾는 것이 중요하다.

실제 업계에서 소형 모델을 도입하여 비용을 절감하면서도 원하는 성능을 발휘하는 성공사례를 몇가지 소개한다.

양자화를 활용한 Mistral이 대표적인 예인데 이는 이미 2장에서 소개된 바와 같이 양자화 버전에 따른 비교 예시를 통해 직관적으로 장점을 이해할 수 있다.LoRA87

Zephyr에서 활용한 지식증류 아이디어도 주목할 만하다. 소형 모델임에도 불구하고 다른 대형 모델 대비 성능이 크게 뒤떨어지지 않는다는 점에서 또 다른 대안이 될 수 있다.Zephyr163

5장에서는 IT나 배포 등 기반 인프라에 대한 비용 절감 방안을 고민한다. 아래 도표와 같이 모델별 로드 시 메모리 요구양을 보면 효율적 인프라 설계의 중요성이 실감난다.모델별메모리요구량206

이 문제를 해결하기 위해 어떻게 메모리를 효율적으로 사용할지에 대한 다양한 연구 결과 및 방법론이 소개되는데 모델의 일부 파라미터만 저장 및 처리하는 방식이 그 중 하나이다.

그 외에도 16비트와 32비트 부동소수점을 혼합적으로 활용하는 혼합정밀도 표현 방식, 허깅페이스의 accelerate 라이브러리와 같이 CPU-GPU간 전환 활용을 고려한 후처리 양자화, 통상 GPU 메모리의 30% 이상을 차지한다고 알려진 KV 캐시를 효율적으로 관리하는 방법이 소개된다.

특히, KV캐싱 문제에 있어 PagedAttention 기법이 주목할 만하다. 마치 운영 체제 분야의 가상 메모리 관리 방식과 유사하여 IT 전공자들이 이해하는데 큰 어려움이 없다.PagedAttention212

최적화된 병렬 자동화 기법을 이용한 AlphaServe 방식도 눈에 띈다. 그 외에도 추측을 활용한 시퀀스 스케줄링인 S3기법이나, StreamingLLM 등이 소개된다. 개인적인 견해로 StreamingLLM은 이미 활용해 본 적이 있는데 비용 절감 측면에서 매우 우수했다.AlphaServe214

추론 가속화도 솔루션이 될 수 있겠는데 GPU 가속 도구를 활용하는 방법이다. 그 외에도 LLMOps의 복잡한 각 단계를 얼마나 잘 모니터링하며 비용을 절감할 수 있는 아이디어를 착안하는 것 또한 중요한 해법의 열쇠가 될 것 같다.

마지막 6장에서는 앞서 배운 것들 외에도 소프트 스킬 측면에서 성공하기 위한 전략을 제시하고 있어 유익하다. 구체적으로 인력 관리 측면이나 미래를 위한 트렌드를 가이드 해준다.

먼저 인력 측면에서 다양한 전문가가 필요한 데 도메인, 데이터 전문가는 물론 숙련된 레이블러, 법률 전문가도 필요하다. 더불어 교육 - 혁신 환경 조성 - 내부 프로세스 검토의 선순환을 위한 HR이 중요한 부분이다.

특히, 10인 정도의 최초 팀구성에 대한 예시가 팀 빌딩에 있어 많은 도움이 된다.팀빌딩267

마지막으로 미래 트렌드를 세가지로 종합하여 보여주는데 가장 최신 트렌드는 Agent 방식인 것 같다. 특히, 최근 MCP나 A2A의 등장으로 인해 피할 수 없는 대세 표준 혹은 프로토콜로 자리매김할 것 같다.

Agent를 실제 구현 및 테스트 할 수 있는 베이스라인 코드 소개를 끝으로 이 책의 긴 여정은 마무리 된다.

정리하자면 회사에 LLM 서비스를 도입하는 데 있어 반드시 검토해봐야 할 주제들을 거의 모두 다루고 있는 현 시점 매우 귀한 가이드라고 할 수 있겠다.

이 책이 제시하는 하나하나의 방법론들을 숙지 및 고민하지 않고 서비스화에만 몰입할 경우 추후 감당할 수 없는 비용 문제에 같은 고생을 반복하게 될지 모른다. 그렇기에 LLM 서비스를 고민하는 관련자라면 반드시 정독할 것을 추천하는 바이다.




댓글(0) 먼댓글(0) 좋아요(0)
좋아요
북마크하기찜하기 thankstoThanksTo
 
 
 
랭체인 & 랭그래프로 AI 에이전트 개발하기 - 현직 AI Specialist에게 배우는 LLM Agents! 랭스미스, 오토젠, AutoGPT, 크루AI, 라마인덱스, M365 코파일럿 에이전트까지
서지영 지음 / 길벗 / 2025년 3월
평점 :
장바구니담기


LLM 활용 기술들을 실제 코드 구현으로 가장 쉽고 빠르게 파악할 수 있도록 구성된 입문서

랭체인을 비롯한 LLM 활용 기술들의 개념을 익히고 코랩 기반으로 간단하게 실습해보면서 결과를 확인할 수 있도록 구성된 입문서이다.

이 책의 단연 돋보이는 특징은 난이도와 전달력이다. 일단 PC등에 설치 환경 구축 등의 과정을 피할 수 있어 입문자나 초보자가 코드를 실행하기 용이하도록 구성되어있다.

캐글 등의 데이터 관련 경진대회를 진행하다보면 베이스 라인이라는 기본 뼈대를 잡고 성능을 개선해나가는데 이 책의 예제는 그런 베이스 라인 예제를 배우는 단계로 보면 된다.

그렇기에 등장하는 예제들이 매우 심플하고 직관적이어서 이해하기 쉬울뿐더러 가장 중요한 기능만 담아 코드량을 줄였기 때문에 실습을 따라오는데 전혀 무리가 없고 랭스미스 등의 핵심 기술들의 굵직한 개념등을 체계적으로 파악하기에 용이한 구성이다.

7장까지는 전반부로 볼 수 있는데 AI 활용에 필요한 기술에 대한 개념을 도식과 예제로 설명하고 있어 난이도가 매우 쉽다.

핵심부분은 8장부터 진행되는데, 8장은 다양한 프레임워크를 활용하여 에이전트를 직접 구현할 수 있는 장이다. 랭체인, AutoGPT, 오토젠, 라마인덱스, 크루AI, 랭그래프 등 다양한 프레임워크를 사용해보면서 장단점을 한눈에 비교하기 좋게 구성되어있다.에이전트
시각화

이후 후처리 작업에 해당하는 랭스미스를 실습하는데 디버깅, 모니터링, 성능평가 등을 실습하며 향후 이 핵심기술들을 어떻게 활용해야 할지 큰 그림을 그리는데 필요한 알짜배기만 담아내고 있다는 점이 특징이다.디버깅
모니터링
성능평가

마지막으로 M365 코파일럿과 에이전트의 비교 파트가 등장한다. 저자의 타깃 독자층을 가장 쉽게 파악할 수 있는 부분이다.

M365의 경우 프로그래밍을 버튼 기능으로 최소화 할 수 있다는 것이 특징이지만, 그만큼 서비스 제공에 있어 자유도가 떨어지고 학습에 활용할 자료를 클라우드에 업로드해야 하는 제약 사항이 발생한다. 하지만 노코드 기반의 서비스 구현을 원하는 일반인에게는 꽤 쓸만한 선택지가 될 수 있다.

코랩에서 실습하기 때문에 이 책은 특히 비전공자나 프로그래밍을 잘 모르는 일반인도 왠만하면 따라할 수 있을 것 같다. 상세한 그림으로 어떤 버튼을 눌러야 하는지까지 상세하게 안내하고 있어 사실 프로그래밍의 특정 지식을 요하지 않도록 잘 구성되어 있다.

일반인들도 코딩을 어느정도 할 수 있는 시대가 된만큼 입문자 수준의 전공자와 더불어 LLM 활용의 첫걸음을 내딛기에 최적화된 서적이라 할 수 있다.



댓글(0) 먼댓글(0) 좋아요(0)
좋아요
북마크하기찜하기 thankstoThanksTo
 
 
 
제대로 시작하는 챗GPT와 AI 활용 with 파이썬 - 프롬프트 엔지니어링부터 음성 인식, 이미지 생성, 챗봇, 웹 서비스까지
에이먼 엘 암리 지음, 대니얼WJ 옮김 / 한빛미디어 / 2025년 3월
평점 :
장바구니담기


현존하는 생성형 AI 모델 대부분을 쉽게 실습해보며 빠르게 활용법을 파악할 수 있다. 임베딩, 파인튜닝, RAG, Agent 같은 난이도 있는 기술도 핵심만 빠르게 흡수할 수 있도록 도와준다.

LLM의 중요한 장점 중 하나는 일반인이 프로그래밍 세계로 진입하는데 장벽을 매우 낮춰준다는 점이다. 덕분에 이 책에서 다루는 내용과 같이 일반인도 LLM의 도움을 받아 기존에 엄두도 내지 못했던 기능을 구현할 수 있게 되었다.

다른 리뷰에서도 작성했지만 현시점만 놓고 봤을때 사실상 AI의 중요한 본질은 정량화, 비정형 데이터의 해석력에 있다고 생각한다. 비정형 해석 장벽이 낮아지면서 자연어로 프로그래밍 혹은 서비스를 만들 수 있는 가능성이 높아졌다.

이 책은 OpenAI 진영의 비정형 데이터를 해석할 수 있는 다양한 모델들을 실습해보는 예제이다.

그렇기에 눈에 띄는 장점은 다음 세가지를 들 수 있다. 첫번째로는 일반인이 따라갈 수 있는 난이도, 두번째로는 생성형 AI 모델의 전체 기능을 빠르게 훑을 수 있다는 점, 세번째로는 예시 기반으로 하니씩 실행해가며 쉽게 따라할 수 있다는 점을 들 수 있다.

첫번째 장점은 저자가 서문에서도 밝힌 바와 같다. 기반 지식이 부족해도 자신만의 지식시스템을 구축하고자 독자에게 상당한 도움이 될 수 있는 책이다.

대부분의 DevOps 환경 구성을 감춰줄 수 있는 구글 코랩 환경에서 실습이 이뤄지고, 초보자가 요금 폭탄을 맞는 실수를 피하기 위해 다양한 모델의 세부적인 가격까지 안내할 정도로 친절한 설명이 이어진다.코랩
가격

물론 Python의 예제가 등장하여 프로그래밍을 해 본 독자라면 더 좋겠지만, 일단 프로그래밍을 모르더라도 깃허브에 올라온 예제를 그대로 필사하는 정도만으로도 원하는 기능을 구현하는데 큰 무리는 없을것이다.

사실상 말이 프로그래밍이지 OpenAI의 API를 호출하는 형식의 코드가 대부분이기에 바둑으로 따지면 거의 외길 수순이다. 그대로 따라하면 큰 문제없이 수행된다.

더불어 중간 중간 중요한 개념들은 자세하게 설명하며 짚어나가고 있기에 대략적인 개념 정도는 잡으며 실습할 수 있을 것이다. 예를 들어 아래 그림과 같이 프롬프팅이 무엇인지 개념도와 예시 설명을 들고 있다.프롬프팅

초반부 프롬프팅과 같은 간단한 예제를 살펴보았다면 중반부에는 다양한 AI 모델을 체험할 수 있도록 구성되어 있다. DALL·E 모델을 활용하여 텍스트로 이미지를 생성해본다든가, 이미지를 합성해 보고, TTS나 이미지 분류 등을 실습하며 다양한 LLM의 활용법을 빠르게 익힐 수 있다.이미지생성
이미지합성

이 책은 OpenAI 중심의 모델을 주로 다루고 있지만, 부록을 참조하면 클로드와 같은 또 다른 진영의 AI 활용 실습을 진행해 볼 수 있다는 점도 장점이다.AI모델

다만, 후반부에 해당하는 15장 임베딩 파트부터는 일반인이 따라하기에는 다소 벅찰 수도 있다. 그래도 예제대로 실습을 따라하며 주요 개념만 파악해보겠다는 자세로 진행하면 상당히 많은 지식을 얻을 수 있을것이다.

임베딩의 경우 사실 개념상으로는 별게 없다. 이 세상의 자연어와 같은 텍스트를 단순히 숫자(조금 더 표현하면 벡터)로 변환해 주는 것이다.

이를 통해 컴퓨터가 알아들을 수 있게 숫자로 변환이 가능해진다는 점, 나아가 코사인 유사도와 같은 수학적 도구를 사용할 수 있다는 점이 큰 특징인데 이를 통해 벡터 공간에 포진된 두 개념의 유사도를 구할 수 있고 이로써 LLM은 정규표현식에서 한걸음 더 나아간 의미 기반 검색도 가능해진다.

다음의 예제는 임베딩의 개념을 아주 깔끔하게 소개해주는 예제이다. 입력된 자연어가 숫자 그것도 벡터 형태로 변환되어 출력되고 있음을 볼 수 있다.임베딩

여기서 한걸음 더 나아가면 독자가 보유한 자체 데이터로 기존 모델을 파인튜닝 할 수 있게 된다. 기능적인 측면만 놓고 봤을때는 나만의 별도 모델을 얻는 셈이다.

이 또한 일반인이 따라할 수 있을 듯 싶다. 파인튜닝 또한 OpenAI API에게 맡겨버리기 때문이다. 대시보드를 통해 아래 그림과 같이 모니터링 및 결과 확인이 가능하다.파인튜닝 모니터링
파인튜닝 결과

또한 부록을 포함하여 후반부에는 다양한 재미있는 예제들이 등장한다. 예를들면 스트림릿과 깃허브를 이용하여 건강상담 챗봇을 구현하는 예제가 그러하다. 둘 다 AI시대 각광받는 플랫폼이기에 비전공자들이 프로그래밍 세계에 진입할 수 있는 호기심 어린 좋은 예제라 생각한다.스트림릿과 깃허브1
스트림릿과 깃허브2

그 외에도 RAG, Agent의 핵심 코드 정도를 다루고 있어 이 두 개념의 핵심을 빠르게 파악할 수 있는 예제도 등장한다. 최근 등장한 A2A, MCP와 같은 기술을 제외하고 굵직한 개념 정도는 이 책을 통해 실습 및 파악할 수 있는 셈이다.

결론적으로 이 책은 일반인, 기획자, 경영자에게 매우 많은 도움을 줄 수 있을 것 같다. 물론 개발자중에도 AI를 거의 접해본 적이 없다면 빠르게 현존하는 AI 모델의 특성을 파악하고 기획하는 서비스에 어떻게 활용할지 판단하는데 매우 큰 도움이 될 것이다.



댓글(0) 먼댓글(0) 좋아요(0)
좋아요
북마크하기찜하기 thankstoThanksTo
 
 
 
랭체인으로 실현하는 LLM 아키텍처 - LLM 애플리케이션 아키텍처 설계와 실전 개발 퀵 가이드
조대협 지음 / 프리렉 / 2024년 8월
평점 :
장바구니담기


RAG, 에이전트 등 LLM 중심 기술의 핵심 개념을 심플하게 담아낸 책으로 관련 기술을 빠르게 실전에 적용하는데 도움이 된다.

LLM, RAG, 에이전트 기술을 다룬 책이다. 저자가 그 유명한 조대협님이신데, 역시 대협님의 글 답게 핵심 개념이 심플하게 잘 정리되어있고 중요한 개념이 빠지지 않게 기술되어 있다.

책이든 블로그이든 저자의 글을 읽으면 복잡한 개념을 단권화한 느낌이 강하게 든다. 본인이 새로운 기술을 익히면서 핵심을 정리한 느낌인데 이 책 또한 그런 방식이 개인적으로 마음에 드는 부분이다.

책은 크게 전반부와 후반부로 나뉜다. 3장까지의 전반부는 LLM과 그 주변 기술의 간략한 기능적 개요를 다룬다. 실습은 코랩으로 진행하기에 DevOps 부분을 신경쓰지 않아도 되어서 쉽게 따라할 수 있고 LLM은 구글의 제미나이를 활용한다.제미나이

이 책의 장점과 다루는 핵심은 4장 이후의 후반부에서 다룬다. 보통의 책은 프롬프팅의 일반적인 기술만 다루는 데 반해 이 책은 예제 선택 방법론도 다루고 있어 유익하다.

예를 들면 통계요약 알고리즘(MMR)이 그러한데 유사도 기반을 측정하여 토픽의 다양성과 중복 문제를 해결할 수 있다. 다만, 연산량에 따른 응답시간이나 성능적인 부분을 고려해야 한다.MMR

또한 LLM을 더욱 깊이있게 사용할 수 있는 다양한 기능들이 소개되어 좋았다. Buffer Memory나 Summary Memory와 같은 메모리 컴포넌트를 쓸 일이 있었는데 이 책 덕분에 핵심만 빠르게 파악할 수 있어 많은 도움이 되었다.메모리 컴포넌트

이름에 걸맞게 핵심은 4장의 체인 파트라 할 수 있다. 이중에서도 “체인”을 다루는 파트가 빠르게 기술을 습득하는데 도움을 줬다. 순차적인 체인을 구성하는 것은 별로 어려운 일이 아니지만, 병렬로 복잡한 흐름을 구성하는 것은 처음에는 까다로운 편인데 이 책에 안내된 것처럼 Advanced Sequential Chain을 이용한 가이드를 참조하면 좋다.Advanced Sequential Chain

2023년 중반에 등장한 LCEL의 개념도 반드시 알아둬야 할 핵심 개념이다. 이를 통해 병렬처리, 비동기 처리, 스트리밍 등의 복잡한 처리를 단순화 할 수 있다. 아울러 본 도서에는 유틸리티 체인도 다루고 있는데 이렇듯 핵심개념을 놓치지 않고 심플하게 핵심을 잘 전달한다는 점이 이 책의 매력이다.LCEL

마지막 5장으로 넘어가면 LangChain의 기능을 더욱 보강해주는 RAG 기술을 다룬다. Pinecone과 같은 유명 벡터 데이터베이스를 함께 활용하는 실습 예제가 있어 반드시 실습을 따라할 것을 권하고 싶다. 벡터DB와 임베딩의 핵심 개념 정도는 알고 있어야 이해에 무리가 없는데 다음 그림이 배경 지식을 잘 설명하고 있다.임베딩

임베딩이나 검색 증강을 실습하고 나면 마지막으로 에이전트와 툴의 개념에 대해 학습한다. 이는 LLM을 넘어서 특히 사내 데이터를 연동하거나 외부 검색엔진을 이용하여 검색의 품질을 높이는 등 벡터DB나 외부 API 서비스 등의 툴과 연동할 수 있도록 프로토콜상 독립적인 기능을 부여하여 서비스의 확장성을 돕는 기술로 2024년의 화두가 되는 기술이기도 하다.에이전트

이렇듯 LLM과 관련된 핵심개념을 매우 간결하게 전달하는 것이 이 책의 특징이다. 핵심 개념을 중심으로 저자의 다양한 시도 혹은 잘 갖춰진 베이스라인이 소개되고 있어 빠른 시간내에 다양한 기술과 본질을 파악하는데 도움이 된다.

물론 그만큼 내용상 중요하지 않은 부분들은 축약된 경향이 있고, 예제 또한 영문을 활용하고 있어 친숙하지 않은 면도 있어 입문자에게는 다소 난이도 있는 책으로 보일수도 있으나 중급 이상의 경험이 있는 독자라면 오히려 핵심을 빠르게 체득할 수 있어 만족스러운 구성이 아닐까 싶다. LLM의 핵심 기술을 빠르게 습득하고 싶은 독자에게 권하고 싶은 책이다.


댓글(0) 먼댓글(0) 좋아요(0)
좋아요
북마크하기찜하기 thankstoThanksTo