AI Sparkup

복잡한 AI 세상을 읽는 힘 ⚡

VLM 실행하기: CPU 최적화부터 클라우드까지

이미지를 읽고 질문에 답하는 AI, Vision Language Model(VLM)이 이제 누구나 실행할 수 있습니다. 고가의 GPU 없이도 내 노트북에서 돌릴 수 있고, 클라우드에서 최신 모델을 즉시 사용할 수도 있습니다. 다양한 VLM 모델부터 실행 방법까지, 실무에 필요한 모든 것을 정리했습니다.

Qwen2.5-VL은 UI 요소를 인식하고 이해할 수 있습니다 (출처: Hugging Face)

핵심 포인트:

  • 다양한 VLM 생태계: 256M 파라미터 경량 모델부터 235B 대형 모델까지, 용도에 맞는 선택 가능. Gemma 3는 128K 컨텍스트와 다국어 지원, Qwen3-VL은 Visual Agent 기능 제공
  • Intel CPU만으로 최대 65배 향상: OpenVINO 변환과 8비트 양자화로 PyTorch 대비 속도 대폭 개선. 첫 토큰 생성 시간 5초→0.25초, 처리량 0.7→64 토큰/초
  • 클라우드 즉시 실행: Ollama Cloud에서 Qwen3-VL 235B를 무료로 사용. CLI 한 줄이면 시작 가능하고, Python/JavaScript 라이브러리로 쉽게 통합

다양한 VLM 모델들 소개

VLM은 이미지와 텍스트를 동시에 처리하는 AI 모델입니다. 사진 속 물체를 설명하고, 문서에서 정보를 추출하며, 비디오를 분석합니다. 2025년 현재, 선택지는 다양합니다.

경량 모델부터 살펴보겠습니다. SmolVLM2는 256M, 500M, 2.2B 파라미터 버전을 제공합니다. 500M 버전은 비디오 이해와 효율성의 균형이 뛰어납니다. 각 이미지를 81개 토큰으로 압축해 처리하는데, 이는 Qwen2-VL의 16,000개 토큰과 비교하면 매우 효율적입니다. 저사양 환경이나 모바일 기기에서도 작동합니다.

중형 모델로는 Gemma 3가 있습니다. 4B, 12B, 27B 크기로 제공되며, 128K 토큰 컨텍스트를 지원합니다. “Pan & Scan” 기술로 다양한 해상도의 이미지를 효과적으로 처리하고, 140개 이상 언어를 지원합니다. 다국어 문서 처리나 긴 컨텍스트가 필요한 작업에 적합합니다.

Qwen3-VL의 메뉴 번역 예시
야시장 메뉴를 영어로 번역하는 Qwen3-VL (출처: Ollama)

대형 모델에는 Qwen3-VL이 있습니다. 235B 파라미터 모델로, 256K 컨텍스트를 지원하고 최대 1M까지 확장 가능합니다. 32개 언어 OCR을 지원하며, 흐릿하거나 기울어진 이미지, 희귀 문자도 잘 인식합니다. Visual Agent 기능으로 PC나 모바일 GUI의 요소를 인식하고 도구를 실행하며 작업을 완수합니다. 코드 생성(Draw.io, HTML, CSS, JavaScript)과 고급 공간 인식 능력도 갖췄습니다.

LLaMA 3.2 Vision은 11B와 90B 버전이 있으며, 128K 컨텍스트를 지원합니다. 문서 처리와 OCR, 이미지 캡션 작성에 강합니다. DeepSeek-VL은 1.3B, 4.5B 크기로, Mixture of Experts 아키텍처를 사용해 과학적 다이어그램과 추론 작업에 최적화돼 있습니다.

용도에 따라 모델을 선택하면 됩니다. 빠른 다국어 OCR이 필요하면 Gemma 3, 긴 비디오 이해가 필요하면 Qwen3-VL, 과학 다이어그램 분석에는 DeepSeek-VL, 저사양 환경에는 SmolVLM2나 DeepSeek-VL 1.3B가 적합합니다.

Intel CPU에서 로컬로 실행하는 법

