앞에서 살펴본 Ollama 는 설치 및 활용이 비교적 간단합니다. 별도의 서비스 서버를 운영하고, 사용자가 원하는 파라미터를 requests.post 로 전달하고 받을 수 있어서 LLM 모델을 쉽게 활용할 수 있습니다.

Diffusion 또는 Whisper 등을 활용하여 이미지 및 사운드를 활용하기에는 어려워서 별도의 학습모델 빌드 도구를 필요로 합니다. 오픈소스 학습 모델을 직접 활용하는 빌드 모델에 대하여 살펴보면 다음과 같습니다.

기능 Ollama 보완 도구
텍스트 LLM ✅ —
이미지 분석 ✅ —
이미지 생성 ❌ Stable Diffusion / ComfyUI
음성 입력(STT) ❌ Whisper, Vosk, Coqui STT
음성 출력(TTS) ❌ Coqui TTS, Mozilla TTS
멀티모달 챗 부분 여러 모델 + 툴 연결

Ollama 는 OpenAI-style REST API 방식도 제공 합니다. 따라서 아래의 예제처럼 이미지 파일을 첨부하여 전달하는 방식으로도 구현이 가능 합니다. 반면 Whisper 와 같은 음성 (실시간 음성) 은 지원하지 않습니다.

import requests

res = requests.post(
    "http://localhost:11434/v1/chat/completions",
    json={
        "model": "llama4:scout",
        "messages": [{"role": "user", "content": "Describe this image"}],
        "images": ["./test.png"]
    }
)
print(res.json())


빌드한 학습모델 Python 활용하기

diffusion(diffusers)** 과 **stable_diffusion_cpp 비교

학습모델을 Python 에서 활용하는 예시들을 보면 크게 diffusion 과 stable_diffusion_cpp 으로 나눠지는 것을 확인 할 수 있습니다.

항목 diffusers stable_diffusion_cpp
언어 Python C++
백엔드 PyTorch GGML / GGUF
GPU 활용 매우 강력 제한적
CPU-only ❌ 느림 ✅ 실용적
SDXL ✅ 완벽 ⚠ 부분
ControlNet ✅ ❌
LoRA ✅ ⚠ 제한
커스터마이징 최고 낮음
배포 용이성 보통 매우 좋음
메모리 사용 큼 작음

diffusers

개발작업에 사용하는 패키지 입니다. Pytorch 를 주요한 엔진으로 사용하고 있습니다. 때문에 커스터마이징, 생성품질, 생태계에서 최신 기능을 지원합니다. 최근에는 GGML / GGUF 포맷의 학습 데이터도 활용 가능해져서 stable_diffusion_cpp 의 상당 부분을 대체하고 있습니다.

Python
 └─ PyTorch
     └─ CUDA / ROCm / CPU

stable_diffusion_cpp

배포시에 적합한 패키지 입니다. C++ 를 기반으로 운영되어 상대적으로 저사항 모델에 적합합니다. 컨버팅이 필요한 만큼 커스터마이징, 생성품질, 생태계 등에 대하여 상대적으로 늦게 지원하는 단점이 있습니다.

Python (thin wrapper)
 └─ C++ (stable-diffusion.cpp)
     └─ CPU / Metal / Vulkan

결론

Python 에 대한 자유도가 높고, 양자화 모델도 지원하는 diffusers 를 활용해 보겠습니다.


Vision

Z-Image-Turbo

이미지를 생성하는 모델로써 최적화가 잘 되어있는 Z-Image-Turbo 에 대하여 살펴보겠습니다. Tongyi-MAI/Z-Image-Turbo 기본모델이 있고, 이를 양자화로 최적화된 jayn7/Z-Image-Turbo-GGUF 이 있습니다.

구분 기본 모델 (Tongyi-MAI) GGUF 모델 (jayn7)
파일 형식 .safetensors 또는 .bin .gguf
데이터 정밀도 FP16 또는 FP32 (고정밀도) Q4, Q5, Q8 등 (양자화/Quantized)
파일 용량 매우 크고 무거움 상대적으로 훨씬 작음
필요 메모리(VRAM) 높음 (고성능 그래픽카드 필수) 낮음 (낮은 VRAM 또는 일반 RAM으로도 가능)
실행 환경 PyTorch, Diffusers, 전문 WebUI 등 llama.cpp 기반 로더, GGUF 지원 UI 등

GGUF를 사용하는 이유 (양자화의 개념)

양자화란? 모델이 계산할 때 사용하는 숫자의 정밀도를 낮추는 것입니다. 예를 들어, 소수점 아래 열 번째 자리까지 계산하던 것을 첫 번째 자리까지만 계산하게 만드는 식입니다. 장점: 모델의 용량이 1/2에서 1/4까지 줄어들며, 그래픽카드의 메모리(VRAM)가 부족하더라도 시스템 메모리(RAM)를 빌려와 실행할 수 있습니다. 단점: 정밀도를 낮추기 때문에 아주 미세하게 이미지의 디테일이나 품질이 원본보다 떨어질 수 있습니다 (하지만 육안으로는 구분하기 힘든 경우가 많습니다).

결론

GGUF (주로 Q8_0 또는 Q5_K_M 버전)이 속도와 품질 사이의 균형이 가장 좋기 때문에 먼저 사용해 보겠습니다.


Sound

Whisper/tiny