엔지니어링 철학: Andrej Karpathy, 당신이 작성하지 않는 스택

핵심 요약
- Software 2.0는 Karpathy의 재정의입니다. 신경망은 손으로 작성한 것이 아니라 데이터로 컴파일된 프로그램이라는 것이죠. 데이터셋이 소스 코드이고, 학습이 컴파일러입니다.
- 그는 모든 계층을 바닥부터 직접 만듦으로써 그 주장을 펼칠 자격을 얻습니다. micrograd, char-rnn, nanoGPT가 그것입니다. 스스로 다시 만들 수 없는 스택은 신뢰할 수 없기 때문입니다.
- 그는 가르치는 일을 장인의 기예로 대합니다. 명료한 데모와 깔끔한 저장소는 자신의 이해를 시장에 내놓기 위한 수단이 아니라, 그 이해를 스스로 디버깅하는 방법입니다.
- 이 모든 것을 잇는 규율은 바닥부터 만드는 원칙입니다. 역전파를 손으로 한 번 직접 구현해 보면, 실제 모델이 실패할 때 그 원인을 추측하는 대신 알게 됩니다.
원칙
“신경망은 또 하나의 분류기에 그치지 않습니다. 그것은 우리가 소프트웨어를 개발하는 방식의 근본적인 전환이 시작되는 지점을 나타냅니다. 신경망은 Software 2.0입니다.” – Andrej Karpathy1
2017년 당시 대부분의 엔지니어는 신경망을 도구 상자 안의 또 다른 도구쯤으로 여겼습니다. 로지스틱 회귀로 부족할 때 꺼내 드는 분류기 정도로 말이죠. Karpathy는 그것이 전혀 다른 무언가, 즉 새로운 프로그래밍 패러다임이라고 주장했습니다. Software 1.0에서는 사람이 Python이나 C++로 명시적인 명령을 작성합니다. Software 2.0에서는 사람이 대략적인 골격, 즉 네트워크 구조를 작성하고 데이터셋을 큐레이션하면, “신경망을 학습시키는 과정이 그 데이터셋을 바이너리로 컴파일합니다.”1 가중치를 작성하는 사람은 아무도 없습니다. 프로그램은 저술되는 것이 아니라 길러집니다.
하나의 재정의가 그 아래의 모든 것을 재편합니다. 모델이 곧 프로그램이라면, 데이터셋은 소스 코드가 되고, 손실 곡선은 컴파일러 오류가 되며, 엔지니어의 일은 로직을 작성하는 것에서 로직이 출현하는 조건을 빚는 것으로 옮겨 갑니다. 같은 전환이 코드가 아니라 맥락이 현대 AI 시스템의 진짜 아키텍처가 되게 만듭니다. 동작을 지시하는 것이 아니라, 동작이 형성되는 바탕을 짓는 것입니다. 그리고 Karpathy의 모든 가르침 밑바닥에는 하나의 신념이 흐릅니다. 스스로 만들 수 없는 스택은 신뢰할 수 없다는 것이죠. 그래서 그는 모든 계층을 바닥부터, 그것도 공개적으로, 역전파를 한 글자씩 짚어 가며 만들었습니다.
배경
Andrej Karpathy는 1986년 슬로바키아 브라티슬라바에서 태어나 열다섯 살에 가족과 함께 토론토로 이주했습니다. 토론토 대학교에서 컴퓨터 과학과 물리학을 공부했고, 학부생 신분으로 Geoffrey Hinton의 수업과 독서 모임에 참석하면서 신경망이 정설이 되기 여러 해 전에 이미 그 복음을 흡수했습니다. 브리티시컬럼비아 대학교에서 석사를 마친 뒤 스탠퍼드로 가 Stanford Vision Lab에서 Fei-Fei Li 지도로 박사 과정을 밟아 2015년에 마쳤습니다. 그의 박사 연구는 컴퓨터 비전과 자연어가 만나는 지점, 즉 기계에게 이미지를 묘사하도록 가르치는 일에 놓여 있었습니다. 바로 그다음 10년이 찢어 열게 될 그 이음새였습니다.2
스탠퍼드에서 그는 이 대학 최초의 딥러닝 강의인 CS231n을 설계하고 가르쳤는데, 수강생은 2015년 150명에서 2017년 750명으로 늘었습니다.3 그는 2015년 OpenAI의 창립 멤버였습니다. 2017년에는 Tesla의 AI 디렉터가 되어 Elon Musk에게 보고하며 Autopilot 비전 스택을 이끌었습니다. 2023년 OpenAI로 돌아왔다가 2024년에 떠나 AI 교육 회사 Eureka Labs를 창업했고, 2026년에는 Anthropic의 사전학습 팀에 합류했습니다.2 모든 행보를 관통하는 흐름은 고용주가 아닙니다. 기계를 바닥까지 끝까지 이해하고, 그런 다음 다른 모든 사람에게 그 방법을 보여 주겠다는 고집입니다.
작업
“순환 신경망의 비합리적 효과”(2015): 논증으로서의 데모

