| 3728 | } |
| 3729 | |
| 3730 | int clip_n_mmproj_embd(const struct clip_ctx * ctx) { |
| 3731 | switch (ctx->model.proj_type) { |
| 3732 | case PROJECTOR_TYPE_LDP: |
| 3733 | return ctx->model.mm_model_block_1_block_2_1_b->ne[0]; |
| 3734 | case PROJECTOR_TYPE_LDPV2: |
| 3735 | return ctx->model.mm_model_peg_0_b->ne[0]; |
| 3736 | case PROJECTOR_TYPE_MLP: |
| 3737 | case PROJECTOR_TYPE_PIXTRAL: |
| 3738 | case PROJECTOR_TYPE_LIGHTONOCR: |
| 3739 | return ctx->model.mm_2_w->ne[1]; |
| 3740 | case PROJECTOR_TYPE_MLP_NORM: |
| 3741 | return ctx->model.mm_3_b->ne[0]; |
| 3742 | case PROJECTOR_TYPE_MINICPMV: |
| 3743 | return ctx->model.mm_model_proj->ne[0]; |
| 3744 | case PROJECTOR_TYPE_GLM_EDGE: |
| 3745 | return ctx->model.mm_model_mlp_3_w->ne[1]; |
| 3746 | case PROJECTOR_TYPE_QWEN2VL: |
| 3747 | case PROJECTOR_TYPE_QWEN25VL: |
| 3748 | case PROJECTOR_TYPE_JANUS_PRO: |
| 3749 | case PROJECTOR_TYPE_YOUTUVL: |
| 3750 | return ctx->model.mm_1_b->ne[0]; |
| 3751 | case PROJECTOR_TYPE_QWEN3VL: |
| 3752 | // main path + deepstack paths |
| 3753 | return ctx->model.mm_1_b->ne[0] * (1 + ctx->model.n_deepstack_layers); |
| 3754 | case PROJECTOR_TYPE_GEMMA3: |
| 3755 | case PROJECTOR_TYPE_GEMMA3NV: |
| 3756 | return ctx->model.mm_input_proj_w->ne[0]; |
| 3757 | case PROJECTOR_TYPE_IDEFICS3: |
| 3758 | return ctx->model.projection->ne[1]; |
| 3759 | case PROJECTOR_TYPE_ULTRAVOX: |
| 3760 | case PROJECTOR_TYPE_VOXTRAL: |
| 3761 | case PROJECTOR_TYPE_MUSIC_FLAMINGO: |
| 3762 | return ctx->model.mm_2_w->ne[1]; |
| 3763 | case PROJECTOR_TYPE_INTERNVL: |
| 3764 | return ctx->model.mm_3_w->ne[1]; |
| 3765 | case PROJECTOR_TYPE_LLAMA4: |
| 3766 | return ctx->model.mm_model_proj->ne[1]; |
| 3767 | case PROJECTOR_TYPE_QWEN2A: |
| 3768 | return ctx->model.mm_fc_w->ne[1]; |
| 3769 | case PROJECTOR_TYPE_GLMA: |
| 3770 | return ctx->model.mm_2_w->ne[1]; |
| 3771 | case PROJECTOR_TYPE_LFM2: |
| 3772 | case PROJECTOR_TYPE_KIMIVL: |
| 3773 | return ctx->model.mm_2_w->ne[1]; |
| 3774 | case PROJECTOR_TYPE_COGVLM: |
| 3775 | return ctx->model.mm_4h_to_h_w->ne[1]; |
| 3776 | case PROJECTOR_TYPE_LFM2A: |
| 3777 | return ctx->model.position_embeddings->ne[0]; |
| 3778 | case PROJECTOR_TYPE_GLM4V: |
| 3779 | return ctx->model.mm_ffn_down_w->ne[1]; |
| 3780 | default: |
| 3781 | GGML_ABORT("Unknown projector type"); |
| 3782 | } |
| 3783 | } |
| 3784 | |
| 3785 | int clip_is_minicpmv(const struct clip_ctx * ctx) { |
| 3786 | // TODO: remove this function |
no outgoing calls
no test coverage detected