ARTICLE DETAIL

资讯详情

深耕编程入门与网站建设的一线实战洞察。

ik_llama.cpp 混合GPU/CPU推理完整指南:3条命令按显存切分GPU层数

ik_llama.cpp 混合GPU/CPU推理完整指南:3条命令按显存切分GPU层数 ik_llama.cpp 混合GPU/CPU推理完整指南3条命令按显存切分GPU层数【免费下载链接】ik_llama.cppllama.cpp fork with additional SOTA quants and improved performance项目地址: https://gitcode.com/GitHub_Trending/ik/ik_llama.cpp这篇写给显存有限、却想用单张显卡把大模型跑起来的人。ik_llama.cpp 是 llama.cpp 的一个 fork主打 SOTA 量化和推理提速也是做混合 GPU/CPU 推理时绕不开的实现。读完你能干三件事按显存档位定--gpu-layers、把 KV 卸载和 Flash Attention 两个开关拨到位、确认张量真的落到了你指定的那台设备上。整套机制靠一个叫ggml_backend_sched的调度器在跑——它给每块矩阵指个工位要么 GPU 上算要么留在 CPU。每层落在哪ggml_backend_sched 是派工的人这节解决张量到底由谁决定去哪的问题。ggml_backend_sched是 ik_llama.cpp 里的调度器负责判断每块张量在 CPU 还是 GPU 上计算并把结果搬回内存。它背后能挂多种后端CPU、CUDA、Metal、Vulkan 都算你机器上装了哪套驱动就开哪套。调度器还会做内存复用上一步用完的中间张量它占的那块显存能直接被下一步接着用显存碎片就不会越攒越多。真正干活的入口函数是ggml_backend_sched_set_tensor_backend作用是手动指定某块张量绑到某个后端相当于把一张矩阵钉死在指定工位上。日常推理你不用手调它靠命令行几个开关就够了下节直接上命令。跑起来3条命令启动混合推理这节给你真正要敲的命令对着敲就行。# 1) 前 24 层放 GPU第 0 张卡当主卡 ./main -m model.gguf --gpu-layers 24 --main-gpu 0 # 2) KV 缓存不往回卸全程留在 GPU ./main -m model.gguf --no-kv-offload # 3) 开 Flash Attention省显存且提速 ./main -m model.gguf --flash-attn四个开关各管一摊--gpu-layers N把前 N 层权重和计算放到 GPU剩下的自动落回 CPU--main-gpu 0在多卡时指定哪张是主卡参数从它进出--no-kv-offload让 KV 缓存不做 CPU/GPU 来回搬运长上下文能省一次拷贝--flash-attn改用 Flash Attention 算注意力显存更省、速度更快。这两个开关的完整行为在 docs/parameters.md 有全量说明。GPU 层数怎么分配按显存对号入座这节把显存档位和具体--gpu-layers值绑死不用再拍脑袋。12G 显存先试--gpu-layers 24报 OOM 就降到 18再往下抠收益基本没了别恋战。中端档能放 20 到 30 层大约 16G 上下给 20~30 层性能和内存两头都不吃亏。大显存24G 及以上能塞多少塞多少层数越靠满GPU 利用率越高。内存吃紧的机器打开张量复用/内存复用让中间结果挤占同一块显存而不是各占各的。生产环境上--no-kv-offload缓存不搬家延迟更稳。确认分配真的生效两个监控 API这节教你验证刚才的切分确实发生了而不是以为生效了。调度器留了两个观察口ggml_backend_sched_get_n_splits返回这次推理被拆成几个分片分片越多说明任务切得越碎、并行度越高ggml_backend_sched_get_tensor_backend给你某块张量实际落到的后端查一下就知道这层到底在 GPU 还是 CPU 上跑。两个配合你调的层数对不对一眼便知。各后端对应的可运行示例见 examples/ 目录。配置速查表这节给一张能直接抄的表对着你的硬件取数即可。显存档位--gpu-layers 建议关键开关验证要点12G24OOM 降到 18--main-gpu 0get_tensor_backend 确认层在 GPU24G 左右30~40能满就满--flash-attnn_splits 看并行分片数大显存尽量多--flash-attn --no-kv-offload层数接近满内存受限按可放层数开张量复用显存占用平稳生产同上--no-kv-offload延迟无抖动【免费下载链接】ik_llama.cppllama.cpp fork with additional SOTA quants and improved performance项目地址: https://gitcode.com/GitHub_Trending/ik/ik_llama.cpp创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表