@@ -1663,8 +1663,24 @@ struct clip_model_loader {
1663
1663
}
1664
1664
}
1665
1665
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
+
1666
1681
void load_hparams () {
1667
1682
auto & hparams = ctx_clip.vision_model .hparams ;
1683
+ bool q25vl_migrated = false ; // we try to port old q25vl files if we can
1668
1684
1669
1685
// projector type
1670
1686
std::string proj_type;
@@ -1701,6 +1717,8 @@ struct clip_model_loader {
1701
1717
|| ctx_clip.proj_type == PROJECTOR_TYPE_LDP
1702
1718
|| ctx_clip.proj_type == PROJECTOR_TYPE_LDPV2;
1703
1719
1720
+ q25vl_migrated = handle_older_qwen25vl (ctx_clip.proj_type );
1721
+
1704
1722
{
1705
1723
std::string mm_patch_merge_type;
1706
1724
get_string (KEY_MM_PATCH_MERGE_TYPE, mm_patch_merge_type, false );
@@ -1776,7 +1794,11 @@ struct clip_model_loader {
1776
1794
} break ;
1777
1795
case PROJECTOR_TYPE_QWEN25VL:
1778
1796
{
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
+ }
1780
1802
} break ;
1781
1803
default :
1782
1804
break ;
0 commit comments