原贴链接

脚本链接: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缓存的支持。整体上,讨论氛围积极,用户们对脚本的实用性给予了肯定。

主要观点

  1. 👍 脚本为集成VRAM需求计算功能提供了必要的动力
    • 支持理由:用户 “sammcj” 分享了他们将该功能集成到 “Gollama” 和 “Ingest” 项目中的进展,并表示这为他们提供了所需的动力。
    • 反对声音:无
  2. 🔥 脚本运行效果良好,用户对其表示感谢
    • 正方观点:用户 “bullerwins” 对脚本的运行效果表示感谢,并提供了使用脚本的示例。
    • 反方观点:无
  3. 💡 用户建议增加对Q4 kv缓存的支持
    • 解释:用户 “bullerwins” 提出了增加对Q4 kv缓存支持的建议,认为这可以进一步提升脚本的实用性。

金句与有趣评论

  1. “😂 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.”
    • 亮点:展示了用户如何将脚本功能快速集成到自己的项目中,体现了脚本的实用性和动力。
  2. “🤔 bullerwins:Thanks! works super well.”
    • 亮点:用户对脚本的运行效果表示感谢,体现了脚本的实用性和用户满意度。
  3. “👀 bullerwins:Only suggestion maybe adding Q4 for the kv cache too?”
    • 亮点:用户提出了具体的改进建议,体现了用户对脚本的深入使用和期望。

情感分析

讨论的总体情感倾向积极,用户们对脚本的实用性表示赞赏,并分享了他们将脚本集成到自己项目中的经验。虽然有用户提出了改进建议,但整体上并未引发争议,而是体现了用户对脚本的深入使用和期望。

趋势与预测

  • 新兴话题:增加对Q4 kv缓存的支持可能会成为后续讨论的新焦点。
  • 潜在影响:该脚本的实用性和用户反馈可能会促进更多类似工具的开发和改进,从而提升大型语言模型在不同硬件上的运行效率。