CS146S: The Modern Software Developer의 1주차 참고 자료여서 학습하고 메모한 건데, 대학 자료가 아닌 별도 자료기도 하고, 내용이 너무 길어서 따로 뻄.
강의: Andrej Karpathy, "Deep Dive into LLMs like ChatGPT" (2025.02)
- 유튜브: https://youtu.be/7xTGNNLPyMI
- 한국어 번역 프로젝트: https://kr.themodernsoftware.dev/readings/week1/deep-dive-llms
발표자: Andrej Karpathy
- OpenAI 공동 창립 멤버 (2015-2017, 2023-2024)
- Tesla AI/Autopilot Vision 디렉터 (2017-2022)
- Stanford 박사 (Fei-Fei Li 지도, 컴퓨터 비전/NLP). CS231n(딥러닝 강의) 설계 및 주강사
- 현재 Eureka Labs 설립, AI 교육 콘텐츠 제작
- "바이브 코딩(Vibe Coding)" 용어 창시 (2025.02, X 게시물)
- 참고: 바이브 코딩은 LLM에 코딩을 맡기고 코드를 읽지 않는 방식을 뜻하지만, Karpathy 본인은 이걸 "throwaway weekend projects" 수준으로만 권장했고, 이후 자신의 프로젝트(Nanochat)에서는 직접 코딩으로 돌아감. 이 강의에서도 LLM에 모든 것을 위임하지 말고, 출력을 항상 검증하라는 입장을 명확히 함 (15번 들쭉날쭉한 지능 파트, 20번 RLHF 파트 후반부).
- 관련 링크:
- 바이브 코딩 원문: https://x.com/karpathy/status/1886192184808149383
- Nanochat에서 직접 코딩으로 돌아간 건: https://futurism.com/artificial-intelligence/inventor-vibe-coding-doesnt-work
- Simon Willison의 바이브 코딩 구분론: https://simonwillison.net/2025/Mar/19/vibe-coding/
같이보면 좋을 추가 자료 (LLM 내부 원리 관련해서)
- 백엔드 개발자의 시선으로 풀어본 LLM 내부 동작 원리: 6단계로 쉽게 이해하기: https://tech.kakaopay.com/post/how-llm-works/
- LLM 관련 3Blue1Brown 한국어 채널: https://youtube.com/playlist?list=PLkoaXOTFHiqhM4MeCMrS016jOWKfIXTjK&si=2nfXg7r3QgPCurP9
- 누가 유튜브 원본 영상을 보고 노트한 레포: https://github.com/beingcognitive/--Lecture-Note---Andrej-Karpathy-_Deep-Dive-into-LLMs-like-ChatGPT-_FEB-2025
한국어 번역 프로젝트 관련
- 잘못된 부분 찾아서 이슈 제출함: https://github.com/team-attention/stanford-cs146s-kr/issues?q=is%3Aissue%20author%3AYangSiJun528
- 오류 확인하느라 시간을 좀 썼지만, 없는 것보다는 나음. 요약본 제공해줘서 내용 예측이 가능하고, 단순 기계 번역보다 깔끔하고, 앞뒤 확인이 많은 특성상 글로 되어있어서 멈추고 반복해서 보기 좋음.
TODO 내용 가공
- AI의 동작 원리를 좀 더 잘 알게 되었다.
- 프롬프팅이 뭔가 전문성 없어보이고 AI를 해킹하는 느낌이었는데, 알고 보니 LLM의 동작 특성을 이해하고 활용하는 올바르고 효과적인 방법이었다.
- 최근 모델은 컨텍스트 윈도우 문제를 크게 체감한 적이 없어서 크기가 어떨지 궁금해져서 찾아봤는데, 수백 페이지 분량에 달할 만큼 매우 크다는 걸 알게 되었다.
- DeepSeek-R1이 큰 반향을 일으킨 이유를 이해하게 되었다. SFT 없이 순수 RL만으로 모델이 Chain-of-Thought(단계적 추론)를 자발적으로 발현시켰다는 점. OpenAI o1과 비슷한 수준의 추론 성능을, 훨씬 적은 비용으로 달성했다는 점. 이 방법론과 모델을 오픈 웨이트로 공개하여 누구나 활용할 수 있게 한 점.
- LLM 훈련 순서: 사전학습 -> SFT -> RLHF(RL) - 항상 이런건 아니다. 중간 단계가 추가되거나 건너뛰기도 하는 듯?
- 사전학습으로 언어(게임 등)의 인과관계를 학습. SFT를 통해서 지시를 따르는 방법, 지시에 대한 올바른 응답의 연관관계 학습.
- RLHF으로 스스로 올바른 방식을 찾게 학습.
2026-01-29
- 소개
- 일반 청중도 이해 가능한 수준
- LLM 전체 파이프라인 확인, LLM의 특징과 한계
- 사전학습 데이터 (인터넷)
- Common Crawl: 대충 인터넷에서 데이터 모으는 프로젝트
- FineWeb: 거기서 텍스트만 학습용 텍스트 중 유명한거, 목표에 따라 쓰는 데이터들도 달라짐
- 해당 파트에서 다룬 사이트 링크
- 토큰화
- 신경망은 입력으로 기호(symbol)로 이루어진 1차원 시퀀스를 받는다
- 시퀀스 길이는 신경망의 연산 비용에 직결되므로, 시퀀스가 짧을수록(= 토큰 하나가 표현하는 단위가 클수록) 효율이 좋다
- 단, 한 토큰이 표현하는 단위가 클수록 동일한 학습 데이터에서도 고유한 토큰의 종류(vocabulary)가 많아지고, 이는 임베딩 행렬의 메모리 증가와 희귀 토큰의 학습 부족 문제로 이어진다
- 따라서 BPE 등의 알고리즘을 통해 시퀀스 길이와 vocabulary 크기 사이의 균형을 맞추며 텍스트를 토큰 단위로 분할한다
- https://tiktokenizer.vercel.app/?model=cl100k_base
- 신경망 입출력
- 신경망은 토큰 시퀀스를 입력받아 다음 토큰의 확률 분포를 출력하는 함수
- 입력: 가변 길이 토큰 시퀀스 (0 ~ 최대 컨텍스트 길이)
- 출력: 어휘 내 모든 토큰에 대한 확률값. 합은 1
- 훈련: 데이터셋에서 토큰 윈도우를 뽑고, 정답(레이블) 토큰의 확률을 높이는 방향으로 파라미터 조정
- 배치 학습: (GPU를 사용해) 여러 윈도우를 동시에 처리하여 병렬로 파라미터 업데이트
- 신경망 내부 구조
- 파라미터 = 조절 가능한 숫자, 수십억 개, 무작위 초기화 → 훈련으로 조정
- 트랜스포머 = 어텐션 블록 + MLP 블록으로 구성된 구조. 현대 LLM은 이 구조를 쓴다.
- 어텐션 블록: 토큰 간 문맥 관계 포착 (inter-token)
- MLP 블록: 각 토큰 벡터를 개별 비선형 변환 (intra-token) (메모: 이해 못함. 일반 대중 대상 설명이라 수학적 세부사항은 핵심이 아니라고 해서 ㄱㅊ)
- 한 층 = 어텐션 → MLP 순서로 통과. 이걸 N층 반복 적층
- 임베딩 = 토큰을 벡터로 변환
- 처리 흐름: 토큰 → 임베딩(벡터 변환) → [어텐션 블록 → MLP 블록] × N층 → softmax → 확률 분포
- 핵심 성질: 상태 없는(stateless) 고정 수학 함수. 메모리 없음. 매번 입력에서 출력까지 처음부터 계산
- 시각화: https://bbycroft.net/llm
- 추론
- 훈련된 모델은 입력 텍스트의 다음 토큰을 확률 분포로 추론/예측한다
- 결과로 생성된 모델은 더 이상 학습하지 않는다. 파라미터 값/가중치가 변하지 않음
- 출력 시 확률 분포에서 샘플링의 무작위로 샘플링하므로 비결정적이다
2026-01-30 회사 점심시간
- GPT-2: 학습과 추론
- 앞서 이론적으로 설명한 학습 과정을 실제 예시로 소개
- GPT-2를 재현하는 llm.c 프로젝트를 시현
- 결과물은 베이스 모델이고, 아직 토큰 예측기에 가까움. 목표하는 어시스턴트(대화형 AI)와는 다름.
- llm.c 깃헙 링크
- karpathy/llm.c#677
- karpathy/llm.c#481 << 강의에선 없지만 좀 더 경량
- Llama 3.1 베이스 모델 추론
- 파라미터 표기: 1.5B, 45B 등에서 B는 Billion(10억). 모델의 파라미터 개수를 의미
- 파라미터의 본질: 학습 데이터의 손실 압축(lossy compression)된 표현
- 시연: GPT-2보다 대규모로 학습된 Llama 3.1 베이스 모델 사용
- 동작 방식: 텍스트 완성(text completion) - 입력 문장의 다음 토큰을 예측, 질문에 답변하도록 학습되지 않음
- 회상(Regurgitation): 자주 본 고품질 데이터(위키피디아 등)를 거의 그대로 출력
- 환각(Hallucination): 학습 데이터에 없는 정보를 확률적으로 생성하여 그럴듯하게 만들어냄
- 인컨텍스트 러닝(In-context Learning): 프롬프트 내 예시 패턴을 파악하여 새로운 입력에 적용
2026-02-01 집앞 셀렉토(24시간 카페) - 한 6시간동안
- 사전학습에서 후속학습으로
- 베이스 모델(Base model) = 신경망 아키텍처(structure) + 학습된 파라미터(가중치 값)
- 후속학습(Post-Training): 베이스 모델을 어시스턴트로 변환하는 추가 학습 단계
- 후속학습은 비용을 상대적으로 적게 사용하지만 매우 중요함.
- 후속학습 데이터 (대화)
- SFT(Supervised Fine-tuning, 지도 미세 조정)에 대한 설명 파트
- 인간 라벨러가 수십만 개의 고품질 대화를 작성하고, 회사가 제공한 라벨링 지침에 따라 이상적인 어시스턴트 응답을 만든다.
- 요즘엔 기계가 생성하고 인간이 검수한 모델을 사용함.
- 이 과정을 통해 의도한 어시스턴트의 페르소나를 가지게 된다.
- 라벨링으로 학습하지 않는 것도, 가지고 있는 학습한 인터넷 데이터 기반으로 페르소나에 적절한 답변을 하게 됨.
- 대화는 특수 토큰(im_start, im_end 등)을 사용해 1차원 토큰 시퀀스로 변환하여 대화 패턴을 인식하게 함.
- 웹에서 확인해보기(Tiktokenizer): https://tiktokenizer.vercel.app/
-
- (메모: 마지막 파트에서 "성격이 정말로 나오는 곳은 SFT 과정"이라 함. 모델마다 성격이 다른 이유는 SFT 데이터셋과 라벨링 문서가 회사마다 다르기 때문이 주된 요인. RLHF와 시스템 프롬프트도 기여하지만 근본적 성격은 SFT에서 형성되는게 맞는듯. 인상깊어서 관련있는 여기에 메모)
- 환각, 도구 사용, 지식/작업 메모리
- 환각(Hallucination): 모델이 모르는 정보를 자신있게 지어내는 현상
- 모델 내부에는 불확실성을 나타내는 뉴런이 있지만, 그게 모르겠다는 출력으로 연결되어 있지 않음
- 학습 데이터에 "모른다"고 답하는 예시가 없었음
- 해결 1: 모델 심문 방식
- 모델에 사실 질문을 반복하여 모르는 질문을 식별하고, "모르겠습니다"가 정답인 예시를 학습 데이터에 추가 → 내부 불확실성 신호가 거부 출력으로 연결됨
- 출처: 논문 The Llama 3 Herd of Models
- 해결 2: 도구 사용
- 특수 토큰(예: search_start, search_end)을 방출하여 웹 검색 등 외부 도구를 호출
- 검색 결과가 컨텍스트 윈도우(작업 메모리)에 삽입되어 모델이 직접 참조 가능
- 도구 사용법은 학습 데이터에 예시 대화를 추가하여 학습
- 지식/작업 메모리
- 지식 메모리: 파라미터에 저장된 희미한 기억 (사전학습에서 습득)
- 작업 메모리: 컨텍스트 윈도우에 있는 직접 접근 가능한 데이터
- (메모: 최근 컨텍스트 크기: Claude 4.5 기준, 모든 모델이 20만 토큰, 약 500 페이지 분량)
- 작업 메모리를 사용하면 더 정확한 답변을 생성한다. (인간도 마찬가지)
- 자기 인식
- LLM은 대화마다 새로 시작되며 연속적 정체성 없음
- 자기 자신에 대한 답변은 후속학습으로 주입하거나 시스템 프롬프트에 명시하여 제공
- 모델은 생각하기 위해 토큰이 필요하다
- 토큰당 계산량이 고정 제한(모델 아키텍처마다 다르지만) → 중간 과정을 펼쳐야(chain-of-thought) 토큰당 계산 부담 분산 및 정확도 향상
- 암산, 세기, 철자 등은 본질적으로 불안정 → 정확한 계산은 외부 도구 필수
- 생각: 여러 유튜버 영상에서 왜 짦게 말하라 해도 길게 말하는지나 깊게 생각 시 결과를 출력하는지 알게 됨. 재밌는? 포인트
- 토큰화 재탐구: 철자 처리의 어려움
- 모델은 개별 문자가 아닌 토큰(작은 텍스트 조각) 단위로 세계를 인식함
- 따라서 문자 단위의 계산에는 부정확함 → 정확한 계산은 외부 도구 필수
- 들쭉날쭉한 지능(Jagged Intelligence)
- LLM은 능력에 예상치 못한 구멍이 있어 어디서 실패할지 예측 어려움
- 예: "9.11 > 9.9" 오류 — 토큰화 및 학습 데이터의 편향(성경 구절 등)이 원인으로 추정
- 완전히 신뢰할 수 없는 확률적 시스템임을 인지하고 도구로서 사용할 것
- 지도 미세 조정(SFT)에서 강화학습(Reinforcement Learning)으로
- 사전학습 → SFT(지도 미세 조정) → RL(강화학습) 순으로 진행. 실무에선 각 팀이 분리됨.
- 교과서 비유를 통한 3단계 대응관계: - (LLM을 학교에 보낸다고 하는 표현이 좀 웃겼음)
- 사전학습 = exposition(배경지식 읽기)
- SFT = worked solutions(전문가 풀이가 있는 예제 모방)
- RL = practice problems(최종 답만 주어지고 풀이는 스스로 시도)
- 동기: SFT만으론 전문가 모방, RL을 통해 자체적 문제 해결 전략 탐색 및 개선 능력
- 강화학습(Reinforcement Learning)
- 하나의 프롬프트에 다수의 풀이를 샘플링 → 정답 도달한 풀이를 강화. 수학·코딩 등 검증 가능한 영역에서 특히 효과적
- 인간의 인지와 LLM 인지가 다름. 인간이 최적 풀이를 설계하기 어려움 (SFT 한계) → 모델이 스스로 최적 풀이를 발견
- 그럼에도 SFT는 올바른 접근 방식을 제공하는 기반으로서 중요
- SFT 대비 훨씬 초기 단계이며 세부 설정이 아직 미성숙
- DeepSeek-R1
- RL을 LLM에 적용한 세부 사항을 최초로 공개한 논문 (중국에서 공개, 미국은 비공개로 개선 중이였음)
- 핵심 발견: RL 과정에서 모델이 사고 전략(재평가, 역추적 등)을 자발적으로 발견 → 인간이 하드코딩 불가능한 창발적 chain-of-thought
- 사고 모델은 복잡한 추론에, SFT 모델은 단순 질문에 적합
- OpenAI는 증류(distillation, 사고 과정을 따라해서 유사한 모델 만들기) 위험 때문에 사고 과정을 요약만 표시. DeepSeek은 오픈 웨이트 모델이므로 전체 공개 (파라미터도 공개하는거라 오픈 웨이트라 구분하는 듯?)
- 링크: https://chat.deepseek.com/
- AlphaGo
- SFT는 인간 수준에서 천장, RL은 그 한계를 초월 (Move 37: 인간이 두지 않을 수를 발견)
- LLM 함의(암시): RL로 인간이 모르는 추론 전략, 자체 사고 언어까지 발견할 가능성
- 프론티어 연구: 다양한 도메인의 대규모 연습 문제를 만들어 RL 적용 - LLM이 사고를 연습할 수 있는 게임 환경으로서 중요
- 프론티어(frontier, 최전선) 연구 뜻: 현재 활발히 시도 중이고, 부분적 성과는 있지만 완전히 해결되지 않은 연구
- 인간 피드백 강화학습 (RLHF)
- 문제: 창작, 요약 등 검증 불가능한 영역에서는 정답이 없어 자동 채점 불가
- 해결: 보상 모델(Reward Model) — 인간이 출력 순위만 매기고, 그 순위에 맞게 훈련된 신경망이 인간 판단을 시뮬레이션 → RL 수행
- 장점: 인간에게 생성이 아닌 판별만 요구 (더 쉬운 작업(인간 라벨러보다), 더 높은 정확도)
- 한계: 보상 모델 게이밍(reward hacking)
- RL을 오래 돌리면 보상 모델의 허점을 찾아 무의미한 출력이 고득점 획득 (적대적 예시)
- 실무: 수백 스텝만 돌리고 조기 중단. 약간의 개선 수준이지, 검증 가능 영역의 RL처럼 무한 확장 불가
- GPT-4o 등 SFT 모델도 RLHF를 거치지만 효과는 제한적
- (메모: 악용 측면에서OpneAI에서 술래잡기 게임 시켰던 거나가 생각남. 그리고 )
- 미래 전망
- 멀티모달: 오디오·이미지를 토큰화하여 텍스트와 동일 방식으로 처리 (근본적 변화 아닌 토큰 확장)
- 에이전트: 장기 실행 작업 수행 하지만 아직 불안정 → 인간이 감독자 역할
- 컴퓨터 사용: 모델이 키보드·마우스 조작
- 테스트 타임 트레이닝: 배포된 모델이 학습은 컨텍스트 윈도우 내 in-context learning만 가능.
- 컨텍스트 윈도우는 유한한 자원이고, 장기 멀티모달 작업에서는 윈도우 확장만으로 한계. 따라서 새로운 접근 필요 (인간처럼 경험에서 학습)
- LLM 동향 추적하기
- 발표자 피셜 도움되었던 곳
- https://lmarena.ai/ - 랭킹 리더보드, 최근 게임화되서 신뢰성 낮아졌다 함
- https://buttondown.com/ainews - AI 관련 뉴스피드 제공
- X / Twitter
- LLM을 찾을 수 있는 곳
- 모델 접근 방법
- 독점 모델: 각 제공자 웹사이트 (chat.openai.com, gemini.google.com 등)
- 오픈 웨이트 모델: 추론 제공자 (together.ai 등)에서 다양한 오픈 모델 선택 가능
- 베이스 모델: 대부분 추론 제공자가 호스팅하지 않음. hyperbolic 등에서 접근 가능
- 로컬 실행: LM Studio 등으로 증류된 소형 모델을 낮은 정밀도로 노트북에서 실행 가능
- 전체 요약