평소 나는  SLM이 앞으로 두가지 측면에서 중요해질 것이라고 생각해 왔다.

 

첫째, AI가 동작해야 하는 환경에는 제약이 있다. 그것이 실시간성을 요구하는 기능적인 것일 수도 있고, 개인정보 보호같은 컴플라이언스 때문일 수도 있다. LLM의 성능이 우수하다고 하지만  산업현장이나 의료현장처럼 보안이나 규제가 존재하는 곳에서는 이야기가 달라진다. 제조업에 있는 지인도 SLM을 열심히 살펴보는 중인데, 장비의 센서 정보를 외부 서비스로 보낼 수도 없을 뿐더러, 요청을 보낸 뒤 언제 돌아올지 모르는 응답을 기다릴 수는 없다는 이야기를 들었다. 이런 환경에서는 모델의 절대적인 지능보다는 어디에서 실행할 수 있고, 얼마간의 자원으로 실행할 수 있고, 얼마나 도메인을 잘 이해하는가가 더 중요한 조건이 된다. Edge AI나 On-device AI가 계속 언급되는 이유이기도 하다.

 

둘째, 학습을 직접 경험하기 위한 현실적인 크기를 SLM은 제공해 준다. 우리가 다들 대형 언어모델을 이야기하지만, 개발자가 밑바닥부터 언어모델을 만들어 볼 일은 거의 없다. 실제 업무에서는 대부분  기존 모델을 선택하고, 데이터를 준비하여 파인튜닝하고, 평가하고, 양자화하거나 RAG를 붙여 원하는 성능을 만들어 가는 과정에 가까울 것이다.문제는 이 과정을 제대로 경험해 보려면 GPU 메모리와 학습 비용이라는 현실적인 부담이 존재하게 된다. 그래서 나는 SLM/sLLM이 단순히 작은 LLM을 넘어 학습 도구로 활용 가능성이 높다고 생각한다.

 

 

이런 고민을 하던 차에 길벗의 챗 <원하는대로 튜닝하는 나만의 sLLM>이 눈길을 끌 수밖에 없었다. 아차! 정확하게는 SLM이 아니라 sLLM이다. 이 책에서는 sLLM을 중점적으로 설명하는데, 중요한 것은 이름보다는 책이 다루는 범위다. 단순히 규모가 작은 모델을 소개하는데 그치지 않고 파인튜닝 방법부터 최적화, 서비스 구현까지 한 사이클을 모두 다룬다.

 

이 책에서 다루는 파인튜닝 과정을 제대로 로컬에서 실행해보려면 초기 투자비용이 발생한다. 물론 Google Colab에서도 실행할 수 있게 구성되어 있다.

 

이 책에서 소개하는 개념들은 책 한권으로 이해하기는 만만치 않다. 책에 실린 코드에는 설명이 달려 있지만, 각 기술을 좀 더 파고들기 시작하면 그것만으로도 공부가 필요했다. 이 부족한 부분은 독자가 스스로 메워야하는 여백? 공간인데... 나는 그 간격을 GPT에게 계속 질문하면서 메워 나갔다.

 

개인적으로는 1장은 개발자가 아니더라도 AI에 관심 있는여러 사람들이 함께 읽어봤으면 좋겠다. 지금까지 나온 AI의 흐름과 관련 용어, 개념을 잘 정리해 두었다. 그냥 추세를 읽고 싶은 분들이라면 충분히 공감할 내용이 많다. 용어 정리도 잘 되어 있다. 1장은 업계 흐름의 큰 지도를 그린다.

2장과 3장은 고만고만했는데, 1장 기본 개념을 기반으로 sLLM으로 개념을 확장정리하였다. 개인적으로 1장만큼 강한 인상은 받지 못했다. 어느정도 AI 관련 내용을 계속 학습해 온 사람이라면 익숙한 내용들이었다. 처음 접한다면 굳이 왜 작은 모델인가에 대한 배경 지식을 잡을 수 있을 것 같다.

 

4장부터 7장까지가 실질적으로 모델을 학습시키면서 최적화하는 과정을 설명한다. 모델을 가져와 데이터를 준비한 후 파인튜닝을 하고, 모델을 압축하고, 추론비용을 줄이는 과정. 코드에 주석이 달려 있지만, 그렇다고 모든 코드의 내부 동작을 한 줄씩 설명해주는 스타일의 책은 아니다. 그래서 중간중간 멈춰서 따로 찾아보거나 GPT 선생님의 도움을 받아야 하는 부분이 꽤 있다. 반대로 말하지면 예를 따라가면서 전체과정을 한번 경험해 보는 것이 목표라면 적당한 것 같다.

 

 

GPT 선생님의 NF4 설명

 

LORA 어댑터 파라미터값 설명

 

8, 9장은 서비스로 구현하는 내용인데, 아직 읽고 있는 중이다.

 

SLM이나 sLLM을 이야기하다 보면 '잘 튜닝만 하면 작은 모델로도 LLM만큼 좋은 성능을 낼 수 있다'라는 주장도 자주 만나게 된다. 나는 최적화된 sLLM이나 SLM으로 범용적인 추론 능력과 광범위한 지식을 갖춘 LLM에 비할 성능을 얻을 수 있다는 말은 거짓이라 생각한다. 하지만 우리가 수행하는 반복적인 업무중 상당 부분은 LLM의 지능이 아니라 SLM/sLLM으로도 충분히 해결가능한 일이 많다. 이를 합리적으로 해결하는 것이 엔지니어의 몫이라 생각한다. 그래서 LLM으로 할 일과 SLM으로 할 일을 나눠 할당하는 것이 점점 더 중요할 것이라 본다.

 

이 책은 그 출발점으로 직접 자신의 컴퓨터 내지는 저가의 클라우드 환경에서 해보면서 배울 수 있는 내용을 담고 있는, 현 시점에서 볼 수 있는 몇 안되는 책이라 생각한다. 특정 파인튜닝 기술을 깊이 알고 싶다면 조금 부족한 느낌을 줄 수도 있겠다.

 

반응형

 

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

 

 

 

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

 

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

 

 

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

 

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

 

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

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

반응형

+ Recent posts