Qwen-VL이라는 Vision-Language Model(VLM)에 Supervised Fine-Tuning(SFT)을 수행하기까지의 전 과정을 체계적으로 정리하면 다음과 같습니다.
{
"video": "비디오 경로 또는 URL",
"prompt": "입력 프롬프트",
"answer": "기대되는 정답 또는 출력"
}
process_vision_info)qwen-vl-utils 라이브러리를 사용하여 영상 또는 이미지를 Vision Token으로 변환{
"input": "<Vision Tokens> + Prompt",
"output": "Reasoning based Answer"
}
from transformers import AutoModelForCausalLM, AutoTokenizer
model_name = "Qwen/Qwen-VL"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForCausalLM.from_pretrained(model_name)
pip install transformers accelerate trl wandb torchvision flash_attn
flash_attn 등 효율적 Attention 라이브러리 설정을 통해 메모리 최적화sft_video.py 등의 커스텀 스크립트를 이용하여 SFT 학습 수행from trl import SFTTrainer
from transformers import TrainingArguments
training_args = TrainingArguments(
output_dir="./output",
learning_rate=1e-6,
per_device_train_batch_size=1,
gradient_accumulation_steps=8,
num_train_epochs=3,
gradient_checkpointing=True,
report_to="wandb"
)
trainer = SFTTrainer(
model=model,
tokenizer=tokenizer,
args=training_args,
train_dataset=train_dataset,
eval_dataset=eval_dataset,
)
trainer.train()
accelerate)flash_attn==2.7.0.post2) |model.save_pretrained("Qwen-VL-SFT-finetuned")
tokenizer.save_pretrained("Qwen-VL-SFT-finetuned")
graph TD
A[원본 데이터셋 확보] --> B[비전 데이터 전처리 및 Vision Token 생성]
B --> C[SFT 데이터셋 변환]
C --> D[모델 및 환경 설정]
D --> E[SFT 학습 수행]
E --> F[학습 중 발생하는 오류 해결]
F --> G[최종 평가 및 모델 저장]
이러한 체계적인 프로세스를 통해 Qwen-VL 모델에 대한 성공적인 Supervised Fine-Tuning을 진행할 수 있습니다.