├── src ├── __init__.py ├── serve │ ├── __init__.py │ └── app.py ├── train │ ├── __init__.py │ ├── reward_funcs.py │ ├── train_utils.py │ ├── monkey_patch_vision.py │ ├── train_grpo.py │ ├── train_cls.py │ ├── train_sft.py │ └── train_dpo.py ├── loss │ ├── __init__.py │ ├── loss_factory.py │ ├── focal_loss.py │ └── class_balance_loss.py ├── model │ └── __init__.py ├── trainer │ ├── __init__.py │ ├── cls_trainer.py │ └── dpo_trainer.py ├── dataset │ ├── __init__.py │ ├── data_utils.py │ ├── grpo_dataset.py │ ├── cls_dataset.py │ ├── dpo_dataset.py │ └── sft_dataset.py ├── constants.py ├── merge_lora_weights.py ├── utils.py └── params.py ├── scripts ├── merge_lora.sh ├── zero2.json ├── zero2_offload.json ├── zero3.json ├── zero3_offload.json ├── finetune_grpo.sh ├── finetune_cls.sh ├── finetune_dpo.sh ├── finetune.sh ├── finetune_video.sh ├── finetune_lora.sh └── finetune_lora_vision.sh ├── requirements.txt ├── .gitignore ├── environment.yaml └── LICENSE /src/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/serve/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/train/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/loss/__init__.py: -------------------------------------------------------------------------------- 1 | from .loss_factory import get_loss_function 2 | 3 | __all__= [ 4 | "get_loss_function", 5 | ] -------------------------------------------------------------------------------- /src/model/__init__.py: -------------------------------------------------------------------------------- 1 | from .modeling_cls import Qwen2VLForSequenceClassification, Qwen2_5_VLForSequenceClassification 2 | 3 | __all__ = [ 4 | "Qwen2VLForSequenceClassification", 5 | "Qwen2_5_VLForSequenceClassification", 6 | ] -------------------------------------------------------------------------------- /src/trainer/__init__.py: -------------------------------------------------------------------------------- 1 | from .dpo_trainer import QwenDPOTrainer 2 | from .sft_trainer import QwenSFTTrainer, GenerativeEvalPrediction 3 | from .grpo_trainer import QwenGRPOTrainer 4 | from .cls_trainer import QwenCLSTrainer 5 | 6 | __all__ = ["QwenSFTTrainer", "QwenDPOTrainer", "QwenGRPOTrainer", "QwenCLSTrainer", "GenerativeEvalPrediction"] -------------------------------------------------------------------------------- /src/dataset/__init__.py: -------------------------------------------------------------------------------- 1 | from .dpo_dataset import make_dpo_data_module 2 | from .sft_dataset import make_supervised_data_module 3 | from .grpo_dataset import make_grpo_data_module 4 | from .cls_dataset import make_classification_data_module 5 | 6 | __all__ =[ 7 | "make_dpo_data_module", 8 | "make_supervised_data_module", 9 | "make_grpo_data_module", 10 | "make_classification_data_module", 11 | ] -------------------------------------------------------------------------------- /scripts/merge_lora.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | MODEL_NAME="Qwen/Qwen2-VL-7B-Instruct" 4 | # MODEL_NAME="Qwen/Qwen2-VL-2B-Instruct" 5 | 6 | export PYTHONPATH=src:$PYTHONPATH 7 | 8 | python src/merge_lora_weights.py \ 9 | --model-path /home/workspace/Qwen2-VL-Finetune/output/testing_lora \ 10 | --model-base $MODEL_NAME \ 11 | --save-model-path /home/workspace/Qwen2-VL-Finetune/output/merge_test \ 12 | --safe-serialization -------------------------------------------------------------------------------- /src/constants.py: -------------------------------------------------------------------------------- 1 | IGNORE_INDEX = -100 2 | 3 | DEFAULT_IM_START_TOKEN = "<|im_start|>" 4 | DEFAULT_IM_END_TOKEN = "<|im_end|>" 5 | DEFAULT_IMAGE_TOKEN = "<|image_pad|>" 6 | DEFAULT_VIDEO_TOKEN = "<|video_pad|>" 7 | LLAVA_IMAGE_TOKEN = "" 8 | LLAVA_VIDEO_TOKEN = "