PaliGemma: Open Vision Language Model
2024년 5월 Google에서 출시한 PaliGemma는 대규모 다중 모달 모델(LMM)입니다. 시각적 질문 답변(VQA)에 PaliGemma를 사용하여 이미지에서 물체를 감지하거나 세그먼테이션 마스크를 생성할 수도 있습니다.
PaliGemma(Github)는 이미지 인코더인 SigLIP-So400m과 텍스트 디코더인 Gemma-2B로 구성된 아키텍처를 갖춘 비전 언어 모델 제품군입니다. SigLIP은 이미지와 텍스트를 모두 이해할 수 있는 최첨단 모델입니다.
CLIP과 마찬가지로 공동으로 학습된 이미지 인코더와 텍스트 인코더로 구성됩니다. PaLI-3와 마찬가지로, 결합된 PaliGemma 모델은 이미지-텍스트 데이터에 대해 사전 학습된 후 캡션 또는 참조 세그멘테이션과 같은 다운스트림 작업에서 쉽게 미세 조정할 수 있습니다.
Gemma는 텍스트 생성을 위한 디코더 전용 모델입니다. 선형 어댑터를 사용하여 SigLIP의 이미지 인코더를 Gemma와 결합하면 강력한 비전 언어 모델인 PaliGemma를 만들 수 있습니다.
Setup Environments
AutoProcessoer Inference
PaliGemmaForConditionalGeneration 클래스를 사용하여 출시된 모델 중 어떤 것이든 추론할 수 있습니다.
내장된 프로세서로 프롬프트와 이미지를 전처리한 다음 전처리된 입력을 전달하여 생성하기만 하면 됩니다.
양자화 된 4-bit Quanitized 모델로 Inference 가능합니다.
이 예제에서는 VQAv2 데이터 집합을 사용하여 이미지에 대한 질문에 답하기 위해 모델을 미세 조정하겠습니다. 데이터 집합을 로드해 보겠습니다. 질문, 객관식_답변 및 이미지 열만 사용할 것이므로 나머지 열도 제거하겠습니다. 또한 데이터 집합을 분할합니다.
PaliGemmeaProcessor
시각적 질문에 답하도록 PaliGemma를 조건 짓는 프롬프트 템플릿을 만들겠습니다. 토큰화 도구가 입력을 패드화하므로, 라벨의 패드를 토큰화 도구의 패드 토큰과 이미지 토큰이 아닌 다른 것으로 설정해야 합니다.
모델을 직접 로드하거나 QLoRA용 4비트 모델을 로드할 수 있습니다. 모델을 로드한 후 이미지 인코더와 프로젝터를 고정하고 디코더만 미세 조정합니다.
이미지가 모델이 사전 학습된 데이터 세트에 없는 특정 도메인 내에 있는 경우 이미지 인코더를 고정하는 것을 건너뛸 수 있습니다.
여기서는 Option1. 16bit 모델을 Fine-tuning 하겠습니다.
Option 1. 16bit PaliGemma Load
16bit 모델을 불러오는 경우
Option 2. 4 bit QLoRA Model Load
4bit 양자화 된 QLoRA 모델을 불러오는 경우
TrainingArgments 설정
이제 Trainer의 TrainingArgment를 초기화하겠습니다. QLoRA를 미세 조정할 경우, 최적화 프로그램을 paged_adamw_8bit로 설정하세요.
트레이너를 초기화하고, 데이터 세트, 데이터 대조 함수 및 트레이닝 인수를 전달한 다음 train()을 호출하여 트레이닝을 시작합니다.