모델별 실행 레시피
LFM2.5-VL-3B DSpark: 맥에서 이미지 답변을 2배 이상 빠르게 만드는 법
DSpark는 사진을 읽는 시간을 줄이지 않고, 읽은 뒤 답을 쓰는 구간을 앞당깁니다.
영수증 사진에서 날짜와 금액을 뽑거나, 제품 사진을 짧게 설명하는 일을 로컬에서 처리하려면 거대한 비전 모델이 꼭 필요한 것은 아닙니다. LFM2.5-VL-3B는 약 3B 규모와 32K 문맥으로 이런 단일 요청을 빠르게 처리하는 쪽에 맞춰져 있습니다. 별도 DSpark 초안 모델을 함께 쓰면 답변 생성이 빨라지지만, 이미지 인코딩과 프리필1까지 같은 배율로 빨라지는 것은 아닙니다.
먼저 사진을 읽는 일과 답을 쓰는 일을 나눕니다
비전 언어 모델의 한 요청은 사진을 특징으로 바꾸는 단계, 입력 문맥을 읽는 프리필, 답변 토큰2을 이어 쓰는 디코드3로 나눌 수 있습니다. DSpark는 작은 초안 모델이 다음 토큰 묶음을 제안하고 본 모델이 검증하도록 해 디코드 반복을 줄입니다. 카메라 사진을 인코딩하는 앞부분 자체를 생략하지는 않습니다.
따라서 짧은 답 한 줄만 필요한 영수증 OCR은 디코드가 빨라져도 전체 완료 시간이 같은 배율로 줄지 않을 수 있습니다. 반대로 이미지 설명이나 번역처럼 수십~수백 토큰을 생성하면 가속이 체감되기 쉽습니다. 사이트 속도 화면은 토큰 생성 배율을 적용하고, 전체 작업 판단은 이미지 크기와 답변 길이를 함께 보도록 구성했습니다.

공식 수치는 장비와 엔진까지 한 묶음입니다
Liquid AI가 공개한 여섯 가지 비전 과제에서 M5 Max의 MLX4-VLM 디코드는 2.30~3.13배, 전체 완료 시간은 1.56~2.62배 빨라졌습니다. M3 Ultra의 llama.cpp 디코드는 1.57~2.14배, 전체는 1.30~1.77배였습니다. 같은 모델이라도 엔진과 하드웨어, 출력 길이가 달라지면 배율이 달라집니다.
모델 카드에는 기본 LFM2.5-VL-3B가 Apple M5 Max에서 228 tok/s, AMD Ryzen AI Max+ 395에서 116 tok/s로 소개됩니다. 이 값은 공개된 특정 경로의 기준점이지 모든 양자화5와 이미지에서 보장되는 속도가 아닙니다. 사이트에서는 같은 장비가 확인된 경우에만 해당 DSpark 범위를 사용하고 다른 장비에는 임의로 옮기지 않습니다.

