gemma-4-E4B-it-image2text-ko-sft

차트 이미지를 입력받아 한국어로 차트 내용을 설명하는 비전-언어 모델(VLM). google/gemma-4-E4B-itjp1924/ChartImageTextpairData로 QLoRA SFT한 뒤 LoRA를 병합한 16bit 전체 모델(merged full model) 입니다. 베이스 모델 없이 단독으로 로딩됩니다.

모델 개요

항목 내용
베이스 google/gemma-4-E4B-it (멀티모달, 8.08B)
태스크 차트 이미지 → 한국어 설명 (image-text-to-text)
학습 데이터 jp1924/ChartImageTextpairData (train 240,002)
방법 Unsloth FastVisionModel 4bit QLoRA, LoRA r=32 (vision+language), 1 epoch
병합 LoRA → base 병합(16bit)

평가 결과 (validation 30,000건)

LLM-as-judge(google/gemma-4-31B-it, 이미지 기반 채점) + metadata 기반 객관 지표(숫자 재현율/정밀도).

모델 judge (1-10) 수치 재현율 수치 정밀도 title legend
base (gemma-4-E4B-it) 6.71 76.1% 75.6% 58.2% 90.4%
SFT 9.67 98.8% 88.9% 67.4% 96.9%
SFT+DPO 9.67* 98.7% 88.6% 68.3% 97.0%

* SFT+DPO의 judge는 2,000건 표본 기준 추정값. → DPO 버전

  • judge 승률(SFT vs base): SFT 65.5% / 무 31.4% / base 3.2%
  • 수치 재현율 98.8%는 정답 텍스트 상한(≈99.0%)에 근접 — 차트 수치를 거의 정확히 재현.

사용법 (vLLM, OpenAI 호환)

from vllm import LLM, SamplingParams
import base64, io
from PIL import Image

llm = LLM(model="ProtenLabs/gemma-4-E4B-it-image2text-ko-sft",
          limit_mm_per_prompt={"image": 1}, dtype="bfloat16", max_model_len=4096)

img = Image.open("chart.png").convert("RGB")
buf = io.BytesIO(); img.save(buf, format="PNG")
b64 = base64.b64encode(buf.getvalue()).decode()

messages = [[{"role": "user", "content": [
    {"type": "text", "text": "이 차트 이미지를 보고 내용을 한국어로 자세히 설명해 주세요."},
    {"type": "image_url", "image_url": {"url": f"data:image/png;base64,{b64}"}}]}]]
out = llm.chat(messages, SamplingParams(temperature=0, max_tokens=512))
print(out[0].outputs[0].text)

권장 프롬프트

학습 시 사용한 지시문: 이 차트 이미지를 보고 내용을 한국어로 자세히 설명해 주세요.

라이선스

베이스 모델의 Gemma 라이선스를 따릅니다.

Downloads last month
1,231
Safetensors
Model size
8B params
Tensor type
BF16
·
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Model tree for ProtenLabs/gemma-4-E4B-it-image2text-ko-sft

Finetuned
(218)
this model

Dataset used to train ProtenLabs/gemma-4-E4B-it-image2text-ko-sft