EADST

Pytorch GPTQ Dequantizing Function

Pytorch GPTQ Dequantizing Function

Here is the Python code optimizing the dequantization of a GPTQ model to torch FP16 format.

import torch

# Function: Dequantize quantized weights
def dequantization(qweight, qzeros, scales, g_idx, bits=4, group_size=128, device='cuda:0'):
    # Create a tensor for bitwise right shift operation
    wf = torch.tensor(list(range(0, 32, bits)), dtype=torch.int32).unsqueeze(0)

    # Apply bitwise right shift and convert qzeros to the appropriate type
    zeros = torch.bitwise_right_shift(torch.unsqueeze(qzeros, 2).expand(-1, -1, 32 // bits), wf.unsqueeze(0)).to(torch.int16 if bits == 8 else torch.int8)
    torch.bitwise_and(zeros, (2 ** bits) - 1, out=zeros)

    # Reshape the zeros tensor
    zeros = zeros + 1
    zeros = zeros.reshape(-1, 1, zeros.shape[1] * zeros.shape[2])

    # Reshape the scales tensor
    scales = scales.reshape(-1, 1, scales.shape[-1])

    # Similar bitwise right shift operation for qweight and reshape
    weight = torch.bitwise_right_shift(torch.unsqueeze(qweight, 1).expand(-1, 32 // bits, -1), wf.unsqueeze(-1)).to(torch.int16 if bits == 8 else torch.int8)
    torch.bitwise_and(weight, (2 ** bits) - 1, out=weight)
    weight = weight.reshape(-1, group_size, weight.shape[2])

    # Apply dequantization formula and reshape the final weight
    weight = (scales * (weight - zeros))
    weight = weight.reshape(weight.shape[0] * weight.shape[1], weight.shape[2])

    # Return the transposed weight
    return weight.transpose(0, 1)

# Function: Load quantized model and perform dequantization
def get_pytorch_bin():
    # Specify model file path
    path = "./your_model_folder/gptq_model-4bit-128g.bin"

    # Dictionary to store processed weights
    tensors = {}

    # Load the model file
    f = torch.load(path, map_location="cpu")

    # Iterate through keys in the model
    for idx, k in enumerate(f.keys()):
        ori_w = f[k]  # Original weight
        keys = k  # Original key name

        # Skip non-weight entries
        if ".qzeros" in k or ".scales" in k or ".g_idx" in k:
            continue
        if "o_proj.bias" in k or "up_proj.bias" in k or "down_proj.bias" in k or "gate_proj.bias" in k:
            continue

        # Process quantized weights
        if ".qweight" in k:
            qweight = f[k]  # Quantized weight
            qzeros = f[k.replace(".qweight", ".qzeros")]  # Zero points
            scales = f[k.replace(".qweight", ".scales")]  # Scales
            g_idx = f[k.replace(".qweight", ".g_idx")]  # Group index
            ori_w = dequantization(qweight, qzeros, scales, g_idx)  # Perform dequantization
            keys = k.replace(".qweight", ".weight")  # Update key name

        # Add processed weight to the dictionary
        tensors[keys] = ori_w

    # Print the number of processed weights and save as a new model file
    print(len(tensors))
    torch.save(tensors, "./your_model_folder/pytorch_model.bin")

# Main program entry point
if __name__ == '__main__':
    get_pytorch_bin()
相关标签
About Me
XD
Goals determine what you are going to be.
Category
标签云
torchinfo CLAP Domain Card FlashAttention Bert tar Logo UNIX Quantize 音频 RL WebCrawler CTC Jev SPIE 继承 logger BF16 Use llama.cpp Paddle Nginx API Food Plate TTS CV COCO Distillation ResNet-50 Harness 递归学习法 签证 YOLO git XGBoost LoRA 图形思考法 mmap Ptyhon 证件照 NLP Numpy Pytorch C++ Tensor Jupyter Miniforge Breakpoint Input Conda FP32 Git SQL Password v0.dev LeetCode Llama diffusers DeepStream UI XML Python printf SQLite Data GPTQ git-lfs Shortcut AI 论文速读 论文 多进程 PDF SAM Diagram Cloudreve Docker BeautifulSoup 报税 Dataset IndexTTS2 ChatGPT Hotel Tracking Website MD5 FP64 Qwen Bipartite FP16 PyCharm 公式 Mixtral 阿里云 GIT Michelin Bitcoin HuggingFace GoogLeNet News 第一性原理 Freesound Gemma WAN Anaconda 版权 VGG-16 OpenAI Claude Zip 图标 CC 财报 PDB Datetime Translation RAR QWEN DeepSeek LLM ModelScope Proxy Crawler CUDA Interview Pandas 关于博主 Vmess uwsgi v2ray VSCode JSON BTC OpenCV Ubuntu Random GGML 多线程 强化学习 VPN RGB Baidu Attention Statistics Permission FastAPI icon Knowledge Color 顶会 Firewall Plotly FP8 NameSilo Windows Template Web PyTorch Tiktoken API网关 飞书 Agent hf tqdm Vim CSV Streamlit Sklearn transformers Jetson 净利润 Linux Video Qwen2.5 OCR EXCEL 域名 Search LaTeX Pickle Augmentation CAM 腾讯云 InvalidArgumentError Bin Github scipy Markdown Clash LLAMA Google TSV SVR uWSGI CEIR Algorithm Magnet Pillow HaggingFace GPT4 Hilton Rebuttal Heatmap PIP ONNX 云服务器 搞笑 Qwen2 NLTK Django Safetensors TensorRT ms-swift Excel Animate 算法题 Hungarian Base64 Math Disk Land Quantization TensorFlow Review Paper Image2Text Transformers
站点统计

本站现有博文337篇,共被浏览961419次

本站已经建立2673天!

热门文章
文章归档
回到顶部