FINETUNE.md

April 12, 2025 · View on GitHub

Finetune

Please install xtuner. Here is an example of finetuning Harmon.

cd /path/to/Harmon
export PYTHONPATH=./:$PYTHONPATH
export LAUNCHER="torchrun \
    --nproc_per_node=$GPUS_PER_NODE \
    --nnodes=$NNODES \
    --node_rank=$NODE_RANK \
    --master_addr=$MASTER_ADDR \
    --master_port=$MASTER_PORT \
    "

export CMD="scripts/train.py \
configs/examples/qwen2_5_1_5b_kl16_mar_h_train_example.py \
--launcher pytorch \
--deepspeed deepspeed_zero2"

echo $LAUNCHER
echo $CMD

bash -c "$LAUNCHER $CMD"

sleep 60s

The data should be formatted as:

data
├── YOUR_DATASET
    ├── data_info.json
    ├── local_folder
        ├── 000000
            ├── 0000001.jpg
    ├── cap_folder
        ├── 000000
            ├── 0000001.json

The data/YOUR_DATASET/cap_folder/000000/0000001.json looks as:

{'caption': 'xxxxxxxx'}

The data/YOUR_DATASET/data_info.json looks as:

[{'image': '000000/0000001.jpg', 'annotation': '000000/0000001.json'},
{'image': '000000/0000002.jpg', 'annotation': '000000/0000002.json'},
]

To instantiate an image caption dataset:

from src.datasets.understanding.caption_datasets import CaptionDataset
dataset = CaptionDataset(
               data_path='data/YOUR_DATASET/data_info.json',
               local_folder='data/YOUR_DATASET/local_folder',
               cap_folder='data/YOUR_DATASET/cap_folder',
               image_size=image_size,
               ceph_folder=None,
               ceph_config=None,
               tokenizer=tokenizer,
               template_map_fn=dict(
                   type=template_map_fn_factory, template=prompt_template),
               max_length=max_length,
               image_length=image_length,)

To instantiate a text-to-image dataset:

from src.datasets.text2image.text2image import LargeText2ImageDataset
dataset = LargeText2ImageDataset(
               data_path='data/YOUR_DATASET/data_info.json',
               local_folder='data/YOUR_DATASET/local_folder',
               cap_folder='data/YOUR_DATASET/cap_folder',
               unconditional=0.1,
               prompt_template=prompt_template,
               image_processor=image_processor,
               ceph_folder=None,
               ceph_config=None,
               tokenizer=tokenizer,
               max_length=max_length)