2015년 5월, Karpathy는 아직 입소문 나는 블로그 글이라는 것이 존재하지 않던 분야에서 입소문이 난 블로그 글을 발표했습니다. 그는 글자 단위 순환 신경망, 즉 char-rnn을 날것의 텍스트로 학습시키고 한 번에 한 글자씩 생성하게 했습니다. 모델들은 그것이 무엇인지 한 번도 들은 적 없이 셰익스피어, 거의 컴파일되는 LaTeX 수식, Linux 커널 C 코드, Wikipedia 마크업을 만들어 내는 법을 배웠습니다.4
그 글은 데모로 위장한 논증이었습니다. 작은 모델이 놀랍고도 명료한 일을 하게 만들어 – 알아볼 수 없던 문자열이 천천히 문법으로 응집되는 것을 직접 읽을 수 있었습니다 – Karpathy는 시퀀스 모델이 데이터만으로 깊은 구조를 흡수했음을 입증했습니다. 함께 공개된 GitHub의 char-rnn 코드는 글 자체만큼이나 중요했습니다. 그의 경력을 규정하게 될 교훈이 이미 거기 담겨 있었습니다. 어떤 아이디어를 가장 강력하게 변호하는 것은 그것의 가장 작은 동작 버전이며, 거기에 코드가 붙어 있어야 한다는 것이죠.
Software 2.0(2017): 재정의
2017년의 에세이가 종석입니다. Karpathy의 주장은, 점점 늘어나는 부류의 문제들 – 비전, 음성, 번역 – 에서는 프로그램을 손으로 작성하기보다 데이터를 모아 네트워크를 학습시키는 편이 더 쉽고, 학습된 네트워크가 흔히 더 낫다는 것이었습니다. Software 2.0는 “신경망의 가중치처럼 훨씬 더 추상적이고 인간에게 비친화적인 언어로 쓰이며”, “이 코드를 작성하는 데 사람은 전혀 관여하지 않습니다.”1
이 에세이의 진짜 기여는 기술적인 것만이 아니라 문화적인 것이었습니다. 신경망이 하나의 프로그래밍 패러다임이라면, 팀에게는 데이터셋을 위한 버전 관리, 활성값을 위한 디버거, 그리고 기존 스택에는 없던 실패 모드를 다루는 규율이 필요합니다. 거의 10년 뒤 Karpathy는 이 틀을 Software 3.0으로 확장했습니다. 평범한 영어로 프로그래밍하는 대규모 언어 모델이 그것이며, 그래서 그는 영어를 “가장 뜨거운 새 프로그래밍 언어”라고 부를 수 있었습니다.5 에이전트가 더 똑똑해진 것이 아니라 바탕이 더 똑똑해졌고, 그때마다 엔지니어링은 한 계층 위로 올라갔습니다.
Tesla Autopilot(2017–2022): 프로덕션에서의 Software 2.0

