작년에 AI에 대해서 아주 얕게 접해봤는데, 직접 AI 개발에 참여하게 되면서 용어도 어렵고, 구조도 어렵고, 그동안 해왔던 개발이랑 너무 달라서 이것저것 찾아보면서 정리해봤다.
🤖 AI 개발 기초 개념
1. NVIDIA
NVIDIA란?
- 그래픽카드(GPU)를 만드는 반도체 회사
- 원래는 게임용 GPU로 유명했지만, 지금은 AI 시대의 핵심 기업이 되었다.
- AI, 자율주행, 로봇, 데이터센터에 들어가는 GPU 대부분이 NVIDIA 제품
AI 개발에 중요한 이유
- 딥러닝에서 필요한 대규모 병렬 행렬 연산을 GPU로 처리하는데, 대부분의 딥러닝 프레임워크 (PyTorch, TensorFlow)는 NVIDIA GPU 전용으로 최적화되어있다.
2. CUDA 와 cuDNN
CUDA (Compute Unfified Device Architecture)
- NVIDIA가 만든 GPU용 병렬 계산 플랫폼이자 API
- GPU에게 연산 명령을 전달하고, 연산 결과를 받아오는 다리 역할
- PyTorch나 TensorFlow같은 프레임워크는 내부적으로 CUDA를 사용해 GPU에 계산을 맡김model.to(”cuda”) : 그 안에서 CUDA가 GPU 메모리에 데이터를 올리고, 병렬로 연산해줌
- import torch device = torch.device("cuda" if torch.cuda.is_available() else "cpu") model.to(device) # 모델을 GPU로 이동
cuDNN (CUDA Deep Neural Network Library)
- NVIDA가 딥러닝을 위해 따로 만든 GPU 최적화 라이브러리
- CNN, RNN, Transformer 같은 딥러닝 연산을 훨씬 빠르게 만들어줌
- PyTorch나 TensorFlow에서 GPU 연산 시 자동으로 활용됨
관계 정리
| 용어 | 설명 | 역할 |
| CUDA | GPU 계산을 가능하게 해주는 개발 환경(툴킷+라이브러리) | GPU 사용의 기반 |
| cuDNN | 딥러닝 연산을 위한 CUDA 기반 최적화 라이브러리 | AI 연산 속도 향상 |
3. GPU
GPU가 AI에 강한 이유 : SIMD 구조
- SIMD (Single Instruction Multiple Data) 구조 : 하나의 명령으로 여러 데이터를 동시에 처리
- 이 구조는 행렬 연산에 최적화되어 있음
- 딥러닝에서는 수천만 개의 파라미터와 행렬이 오간다. 이걸 GPU로 연산하려면 수십 시간이 걸릴 작업도, GPU에서는 몇 분만에 처리 가능
ex. 이미지 한 장을 분석할 때
- 이미지는 수천 개의 픽셀로 구성되어 있고, 이걸 전부 분석하려면 수천 번의 반복이 필요하다.
- 이때,
- CPU: 한 줄씩 차례차례 처리
- GPU: 모든 줄을 동시에 처리
- 프론트엔드에서 이미지 필터를 pixel by pixel로 JS로 돌리면 느리듯이, AI도 마찬가지로 GPU가 없으면 사실상 학습은 힘들다.
4. RAM과 디스크가 중요한 이유
- AI 개발은 기본적으로 데이터, 모델, 연산이 매우 크다
- 이 때문에 메모리 용량과 속도는 성능에 직접적인 영향을 미친다
RAM (시스템 메모리)
- 모델 학습 중간 계산 결과를 저장하는 휘발성 저장소
- RAM이 작으면 계산 중 오류(CUDA out of memory)가 자주 발생함
- 여기서 말하는 RAM은 시스템 메모리, GPU의 VRAM과는 다르다
VRAM (GPU 메모리)
- GPU 전용 메모리
- CUDA out of memory 오류의 원인 대부분이 VRAM 부족
- VRAM 용량이 커야 대형 모델과 고해상도 데이터를 처리 가능
디스크 (SSD)
- 데이터셋, 모델 파일(.pt, .onnx), 로그 파일 등을 저장하는 비휘발성 저장소
- 특히 SSD 속도는 데이터 로딩, 저장, 추론 속도에 영향을 줌
ex.
| 항목 | 용량 | 비고 |
| RAM | 16~32GB | 대형 모델 학습 가능 |
| VRAM | 8GB 이상 | 고해상도 데이터 처리 가능 |
| SSD | 256GB~1TB | 데이터셋, 모델 저장 공간 |
즉, RAM은 연산 중간 저장소, VRAM은 GPU 연산 전용 저장소, SSD는 장기 보관소로, 크고 빠를수록 좋다
5. PyTorch
PyTorch란?
- Facebook(메타)에거 개발한 Python 기반 딥러닝 프레임워크
- TensorFlow와 함께 가장 많이 쓰임
- 동적 그래프 기반 → 코드 실행 시 연산 그래프를 만들어 유연한 모델 작성 가능
Pytorch의 특징
| 특징 | 설명 |
| 유연한 구조 | 동적 그래프 (코드 실행 시 연산 그래프 생성) |
| 직관적 문법 | Pythonic한 API |
| GPU 가속 | CUDA를 통해 GPU 연산 처리 |
| Autograd | 자동 미분 기능으로 역전파 손쉽게 구현 |
Tensor란?
- 딥러닝에서 데이터를 표현하는 기본 단위
- PyTorch에서의 다차원 배열 (multi-dimensional array)
- 이미지, 오디오, 자연어 등 모든 데이터를 수치로 바꿔서 텐서로 표현함차원 예시 설명
0D 3.14 스칼라 1D [1, 2, 3] 벡터 2D [[1, 2], [3, 4]] 행렬 3D (3, H, W) 이미지 (채널, 높이, 너비) 4D (N, C, H, W) 배치 이미지 - ex.프론트엔드로 치면, const arr = [[1, 2], [3, 4]] 와 비슷한 구조지만, 차원이 훨씬 많고, GPU에서 연산된다는 점이 다르다.
- image = torch.randn(16, 3, 224, 224) # 16장의 3채널 이미지
Autograd: 자동 미분 시스템
- 딥러닝에서 역전파(Backpropagation)는 필수
- PyTorch는 .backward() 한 줄로 자동 미분 수행한다.
- import torch x = torch.tensor(2.0, requires_grad=True) y = x**2 + 3*x + 1 y.backward() print(x.grad) # 미분 결과 : 2x + 3 = 7.0
6. 신경망의 구조와 원리
신경망 구성
- 입력 → 은닉층(여러 개) → 출력
- 각 층은 선형변환(행렬 곱) + 활성화함수로 구성된다.
- z = W @ x + b a = activation(z)
활성화 함수 종류
| 함수 | 수식 | 특성 |
| ReLU | max(0, x) | 속도 빠름, 가장 많이 사용 |
| Sigmoid | 1 / (1 + e^-x) | 확률 해석 가능 |
| Tanh | -1 ~ 1 | 값 중심이 0이라 안정적 |
- 활성화 함수는 비선형성을 주어, 단순 선형 모델이 해결 못 하는 문제를 풀 수 있게 한다.
손실 함수 (Loss Function)
- 모델의 예측갑소가 실제값의 차이를 수치화
- 이 값이 작아지도록 학습함종류 설명
MSE 평균 제곱 오차 (회귀 문제) CrossEntropy 분류 문제에 사용
Optimizer (최적화 함수)
- Loss를 줄이기 위해 파라미터를 업데이트하는 규칙
| 종류 | 설명 |
| SGD | 확률적 경사 하강법 |
| Adam | 학습률 자동 조절, 빠르고 안정적 |
7. Epoch, Batch, Iteration
| 용어 | 설명 |
| Epoch | 전체 데이터셋 1회 학습 |
| Batch | 한번에 학습하는 데이터 묶음 |
| Iteration | Batch 한 번 학습하는 단위 (Epoch 내에서 반복됨) |
ex.
- 데이터 1000장
- batch size = 100 → 1 Epoch = 10 Iteration
- Epoch 10이면 전체 데이터를 10번 학습한 것
8. AI 모델
AI 모델이란?
- 입력 → 출력으로 mapping해주는 함수
- 단, 이 함수는 사람이 정하지 않고, 데이터를 보고 스스로 결정함
딥러닝 모델의 구조
- 입력층 → 은닉층(여러 개) → 출력층
- 각 층은 가중치(weight) 와 편향(bias) 라는 학습 가능한 파라미터를 가짐
학습(Training)의 의미
- 데이터의 정답을 기준으로 모델의 오차(Loss)를 계산하고, 그 오차를 줄이기 위해 가중치를 조금씩 수정하는 과정
학습 과정 요약
- 데이터 준비 (x: 입력, y: 정답)
- 모델 정의 (레이어 구성)
- Loss function 설정
- Optimizer 설정 (SGD, Adam 등)
- 학습 루프 반복
- for epoch in range(10): y_pred = model(x) loss = criterion(y_pred, y) optimizer.zero_grad() loss.backward() optimizer.step()
9. AI 개발을 위해 준비해야 할 것들
1) GPU 환경
- 로컬 PC : NVIDIA GPU (GTX 1660 이상 추천)
- 혹은 클라우드 사용 : Google Colab, AWS, LambdaLabs 등
2) 소프트웨어 세팅
| 도구 | 설명 |
| Python 3.x | 기본 언어 |
| PyTorch | 딥러닝 프레임워크 |
| CUDA + cuDNN | GPU 드라이버 |
| Jupyter Notebook / VSCode | 개발환경 |
| Git | 버전관리 |
| pip / conda | 패키지 관리 |
4) 학습/추론 실습부터 시작
- 사전학습 (pretrained) 모델 불러와서 추론 → 결과 확인
- 그 다음, 학습 데이터로 재학습 (fine-tuning)
- 점점 모델을 직접 만드는 방향으로 확장
어렵다!
다음 글은 본격 학습에 대한 글로 돌아오겟습니당~
'AI' 카테고리의 다른 글
| [DeepLearning/ComputerVision] Deep Learning 기반 행동 인식 알고리즘 (3) | 2025.11.30 |
|---|