프로덕션 AI 구축: 3단계 MLOps 여정
Source: Dev.to

시리즈 개요
Stable Diffusion, LoRA 파인‑튜닝, 오픈‑소스 MLOps 도구를 활용한 실전 코드‑중심 가이드. 우리는 나이지리아 아디레(Adire) 패턴을 파인‑튜닝하지만, 이 아키텍처는 어떤 도메인에도 적용 가능하다.
기술 스택: Stable Diffusion 1.5, LoRA, Google Colab (T4 GPU), ZenML, MLflow, Gradio, HuggingFace Hub
아이디어: AI에게 나이지리아 아디레 패턴의 섬세한 아름다움을 “이해”시키는 것. 처음부터 모델을 만들기보다 세계적 수준의 엔진(Stable Diffusion)에 맞춤 튜닝 키트(LoRA)를 추가해 $10 k 규모의 작업을 $0 비용으로 전환한다.
워크플로우를 세 단계로 생각해 보자:
- 훈련실 – Google Colab, AI가 아디레 스타일을 학습하는 곳.
- 조립 라인 – ZenML/MLflow, 품질 관리를 제공.
- 쇼핑 프론트 – Gradio, 사용자와 상호작용하는 UI.
청사진
LoRA (Low‑Rank Adaptation) 수학
# Standard fine‑tuning: Update all parameters
W_new = W_original + ΔW # ΔW is 2048×2048 = 4.2M params
# LoRA: Low‑rank decomposition
W_new = W_original + A @ B # A: 2048×4 (8,192 params)
# B: 4×2048 (8,192 params)
# Total: 16,384 params (≈0.4% of original)
구현
import torch
import torch.nn as nn
class LoRALayer(nn.Module):
def __init__(self, in_dim, out_dim, rank=4):
super().__init__()
# Small matrices that are actually trained
self.lora_A = nn.Parameter(torch.randn(in_dim, rank))
self.lora_B = nn.Parameter(torch.randn(rank, out_dim))
self.scaling = 1.0 / rank
def forward(self, x):
# Apply low‑rank adaptation
return x @ (self.lora_A @ self.lora_B) * self.scaling
왜 LoRA가 게임 체인저인가
대형 모델을 재학습하려면 수십억 개의 파라미터를 업데이트해야 하며, 이는 막대한 GPU 시간과 스토리지를 소모한다. LoRA는 투명한 포스트잇과 같다: 전체 책을 다시 쓰는 대신, 작은 오버레이에 Adire 메모를 적는다.
수학적으로는 거대한 가중치 업데이트 ΔW를 두 개의 작은 행렬 A와 B의 곱으로 대체한다:
[ W_{\text{new}} = W_{\text{original}} + (A \times B) ]
이렇게 하면 파라미터 수가 ~4.2 M에서 ~16 K로 99.6 % 감소하면서도 성능을 유지한다.
경제성
낮은 예산으로 고급 기술 – 전통적인 기업 파이프라인은 연간 서버 비용만 $10 k +가 든다. 오픈‑소스 도구와 LoRA‑중심 아키텍처를 활용하면 전체 시스템을 사실상 무료(예: Google Colab 무료 티어)로 운영할 수 있다. 이는 대규모 예산 없이도 프로덕션 수준 AI를 접근 가능하게 만든다.