Tesla의 AI 디렉터로서 Karpathy는 위험 부담이 가장 큰 곳, 즉 빠르게 달리는 자동차에서 Software 2.0를 운용했습니다. Autopilot 비전 시스템은 카메라 피드를 소비하는 신경망들의 함대였고, 그의 팀이 마주한 핵심 문제는 바로 에세이가 예견한 그것이었습니다. 프로그램이 곧 데이터셋일 때, 프로그램을 개선한다는 것은 데이터를 개선한다는 뜻입니다. Tesla는 데이터 엔진을 구축했습니다. 함대 전체를 뒤져 드물고 까다로운 경우들(교통 콘을 싣고 가는 트럭, 해질녘의 사슴)을 캐내고, 라벨을 붙이고, 재학습시키고, 재배포하는 파이프라인이었습니다. 손으로 작성한 휴리스틱이 삭제되어 네트워크 속으로 흡수되면서 코드베이스는 줄어들었습니다. Karpathy는 이를 두고 Software 1.0 코드가 2.0 스택에 “잡아먹히고” 있다고 직접 표현했는데, 이것이 그의 명제를 가장 분명하게 입증한 프로덕션 사례였습니다.2
nanoGPT, micrograd, 그리고 “Neural Networks: Zero to Hero”(2022–): 바닥부터, 낱낱이 풀어서

