--- license: gemma datasets: - BUAADreamer/llava-en-zh-300k language: - en - zh library_name: transformers pipeline_tag: image-text-to-text base_model: google/paligemma-3b-mix-448 inference: false tags: - paligemma - llama-factory - mllm - vlm --- # PaliGemma-3B-Chat-v0.2 This model is fine-tuned from [google/paligemma-3b-mix-448](https://huggingface.co/google/paligemma-3b-mix-448) for multiturn chat completions. ![example_en](assets/example_en.png) ![example_zh](assets/example_zh.png) ## Usage ```python import requests import torch from PIL import Image from transformers import AutoModelForVision2Seq, AutoProcessor, AutoTokenizer, TextStreamer model_id = "BUAADreamer/PaliGemma-3B-Chat-v0.2" tokenizer = AutoTokenizer.from_pretrained(model_id) processor = AutoProcessor.from_pretrained(model_id) model = AutoModelForVision2Seq.from_pretrained(model_id, torch_dtype="auto", device_map="auto") streamer = TextStreamer(tokenizer, skip_prompt=True, skip_special_tokens=True) url = "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/transformers/tasks/car.jpg?download=true" image = Image.open(requests.get(url, stream=True).raw) pixel_values = processor(images=[image], return_tensors="pt").to(model.device)["pixel_values"] messages = [ {"role": "user", "content": "What is in this image?"} ] input_ids = tokenizer.apply_chat_template(messages, add_generation_prompt=True, return_tensors="pt") image_token_id = tokenizer.convert_tokens_to_ids("") image_prefix = torch.empty((1, getattr(processor, "image_seq_length")), dtype=input_ids.dtype).fill_(image_token_id) input_ids = torch.cat((image_prefix, input_ids), dim=-1).to(model.device) generate_ids = model.generate(input_ids, pixel_values=pixel_values, streamer=streamer, max_new_tokens=50) ``` ## Training procedure We used [LLaMA Factory](https://github.com/hiyouga/LLaMA-Factory) to fine-tune this model. During fine-tuning, we freezed the vision tower and adjusted the parameters in the language model and projector layer. ### Training hyperparameters The following hyperparameters were used during training: - learning_rate: 0.000003 - num_train_epochs: 2.0 - train_batch_size: 4 - gradient_accumulation_steps: 16 - total_train_batch_size: 64 - seed: 42 - lr_scheduler_type: cosine - mixed_precision_training: bf16
Show Llama Factory Config [CLICK TO EXPAND] ```yaml ### model model_name_or_path: google/paligemma-3b-mix-448 visual_inputs: true ### method stage: sft do_train: true finetuning_type: full ### ddp ddp_timeout: 180000000 deepspeed: examples/deepspeed/ds_z3_config.json ### dataset dataset: identity,llava_150k_en,llava_150k_zh template: gemma cutoff_len: 1536 overwrite_cache: true preprocessing_num_workers: 16 tokenized_path: cache/paligemma-identity-llava-zh-en-300k ### output output_dir: models/paligemma-3b-chat-v0.2 logging_steps: 10 save_steps: 1000 plot_loss: true ### train per_device_train_batch_size: 1 gradient_accumulation_steps: 16 learning_rate: 0.000003 num_train_epochs: 2.0 lr_scheduler_type: cosine warmup_steps: 50 bf16: true do_eval: false ```
### Framework versions - Pytorch 2.3.0 - Transformers 4.41.0 ## Evaluation Results | Model | MMMU_Val | CMMMU_Val | | :--------------------: | :------: | :-------: | | Yi-VL-6B | 36.8 | 32.2 | | Paligemma-3B-Chat-v0.2 | 33.0 | 29.0 |