
一行命令把 Hugging Face 模型转成 PowerInfer GGUF零门槛实操指南【免费下载链接】PowerInferHigh-speed Large Language Model Serving for Local Deployment项目地址: https://gitcode.com/gh_mirrors/po/PowerInferPowerInfer 仓库根目录下的转换脚本 convert-hf-to-powerinfer-gguf.py能把 Hugging Face 格式的 LLM 权重加上 MLP predictor 权重合并成一个 PowerInfer 可直接加载的 GGUF 文件。跟着本文做完你手里会多出一个能跑稀疏推理的*.powerinfer.gguf。为什么需要这一步PowerInfer 的稀疏推理引擎吃不了 Hugging Face 的原始权重它要求把 LLM 权重和每一层的 MLP predictor 权重打进同一个 PowerInfer GGUF 文件里并用PWRI魔数标记格式。这两个目录的张量命名、精度、转置规则各不相同手工拼既慢又容易错交给脚本一次搞定。 先看效果最终产物就一个文件且能用两步验证它真的对。文件头 4 个字节被改写成PWRI魔数与标准 GGUF 区分开把它丢给 PowerInfer 推理入口就能出 token./build/bin/main -m 你的模型.powerinfer.gguf -n 128 -t 8 -p Once upon a time看到逐 token 的输出和 tokens/s 统计说明转换链路全部打通。完整命令在下一节给。 动手流程第 1 步环境检查要求 Python 3.8 和 pip转换本身不需要编译 C 部分。git clone https://gitcode.com/gh_mirrors/po/PowerInfer cd PowerInfer pip install -r requirements.txtrequirements.txt里带 numpy、sentencepiece、transformers并会自动装好 gguf-py/ 和 powerinfer-py/ 两个本地包。执行完没有报错、python -c import gguf无输出就算通过。第 2 步准备两份材料转换脚本需要两个目录缺一不可模型目录config.json声明架构如LlamaForCausalLM、分词器Llama 系是tokenizer.model、权重文件.safetensors或.bin分片也支持predictor 目录按层命名的model_0.pt、model_1.pt……可选放一个config.json写sparse_threshold控制稀疏阈值ls ./llama-7b-relu ./llama-7b-relu-predictor两个目录里都能看到对应文件这一步才算完成。predictor 目录里.pt文件的数量应当与模型层数一致少了就意味着 predictor 没下全。第 3 步执行转换命令python convert-hf-to-powerinfer-gguf.py \ ./llama-7b-relu ./llama-7b-relu-predictor \ --outfile ./llama-7b-relu.powerinfer.gguf \ --outtype f16过程会逐行打印每个张量的映射和精度变化先写 predictor 再写模型权重。结尾出现Model successfully exported to ...即成功此时文件头已被写入PWRI魔数。第 4 步验证结果head -c 4 ./llama-7b-relu.powerinfer.gguf ./build/bin/main -m ./llama-7b-relu.powerinfer.gguf -n 128 -t 8 -p Once upon a time第一条输出应是PWRI四个字第二条能正常生成文本。两条都通过这个 GGUF 才算真正可用。参数速查参数作用何时使用model位置参数原始模型权重目录脚本从其中的config.json判断架构每次转换必传mlp_predictors位置参数MLP predictor 权重目录.pt文件一并打进 GGUF要跑 PowerInfer 稀疏推理必传--outfile指定输出 GGUF 的完整路径想自定义文件名或放到别的目录时--outtype f32 / f16决定权重写入精度显存、磁盘紧张选f16追求精度选f32--vocab-only只导出词汇表不写权重仅需补一个带 vocab 的 GGUF 头文件时--bigendian生成大端序文件目标机器是大端架构时predictor 目录里的config.json不是命令行参数但能写sparse_threshold想调整 hot/cold 神经元划分比例时改这里重新转换即可生效。 你可能踩的 3 个坑现象Error: xxx is not a directory根因位置参数传成了文件路径或目录名打错、路径写了一半。 修复先用ls确认两个目录真实存在再原样复制路径执行。现象Architecture XxxForCausalLM not supported!根因config.json里的架构不在支持列表内目前脚本只认 Llama、Falcon、OPT 三类。 修复换受支持的模型或参考脚本里的Model子类为新架构补一个实现。现象Error: Missing .../tokenizer.model根因Llama 系走 SentencePiece 分词但模型目录里的分词文件没下全。 修复重新完整下载模型目录确认tokenizer.model就位再转换。继续深入不想要 predictor、只想跑稠密模式用 convert-dense.py 转出兼容 llama.cpp 的稠密 GGUF文件还是太大进 examples/quantize/ 把 GGUF 量化到更低比特想在自己的程序里调用转换与稀疏求解逻辑看 powerinfer-py/ 的 Python 封装想搞懂 GGUF 头里每个字段读 gguf-py/ 的格式定义更多模型下载与推理命令示例README.md【免费下载链接】PowerInferHigh-speed Large Language Model Serving for Local Deployment项目地址: https://gitcode.com/gh_mirrors/po/PowerInfer创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考