char-fork/llama.cpp

git clone https://git.t4t.associates/char-fork/llama.cpp

Piotr Wilkin (ilintar)Refactor: convert_hf_to_gguf.py (#17114)cc7200bf1

char/aliceai-t5-moe
1.4 KiB41 linesraw
1from __future__ import annotations
2
3from typing import Sequence
4
5from .base import gguf
6
7from .llava import LlavaVisionModel
8
9
10class PixtralModel(LlavaVisionModel):
11    model_name = "Pixtral"
12    hf_arch = ""
13    is_mistral_format = True
14
15    def set_gguf_parameters(self):
16        super().set_gguf_parameters()
17        self.gguf_writer.add_clip_projector_type(gguf.VisionProjectorType.PIXTRAL)
18
19        self.gguf_writer.add_vision_attention_layernorm_eps(
20            self.find_hparam(["norm_eps"])
21        )
22        self.gguf_writer.add_rope_freq_base(self.find_vparam(["rope_theta"]))
23
24        self.gguf_writer.add_vision_use_silu(True)
25
26        # spatial_merge_size
27        if self.find_vparam(["mm_projector_id"], optional=True) == "patch_merge":
28            self.gguf_writer.add_vision_spatial_merge_size(
29                self.find_vparam(["spatial_merge_size"])
30            )
31
32    def map_tensor_name(self, name: str, try_suffixes: Sequence[str] = (".weight", ".bias")) -> str:
33        if name == "vision_language_adapter.w_in.weight":
34            return "mm.1.weight"
35        elif name == "vision_language_adapter.w_in.bias":
36            return "mm.1.bias"
37        elif name == "vision_language_adapter.w_out.weight":
38            return "mm.2.weight"
39        elif name == "vision_language_adapter.w_out.bias":
40            return "mm.2.bias"
41        return super().map_tensor_name(name, try_suffixes)