AI

0. AI 개발 기초 개념

ayeongjin 2025. 8. 10. 22:14

 

작년에 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)를 계산하고, 그 오차를 줄이기 위해 가중치를 조금씩 수정하는 과정

 

학습 과정 요약

  1. 데이터 준비 (x: 입력, y: 정답)
  2. 모델 정의 (레이어 구성)
  3. Loss function 설정
  4. Optimizer 설정 (SGD, Adam 등)
  5. 학습 루프 반복
  6. 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)
  • 점점 모델을 직접 만드는 방향으로 확장

 


어렵다!

다음 글은 본격 학습에 대한 글로 돌아오겟습니당~