Articlehuggingface.co·2025년 4월 8일·0

Get your VLM running in 3 simple steps on Intel CPUs

Quick Summary

소형 비전 언어 모델 SmolVLM2를 Optimum Intel과 OpenVINO로 변환·양자화·추론하면 별도 GPU 없이도 Intel CPU에서 지연시간과 처리량을 크게 개선할 수 있다.

Get your VLM running in 3 simple steps on Intel CPUs 관련 대표 이미지

🖼️ 인포그래픽

Get your VLM running in 3 simple steps on Intel CPUs 내용을 설명하는 본문 이미지

🖼️ 4컷 인포그래픽

Get your VLM running in 3 simple steps on Intel CPUs 내용을 설명하는 본문 이미지

💡 한 줄 요약

소형 비전 언어 모델 SmolVLM2를 Optimum Intel과 OpenVINO로 변환·양자화·추론하면 별도 GPU 없이도 Intel CPU에서 지연시간과 처리량을 크게 개선할 수 있다.

📌 핵심 요약

  • 비전 언어 모델은 이미지와 영상을 분석해 장면 설명, 캡션 생성, 시각 정보에 관한 질의응답을 수행하며, 로컬 실행은 개인정보 보호와 오프라인 환경의 속도·신뢰성 측면에서 이점이 있다.
  • 첫 단계는 SmolVLM2-256M-Video-Instruct를 Optimum CLI 또는 OVModelForVisualCausalLM을 이용해 OpenVINO IR 형식으로 변환하고 저장하는 것이다.
  • 두 번째 단계에서는 8비트 가중치 전용 양자화나 보정 데이터가 필요한 정적 양자화를 적용해 모델 크기와 메모리 사용량을 줄이고 추론 효율을 높인다.
  • 세 번째 단계에서는 양자화한 모델의 generate 메서드로 추론하며, 지원되는 Intel 노트북·AI PC·외장 GPU에서는 모델을 불러올 때 GPU 장치를 지정할 수도 있다.
  • 단일 이미지 기준 벤치마크에서 PyTorch 대비 OpenVINO는 첫 토큰 생성시간을 5.150초에서 0.420초로 줄이고 처리량을 초당 0.722토큰에서 47.237토큰으로 높였으며, 8비트 가중치 전용 양자화는 이를 각각 0.247초와 초당 63.928토큰으로 추가 개선했다.

🧩 주요 포인트

  1. 비전 언어 모델은 이미지와 영상을 분석해 장면 설명, 캡션 생성, 시각 정보에 관한 질의응답을 수행하며, 로컬 실행은 개인정보 보호와 오프라인 환경의 속도·신뢰성 측면에서 이점이 있다.
  2. 첫 단계는 SmolVLM2-256M-Video-Instruct를 Optimum CLI 또는 OVModelForVisualCausalLM을 이용해 OpenVINO IR 형식으로 변환하고 저장하는 것이다.
  3. 두 번째 단계에서는 8비트 가중치 전용 양자화나 보정 데이터가 필요한 정적 양자화를 적용해 모델 크기와 메모리 사용량을 줄이고 추론 효율을 높인다.
  4. 세 번째 단계에서는 양자화한 모델의 generate 메서드로 추론하며, 지원되는 Intel 노트북·AI PC·외장 GPU에서는 모델을 불러올 때 GPU 장치를 지정할 수도 있다.
  5. 단일 이미지 기준 벤치마크에서 PyTorch 대비 OpenVINO는 첫 토큰 생성시간을 5.150초에서 0.420초로 줄이고 처리량을 초당 0.722토큰에서 47.237토큰으로 높였으며, 8비트 가중치 전용 양자화는 이를 각각 0.247초와 초당 63.928토큰으로 추가 개선했다.

🧠 상세 정리

1. 비전 언어 모델을 로컬에서 실행하는 이유

비전 언어 모델은 대규모 언어 모델의 능력을 시각 정보로 확장해 이미지와 영상을 분석하고, 장면을 설명하거나 캡션을 만들며, 시각적 내용에 대한 질문에 답할 수 있는 모델이다. 이런 모델은 계산 요구량이 커서 개인 장치에서 실행하기 어렵지만, 로컬 실행에는 입력 데이터가 외부 서버로 나가지 않아 개인정보 보호에 유리하다는 장점이 있다. 인터넷 연결이나 외부 서비스의 가용성에 의존하지 않으므로 응답 속도와 운영 신뢰성도 높일 수 있다. 글은 저사양 환경을 고려한 SmolVLM2-256M 모델과 Optimum Intel, OpenVINO를 조합해 비싼 하드웨어나 별도 GPU 없이 Intel CPU에서 비전 언어 모델을 실행하는 절차를 소개한다.