GPU가 없어도 괜찮습니다. Intel CPU만으로도 VLM을 효율적으로 실행할 수 있습니다. OpenVINO와 Optimum Intel을 사용하면 됩니다.

프로세스는 3단계입니다. 먼저 모델을 OpenVINO IR 포맷으로 변환합니다. CLI나 Python 코드로 가능합니다.

from optimum.intel import OVModelForVisualCausalLM

model_id = "HuggingFaceTB/SmolVLM2-256M-Video-Instruct"
model = OVModelForVisualCausalLM.from_pretrained(model_id)
model.save_pretrained("smolvlm_ov")

다음은 양자화입니다. 양자화는 모델 가중치의 정밀도를 낮춰 크기와 속도를 개선합니다. 32비트 부동소수점을 8비트 정수로 변환하는 방식입니다. 두 가지 방법이 있습니다.

Weight-Only 양자화는 가중치만 압축합니다. 모델 크기가 줄고 메모리 효율이 개선되지만, 활성화는 원래 정밀도를 유지합니다. OpenVINO 2024.3부터는 런타임에 활성화도 자동으로 양자화돼 추가 속도 향상이 있습니다.

from optimum.intel import OVWeightQuantizationConfig

q_config = OVWeightQuantizationConfig(bits=8)
q_model = OVModelForVisualCausalLM.from_pretrained(
    model_id, 
    quantization_config=q_config
)
q_model.save_pretrained("smolvlm_int8")

Static 양자화는 가중치와 활성화를 모두 압축합니다. 보정 단계에서 소규모 데이터셋을 사용해 활성화 양자화 파라미터를 추정합니다. 비전 인코더에 적용하면 전체 성능이 향상되는데, 특히 짧은 답변이 필요하거나 여러 이미지를 입력할 때 유용합니다.

양자화는 FP32를 INT8로 변환해 모델을 경량화합니다 (출처: Hugging Face)

마지막은 추론 실행입니다. 최적화된 모델로 바로 사용할 수 있습니다.

generated_ids = q_model.generate(**inputs, max_new_tokens=100)
generated_texts = processor.batch_decode(generated_ids, skip_special_tokens=True)
print(generated_texts[0])

Intel AI PC나 최신 노트북이 있다면 GPU에서도 실행할 수 있습니다. device="gpu"만 추가하면 됩니다.

성능 차이는 명확합니다. Intel Core Ultra 7 265K 환경에서 SmolVLM2-256M을 테스트한 결과, PyTorch는 첫 토큰까지 5.15초, 초당 0.72개 토큰을 생성했습니다. OpenVINO로 변환하면 첫 토큰까지 0.42초(12배 향상), 초당 47개 토큰을 생성합니다. 8비트 양자화를 추가하면 첫 토큰까지 0.25초, 초당 64개 토큰으로 더 개선됩니다.

로컬 실행의 장점은 명확합니다. 데이터가 내 기기에 머물러 프라이버시가 보장됩니다. 인터넷 연결이 필요 없어 속도와 안정성이 향상됩니다. 한 번 설정하면 추가 비용 없이 계속 사용할 수 있습니다.

Ollama Cloud로 즉시 시작하기

설정 과정이 부담스럽다면 클라우드가 답입니다. Ollama Cloud에서 Qwen3-VL 235B를 무료로 사용할 수 있습니다.

CLI에서 한 줄이면 시작할 수 있습니다.

ollama run qwen3-vl:235b-cloud

메시지를 입력하고 이미지 경로를 지정하면 됩니다. 여러 이미지를 사용할 수도 있고, 드래그 앤 드롭으로 파일 경로를 자동 입력할 수도 있습니다.

Qwen3-VL의 꽃 식별 예시
꽃을 식별하고 반려묘 안전성까지 판단하는 Qwen3-VL (출처: Ollama)

Python이나 JavaScript 라이브러리로도 쉽게 접근할 수 있습니다. Python 예시를 보겠습니다.

from ollama import chat

response = chat(
    model='qwen3-vl:235b-cloud', 
    messages=[{
        'role': 'user',
        'content': 'What is this?',
        'images': ['./image.jpg']
    }]
)
print(response.message.content)

스트리밍 출력도 지원합니다. 긴 응답을 실시간으로 받을 수 있습니다.

