코딩 AI에 의해 이른바 딸깍하면 대량의 코드가 생산되는데 굳이 언어를 배워야 하는걸까 하는 고민을 하면서도 여전히 코드를 읽고 쓰는 연습을 한다. 그 중에서도 내가 최근 많이 사용하는 언어는 파이썬인데, 언어도 재미있고 서드파티 모듈도 풍부하기 때문이다. 그런데 파이썬을 어느 정도 사용하느냐라는 질문을 받으면 내가 어느 정도로 잘 사용하는가에 대해 궁금함을 가지게 된다. 그 와중에 내가 본 파이썬 책 2권(이펙티브 파이썬과 파이썬 하우투)은 파이썬을 중급 수준에서 사용한다는 것이 어떤 의미인지를 알려준다.

 

 

 

<이펙티브 파이썬>과 <파이썬 하우투>는  기본적인 파이썬 문법을 다루는 책이 아니다. 기본 문법은 익힌 상태에서 모범사례를 통해 파이썬 다운 코드를 작성하는 사례를 살펴본다. <이펙티브 파이썬>의 경우 모범사례의 갯수도 판이 올라가면서 대폭 늘어났는데, 처음 1판에서는 59개, 2판에서는 90개, 3판에서는 125개로 늘어났다.(처음에 비해 2배 이상 늘어났네) 나는 모범사례를 살펴보는 것이 단순한 프로그래밍 언어 구문 학습보다는  의미가 크다고 생각한다. 결국  이런 책을 보고 공부하는 이유는 코드를 읽기 위함인데, 모범사례를 읽다보면 좋은 코드, 파이썬 다운 코드에 대해 감각이 생긴다.

 

개인적으로 파이썬 중급 수준이란 컴프리헨션기법, 각종 데코레이터, 클래스 및 예외 체계, 협업 환경 구축 등에서 동작 방식을 이해하고 코드에서 사용할 수 있는가에 달려있다고 생각한다. 그래서 <파이썬다운 코드를 개발하는 63가지 실용기법(인사이트)>와 <이펙티브 파이썬>은 비슷한 내용이 많다. 두 권 중 어떤 책을 읽어도 괜찮다고 생각한다. 둘다 읽은 입장에서는 서로 보완해 주는 부분이 있었다. 다만 편집 측면에서 <파이썬다운 코드를 개발하는 63가지 실용기법>이 좀 더 가독성이 좋았다. <이펙티브 파이썬>은 친절하게 본문 내에서 관련된 모범사례 항목의 번호와 제목을 모두 기재하고 있는데, 나에게는 과잉 친절 같아서 읽을 때 본문의 맥락이 자꾸 끊어지는 듯한 느낌이 들었다.

 

 

새로운 언어를 배우다 보면 기존에 사용하던 언어와 새로운 언어 문법의 유사점때문에 잘못된 인식으로 실제 동작과는 다른 코드를 작성할 수 있는데, 이 책은 실수하기 쉬운 부분을 잘 정리해 두었다. 늘 개발과정에서 가정(선입견)이 코드 오류의 원인이 된다.

 

<이펙티브 바이썬>에는 병렬처리에 관한 내용이 추가되었는데, 이 부분은 점점 처리량을 높여야 하는 애플리케이션 파이썬 개발자들에게 유용한 내용이 많다.  GIL때문에 느려라는 불평을 듣곤 하는데  멀티프로세스, 난-블러킹 API, 쓰레드, 비동기IO 등 매번 파이썬으로 작성하면 파이썬으로도 충분히 괜찮은 성능을 뽑아내는 코드를 작성할 수 있겠다. 이 부분에 대한 내용은 <파이썬 하우투>에서는 없다.

 

최근 출간된 파이썬 중급서 두권을 비교해 보자면, 조금 정돈된 코스로 파이썬 중급 과정을 익히고 싶은 사람은 <파이썬다운 코드를 개발하는 63가지 실용기법>을, 기존 알고 있는 지식을 사례를 중심으로 실력을 레벨업하고 싶다면 <이펙티브 파이썬>이 적절하다고 생각한다. 두께도 비슷하다.

이제 두 책의 내용 정도는 충분히 이해하고 작성하고 있으니 파이썬 중급 정도는 쓴다고 말해도 되겠지... 내 업무 상황에서는 파이썬 고급서까지 읽을 필요가 있을까 하는 생각은 든다. 

반응형

평소라면 굳이 찍어먹지 않아도 척 보면 알 수 있는 것도 있지만, 개발자에게는 뭔가 블랙박스를 열어보고 싶은 본능이라는게 있는 것 같다. 요즘같은 大 AI 시대에, "LLM은 어떻게 돌아가는 거야?"라는 질문에 "그냥 마법이야. API만 쓰면 되지"라고 대답할 수는 없는 노릇이다. 호기심으로 인해 직접 만들어보고, 운영하다가 망가지기도 하고, 그걸 고치면서 다시 깨달음을 얻고.. 이 과정을 반복한 것이 개발자의 인생 아니었나. 그래서 LLM의 이해를 돕기 위해 살펴본 책이 <밑바닥부터 만들면서 배우는 LLM>(세바스찬 라시카 지음, 박해선님 번역, 길벗 출간)이다.

 

 