2. 준비 환경과 OpenVINO 형식 변환

튜토리얼을 따라 하려면 OpenVINO 지원 기능이 포함된 optimum-intel과 지정된 4.52 계열의 transformers를 설치해야 한다. 첫 번째 단계는 HuggingFaceTB/SmolVLM2-256M-Video-Instruct 모델을 OpenVINO IR 형식으로 변환하는 것이다. 사용자는 Optimum CLI의 export openvino 명령으로 모델을 지정된 디렉터리에 내보내거나, OVModelForVisualCausalLM.from_pretrained로 모델을 불러오면서 즉석에서 변환한 뒤 save_pretrained로 저장할 수 있다. 두 방식 모두 이후 양자화와 추론에 사용할 OpenVINO 모델을 만드는 것이 목적이며, 명령행과 파이썬 코드 중 작업 환경에 적합한 방식을 선택할 수 있다.

3. 양자화의 목적과 두 가지 방식

두 번째 단계인 양자화는 모델의 가중치 또는 활성값 정밀도를 낮춰 모델을 더 작고 빠르게 만드는 최적화 과정이다. 대표적으로 32비트 부동소수점 값을 8비트 정수 형식으로 대응시키며, 이를 통해 메모리 사용량을 줄이고 제한된 자원의 장치에서도 모델을 효율적으로 배포할 수 있다. 다만 정밀도를 낮추는 과정에서 오차가 발생해 정확도가 떨어질 가능성이 있으므로 성능 향상만이 아니라 결과 품질도 함께 확인해야 한다. Optimum은 학습 이후 적용할 수 있는 주요 방식으로 가중치 전용 양자화와 정적 양자화를 제공하며, 두 방식은 양자화 대상과 보정 데이터 필요 여부, 기대할 수 있는 속도 향상에서 차이가 있다.

4. 가중치 전용 8비트 양자화

가중치 전용 양자화는 모델 가중치만 낮은 정밀도로 변환하고 활성값은 원래 정밀도로 유지하는 방식이다. 모델 크기와 메모리 사용량이 감소해 불러오는 시간이 개선되지만, 활성값까지 사전에 양자화하지는 않으므로 일반적으로 추론 속도 향상은 제한적이다. 대신 정확도 저하가 대체로 크지 않아 모델 최적화를 시작할 때 비교적 단순하게 적용할 수 있는 선택지다. 구현할 때는 8비트 OVWeightQuantizationConfig를 만든 뒤 모델 로딩 과정에 전달하고 결과를 저장하며, Optimum CLI에서는 weight-format을 int8로 지정해 같은 작업을 수행할 수 있다. OpenVINO 2024.3부터는 가중치가 양자화된 경우 관련 활성값도 실행 시점에 양자화되므로, 사용 장치에 따라 추가적인 속도 향상을 얻을 수 있다.

5. 정적 양자화와 보정 데이터

정적 양자화는 추론 전에 가중치와 활성값을 모두 양자화하며, 적절한 활성값 양자화 매개변수를 추정하기 위해 대표 데이터가 필요한 방식이다. 글에서는 contextual 데이터셋의 표본 50개를 보정에 사용하고, 비전 인코더에는 8비트 정적 양자화를 적용하는 한편 언어 모델과 텍스트 임베딩 모델에는 8비트 가중치 전용 양자화를 적용한다. 실험상 비전 인코더의 정적 양자화는 정확도를 크게 떨어뜨리지 않으면서 눈에 띄는 성능 개선을 제공했다. 다만 비전 인코더는 한 번의 생성 과정에서 한 번만 호출되므로 언어 모델처럼 반복 사용되는 구성 요소를 최적화할 때보다 전체 성능 향상은 작다. 짧은 답변을 생성하거나 여러 이미지를 한꺼번에 입력하는 상황에서는 이 방식이 특히 유용할 수 있지만, 활성값 양자화 오차가 누적될 수 있어 적용 후 정확도 검증이 중요하다.

6. 양자화 모델의 추론과 장치 선택

세 번째 단계에서는 양자화가 완료된 모델에 처리된 입력을 전달하고 generate 메서드로 최대 100개의 새 토큰을 생성한다. 생성된 토큰 식별자는 프로세서의 batch_decode로 문자열로 복원하며, 특수 토큰을 제외한 첫 번째 결과를 출력해 모델의 응답을 확인할 수 있다. 최근 Intel 노트북이나 Intel AI PC, Intel 외장 GPU를 사용하는 경우 모델을 불러올 때 장치를 GPU로 지정해 동일한 코드를 GPU에서도 실행할 수 있다. 글은 원본 모델과 가중치 전용 양자화 모델, 혼합 양자화 모델을 직접 비교할 수 있는 데모 공간도 제공하며, 해당 데모는 4세대 Intel Xeon Sapphire Rapids 프로세서에서 실행된다. 제시된 결과를 재현하려는 사용자를 위해 전체 절차가 담긴 노트북도 함께 안내한다.

