개요
27편까지 보면서 VLM이 뭘 할 수 있는지는 알게 됐다. 그런데 강의가 3차시를 이렇게 시작한다.
VLM이 유용한 건 알겠는데, 너무 비싸다. 내 개인 컴퓨터나 스마트폰에서 실행할 모델은 없을까?
리더보드 1등 모델의 파라미터가 78B다. 서버용 GPU를 여러 장 꽂아야 돌아간다. 성능 순위와 내가 쓸 수 있느냐는 완전히 다른 문제다.
이번 글은 두 덩어리다. 앞쪽은 작게 만든 VLM(sVLM)과 한국어 모델 이야기고, 뒤쪽은 VLM 말고도 쓸 수 있는 이미지·영상 파운데이션 모델 목록이다. 자르는 모델(SAM), 찾는 모델(Grounding DINO), 만드는 모델(Diffusion)까지 훑는다.
뒤쪽 절반은 21편과 주제가 겹친다. 21편이 “어떻게 생성이 되는가” 를 원리로 풀었다면, 이 글은 “그래서 지금 뭘 가져다 쓰면 되는가” 쪽이다. 원리가 궁금하면 21편, 고를 때 필요한 건 이 글이다.
교육 자료는 대외비라 슬라이드 이미지나 예제 데이터는 싣지 않는다.
1. sVLM — 성능 1등이 아니라 돌아가는 걸 고른다
sVLM은 small VLM이다. sLLM에서 하던 경량화 시도가 VLM으로 그대로 넘어왔다.
작게 만드는 방법은 크게 두 축이다.
- 파라미터 수를 줄인다 — 작은 이미지 인코더 + 작은 언어모델. 이미지 토큰 수 자체도 압축한다
- 양자화(Quantization) — 파라미터의 정밀도(비트 수)를 낮춰서 크기와 메모리를 줄인다
양자화는 숫자를 대충 저장하는 것이다. 32비트로 적던 걸 8비트나 4비트로 적으면 파일도 작아지고 메모리도 덜 먹고 실행도 빨라진다. 대신 정밀도가 낮아지니 정확도와 추론 품질이 조금 깎인다. 공짜는 아니다.
대표 모델들
| 모델 | 만든 곳 | 특징 |
|---|---|---|
| SmolVLM | Huggingface | 이미지 인코더로 SigLIP, 언어모델로 SmolLM2. 이미지 1장 추론에 약 5GB |
| Moondream 0.5B | Moondream | 2억 파라미터. 8비트 양자화 시 다운로드 479MB, 메모리 996MB. 4비트면 375MB/816MB |
| Gemini Nano | 온디바이스 경량 Gemini. 픽셀 스마트폰 내부에서 실행 | |
| PaliGemma 3B | 약 6.7GB |
Moondream이 제공하는 기능 목록이 인상적이었다. 이미지 캡셔닝, Visual QA, 물체 탐지, 좌표 찍기(Pointing), 시선 탐지, OCR·문서 이해까지 된다. 2억 파라미터짜리가. 22편에서 본 CNN 분류기 하나가 하던 일보다 훨씬 많은 걸 한다.
온디바이스로 간다는 것
갤럭시의 온디바이스 AI가 이 흐름의 실제 사례다. 모바일 NPU로 이미지·언어·오디오·영상 작업을 기기 안에서 직접 실행한다. 텍스트 기반 이미지 생성, 인페인팅·아웃페인팅, 어조 변환·문법 교정, “스케이트보드 탈 때 찍어줘” 같은 자연어 기반 사진 촬영까지.
서버로 안 보내니 응답이 빠르고, 통신비가 안 들고, 사진이 밖으로 안 나간다. 개인정보 관점에서 이게 꽤 크다.
서비스 개발자 입장에서 고르는 기준은 1등이냐가 아니라, 내 예산과 기기에서 도는 것 중 제일 나은 게 뭐냐다.
2. 한국어 sVLM — 토크나이저부터 손해를 본다
강의에서 한국어 모델을 따로 다룬 이유가 있다. 토크나이저가 언어에 편중되어 있기 때문이다.
토크나이저는 문장을 모델이 먹을 조각(토큰)으로 자르는 도구다. 대부분 빈도가 높은 표현 위주로 설계되는데, 그 빈도가 영어 기준이다. 그래서 형태가 다른 언어는 비효율적으로 긴 토큰 시퀀스가 나온다.
강의에서 든 예가 딱 와닿았다. 이번 방학 때 뭐해? 라는 13글자 문장이,
- 기본 토크나이저에서는 19토큰 — 한글 일부가 바이트 단위로 쪼개진다
- 한국어 어휘를 넣어 확장한 토크나이저에서는 8토큰
같은 문장인데 두 배 넘게 차이 난다. 영어로 옮기면 this vacation in what do 정도로 5토큰이면 되는 문장이다.
토큰이 많으면 뭐가 나쁜가.
- 문맥 길이(context)를 더 많이 먹는다 → 넣을 수 있는 내용이 줄어든다
- 추론이 느려진다 → 토큰 수만큼 계산한다
- API 비용이 오른다 → 대부분 토큰 단위 과금이다
작은 모델일수록 이 손해가 아프다. 안 그래도 자원이 빠듯한데 토큰까지 두 배로 먹으면 답이 없다.
한국어 특화 모델
| 모델 | 만든 곳 | 비고 |
|---|---|---|
| HyperCLOVAX-SEED-Vision-Instruct-3B | NAVER | 한국어 특화 멀티모달. 텍스트와 이미지를 동시에 이해 |
| Kanana-1.5-v-3b-instruct | Kakao | 한국어 특화 멀티모달. 3.62B |
강의에서 본 비교 그래프에서, Kanana 쪽이 비슷한 크기의 해외 모델들(Qwen2.5-VL-3B, Phi-3-Vision, InternVL2.5-4B)보다 한국어 이미지 이해와 한국어 지시 수행에서 앞섰다. 영어 이미지 이해는 비슷했다. 특화 모델을 만드는 이유가 숫자로 보인다.
파라미터를 늘려서 이기는 게 아니라, 내 언어에서 손해 보던 부분을 없애서 이긴다.
3. 배포는 도구가 대신해준다 — LMDeploy
21편 마지막에서 “큰 모델을 실제 서비스에 넣으려면”이라며 경량화와 배포 이야기를 개념으로 정리했었다. 이번 실습은 그 개념을 명령어 수준으로 내린 것이다.
모델을 골랐으면 서빙해야 한다. 강의 실습에서는 LMDeploy를 썼다. LLM과 VLM의 압축·배포·서빙을 지원하는 오픈소스 툴킷이다.
- 지원 모델이 넓다 — InternVL, Qwen, DeepSeek, Phi 계열
- 오프라인 배포와 온라인 서빙(API 서버) 둘 다 된다
from lmdeploy import pipeline
from lmdeploy.vl import load_image
pipe = pipeline("OpenGVLab/InternVL3-8B")
image = load_image("https://.../tiger.jpeg")
response = pipe(("describe this image", image))
print(response)
온라인 서빙도 명령 한 줄이다.
lmdeploy serve api_server OpenGVLab/InternVL3-8B
Ducktopia 때 서버를 직접 띄우고 라우팅을 짜던 걸 생각하면, 이쪽은 모델 서빙에 필요한 뼈대가 이미 다 들어 있다. 내가 할 일은 어떤 모델을 어떤 크기로 얹을지 고르는 것뿐이다.
4. VLM 말고도 있다 — 자르고 찾는 모델들
이번 차시 후반부는 VLM이 아닌 이미지 파운데이션 모델들이다. 컴퓨터 비전에서 방대한 데이터로 학습된 모델들이고, 분할·탐지·3D 및 깊이 예측 같은 작업을 한다.
SAM — 뭐든지 잘라준다
Segment Anything Model (SAM, 2023 / SAM2, 2024, Meta)
- 컴퓨터 비전에서도 방대한 데이터로 파운데이션 모델을 만들 수 있음을 보여준 모델
- 클릭, 박스, 부분 세그먼트, 텍스트 같은 사용자 입력을 받아 원하는 영역의 마스크를 뽑는다
- 약 1,100만 장의 이미지, 10억 개의 마스크로 학습
- SAM2는 비디오까지 지원
여기서 눈여겨볼 건 입력 방식이다. “이 사진에서 고양이를 찾아라”가 아니라 “여기를 잘라라”에 가깝다. 프롬프트가 클릭 한 번일 수도 있고 박스일 수도 있다. 27편에서 본 SoM이 바로 이 SAM을 앞단에 붙인 것이다.
Grounding DINO — 텍스트로 물체를 찾는다
Grounding DINO (2023, IDEA Research)
- 텍스트 입력으로 대응되는 물체를 탐지하는 모델
- 클릭·박스·부분 세그먼트 같은 입력 없이 텍스트만으로 지정할 수 있다
- 학습하지 않은 대상도 자연어로 말하면 찾아낸다 (일반화 성능)
Grounded SAM (2024)은 이 둘을 붙였다. 순서가 깔끔하다.
- 텍스트로 찾을 것을 말한다 — “말, 구름, 풀, 하늘, 언덕”
- Grounding DINO가 해당하는 물체들의 박스를 뽑는다
- 그 박스를 SAM의 입력으로 넣어 개별 물체를 분할한다
모델 두 개를 이어 붙여서 새 능력을 만든 것이다. 새로 학습한 게 아니다.
SAMURAI (2024, Univ. Washington)는 SAM2 기반 응용으로 비디오 물체 트래킹을 한다. 강의에서 응용 사례를 물었는데 — 비디오 편집, 물체 지우기, 이상행동 감지, CCTV 자동 분석, 스포츠 중계 같은 것들이 바로 나온다.
파운데이션 모델 시대의 개발은 모델을 만드는 일보다 모델을 조합하는 일에 가까워 보인다.
5. 이미지 생성 모델 — 21편에서 한 칸 더
여기는 21편과 정면으로 겹치는 자리다. GAN이 왜 Diffusion으로 넘어갔고, Latent Diffusion이 왜 픽셀 대신 압축본에서 작업하는지는 그 글에 그려뒀다. 그래서 이번에는 21편이 다루지 않은 세 가지만 짚는다.
| 21편 | 28편 (이 글) |
|---|---|
| GAN → Diffusion → LDM 흐름과 각 부품의 역할 | 생성 모델이 푸는 문제를 분포 근사로 다시 정의 |
| Stable Diffusion 계열 구조 설명 | 2024~2025년 실제로 고를 수 있는 모델 목록 |
| — | 생성 모델을 다른 용도로 파인튜닝하는 사례 |
먼저 목표부터 다시 세우면 이렇다.
- 실제 데이터의 분포 $p_{data}(x)$를 안다는 건, 실제 데이터 x가 만들어지는 과정을 정확히 안다는 뜻이다
- 그런데 $p_{data}(x)$가 어떤 모양인지 우리는 모른다
- 그래서 유사 모델 $p_{model}(x)$로 근사한다
$$ p_{data}(x) \approx p_{model}(x) $$
근사가 잘 되면, $p_{model}$에서 샘플을 뽑는 것만으로 진짜 같은 데이터가 나온다. 그게 이미지 생성이다.
확산 모델 (Diffusion) — 짧게 복습
DDPM (Denoising Diffusion Probabilistic Models)이 요즘 이미지 생성의 주류다. 21편에서 본 그 모델이고, 여기서는 학습이 왜 라벨 없이 되는지만 다시 확인하고 넘어간다.
- forward — 원본 이미지에 노이즈를 조금씩 더해가며 결국 완전한 가우시안 노이즈로 만든다
- backward — 노이즈에서 시작해 조금씩 걷어내며 이미지를 구체화한다
- 학습 — 합성 노이즈를 입히고, 그 노이즈가 뭐였는지 예측하는 문제를 반복해서 풀게 한다
- 단점 — 느리다. 여러 단계를 거쳐야 한 장이 나온다
학습 방식이 영리하다. 노이즈는 내가 만들어서 씌운 것이니 정답을 이미 알고 있다. 사람이 라벨을 달 필요가 없다. 26편의 CLIP이 웹의 alt 텍스트를 정답표로 삼았던 것과 같은 계열의 발상이다.
LDM — 픽셀 대신 압축된 공간에서
Latent Diffusion Model은 Stable Diffusion(2022)에서 소개됐다. 고차원 픽셀 단위로 확산 연산을 하는 대신, 인코더로 압축한 저차원 잠재(latent) 임베딩에서 연산한다. 연산 효율이 올라가는데 생성 품질까지 좋아졌다.
21편에서 이 대목에 단서를 하나 달아뒀었다. 압축이 지나치면 작은 글자나 손가락 같은 섬세한 정보가 사라진다는 것. 이번 강의에서 본 최신 모델들의 개선 항목(손·표정 일관성, 문서 파싱, 텍스트 렌더링)이 전부 그 단서가 가리키던 지점이라 좀 재밌었다.
요즘 쓰이는 생성 모델들
| 구분 | 모델 | 비고 |
|---|---|---|
| 폐쇄형 | Midjourney v7 | 2025년 4월 공개. 프롬프트 해석 정확도, 손·표정 일관성 개선 |
| 오픈소스 | Stable Diffusion 3 / 3.5 | 2024년 공개. Diffusion Transformer 적용. 800M~8B 여러 크기 |
| 오픈소스 | FLUX.1 | 2024년 8월 공개. Rectified Flow Transformer. Pro/Dev/Schnell 세 가지 |
파인튜닝으로 용도를 바꾸기
생성 모델은 그 자체로도 쓰지만, 조금 손봐서 다른 일을 시키는 사례가 많다.
| 모델 | 무엇으로 바꿨나 |
|---|---|
| ControlNet (2023) | 윤곽선·자세·깊이 같은 조건을 추가로 받아, 원하는 구도로 이미지를 생성 |
| Zero123XL | 2D 이미지 한 장에서 다른 각도의 모습을 만들어 3D 물체를 생성 |
| Marigold (2024) | 확산 모델을 깊이 추정용으로 파인튜닝. 합성 데이터로 학습 |
Marigold가 특히 흥미롭다. 그림 그리는 모델을 깊이 재는 모델로 바꿨다. 사진을 만들 줄 안다는 건 그 안에 3차원 구조에 대한 감각이 이미 들어 있다는 뜻이고, 그걸 꺼내 쓴 셈이다.
6. 깊이·3D·비디오 — 목록만이라도 알아두기
나머지는 강의에서 빠르게 훑고 지나간 것들이다. 필요할 때 찾아 쓸 목록으로 남긴다.
| 분야 | 모델 | 하는 일 |
|---|---|---|
| 깊이 | Depth Anything v2 | SAM 이후 주목받은 깊이 예측 파운데이션 모델. 사진 한 장에서 거리감을 뽑는다 |
| 사람 | Sapiens (Meta) | 인간 중심 태스크 특화. 3억 장 이상의 사람 이미지로 학습. 자세, 분할, 깊이, 법선 예측 |
| 비디오 생성 | Sora, Veo 3, Luma Modify Video | 텍스트·이미지로 영상 생성. Veo 3는 소리까지 |
| 비디오 생성 | Wan 2.2 | 오픈소스. text-to-video, image-to-video, 720p 24FPS |
| 동적 3D | MegaSaM, CUT3R | 흔들리는 일반 영상에서 카메라 포즈와 깊이를 추정 |
| 오디오 | Audio-Vision Language Models | 소리까지 함께 이해 |
| 통합 | NExT-GPT | 어떤 입력이든 받아 어떤 출력이든 내는 방향 |
강의 마지막에 유용한 파운데이션 모델을 정리해줬는데, 요약하면 이렇게 나뉜다.
- 이미지 표현 — DINOv3
- 이미지 & 텍스트 — CLIP, BLIP, Grounded 계열
- 분할·탐지 — Segment Anything, Grounding DINO
- 멀티모달 LLM — InternVL, Qwen3-VL
- 멀티모달 임베딩 — ImageBind
- 3D 물체 — Zero123XL
- 음성 인식 — wav2vec, Whisper
이 목록의 공통점 하나. 전부 남이 학습시킨 것이고, 나는 가져다 쓴다. 26편에서 시작한 질문의 답이 이 목록 자체다.
정리
- 리더보드 상위 모델은 파라미터 78B. 성능 순위와 내가 쓸 수 있느냐는 다른 문제다
-
sVLM — 파라미터를 줄이고 양자화로 정밀도를 낮춰 작게 만든다. 대가는 정확도가 조금 깎이는 것
- SmolVLM(약 5GB), Moondream 0.5B(4비트에서 메모리 816MB), Gemini Nano, 갤럭시 온디바이스 AI
-
한국어 문제는 토크나이저에서 시작된다. 같은 문장이 19토큰과 8토큰으로 갈린다. 토큰이 많으면 느리고 비싸고 문맥을 잡아먹는다
- 한국어 특화 : HyperCLOVAX-SEED-Vision(NAVER), Kanana-1.5-v(Kakao)
- LMDeploy — 압축·배포·서빙 툴킷. 오프라인 배포와 API 서버 둘 다 지원
- SAM — 클릭·박스·텍스트로 원하는 영역을 잘라낸다. 1,100만 장 / 10억 마스크로 학습
- Grounding DINO — 텍스트만으로 물체를 탐지. Grounded SAM은 둘을 이어붙여 탐지 + 분할
- 확산 모델 — 노이즈를 씌우며 배우고 걷어내며 만든다. 정답(노이즈)을 내가 만들어 씌우니 라벨이 필요 없다
- LDM — 픽셀 대신 압축된 잠재 공간에서 확산. 계산량은 줄고 품질은 올라갔다
- 용도 변경 — ControlNet(조건부 생성), Zero123XL(2D→3D), Marigold(생성 모델을 깊이 추정용으로)
- 겹치는 글 — GAN·Diffusion·LDM의 원리와 배포 개념은 21편. 이 글은 그 위에 모델 선택지와 실행 비용을 얹는다
참고 자료
- Segment Anything (ICCV 2023)
- Grounding DINO (2023)
- High-Resolution Image Synthesis with Latent Diffusion Models (CVPR 2022)
- Depth Anything V2 (2024)
- SmolVLM 소개 글 (Huggingface)
- LMDeploy 저장소
한줄 평
- 성능표 1등을 보고 부러워하다가 메모리 요구량을 보고 정신이 드는 편이었다.. 결국 내 환경에서 도는 것 중 제일 나은 걸 고르는 눈이 실무에서는 더 중요할 것 같다!