AI는 어떻게 계산하나
사진 속 고양이를 알아보고, 질문에 답하고, 글을 이어 쓰는 AI. 마법처럼 보이지만 그 속에서 CPU와 GPU가 하는 일은 지금까지 배운 것과 같다. 엄청나게 많은 곱셈과 덧셈이다. 이 장에서는 AI가 “배운다”는 것이 무슨 뜻인지, 왜 GPU가 필요한지, 왜 큰 모델은 메모리를 그렇게 많이 먹는지를 작은 실험으로 하나씩 확인한다.
- 규칙을 직접 짜는 프로그램과 예시로 배우는 머신러닝의 차이를 설명한다.
- 인공 뉴런 하나가 “곱하고 더하고 판단하는” 계산임을 시뮬레이터로 확인한다.
- 학습이 오차를 줄이는 방향으로 숫자를 조금씩 고치는 과정(경사 하강)임을 이해한다.
- 신경망 계산이 행렬 곱셈이며, 그래서 GPU와 잘 맞는다는 것을 연결한다.
- 언어 모델이 다음 단어의 확률을 계산하는 방식과 모델 크기·메모리·속도의 관계를 계산해 본다.
규칙을 짜는 대신 예시로 배운다
지금까지 본 프로그램은 사람이 규칙을 하나하나 적은 것이었다. “잔액이 출금액보다 적으면 거절한다” 같은 식이다. 그런데 “사진에 고양이가 있으면 참”이라는 규칙은 어떻게 적을까? 귀가 뾰족하고, 수염이 있고… 하다 보면 끝이 없다. 각도, 조명, 털 색이 바뀔 때마다 예외가 생긴다.
머신러닝(machine learning)은 순서를 뒤집는다. 사람이 규칙을 적는 대신, 문제와 정답이 붙은 예시를 잔뜩 보여 주고 컴퓨터가 규칙을 스스로 찾게 한다. 찾아낸 규칙은 사람이 읽을 수 있는 문장이 아니라 수많은 숫자의 묶음이다. 이 묶음을 모델(model)이라 하고, 숫자 하나하나를 매개변수(parameter, 가중치)라 한다.
AI의 일은 두 단계로 나뉜다. 예시로 숫자를 맞춰 가는 학습(training), 그리고 완성된 모델로 새 질문에 답하는 추론(inference)이다. 주방으로 치면 학습은 요리사가 수천 번 맛을 보며 레시피를 다듬는 기간이고, 추론은 다듬어진 레시피로 손님 요리를 내는 영업 시간이다. 학습은 몇 달 동안 GPU 수천 대가 필요할 수 있지만, 추론은 휴대폰에서도 돌아갈 수 있다.
인공 뉴런 하나: 곱하고, 더하고, 판단한다
신경망의 가장 작은 부품은 인공 뉴런(artificial neuron)이다. 하는 일은 단순하다. 입력 몇 개를 받아 각각에 가중치를 곱해 더하고, 마지막에 편향(기준점)을 더한 다음, 그 값이 0보다 크면 “예”, 작으면 “아니오”라고 답한다.
가중치는 “이 입력을 얼마나 중요하게 볼까”를 뜻한다. 단맛이 귤의 증거라면 w1은 양수로 크게, 신맛이 레몬의 증거라면 w2는 음수가 된다. 이 숫자를 사람이 정하지 않고 예시로부터 찾아내는 것이 학습이다. 아래에서 직접 숫자를 돌려 보고, 컴퓨터가 고치는 모습도 지켜보자.
뉴런 하나로 귤과 레몬 가르기
신참 요리사가 귤과 레몬을 맛만 보고 구분하려 한다. 처음엔 엉터리로 판정하다가, 틀릴 때마다 “단맛을 조금 더 믿자”, “신맛을 더 무겁게 보자”처럼 기준을 살짝 고친다. 뉴런의 학습도 같다. 한 번에 정답을 깨닫는 것이 아니라 틀린 만큼 조금씩 고친다.
학습이란 오차의 골짜기를 내려가는 것
뉴런이 몇 개일 때는 틀린 것을 하나씩 고쳐도 되지만, 숫자가 수십억 개라면 더 체계적인 방법이 필요하다. 먼저 모델이 얼마나 틀렸는지를 숫자 하나로 잰다. 이것을 손실(loss, 오차)이라 한다. 손님 불만 점수라고 생각하면 된다. 그러면 학습은 “불만 점수가 가장 낮아지는 가중치 찾기”가 된다.
가중치를 가로축, 손실을 세로축에 그리면 울퉁불퉁한 지형이 된다. 눈을 가리고 산에서 내려오려면? 발밑의 기울기를 느끼고 내리막 쪽으로 한 걸음씩 가면 된다. 이것이 경사 하강법(gradient descent)이다. 한 걸음의 크기를 학습률(learning rate)이라 한다.
경사 하강: 공을 골짜기로 굴리기
학습률을 가장 크게 하면 공은 어떻게 될까?
걸음 크기 = 학습률 × 기울기다. 가파른 곳에서 큰 걸음을 내디디면 어디에 떨어질지 생각해 보자. 예측한 다음 위에서 확인해 보자.
그렇다면 수십억 개 가중치의 기울기는 어떻게 구할까? 출력에서 생긴 오차를 거꾸로 거슬러 올라가며 “이 가중치가 오차에 얼마나 책임이 있나”를 한꺼번에 계산하는 방법이 있다. 이것을 역전파(backpropagation)라 한다. 학습은 “예시 넣기 → 오차 재기 → 역전파로 기울기 구하기 → 모든 가중치를 한 걸음 고치기”를 수백만 번 반복하는 일이다.
뉴런을 쌓으면 신경망, 계산은 행렬 곱셈
뉴런 하나는 직선 하나로만 나눌 수 있다. 하지만 뉴런을 여러 개 나란히 놓아 층을 만들고, 층의 출력을 다음 층의 입력으로 넣으면 훨씬 복잡한 경계도 표현할 수 있다. 이것이 신경망(neural network)이고, 층이 많으면 딥러닝(deep learning)이라 부른다.
여기서 12장의 이야기가 연결된다. 행렬 곱셈은 “서로 독립적인 곱셈과 덧셈을 엄청나게 많이” 하는 일이다. 4번째 뉴런의 계산이 1번째 뉴런의 결과를 기다릴 필요가 없다. 수천 개의 단순한 코어로 같은 계산을 한꺼번에 하는 GPU가 AI에 쓰이는 이유가 바로 이것이다. 요즘 GPU에는 행렬 곱셈만 전문으로 하는 텐서 코어까지 들어 있다.
휴대폰과 노트북에는 NPU(Neural Processing Unit)라는 칩이 따로 들어가기도 한다. GPU처럼 그래픽까지 하지 않고 행렬 곱셈만 아주 적은 전력으로 하도록 만든 전용 회로다. 사진 속 얼굴 찾기, 음성 인식, 배경 흐림 같은 AI 기능을 배터리를 덜 쓰면서 처리한다. 4장에서 본 것처럼 범용 부품보다 한 가지 일에 특화한 부품이 빠르고 효율적이다.
챗봇의 정체: 다음 단어 맞히기
대화형 AI의 핵심인 대형 언어 모델(LLM, Large Language Model)이 하는 일은 놀랍도록 단순하다. 지금까지의 글을 보고 다음에 올 조각의 확률을 계산한다. 그중 하나를 고르고, 그것을 글 뒤에 붙인 다음 다시 다음 조각을 예측한다. 이 반복으로 문장이 만들어진다.
모델이 읽고 쓰는 단위는 글자도 단어도 아닌 토큰(token)이다. “컴퓨터가”는 “컴퓨터”와 “가”처럼 자주 쓰이는 조각으로 나뉜다. 각 토큰은 2장에서 본 것처럼 결국 번호(숫자)로 바뀌어 신경망에 들어간다.
장난감 언어 모델로 문장 이어 쓰기
언어 모델은 “가장 그럴듯하게 이어지는 글”을 만든다. 그 글이 사실인지는 따로 확인하지 않는다. 그래서 존재하지 않는 책 제목이나 틀린 숫자를 자신 있게 말하기도 한다. 이것을 환각(hallucination)이라 한다. 중요한 정보는 출처를 확인하는 습관이 필요하다.
모델 크기, 메모리, 그리고 속도
“80억(8B) 매개변수 모델”이라는 말은 가중치 숫자가 80억 개라는 뜻이다. 숫자 하나를 16비트(2바이트)로 저장하면 모델 크기는 80억 × 2 = 16 GB다. 추론하려면 이 숫자들이 전부 메모리에 올라와 있어야 한다. 6장에서 본 대로 RAM(조리대)에 없으면 SSD(창고)까지 다녀와야 하니 매우 느려진다.
더 중요한 사실이 있다. 언어 모델은 토큰 하나를 만들 때마다 가중치 전체를 한 번씩 읽는다. 그래서 생성 속도는 계산 능력보다 메모리 대역폭에 크게 좌우된다. 대략 초당 토큰 ≈ 메모리 대역폭 ÷ 모델 크기다. 숫자를 8비트나 4비트로 줄여 저장하는 양자화(quantization)가 널리 쓰이는 이유다. 정확도는 조금 잃지만 크기가 줄고 속도는 빨라진다.
이 모델이 내 기기에서 돌아갈까
그래서 AI 회사들은 메모리가 크고 대역폭이 넓은(HBM을 쌓은) GPU를 수천, 수만 대씩 연결해 쓴다. 학습할 때는 가중치뿐 아니라 기울기와 중간 결과까지 저장해야 해서 추론보다 몇 배의 메모리가 필요하다. 한편 휴대폰에서는 1~3B 정도의 작은 모델을 4비트로 줄여 NPU로 돌린다. 같은 원리 위에서 규모만 다른 것이다.
핵심 정리
- 머신러닝은 규칙을 직접 짜는 대신 예시와 정답으로 규칙(모델)을 찾는다. 모델은 수많은 숫자(가중치)의 묶음이다.
- 인공 뉴런은 입력에 가중치를 곱해 더하고 편향을 더해 판단한다. 틀린 만큼 가중치를 조금씩 고치는 것이 학습이다.
- 경사 하강법은 손실이 줄어드는 방향으로 한 걸음씩 가중치를 옮긴다. 학습률이 너무 작으면 느리고, 너무 크면 발산한다.
- 신경망 한 층의 계산은 행렬 곱셈이다. 독립적인 곱셈이 매우 많아 GPU·NPU가 잘 맞는다.
- 언어 모델은 다음 토큰의 확률을 반복해서 계산한다. 그럴듯함이 사실을 보장하지는 않는다.
- 모델 크기 = 매개변수 수 × 숫자 하나의 크기. 생성 속도는 대략 메모리 대역폭 ÷ 모델 크기다.
확인 퀴즈
머신러닝이 전통적인 프로그래밍과 가장 다른 점은?
인공 뉴런 하나가 하는 계산으로 맞는 것은?
학습률을 지나치게 크게 잡으면?
AI 학습과 추론에 GPU가 널리 쓰이는 가장 큰 이유는?
70B(700억) 매개변수 모델을 16비트로 저장하면 필요한 메모리는 대략?