길벗에서 나온 밑바닥부터 만들면서 배우는 LLM

 

 

 

책은 실제로는 거의 600쪽 가까운데, 부록이 100여 정도 되고, 워크북도 120여쪽 정도 된다. 그래서 본책은 300쪽 남짓이라 보면 된다. (300쪽으로 LLM 동작원리를 압축해서 설명한다.이해하려면 머리속으로 압축을 풀어야 한다) 파이썬 기본 문법만 알면 그럭저럭 따라가면서 만들어 볼 수 있다. 책은 3단계로 나눠서 LLM을 만든다. 1단계에서는 데이터를 준비하고, 어텐션 알고리즘을 구현하면서 LLM의 기본 골격을 만든다. 그런 다음 트레이닝 과정을 반복하고, 모델을 평가하면서 파운데이션 모델을 만든다. 사전 훈련된 가중치 값을 불러오고 미세튜닝까지 진행하는 것이 2단계다. 3단계는 활용인데, 미세 튜닝을 통해 분류기와 개인 비서로 활용하는 방법을 맛본다. 이 책의 장점 중 하나는 전체 로드맵을 두고 각 장마다 이번엔 어떤 부분을 만들것인지를 먼저 인식한 상태에서 설명을 이어간다는 점이다. 전체 과정중 현재 어디까지 왔는지를 이해하면서 책을 읽을 수 있다. 잘 구성된 책이다.

 

 

이 그림이 책의 목차인 셈이다.

 

 

이 책에서 만드는 LLM은 요즘 일상에서 사용하는 최신 AI(LLM 모델)이 아니다. 요즘은 사고에 추론까지 갖추기 위해 다양한 시도를 하지만 이 책은 텍스트 토큰나이징부터 시작하여 어텐션 매커니즘을 구현해 보고, LoRA 기반으로 미세조정까지 진행한다. 어찌보면 AI 바닥에 계신 분들에게는 이전 세대의 기술처럼 인식될 수도 있겠다. 하지만 나처럼 LLM을 활용하기 위해 고민하는 사람들에게는 이 블랙박스같은 LLM의 동작원리를 이해하는 것이 하나의 과제가 되는데, 초기(?) 버전의 기술을 살펴보는 것이 오히려 개념이 간결하고 복잡하지 않아서 이해하는데 도움이 되는 경우가 많다. 물론 동작 원리를 이해하고 나면 응용 개발자 입장에서는 다시 동작원리를 잊어버리고 활용을 하겠지만, 그래도 한번의 이해가 큰 도움이 되는 상황이 많다. 디버깅, 최적화, 트러블슈팅할 때   HTTP 프로토콜을 보지 않고 REST API만 호출하는 개발자와 HTTP 프로토콜을 이해하면서 REST API를 호출하는 개발자 사이에서 볼 수 있는 내공의 차이가 이런 호기심 때문은 아닐까 생각한다. 번역서인 까닭에 한글은 어떻게 처리해야 할지는 빠져있지만, 원리는 이해된다.

 

<밑바닥부터 만들면서 배우는 LLM>책을 읽기 시작한지는 좀 되었다. 추석 연휴를 이용해서 읽겠다는 계획을 세웠다. 그런데 처음 읽기 시도에서는 완독에 실패했다. 책을 읽다가 모르는 용어가 나오면 열심히 AI와 씨름하며 개념을 복습도 하고, 새로운 개념을 익히기도 했다. 그러다 보니 너무 곁길로 새어버렸다. LLM은 역시 어렵군하면서 잠시 우울해 하다가 그냥 잘 이해되지 않더라도 쭉~ 책을 따라하면서 일독을 했더니 저자가 설계한 내용이 조금 더 이해가 되었다.이런 이해를 바탕으로 다시한번 읽는 중이다. 완전히 이해하려면 몇 번을 더 읽어봐야할지 모르겠지만 여러번 읽으면서 이해의 해상도를 높여야 하는, 보기드문 핸즈온 LLM 책이라 생각한다. LLM의 작동 원리가 궁금한, "AI(OpenAI나 Vertex) API 호출만 할 줄 아는 개발자"에서 벗어나 원리를 이해하고 제대로 활용해 보고 싶은 개발자라면 이 책이 유용할 것이라 생각한다.

 

혼자 완독하기는 힘든 책이다. 인프런에서 진행되는 완독 챌린지 강의에 참여(이미 모집이 완료되었다.)하거나 역자인 박해선님의 유튜브 채널의 도움을 받는 것이 좋겠다.

 

 

 

밑바닥부터 만들면서 배우는 LLM | 세바스찬 라시카 - 교보문고

밑바닥부터 만들면서 배우는 LLM | 한 줄 한 줄 코드를 따라가다 보면, 나만의 GPT가 완성된다! GPT를 밑바닥부터 구현하며 LLM의 원리를 손끝으로 체득하는 실전 가이드어려운 개념은 그림으로 풀

product.kyobobook.co.kr

 

반응형

+ Recent posts