如何测算大模型对内存/显存的资源需求

0 阅读3分钟

 测算运行大模型所需的 RAM/VRAM 是部署模型时的关键步骤,决定了模型能否被成功加载运行。在各种环境中,我们可以通过测算模型的资源需求来确定应该选择的模型参数规模和合适的量化方法。

GGUF Parser 工具提供了一些函数来解析 GGUF 模型文件,主要有以下用途:

从远端 GGUF 模型文件读取元数据,而无需下载整个模型

测算模型的资源需求

以下将使用 GGUF Parser 来测算大模型对内存/显存的资源需求。

有关 GGUF Parser 的详细信息,可以访问:

GitHub 仓库地址:

github.com/gpustack/gg…

使用 GGUF Parser

从项目仓库 github.com/gpustack/gg… 的 Releases 中下载 gguf-parser 二进制文件。将 gguf-parser 二进制文件移动到 /usr/local/bin 并授予其执行权限(以下命令适用于MacOS,供参考):

mv ~/Downloads/gguf-parser-darwin-arm64 /usr/local/bin/gguf-parser`` chmod +x /usr/local/bin/gguf-parsercurl -sfL https://get.gpustack.ai | sh -

执行如下命令查看 GGUF Parser 的运行参数(在 MacOS 中需要在“隐私和安全设置”中允许 gguf-parser 运行)gguf-parser -h

​编辑

常用参数说明:

-path: 指定要加载的本地模型文件路径

-hf-repo: 指定要加载的 Hugging Face 模型存储库

-hf-file: 与 -hf-repo 配合使用,指定相应的 Hugging Face 存储库中的 GGUF 模型文件名**-gpu---layers**: 指定模型的多少层被卸载到 GPU。卸载的层越多,推理速度就越快。模型有多少层可以在执行后的输出中“ARCHITECTURE”部分的“Layers”部分确定

-ctx-size: 指定模型的最大上下文大小。执行完成后,可以在“ARCHITECTURE”部分的“Max Context Len”部分查看模型的最大上下文大小

-url: 指定要加载的远端模型文件的 URL 路径

运行 GGUF Parser 并关注 ESTIMATE 部分的结果,这里指定了 rubra-ai/Meta-Llama-3-8B-Instruct-GGUF  库中的 rubra-meta-llama-3-8b-instruct.Q4_K_M.gguf 文件:

gguf-parser --hf-repo rubra-ai/Meta-Llama-3-8B-Instruct-GGUF -hf-file rubra-meta-llama-3-8b-instruct.Q4_K_M.gguf

​编辑

根据测算结果,在 Apple Mac 的统一内存架构(UMA)下,该模型将使用:

84.16 MiB 的 RAM 和1.12 GiB 的 VRAM,总共1.21 GiB 的内存

在非 UMA 架构下,该模型将使用:

234.16 MiB 的 RAM 和6.41 GiB 的 VRAM

在资源充足的情况下,该模型的所有层都将被卸载到 GPU 进行加速,这将最大化地利用 GPU ,但同时也可能会给 GPU 带来压力。你可以使用 -gpu-layers 参数来指定要卸载多少层到 GPU。例如,如果在非 UMA 架构中将模型的20层卸载到 GPU,对应的命令如下:

gguf-parser --hf-repo rubra-ai/Meta-Llama-3-8B-Instruct-GGUF -hf-file rubra-meta-llama-3-8b-instruct.Q4_K_M.gguf -gpu-layers 20

则模型将使用:

754.16 MiB 的 RAM 和3.97 GiB 的 VRAM

​编辑

修改模型的上下文大小会影响内存使用。例如,在 Apple 的 UMA 架构下,将 -ctx-size 参数从该模型默认的8192减少到2048,内存使用将减少878.48 MiB (1.21 GiB - 360.16 MiB)。

​编辑