Gemma3ForConditionalGeneration과 AutoProcessor를 > 멀티모달 사용(이미지 + 텍스트)을 염두에 둔 구성
면 내가 위에서 보여준 코드는 텍스트 전용 모델 로딩은 AutoModelforCausalLM 사용
TIP. 만약 huggingface에서 접근 권한이 필요한 모델이라면
hugging face웹사이트에서 모델 접근신청 > 토큰 다운 > 로그인코드에 토큰 입력먼저 해줘야함
(gemma 3 Model은 권한 신청 필요)
로그인 코드
import huggingface_hub
huggingface_hub.login()
# 위 코드 실행 후 나오는 창에 토큰 입력
# MY_HF_TOKEN = "내 토큰"
from huggingface_hub import login
login(token="내 토큰") # Hugging Face의 개인 액세스 토큰
멀티모달용 코드
[방법1]Auto~ 코드로 로드하는 방법
from transformers import AutoProcessor, Gemma3ForConditionalGeneration
from PIL import Image
import requests
import torch
model_id = "google/gemma-3-27b-it"
model = Gemma3ForConditionalGeneration.from_pretrained(
model_id, device_map="auto"
).eval()
processor = AutoProcessor.from_pretrained(model_id)
- Gemma3ForConditionalGeneration: 이미지+텍스트를 입력받아 텍스트를 생성하는 구조 (Image-to-Text, Text-to-Text 가능)
- AutoProcessor: 이미지와 텍스트를 동시에 처리 가능한 멀티모달 전처리기
즉, 이 코드는 image-text-to-text 태스크나 텍스트+이미지 조건부 생성에 최적화된 구조
[방법2] Pipeline으로 편하게 로딩하는법
# Use a pipeline as a high-level helper
from transformers import pipeline
messages = [
{"role": "user", "content": "Who are you?"},
]
pipe = pipeline("image-text-to-text", model="google/gemma-3-27b-it")
pipe(messages)
텍스트-only 코드
[방법1]Auto~ 코드로 로드하는 방법
from transformers import AutoModelForCausalLM, AutoTokenizer
model_id = "google/gemma-3-27b-it"
tokenizer = AutoTokenizer.from_pretrained(model_id)
model = AutoModelForCausalLM.from_pretrained(model_id, device_map="auto").eval()
# 프롬프트 구성
prompt = "Explain the concept of artificial intelligence."
inputs = tokenizer(prompt, return_tensors="pt").to(model.device)
# 텍스트 생성
outputs = model.generate(**inputs, max_new_tokens=100)
print(tokenizer.decode(outputs[0], skip_special_tokens=True))
[방법2] Pipeline으로 편하게 로딩하는법
from transformers import pipeline
# 텍스트 생성용 파이프라인으로 전환
pipe = pipeline("text-generation", model="google/gemma-3-27b-it")
# 프롬프트 입력
prompt = "What is the meaning of life?"
output = pipe(prompt, max_new_tokens=50, do_sample=True)
print(output[0]['generated_text'])
멀티모달용, 텍스트 생성용 비교
항목 | 멀티모달용 | 텍스트 생성 전용 |
Gemma3ForConditionalGeneration | AutoModelForCausalLM | |
사용 목적 | 이미지+텍스트 → 텍스트 생성 | 텍스트 → 텍스트 생성 |
전처리기 | AutoProcessor (이미지 포함 가능) | AutoTokenizer (텍스트 전용) |
모델 클래스 | Gemma3ForConditionalGeneration | AutoModelForCausalLM |
입력 타입 | 이미지 + 텍스트 | 텍스트만 |
API 지원 태스크 | image-to-text, image-text-to-text, text-generation 등 | text-generation |
pipeline() vs 직접 로딩 비교
항목 | pipeline() 사용 | AutoTokenizer + AutoModel 직접 사용 |
장점 | - 빠르고 간편함 - 기본 설정 자동으로 구성됨 |
- 세밀한 제어 가능 - 고급 사용자에게 유리 |
단점 | - 설정 제한적 - 고급 제어 어려움 |
- 코드 길어짐 - 초보자에겐 다소 복잡 |
사용 예시 | - 간단한 텍스트 생성 - 데모용 - API 서버 구축 전 빠른 테스트 |
- 커스텀 파라미터 조정 - 프롬프트 포맷 제어 - 채팅형 구조, beam search 등 fine-grain 제어 |
속도/성능 | 거의 동일 (내부적으로 같은 모델 사용) | 동일하지만 더 유연하게 최적화 가능 |
추천 대상 | 초중급 / 빠른 실험자 | 중고급 / 서비스 구축, 세밀한 튜닝 필요할 때 |
정리하면
✳️ 이미지 입력은 안 쓸 거라면, 더 가볍고 최적화된 구조인 AutoModelForCausalLM + AutoTokenizer 조합을 쓰는 게 좋음
✳️ 이미지를 나중에 쓸 여지도 있다면, 지금 코드도 충분히 유효해. 단, 텍스트-only generation에선 약간의 오버헤드가 생길 수 있음
'Data Science > ML & DL' 카테고리의 다른 글
[Module 4] 6.Ensemble | 머신러닝 모델을 동시에 사용하기 (1) | 2024.01.10 |
---|---|
Lv2. 결측치 보간법과 랜덤포레스트로 따릉이 데이터 예측하기 (1) | 2023.12.26 |
Lv1. 의사결정회귀나무로 따릉이 데이터 예측하기 (2) | 2023.12.26 |
Segemntation | 개요 (1) | 2023.11.09 |
Object Detection | yolov8 예제 2(customdataset_train.) (0) | 2023.11.09 |