Week 13-14: AI로 진화하기
MNIST 분류 신경망과 mini GPT 구현
이번 주차에는 핵심 역량 목표를 정해두지 못해서, 진행한 과제와 느낀 점을 중심으로 정리해보려고 한다.
과제
MNIST 분류 신경망과 mini GPT 구현
과정
생소한 개념과 수학 용어가 많았고, 기간도 짧다 보니 구현 과정에서는 AI에 많이 의존했다.
그래서 구현 자체보다는 개념 이해에 더 초점을 두고 학습했다. 책만으로는 세부 개념을 충분히 이해하기 어려워, 다음 자료들을 반복해서 보았다.
- 알기 쉬운 TensorFlow, Keras, 딥 러닝 - Google Codelab
- Transformer로 직접 구현하는 GPT 모델 - 코딩애플
- ML / DL 시리즈 - 3Blue1Brown 한국어
- Attention/Transformer 시각화로 설명 - 임커밋
- Building a Fast BPE Tokenizer from Scratch
- The Illustrated Transformer – Jay Alammar
- Train Your Own LLM From Scratch
- GPT in 60 Lines of NumPy
- Let's build GPT: from scratch, in code, spelled out. - Andrej Karpathy
결과 및 피드백
실제 코드를 통해 GPT와 같은 LLM이 어떤 방식으로 동작하는지 확인했다.
다만 커리큘럼에서는 직접 코드를 작성하고, 평가하고, 가설을 세워 개선하는 과정을 의도한 것 같은데, 난이도가 높았고 AI 의존도도 커서 직접 구현이나 개선을 충분히 하지 못했다.
다음은 활동 중 작성해서 공유한 자료들이다.
- [Jungle My Note | W13] 밑바닥에서 시작하는 딥러닝 정리.md
- [Jungle My Note | W14] 딥러닝 & LLM 개념 정리.md
- Deep Dive into LLMs - Andrej Karpathy.md
그 외 작업
Jungle Bell 유지보수 전환
Jungle Bell은 정글 출석체크 알림용 트레이 앱이다.
지금까지 꽤 여러 작업을 진행했지만, 이제는 유지보수 단계로 전환하게 되었다.
커리큘럼 절반 이상이 지나가서 신규 유저들의 유입 동기도 없을듯하고, 기존 기능들도 안정적으로 동작하고 있어서 버그가 발견되지 않는 한 기능을 추가할 계획은 없다.
회고
이번 주차는 많이 어려웠고, 개인적으로 학습 의지도 많이 떨어졌다.
AI를 활용하는 것에는 관심이 있지만, 내부 공식을 따라가며 직접 구현하는 과정에는 흥미를 크게 느끼지 못했다.
그래도 모델이 동작하는 흐름을 코드 레벨에서 보면서, 기존보다 더 구체적으로 이해한 부분은 있었다.
다만 학습 의지가 떨어져 무의미하게 보낸 시간이 많았고, 차라리 개인 공부라도 더 진행했다면 좋았겠다는 아쉬움이 남는다.
이번 주차에는 개념 이해의 비중이 크고, 작성해야 할 코드는 상대적으로 적은 편이었다. 팀원들의 성향상 대부분 개인 학습에 가깝게 진행된 것 같다.
다만 각 주차마다 발표 준비를 하면서 모여서 개념을 정리했는데, 이 부분은 지식을 정리하는 데 도움이 되었다.
다음 주차에 시도할 것
이제 나만무 프로젝트만 남았다. 글을 작성하는 현재 기준으로 아직 팀은 결정되지 않은 상황이다.
앞 2주차까지는 개인이 프레임워크를 사용해 학습하는 시간이고, 이 기간 동안 간단한 CRUD와 AI 관련 기능을 구현해야 한다.
기존에 익숙한 스택을 사용하면 편하겠지만, TypeScript 기반의 풀스택 개발을 해볼 생각이다.
개인적으로 JS/TS 생태계를 그리 좋아하지는 않는다.
그래도 요즘에는 AI의 도움을 받아 풀스택으로 개발하는 진입장벽이 많이 낮아졌고,
프론트엔드에서 TypeScript가 사실상 표준인 만큼, 간단한 프로젝트라면 TS로 풀스택을 구현하는 편이 효율이 좋다고 생각한다.
레포를 나누지 않는데서 오는 편의성도 무시할 수 없다고 생각한다.
그리고 팀 프로젝트에 도입할 만한 코드 품질 개선 방법들도 함께 실험해볼 생각이다.
또 xv6나 POSIX 시스템 콜과 같은 관심 주제도 계속 학습해야 해서 할 일이 많을 것 같다.