7. 벤치마크 지표와 측정 결과

평가는 단일 이미지를 입력으로 사용해 원본 PyTorch, OpenVINO 변환 모델, OpenVINO 8비트 가중치 전용 양자화 모델을 Intel CPU에서 비교하는 방식으로 진행됐다. 측정 지표는 첫 출력 토큰이 생성될 때까지 걸리는 시간, 이후 출력 토큰 하나당 시간, 전체 출력 생성 지연시간, 디코딩 단계의 초당 생성 토큰 수였다. PyTorch의 첫 토큰 생성시간은 5.150초, 토큰당 시간은 1.385초, 전체 지연시간은 25.927초, 처리량은 초당 0.722토큰이었다. OpenVINO 모델은 각각 0.420초, 0.021초, 0.738초, 초당 47.237토큰을 기록했고, 8비트 가중치 전용 양자화 모델은 0.247초, 0.016초, 0.482초, 초당 63.928토큰으로 세 구성 중 가장 좋은 수치를 보였다.

8. 성능 향상의 의미와 재현 조건

벤치마크에 따르면 모델을 양자화하지 않고 Optimum으로 변환해 OpenVINO에서 실행하는 것만으로도 PyTorch 대비 첫 토큰 생성시간이 약 12배 빨라지고 디코딩 처리량은 약 65배 높아졌다. 여기에 8비트 가중치 전용 양자화를 적용하면 OpenVINO 기본 구성 대비 첫 토큰 생성시간이 약 1.7배 개선되고 처리량도 약 1.4배 증가하며, 모델 크기와 메모리 효율까지 좋아진다. 측정 시스템은 Intel Core Ultra 7 265K CPU와 64GB DDR5 메모리, Ubuntu 24.10, OpenVINO 2025.2.0을 사용했으며 하이퍼스레딩과 터보는 비활성화됐다. 소프트웨어 구성에는 torch 2.8.0, torchvision 0.23.0+cpu, optimum-intel 1.25.2, transformers 4.53.3이 포함됐고 측정일은 2025년 5월 15일이다. 글은 성능이 사용 방식과 시스템 구성 등 여러 조건에 따라 달라질 수 있으며, 제시된 결과가 이후 공개된 모든 업데이트를 반영하지 않을 수 있다고 명시한다.

🧾 핵심 주장 / 시사점

  • 양자화 이전의 OpenVINO 형식 변환만으로도 PyTorch 대비 지연시간과 처리량이 크게 개선됐으며, 8비트 가중치 전용 양자화는 그 위에 추가적인 성능·크기·메모리 효율 개선을 제공했다.
  • 가중치 전용 양자화는 적용이 단순하고 정확도 저하가 비교적 작지만, 정적 양자화는 보정 데이터와 사후 정확도 검증이 필요하며 사용 시나리오에 따라 얻는 이점이 달라진다.
  • 제시된 수치는 단일 이미지와 특정 Intel CPU·소프트웨어 구성에서 측정된 결과이므로, 실제 장치와 입력 형태가 다르면 동일한 향상을 보장할 수 없으며 같은 지표로 직접 검증해야 한다.

✅ 액션 아이템

  • SmolVLM2-256M-Video-Instruct를 Optimum Intel의 Optimum CLI 또는 OVModelForVisualCausalLM로 OpenVINO IR로 변환해 저장한다.
  • 8비트 가중치 전용 양자화와 보정 데이터 기반 정적 양자화를 모두 수행해 메모리·모델 크기·추론 효율 개선을 비교한다.
  • 단일 이미지 기준으로 PyTorch 대비 지연 5.150초→0.420초, 처리량 0.722→47.237토큰, 8비트 적용 시 0.247초·63.928토큰을 수치 기반으로 재검증한다.

❓ 열린 질문

  • 로컬 추론에서 OpenVINO IR 변환 후 첫 토큰 지연을 실제로 0.247초 수준으로 달성할 수 있는가?
  • 보정 데이터 없이 8비트 가중치 전용 양자화만으로 충분한가, 정적 양자화를 병행해야 하는 기준은 무엇인가?
  • Intel 노트북·AI PC·외장 GPU에서 GPU 장치 지정 시 CPU-only 대비 지연과 처리량 개선이 동일하게 유지되는가?

관련 문서

공통 태그와 주제 흐름을 기준으로 같이 보면 좋은 문서를 이어서 제안합니다.