脚本链接:https://gist.github.com/jrruethe/8974d2c8b4ece242a071d1a1526aa763
一段时间以来,我一直在尝试确定我可以在我的硬件上运行哪些量化模型。我编写了这个脚本,可以告诉您以下任何一项:
- 给定一个模型、一个bpw(每权重位数)和上下文长度,确定所需的VRAM量
- 给定一个模型、可用VRAM和bpw,确定可以加载的最大上下文
- 给定一个模型、可用VRAM和上下文长度,确定可以运行的最高bpw
所有这些都在一个没有外部依赖的单一Ruby脚本中。
./vram.rb --help
用法:vram.rb [选项] model_id
全局选项:
-a, --access TOKEN 指定您的huggingface.co访问令牌(可选)
-f, --[no-]fp8 使用fp8 kv缓存(默认:true)
模式特定选项:
- 模式A:提供“--bpw”和“--context”以获取所需的VRAM量
- 模式B:提供“--memory”和“--bpw”以获取可在VRAM中容纳的上下文量
- 模式C:提供“--memory”和“--context”以获取可在VRAM中容纳的最佳BPW
-m, --mode MODE 从上述选项中选择模式(默认:A)
-b, --bpw BPW 每权重位数(默认:5)
-c, --context CONTEXT 设置上下文(默认:使用模型设置)
-r, --ram RAM 可用VRAM(GB)(默认:48)
-t, --type TYPE 量化类型[exl2, gguf](默认:exl2)
注意:
您可以使用“4.85”这样的数字或GGUF量化ID,如“Q5_K_M”作为“--bpw”值。
对于模式C,指定“--type gguf”将返回GGUF量化ID,而指定“--type exl2”将返回浮点数。
示例:
# 运行量化为IQ3_M的模型需要多少内存?
./vram.rb NousResearch/Hermes-2-Theta-Llama-3-8B --mode A --bpw IQ3_M
# 5.39
# 从这个模型中可以获得多少上下文?
./vram.rb NousResearch/Hermes-2-Theta-Llama-3-8B --mode B --ram 6 --bpw 8
# 1948
# 这个模型可以运行的最佳量化是什么?
./vram.rb NousResearch/Hermes-2-Theta-Llama-3-8B --mode C --ram 6 --type gguf
# Q3_K_L
我不保证它100%准确,但从我的测试来看,它非常接近。 它确实做了一些假设,比如假设模型使用“分组查询注意力”,并且默认设置偏向于EXL2 w/ FP8 KV缓存,但我尽量使大部分内容可配置。上下文长度始终默认为模型支持的最大值。
如果需要,您可以指定以hf_
开头的huggingface访问令牌,以获取需要事先获得访问批准的模型的信息。
希望它对您有帮助!
功劳归于:大部分内容源自以下来源:
讨论总结
本次讨论主要围绕一个用于计算大型语言模型(LLM)VRAM需求的Ruby脚本展开。用户们分享了他们将该脚本集成到自己项目中的经验,并对脚本的功能表示赞赏。同时,也有用户提出了一些改进建议,如增加对Q4 kv缓存的支持。整体上,讨论氛围积极,用户们对脚本的实用性给予了肯定。
主要观点
- 👍 脚本为集成VRAM需求计算功能提供了必要的动力
- 支持理由:用户 “sammcj” 分享了他们将该功能集成到 “Gollama” 和 “Ingest” 项目中的进展,并表示这为他们提供了所需的动力。
- 反对声音:无
- 🔥 脚本运行效果良好,用户对其表示感谢
- 正方观点:用户 “bullerwins” 对脚本的运行效果表示感谢,并提供了使用脚本的示例。
- 反方观点:无
- 💡 用户建议增加对Q4 kv缓存的支持
- 解释:用户 “bullerwins” 提出了增加对Q4 kv缓存支持的建议,认为这可以进一步提升脚本的实用性。
金句与有趣评论
- “😂 sammcj:Hey, nice work :) I was working on adding this to both Gollama and Ingest, this was just the push I needed and the functionality is now available.”
- 亮点:展示了用户如何将脚本功能快速集成到自己的项目中,体现了脚本的实用性和动力。
- “🤔 bullerwins:Thanks! works super well.”
- 亮点:用户对脚本的运行效果表示感谢,体现了脚本的实用性和用户满意度。
- “👀 bullerwins:Only suggestion maybe adding Q4 for the kv cache too?”
- 亮点:用户提出了具体的改进建议,体现了用户对脚本的深入使用和期望。
情感分析
讨论的总体情感倾向积极,用户们对脚本的实用性表示赞赏,并分享了他们将脚本集成到自己项目中的经验。虽然有用户提出了改进建议,但整体上并未引发争议,而是体现了用户对脚本的深入使用和期望。
趋势与预测
- 新兴话题:增加对Q4 kv缓存的支持可能会成为后续讨论的新焦点。
- 潜在影响:该脚本的实用性和用户反馈可能会促进更多类似工具的开发和改进,从而提升大型语言模型在不同硬件上的运行效率。
感谢您的耐心阅读!来选个表情,或者留个评论吧!