stream = chat(
    model='qwen3-vl:235b-cloud',
    messages=[{
        'role': 'user', 
        'content': 'What is this?',
        'images': ['./image.jpg']
    }],
    stream=True,
)

for chunk in stream:
    print(chunk['message']['content'], end='', flush=True)

JavaScript에서도 동일하게 작동합니다. ollama 패키지를 설치하고 비슷한 방식으로 사용하면 됩니다.

Ollama는 OpenAI 호환 API도 제공합니다. 기존 OpenAI 클라이언트 코드를 사용하되 base_urlhttps://ollama.com/v1로 변경하면 됩니다. API 키는 Ollama 웹사이트에서 생성할 수 있습니다.

Qwen3-VL의 강력한 기능을 활용할 수 있습니다. 256K 컨텍스트로 책 한 권이나 몇 시간 분량의 영상을 한 번에 처리합니다. Visual Agent로 웹사이트나 앱의 UI 요소를 인식하고 조작합니다. 32개 언어 OCR로 저조도, 흐림, 기울어진 이미지도 정확하게 읽습니다. 수학 문제를 풀고, STEM 분야의 논리적 답변을 제공합니다.

어떤 방법을 선택할 것인가?

선택은 용도와 환경에 달려 있습니다.

로컬 실행은 프라이버시가 최우선일 때 적합합니다. 의료 데이터, 법률 문서, 기업 내부 자료처럼 민감한 정보를 다룬다면 로컬이 정답입니다. 데이터가 외부로 나가지 않습니다. 장기적으로 비용도 절감됩니다. 한 번 설정하면 추가 비용 없이 계속 사용할 수 있습니다. 인터넷 연결 없이도 작동하므로 오프라인 환경이나 네트워크가 불안정한 곳에서 유용합니다.

단점은 초기 설정이 필요하다는 점입니다. OpenVINO 설치, 모델 변환, 양자화 과정을 거쳐야 합니다. 하드웨어 성능에도 의존합니다. 최신 Intel CPU가 있다면 문제없지만, 구형 하드웨어에서는 성능이 제한될 수 있습니다.

클라우드 실행은 빠른 시작이 필요할 때 최적입니다. 설치나 설정 없이 즉시 사용할 수 있습니다. 최신 모델에 바로 접근할 수 있어 프로토타이핑이나 아이디어 검증 단계에 좋습니다. 여러 모델을 쉽게 비교 테스트할 수 있습니다. 인프라 관리 부담이 없어 개발에만 집중할 수 있습니다.

단점은 데이터가 외부 서버로 전송된다는 점입니다. 민감한 정보에는 적합하지 않습니다. 사용량에 따라 비용이 발생할 수 있습니다. 인터넷 연결이 필수이므로 오프라인 환경에서는 사용할 수 없습니다.

실무에서는 상황에 맞게 선택하면 됩니다. 계약서 검토나 환자 데이터 분석처럼 프라이버시가 중요한 작업은 로컬로 처리합니다. 새로운 기능을 빠르게 테스트하거나 고객 데모를 준비할 때는 클라우드를 사용합니다. 두 방법을 병행할 수도 있습니다. 개발 단계에서는 클라우드로 빠르게 프로토타입을 만들고, 프로덕션에서는 로컬로 배포하는 식입니다.

VLM의 활용 사례는 다양합니다. 문서 OCR로 계약서나 영수증에서 정보를 자동 추출할 수 있습니다. 메뉴판 사진을 찍어 다른 언어로 번역할 수 있습니다. 수학 문제 이미지를 업로드하면 풀이 과정을 받을 수 있습니다. 이미지에서 HTML, CSS, JavaScript 코드를 생성할 수도 있습니다. 긴 영상을 분석해 특정 순간을 찾거나 내용을 요약할 수 있습니다.

어느 쪽을 선택하든, VLM은 이제 누구나 사용할 수 있는 기술입니다. 여러분의 상황에 맞는 방법으로 시작해 보세요.


참고자료:


AI Sparkup 구독하기

최신 게시물 요약과 더 심층적인 정보를 이메일로 받아 보세요! (무료)

Comments

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다