@@ -1663,8 +1663,24 @@ struct clip_model_loader {
16631663 }
16641664 }
16651665
1666+ bool handle_older_qwen25vl (projector_type & proj_type)
1667+ {
1668+ bool check1 = false ;
1669+ bool check2 = false ;
1670+ get_bool (KEY_USE_GLU_MLP, check1, false );
1671+ get_bool (KEY_USE_RMS_NORM, check2, false );
1672+ if (proj_type==PROJECTOR_TYPE_QWEN2VL && check1 && check2)
1673+ {
1674+ printf (" \n WARNING: OLD QWEN2.5VL PROJECTOR DETECTED! Trying to patch in support, but please obtain a new Qwen2.5VL Projector!\n\n " );
1675+ proj_type = PROJECTOR_TYPE_QWEN25VL;
1676+ return true ;
1677+ }
1678+ return false ;
1679+ }
1680+
16661681 void load_hparams () {
16671682 auto & hparams = ctx_clip.vision_model .hparams ;
1683+ bool q25vl_migrated = false ; // we try to port old q25vl files if we can
16681684
16691685 // projector type
16701686 std::string proj_type;
@@ -1701,6 +1717,8 @@ struct clip_model_loader {
17011717 || ctx_clip.proj_type == PROJECTOR_TYPE_LDP
17021718 || ctx_clip.proj_type == PROJECTOR_TYPE_LDPV2;
17031719
1720+ q25vl_migrated = handle_older_qwen25vl (ctx_clip.proj_type );
1721+
17041722 {
17051723 std::string mm_patch_merge_type;
17061724 get_string (KEY_MM_PATCH_MERGE_TYPE, mm_patch_merge_type, false );
@@ -1776,7 +1794,11 @@ struct clip_model_loader {
17761794 } break ;
17771795 case PROJECTOR_TYPE_QWEN25VL:
17781796 {
1779- get_u32 (KEY_WIN_ATTN_PATTERN, hparams.n_wa_pattern );
1797+ if (q25vl_migrated) {
1798+ hparams.n_wa_pattern = 8 ;
1799+ } else {
1800+ get_u32 (KEY_WIN_ATTN_PATTERN, hparams.n_wa_pattern );
1801+ }
17801802 } break ;
17811803 default :
17821804 break ;
0 commit comments