요즘 개발자들은 머신러닝과 생성형 AI에 대해 대부분 찍먹을 시도합니다. 하지만 지금껏 나온 많은 책들이 엄청난 수식들로 가득차 있습니다. 그래서 작심삼일이 되기 쉽죠. 개념 이해도 만만찮은데 수식까지.. 그런데 이 책은 매우 실용적인 관점을 잘 지키고 있는, 정말 개발자를 위한 핸즈온 서적입니다.
나중에 저자의 면면을 살펴보니 허깅페이스 개발자들이 적은 책이네요. 역시 하수는 어려운 걸 어렵게, 쉬운 걸 어렵고, 중수는 어려운 걸 어렵게 쉬운걸 쉽게, 상수는 어려운 것도 쉽게 풀어낸다고 하더니... 트랜스포머 모델과 디퓨전 모델을 정말 쉽게(!-상대적으로) 설명해 줍니다.
생성형 AI라고 적혀 있지만, 트랜스포머 모델과 디퓨젼 모델을 다루고 있습니다. 저는 몇번 구글 스터디 잼이나 다른 책들을 통해 트랜스포머에 대해서는 조금 이해하고 있었는데, 책을 읽다보니 이 모델를 활용하여 어떤 식으로 이미지를 설명하는지를 정말 평이한 말로 이해할 수 있습니다. 물론 디테일하게 들어가면 어렵지만, 전체적인 그림을 이해하고 난 뒤 디테일한 기술과 수식의 영역으로 빠져들 수 있게 가이드하는 내용 구성이 이 책의 가치가 아닐까 생각됩니다.
이 책을 보기 전에 접했던, 역시나 한빛미디어에서 비슷한 시기에 나온 <핸즈온 LLM>이라는 책이 있는데, 이 두 권이 정말 좋네요. 핸즈온 씨리즈의 개념을 오라일리가 잘 뽑아냈고, 한빛이 매끄럽게 우리말로 잘 풀어서 책으로 엮었네요.
파이썬의 기본 문법과 LLM/GenAI의 기본 개념을 살짝 맛본 다음에 서비스에 적용하기 위하여 기반 기술에 대한 이해를 도와줄 책을 찾고 있다면 <핸즈온 LLM>과 <핸즈온 생성형AI> 이 두권을 권합니다. 내용은 어렵지만, 이렇게 쉽게 개념 이해를 도와주는 책을 찾기가 쉽지 않네요. 책 표지가 꼬깃꼬깃해졌는데, 너덜너덜해질 때까지 봐야할 책입니다!
아이가 태어난 후 100일을 채우면 부모는 100일 잔치를 연다. 아이에겐 이 세상에서 처음 맞이하는 기념일이다. 지금도 고3 수험생들이 그러는지 모르겠지만, 대학 입학 시험을 앞둔 100일전 평상시라면 하지 않을 약간의 일탈 행위(여학교에 가서 방석을 훔치거나 막걸리를 마시면서 합격을 기원하는??)를 벌이기도 한다. 사회는 적정 수준에서 100일이라는 명목으로 눈감아주기도 했다. (지금은 가치관이 바뀌어서 여학교에 무단침입에 방석을 훔치면 절도행위가 된다.) 상고시대로 올라가서 단군 신화에서 환웅의 아들 환인은 사람이 되고싶었던 곰과 호랑이에게 동굴에 들어가서 100일동안 쑥과 마눌만 먹으면 인간이 될 수 있다고 말한다.
100! 인생 첫 기념일이 되고, 합법적 일탈도 허용하고, 사람이 되고 싶은 곰이 쑥과 마늘을 씹던 매직 넘버...
인간에게 100일은 어떤 의미일까? 이번에 읽은 "#100일챌린지"는 일본의 평범했던 상경대생이 우연히 GPT를 만나 소프트웨어 개발을 접하게 되고 100일간의 여정을 통해 전문 개발자로 변해가는 성장기이다. 우연찮게 시작된 개발 이벤트가 끈기와 함께 AI가 결합되면서 성장을 가속화한 주인공의 이야기이다. 물론 AI의 도움만 있었던 것은 아니다. 적시에 적절한 자극과 도전을 제공한 (인간) 지도교수도 있었다.
#100일챌린지/오츠카 아미/인사이트
코딩의 ㅋ도 모르던 오츠카 아미는 우연찮게 수업 시간에 보고서 적는 법을 배우다가 챗GPT에게 '오셀로를 만들어줘'해서 진짜로 만들어 버리는 사건이 벌어진다. 교수님은 오츠카에게 계속 도전해 보기를 권한다. 이 사건을 계기로 오츠카는 매일 하나씩 도전 과제를 선정하고 이를 GPT와 함께 완성해 가면서 프로그래밍의 개념을 배워 간다. 그 모든 과정을 트위터에 공개한다. 처음에는 프롬프트만 입력하다가 재귀함수를 배우고, 클래스를 배우고, 디자인패턴을 배우고... 그 과정속에서 경험과 고민이 확장되는 과정을 엿볼 수 있다. 인공지능을 활용한 창의적 성취와 꾸준한 노력의 힘을 잘 보여주는 이야기(실화 바탕)인 셈이다. 예전에 소개했던 도연초 150단이 생각났다.
이 책을 읽으면서 학습에 대해서 다시 한번 생각해 보았다. 나는 프로젝트 기반 학습, 즉 Learning By Doing 이 효과적이라 생각해 왔다. 그런데 이제 AI시대에는 Doing And Learning으로 바뀌는게 아닐까 하는 생각도 잠시 들었다. 예전에는 구조화된 학습 경험을 통해 의미있는 학습을 이끌어냈다면 지금은 무언가를 하면서 동시에 학습도 함께 일어나는게 아닐까? 예전에는 뭔가를 하면서 자연발생적으로 배우는 비용이 구조화된 학습에 비해 훨씬 많이 들었는데, 이제는 AI와 함께 바로 문제에 부딪쳐 보면서 학습하는 것도 비용이 많이 들지 않아서 괜찮은 방법이 아닐까 하는 생각도 해보았다. 뭐랄까 예전엔 그냥 삽질이었는데, 이제는 AI 덕분에 스마트한 삽질이 되는 것 같은 느낌. 사족이지만, 나는 그래도 여전히 Learning By Doing With AI가 가장 효과적이라 생각한다.
책을 읽으면서 밑줄쳤던 몇몇 구절을 소개하면 다음과 같다.
제텔카스텐을 사용하면 예전의 아이디어와 지금 하는 작업을 자연스럽게 연결할 수 있다.
프로그래밍에서도 진척 상황, 막혔던 부분, 사용할만한 프롬프트용 정보 등을 빠짐없이 기록해 두었다. 어디서 어떻게 활용했는지도 자세히 적어놓았다. 자료만 손에 있으면 언제든 챗GPT와 상담할 수 있으니까. 이 메모는 처음엔 철저히 개인적인 비망록이었지만, 지금은 100일 챌린지의 진척을 관리하는 중요한 도구가 되었다.
코드만 짜는 거라면 경험이 없어도 프로그래머는 될 수 있어. 하지만 그건 엔지니어와는 달라. 프로그래머는 주어진 일을 코드로 구현하는 역할을 하지. 하지만 엔지니어는 시스템 전반을 바라보고 효율적인 알고리즘을 선택해서, 그 시스템을 어떻게 실현하고 확장할지, 장기간에 걸쳐 운용할 수 있을지를 고민해야 해. 그러려면 수학과 논리학의 기초지식은 필수야.
그냥 좋아하는 걸 일로 삼고 싶었던 게 시작이었지. 근데 그게 내 길을 열어줬어. 너도 좋아하는 걸 믿고 밀고 나가면 돼.
게으름이라 여겼던 '대충하기 위해 전력을 다하는 자세' 그것이 '프로그래머의 본질'이나 '재능'
다만 재사용 가능한 프로그램을 만든다는 정답만 추구하다 보니 어느순간 부터 내가 원하는 걸 잃고 실력에 안맞는 완성형만 좇고 있었다.
기술적인 문제나 고민은 여전하지만 그것조차 고통이 아니라 일상의 일부이자 창작의 묘미
눈에 띄지 않을 만큼 작은 진척들이 쌓이고 쌓이면, 언젠가는 그것이 확실한 실력으로 드러날 테니까.
프로그래밍 학습이 지속되지 않는 가장 큰 이유는 공부방식이 지루해서다.
배움이란 원래 그런거다. 나아가면 나아갈 수록 지금 내가 나아가고 있는 건지조차 잘 안보이게 된다.
지속이란 고통이 아니라 습관으로 즐기는 것. 매일 조그만 호기심을 찾아 몰입하는 것, 그 습관이야 말로 내가 100일을 이어올 수 있었던 비결일지도 모른다.
책을 읽다가 일본의 교육과정이 궁금해졌다. 94일째 과제를 하면서 선형대수에 나오는 아핀 변환이라는 토픽을 떠올리다니.. 일본 상경계 대학생들은 다들 수학 천재인가? 아니면 주인공이 숨은 이과생이었던 걸까?
여하튼 100일의 위대한 도전을 읽고 예전 컴퓨터 프로그래밍을 처음 배우던 내 모습이 다시 생각나서 피식 웃음이 나왔다. 즐거운 책 읽기였다. 다 읽고 나서 아들에게 이 책을 읽어보라고 전해 주었다. 아이는 책을 읽으면서 어떤 생각을 하게 될까?
아참, 사람이 되고싶었던 곰의 결말을 아는가? 호랑이는 100일을 못채우고 뛰쳐나갔고, 곰은 꾸역꾸역 노력했다. 이에 감동한 환인은 삼칠일, 즉 21일만에 곰을 사람으로 바꾸었고, 사람이 된 웅녀는 단군을 낳았다. 그만큼 100일은 길고도 긴 시간이다. :) 그 긴 시간을 도전한 주인공의 위대함에 박수를 보낸다.