--- license: apache-2.0 base_model: zai-org/GLM-4.7-Flash base_model_relation: quantized library_name: gguf pipeline_tag: text-generation tags: - gguf - quantized - llama-cpp - llama.cpp - moe - glm4 - 4-bit - Q4_K_M model_type: glm4-moe-lite quantized_by: solarkyle --- # GLM-4.7-Flash-GGUF-Q4_K_M GGUF quantization of [zai-org/GLM-4.7-Flash](https://huggingface.co/zai-org/GLM-4.7-Flash) for use with [llama.cpp](https://github.com/ggml-org/llama.cpp) and compatible inference engines. **This is my first quant! Let me know if something seems off or if you run into issues.** ## Model Details | Property | Value | |----------|-------| | Architecture | `Glm4MoeLiteForCausalLM` (MoE with MLA) | | Total Parameters | ~30B | | Active Parameters | ~3B per forward pass | | Experts | 64 routed + 1 shared, 4 active per token | | Attention | Multi-Head Latent Attention (MLA) | | Context Length | 32,768 tokens | | Original Format | BF16 safetensors (62.5 GB) | ## Available Quantizations | Filename | Quant Type | Size | Description | |----------|------------|------|-------------| | `GLM-4.7-Flash-Q4_K_M.gguf` | Q4_K_M | 16.89 GB | Medium quality 4-bit, good balance of size/quality | ## Quantization Process ### The Challenge GLM-4.7-Flash uses a unique architecture that wasn't directly supported by llama.cpp at the time of quantization: 1. **MoE (Mixture of Experts)** - 64 routed experts + 1 shared expert, with 4 experts active per token 2. **MLA (Multi-Head Latent Attention)** - A compressed attention mechanism similar to DeepSeek-V2 that uses low-rank projections The `Glm4MoeLiteForCausalLM` architecture combines both features in a way that standard GLM4 support doesn't handle. ### The Solution We modified `convert_hf_to_gguf.py` to register `Glm4MoeLiteForCausalLM` under the `DeepseekV2Model` class, which already has proper tensor mappings for MLA attention: ```python # Added to DeepseekV2Model registration @ModelBase.register( "DeepseekV2ForCausalLM", "DeepseekV3ForCausalLM", "KimiVLForConditionalGeneration", "YoutuForCausalLM", "YoutuVLForConditionalGeneration", "Glm4MoeLiteForCausalLM" # <-- Added this ) class DeepseekV2Model(TextModel): ``` We also added the tokenizer hash for proper tokenization: ```python if chkhsh == "cdf5f35325780597efd76153d4d1c16778f766173908894c04afc20108536267": res = "glm4" ``` ### Conversion Pipeline ``` HuggingFace safetensors (62.5 GB BF16) ↓ convert_hf_to_gguf.py (modified) BF16 GGUF (55.79 GB) ↓ llama-quantize Q4_K_M GGUF (16.89 GB) ``` ### Quantization Notes - 47 of 563 tensors required fallback quantization (q5_0 instead of q4_K) due to dimension requirements - MoE expert weights compressed from 384 MB each to ~108-157 MB - Total size reduction: ~70% from BF16 ## Testing Quick inference test with llama-cli (CPU): - **Prompt processing:** 93.8 tokens/second - **Generation:** 19.8 tokens/second The model loads and generates coherent text. GPU acceleration with CUDA should provide significantly better performance. ## Usage with llama.cpp ```bash # Download the model huggingface-cli download solarkyle/GLM-4.7-Flash-GGUF GLM-4.7-Flash-Q4_K_M.gguf --local-dir . # Run inference (CPU) ./llama-cli -m GLM-4.7-Flash-Q4_K_M.gguf -p "Hello, I am GLM-4.7-Flash" -n 256 # Run inference (GPU - adjust layers based on VRAM) ./llama-cli -m GLM-4.7-Flash-Q4_K_M.gguf -p "Hello, I am GLM-4.7-Flash" -n 256 -ngl 35 ``` ## Source Code The conversion scripts and process documentation are available at: **[github.com/solarkyle/GLM-4.7-Flash-GGUF](https://github.com/solarkyle/GLM-4.7-Flash-GGUF)** ## Credits - **Original model:** [zai-org/GLM-4.7-Flash](https://huggingface.co/zai-org/GLM-4.7-Flash) - **Quantization:** solarkyle - **Tools:** [llama.cpp](https://github.com/ggml-org/llama.cpp) (b7772) ## Feedback This is my first quant - feedback welcome! If you notice any issues with quality, compatibility, or have suggestions for improvement, please open an issue on the GitHub repo or leave a comment here.