Tesla 이후 Karpathy는 그 모든 것보다 오래 살아남을지도 모를 일에 전념했습니다. 사람들에게 스택을 스스로 만드는 법을 가르치는 일이었습니다. 그의 “Neural Networks: Zero to Hero” 강의 시리즈는 micrograd – 약 100줄의 Python로 된 완전한 자동 미분 엔진이자 신경망 라이브러리 – 로 시작해, 영상 하나하나를 거치며 동작하는 GPT까지 쌓아 올립니다.6 마무리 강의인 “Let’s build GPT: from scratch, in code, spelled out”은 “Attention Is All You Need”의 Transformer 구조를 실시간으로 타이핑하며 재현합니다. 이어지는 그의 build-nanogpt 저장소는 빈 파일에서 시작해 GPT-2(124M)를 재현하며, git 히스토리를 커밋 하나하나 따라 걸을 수 있을 만큼 깔끔하게 유지합니다. 프로덕션급 nanoGPT에서 증류해 낸 동작하는 쾌속정인 셈입니다.7
교수법이 곧 철학입니다. 경사도를 감추는 라이브러리 임포트는 없습니다. 역전파를 손으로 직접 구현하기에, 실제 모델이 오작동할 때 그 내부에서 무슨 일이 벌어지는지를 믿는 것이 아니라 압니다. micrograd는 스택 전체를 100줄에 담습니다. PyTorch도, 마법도 없이, 모든 곱셈이 눈에 보입니다.
방법론
먼저 제1원리, 그다음 프레임워크. Karpathy는 그 아래에 있는 것을 직접 만들기 전에는 어떤 추상화도 그냥 받아들이지 않습니다. micrograd가 존재하는 이유는 PyTorch의 autograd가 결코 블랙박스가 되지 않게 하기 위함입니다. 아래 계층을 직접 짓는 것은, 읽지 않은 출처를 인용하기를 거부하는 일의 엔지니어 버전입니다.
가장 작은 동작 버전을 만든다. char-rnn, micrograd, nanoGPT, 그리고 더 최근의 nanochat은 모두 의도적으로 작습니다. 머릿속에 통째로 담을 수 있을 만큼 작으면서도, 실제로 돌아갈 만큼 완전합니다. 작다는 것이 핵심입니다. 100줄짜리 라이브러리는 10만 줄짜리가 가리는 것을 가르쳐 줍니다.
공개적으로 배운다. Karpathy가 이해하는 거의 모든 것을 그는 공개합니다. 블로그 글로, 강의로, 깔끔한 저장소로, 그리고 분야 전체가 느끼면서도 아직 말로 표현하지 못한 현상에 이름을 붙인(“vibe coding”) 한 줄짜리 트윗으로 말입니다.8 가르치는 일이 명료함을 강제합니다. 역전파에 대해 여전히 헷갈리는 채로는 화이트보드 위에 그것을 낱낱이 풀어낼 수 없습니다.
사고의 도구로서의 명료함. 그의 데모가 지닌 가독성 – RNN이 한 글자씩 문법을 배워 가는 것을 지켜보는 일 – 은 과시가 아닙니다. 그것은 자신의 이해를 디버깅하는 방법입니다. 눈에 보이게 만들 수 없다면, 그는 아직 그것을 이해하지 못한 것입니다.
영향의 사슬
그를 빚은 이들
Geoffrey Hinton이 도화선에 불을 붙였습니다. Karpathy는 토론토에서 Hinton의 궤도 안에서 역전파와 신경망을 처음 접했는데, 바로 그 분야가 변방에서 주류로 기울던 순간 – 2012년 ImageNet 결과 직전 – 이었습니다. 신경망이 틈새 도구가 아니라 컴퓨팅의 미래라는 신념은 Hinton의 것이며, 그대로 이어졌습니다.
Fei-Fei Li가 장인을 빚었습니다. 그의 박사 지도교수이자 ImageNet의 설계자로서 그녀는 Karpathy에게 데이터를 중심 대상으로 다루는 규율 – 모델이 무엇이 될 수 있는지를 결정하는 것이 곧 데이터셋이라는 – 을 주었습니다. Software 2.0는, 진정한 의미에서, 데이터 중심 비전 연구실의 교의를 모든 소프트웨어에 대한 이론으로 풀어 쓴 것입니다.
그가 빚은 이들
한 세대의 ML 엔지니어들. CS231n은 여러 해 동안 현업 엔지니어들이 딥러닝을 배우는 길이었고, 그 강의 노트는 지금도 교과서처럼 인용됩니다. 그 뒤 “Neural Networks: Zero to Hero”와 nanoGPT는 Transformer로 들어가는 정석과도 같은 바닥부터의 경로가 되었습니다. 수천 명의 실무자가 “나는 API를 쓴다”에서 “나는 그 구조를 이해한다”로 건너간 길이었죠. 현재 AI 인력의 이만큼을 직접 입문시킨 사람은 거의 없습니다.
관통하는 흐름
John Carmack은 그래픽 하드웨어를 역설계하고 렌더링 파이프라인을 바닥부터 다시 만들었습니다. 자신이 이해하지 못한 계층 위에서는 출시하지 않으려 했기 때문입니다. Karpathy가 역전파를 손으로 직접 구현하는 것도 같은 이유에서입니다. 둘 다 스스로 만드는 일을 튜토리얼 연습이 아니라 숙달에 이르는 유일하게 정직한 길로 여깁니다. 어떤 시스템의 가장 작은 완전한 버전을 직접 작성해 보기 전에는 그것을 진정으로 안다고 할 수 없다는 신념입니다. 같은 본능이 Linus Torvalds와, 검증할 수 없는 것은 신뢰하지 않으려는 그의 태도에도 흐릅니다. (시리즈 연결)
내가 여기서 취하는 것
내가 거듭 돌아가게 되는 규율은, 적어도 한 번은 직접 만들어 보지 않은 계층 위에서 작업하기를 거부하는 Karpathy의 태도입니다. 에이전트를 구성할 때면 모델을 신탁으로, 프레임워크를 복음으로 대하고 싶은 유혹이 듭니다. 그의 본보기는 이렇게 말합니다. 먼저 가장 작은 버전을 스스로 만들어 보라 – 오케스트레이션 라이브러리에 손을 뻗기 전에 에이전트가 왜 모델을 직접 호출해야 하는지를 이해하라. Software 2.0/3.0의 틀은 또한 일 전체를 다시 보게 합니다. 에이전트 시스템에서 당신은 동작을 작성하는 것이 아니라, 동작이 출현하는 조건 – 맥락, 데이터, 프롬프트 – 을 빚는 것입니다. RAG에서 에이전트까지 이어지는 모든 것을 관통하는 흐름이죠. 전체 지도는 AI 엔지니어링 허브와 에이전트 아키텍처 가이드에 담겨 있습니다.
자주 묻는 질문
Andrej Karpathy의 “Software 2.0”란 무엇인가요?
Software 2.0는 2017년 에세이에서 나온 Karpathy의 용어로, 사람이 직접 작성한 명시적 명령이 아니라 신경망의 가중치로 쓰인 프로그램을 가리킵니다. Software 1.0에서는 프로그래머가 로직을 작성하지만, Software 2.0에서는 프로그래머가 목표와 구조를 명시하고 데이터셋을 큐레이션하면 “신경망을 학습시키는 과정이 그 데이터셋을 바이너리로 컴파일합니다.” 데이터셋이 소스 코드가 되고 학습이 컴파일이 됩니다.1
Andrej Karpathy는 Tesla에서 무슨 일을 했나요?
2017년부터 2022년까지 Karpathy는 Tesla의 AI 디렉터로서 Autopilot을 떠받치는 신경망 비전 스택을 이끌었습니다. 그의 팀은 차량 함대를 뒤져 드물고 까다로운 주행 상황을 캐내고, 그것들에 다시 라벨을 붙여 재학습시키며, 손으로 작성한 주행 휴리스틱을 학습된 네트워크로 점진적으로 대체하는 “데이터 엔진”을 구축했습니다. 그의 Software 2.0 명제를 프로덕션에서 입증한 사례였습니다.2
“Neural Networks: Zero to Hero”란 무엇인가요?
이것은 딥러닝을 Python로 바닥부터 만들며 가르치는 Karpathy의 무료 영상 강의 시리즈입니다. micrograd – 약 100줄의 자동 미분 엔진 – 로 시작해, 언어 모델을 거쳐 바닥부터 만드는 GPT까지 쌓아 올리며, “Let’s build GPT: from scratch, in code, spelled out” 강의도 포함합니다. 이어지는 build-nanogpt 저장소는 빈 파일에서 시작해 git 커밋 하나하나로 GPT-2(124M)를 재현합니다.67
Andrej Karpathy가 “vibe coding”이라는 용어를 만들었나요?
그렇습니다. 2025년 2월 X에 올린 글에서 Karpathy는 “내가 ‘vibe coding’이라 부르는 새로운 종류의 코딩, 즉 그 분위기에 온전히 몸을 맡기고, 지수적 성장을 받아들이며, 코드가 존재한다는 사실조차 잊는” 코딩을 묘사했습니다. LLM 코딩 도구가 대화만으로 소프트웨어를 만들 수 있을 만큼 좋아지면서 가능해진 일이죠. 그는 나중에 그 글을 “툭 던진 트윗”이라고 불렀지만, 그 용어는 그럼에도 업계 어휘로 자리 잡았습니다.8
출처
-
Andrej Karpathy, “Software 2.0.” Medium, 2017년 11월 11일. “신경망은 또 하나의 분류기에 그치지 않습니다…그것은 Software 2.0입니다”; “신경망을 학습시키는 과정이 그 데이터셋을 바이너리로 컴파일합니다”; “이 코드를 작성하는 데 사람은 전혀 관여하지 않습니다.” ↩↩↩↩
-
“Andrej Karpathy.” Wikipedia. 1986년 브라티슬라바 출생; 토론토, UBC, Fei-Fei Li 지도하 스탠퍼드 박사(2015); OpenAI 창립 멤버; Tesla AI 디렉터(2017–2022); OpenAI 복귀(2023); Eureka Labs(2024); Anthropic 사전학습(2026). ↩↩↩↩
-
Andrej Karpathy, 개인 사이트 / 약력. CS231n: Karpathy가 설계하고 주로 가르친 스탠퍼드 최초의 딥러닝 강의; 수강 인원 150명(2015)에서 750명(2017)으로 증가. 강의: CS231n. ↩
-
Andrej Karpathy, “The Unreasonable Effectiveness of Recurrent Neural Networks.” 2015년 5월 21일. 셰익스피어, LaTeX, Linux 소스, Wikipedia 마크업을 생성하는 글자 단위 RNN; char-rnn 코드는 GitHub에 공개. ↩
-
Andrej Karpathy, “The hottest new programming language is English.” X, 2023년 1월 24일. 2025년 강연 “Software Is Changing (Again)” / Software 3.0에서 확장. ↩
-
Andrej Karpathy, “Neural Networks: Zero to Hero.” micrograd로 시작해 신경망을 바닥부터 만드는 강의 시리즈. 저장소: nn-zero-to-hero. micrograd(약 100줄, MIT 라이선스): karpathy/micrograd. ↩↩
-
Andrej Karpathy, “build-nanogpt.” “nanoGPT를 바닥부터 만드는 영상+코드 강의” – 빈 파일에서 시작해, 한 단계씩 따라 걸을 수 있는 깔끔한 git 커밋으로 GPT-2(124M)를 재현. 프로덕션급 저장소에서 증류: nanoGPT, “중간 규모 GPT를 학습/파인튜닝하기 위한 가장 단순하고 빠른 저장소.” ↩↩
-
Andrej Karpathy, “There’s a new kind of coding I call ‘vibe coding’…” X, 2025년 2월 2일. 나중에 “툭 던진 트윗”이라고 표현. ↩↩