PyTorch · Hugging Face · Ollama 를 같은 선반에 놓지 마라 — AI 프레임워크는 세 층이다
무엇으로 계산하나 · 무엇으로 모델을 불러오나 · 무엇으로 빠르게 돌리나
「Transformer 가 MVC 같은 거라면, Rails 말고 Django 도 있듯이 Hugging Face 말고 다른 것도 있겠네?」
맞는 직관인데 답이 한 줄로 안 나온다. AI 쪽은 한 층이 아니라 세 층이기 때문이다. PyTorch 와 Hugging Face transformers 와 Ollama 를 한 선반에 놓고 비교하면 계속 헷갈린다. 이 글을 읽으면 처음 보는 AI 도구 이름이 나와도 몇 층인지 먼저 가르고, 같은 층 안에서 고를 수 있다.
세 층
기반 프레임워크 — 행렬 계산과 학습 엔진이다. PyTorch, TensorFlow, JAX. 모델을 처음부터 짜거나 학습시킬 때 쓴다.
모델 라이브러리 — 이미 있는 모델을 불러와 쓰게 해 준다. Hugging Face transformers(Python), transformers.js(JavaScript). 안에서는 기반 프레임워크(또는 ONNX Runtime)를 부른다.
추론 엔진 — 학습이 끝난 모델을 빠르게 돌리는 데만 집중한다. llama.cpp, vLLM, Ollama, MLX.
Rails 로 치면 기반 프레임워크가 Ruby · Rack, 모델 라이브러리가 Rails, 추론 엔진이 Puma 쯤이다. 「Rails 랑 Puma 중 뭐가 나아?」가 이상한 질문이듯, 「Ollama 랑 PyTorch 중 뭐가 나아?」도 이상한 질문이다.
층마다 다시 보면
| 이름 | 언어 | 층 | 잘하는 것 | 약한 것 |
|---|---|---|---|---|
| PyTorch (Meta) | Python (코어 C++) | 기반 | 연구 · 산업에서 가장 많이 씀 | 직접 짜면 코드가 길다 |
| TensorFlow / Keras (Google) | Python | 기반 | 모바일 배포 도구(TFLite) | 새 모델 코드는 PyTorch 쪽이 먼저 나오는 일이 많다 |
| JAX (Google) | Python | 기반 | TPU, Gemini 학습에 쓰임 | 배우는 데 시간이 든다 |
| HF transformers | Python | 모델 | 공개 모델 수, 파인튜닝까지 | 추론 속도는 전용 엔진보다 느리다 |
| transformers.js | JavaScript | 모델 | 브라우저 · Node 에서 ONNX 로 실행 | 큰 모델은 무리 |
| llama.cpp | C/C++ | 추론 | GGUF, CPU · Mac 에서 LLM, 양자화 | 학습은 안 한다 |
| Ollama | Go | 추론 | ollama run 한 줄 |
세밀한 제어는 어렵다 |
| vLLM | Python | 추론 | 동시 요청 처리량 | GPU 서버가 필요하다 |
| MLX (Apple) | Python / Swift | 추론 · 학습 | Apple Silicon 에서 빠르다 | Mac 전용 |
Ollama 는 README 에 지원 backend 로 llama.cpp 를 든다. 그래서 「Ollama 냐 llama.cpp 냐」는 같은 층 안에서 「편하게 쓸래, 직접 만질래」의 문제다.
언어는 사실상 Python
Python ─ 전부 된다 (학습 · 파인튜닝 · 추론)
JS/TS ─ transformers.js (ONNX). 브라우저에서 돌릴 수 있는 게 가장 큰 장점
C/C++ ─ llama.cpp, ONNX Runtime
Go ─ Ollama 가 대표. 학습은 안 한다
Ruby ─ 선택지가 적다. ONNX Runtime 을 감싼 gem 정도
이 블로그를 굴리는 쪽은 Rails 라서 이 마지막 줄에 계속 부딪혔다. Rails 프로젝트에서 로컬 모델을 쓰려면 결국 둘 중 하나다. Python 서버를 따로 띄우고 HTTP 로 부르거나, 모델을 ONNX 로 바꿔 부르거나. 브라우저에서 돌려도 되는 일이면 transformers.js 로 아예 서버를 안 거치는 길도 있다.
고르는 순서
학습이나 파인튜닝을 할 거면 기반 층에서 PyTorch, 그 위에 HF transformers. 남이 만든 모델을 그대로 쓸 거면 모델 라이브러리. 정해진 모델을 빨리 · 싸게 돌리는 게 목적이면 추론 엔진. 내 Mac 하나면 Ollama, 여럿이 동시에 쓰는 GPU 서버면 vLLM.
HF transformers 의 pipeline() 이 안에서 무엇을 하는지는 Hugging Face pipeline 은 어떻게 도나에 따로 풀어 뒀다. 같은 가중치를 브라우저용으로 다시 싸는 얘기는 ONNX 는 포장 규격이다에 있다.
Rails 같은 Python 밖의 스택에 로컬 모델을 붙이려는데 어느 층을 어디에 둘지 막혔다면 negabaro 에 물어봐도 된다. 우리도 이 구성을 직접 고민하면서 굴리고 있다.
핵심 개념
도구 이름이 나오면 먼저 층을 가른다 — 기반 · 모델 라이브러리 · 추론 엔진
비교는 같은 층 안에서만 한다 — Ollama vs vLLM 은 되고, Ollama vs PyTorch 는 안 된다
학습하면 PyTorch + HF transformers, 돌리기만 하면 추론 엔진
Rails 에서는 Python 서버를 따로 두거나 ONNX 로 부른다