Mac은 MLX-VLM과 llama.cpp 중 목적에 맞춰 고릅니다
M5 Max에서 가장 간단한 공식 경로는 MLX-VLM 서버에 대상 모델과 DSpark 초안 모델을 함께 지정하는 방식입니다. 앱 연동이 필요하면 OpenAI 호환 엔드포인트를 확인하고, 먼저 한 장의 고정 이미지와 고정 출력 길이로 기본 실행을 저장합니다. 가속을 켠 뒤에는 답 내용이 같고 초안 승인 기록이 생기는지 확인합니다.
M3 Ultra처럼 llama.cpp 경로를 쓸 때는 대상 F16 GGUF6, 비전 프로젝터와 DSpark 초안 파일이 각각 맞아야 합니다. 문맥을 8192로 작게 시작하고 초안 최대 길이 8을 사용한 공식 예시를 기준으로 삼을 수 있습니다. 파일 하나만 바뀌어도 비교가 깨지므로 명령과 체크포인트7 해시를 함께 보관합니다.
mlx_vlm.server --model LiquidAI/LFM2.5-VL-3B --draft-model LiquidAI/LFM2.5-VL-3B-DSparkNVIDIA 서버에서는 SGLang의 DSpark 경로를 확인합니다
SGLang 공식 예시는 DSpark 알고리즘과 초안 모델, FlashInfer 초안 어텐션8, 블록 크기 9를 명시합니다. 처음에는 한 요청과 짧은 문맥으로 시작해 서버가 모델을 올리고 이미지를 받는지 확인합니다. 그다음 가속을 끈 동일 요청과 비교해 초안 제안 수, 승인 수와 완료 시간을 기록합니다.
초안 모델은 본 모델과 다른 답을 최종 출력하는 대체 모델이 아닙니다. 본 모델이 매번 제안을 검증하므로 탐욕적 생성 조건에서는 같은 대상 모델의 결과를 유지할 수 있습니다. 다만 런타임9 버전이나 샘플링 설정이 다르면 비교 조건이 달라지므로 정확히 같은 요청과 생성 옵션을 사용해야 합니다.
python -m sglang.launch_server \
--model-path LiquidAI/LFM2.5-VL-3B \
--speculative-algorithm DSPARK \
--speculative-draft-model-path LiquidAI/LFM2.5-VL-3B-DSpark \
--speculative-draft-attention-backend flashinfer \
--speculative-dspark-block-size 9 \
--disable-radix-cache --mem-fraction-static 0.8 --host 127.0.0.1 --port 30000
내 작업에서는 세 가지 시간만 재면 됩니다
같은 사진과 같은 질문으로 기본 실행과 DSpark 실행을 각각 세 번 측정합니다. 이미지 전달부터 첫 토큰까지, 첫 토큰부터 마지막 토큰까지, 전체 완료 시간을 따로 남깁니다. 사진 전처리 시간이 길다면 디코드 가속보다 이미지 크기를 줄이는 편이 전체 체감에 더 큰 영향을 줄 수 있습니다.
초안 승인률이 낮거나 답변이 아주 짧으면 추가 초안 모델의 비용이 이득을 상쇄할 수 있습니다. OCR·캡션·번역처럼 반복할 실제 작업 세 가지를 정하고 중앙값을 비교하세요. 공개 배율이 아니라 내 작업에서 줄어든 전체 대기 시간이 가속을 유지할 기준입니다.
용어 각주
프리필 — LLM이 입력 프롬프트를 읽고 각 토큰의 내부 표현을 계산하는 단계입니다. 입력이 길수록 처리할 토큰이 많아집니다.
본문으로 돌아가기토큰 — 모델이 입력이나 출력을 나누어 처리하는 단위입니다. 토큰 하나가 글자 하나나 일정한 시간 길이에 해당하지는 않습니다.
본문으로 돌아가기디코드 — LLM에서는 입력 처리 뒤 출력 토큰을 생성하는 단계를 뜻합니다. VAE나 오디오 코덱에서는 압축 표현이나 인코딩 데이터를 원래 형식으로 복원하는 처리를 가리킬 수 있습니다.
본문으로 돌아가기MLX — Apple이 개발하는 머신러닝 프레임워크입니다. Apple silicon에서는 통합 메모리와 Metal을 활용하며, 별도로 Linux 실행 경로도 제공합니다. 지원 모델과 기능은 MLX 기반 도구마다 다릅니다.
본문으로 돌아가기양자화 — 모델의 수치를 더 적은 비트로 표현하는 방법입니다. 메모리 사용량과 함께 정확도나 실행 속도도 달라질 수 있으며, 영향은 형식과 구현에 따릅니다.
본문으로 돌아가기GGUF — 모델 정보를 담는 파일 형식으로 llama.cpp 계열 도구에서 널리 사용됩니다. 파일 형식만으로 특정 하드웨어 호환성이나 속도가 보장되지는 않습니다.
본문으로 돌아가기체크포인트 — 학습된 모델의 가중치 등을 저장한 파일입니다. 같은 모델 계열도 버전이나 용도에 따라 다른 체크포인트를 쓸 수 있습니다.
본문으로 돌아가기어텐션 — 모델이 입력의 여러 위치를 서로 비교해 현재 계산에 참고할 정보를 정하는 연산입니다. 구체적인 동작과 비용은 모델 구조에 따라 다릅니다.
본문으로 돌아가기런타임 — 프로그램이 실행될 때 필요한 기능을 제공하는 소프트웨어 환경입니다. 로컬 AI에서는 모델을 실행하는 엔진을 가리키기도 하며, GPU 런타임 라이브러리와 완성된 서빙 앱은 서로 다른 구성요소입니다.
본문으로 돌아가기