Ollama显存优化

Ollama显存优化

前言

ollama这个大模型执行框架可以让大模型跑在CPU,或者CPU+GPU的混合模式下。本文主要以llama3:8b为例,通过设置决定模型加载进gpu的层数来优化推理效率。

原文博客地址:Ollama显存优化 | 旅程blog (cxy.red)

1. 法一:交互模式指定

ollama run llama3:8b
>>> /set parameter num_gpu 5
Set parameter 'num_gpu' to '5'

查看日志server.log文件可以看到加载模型GPU的层数从31层变为了5层。

1717504162056-20240604203049-bx810ex

1717504174922-20240604203045-2ltmfdn

2. 法二:修改模型配置文件

2.1 配置模型文件

用以下命令查看llama3:8b模型配置文件

ollama show llama3:8b --modelfile

得到如下配置文件信息:

# Modelfile generated by "ollama show"
# To build a new Modelfile based on this, replace FROM with:
# FROM llama3:8b

FROM E:\ollama\blobs\sha256-00e1317cbf74d901080d7100f57580ba8dd8de57203072dc6f668324ba545f29
TEMPLATE "{{ if .System }}<|start_header_id|>system<|end_header_id|>

{{ .System }}<|eot_id|>{{ end }}{{ if .Prompt }}<|start_header_id|>user<|end_header_id|>

{{ .Prompt }}<|eot_id|>{{ end }}<|start_header_id|>assistant<|end_header_id|>

{{ .Response }}<|eot_id|>"
PARAMETER num_keep 24
PARAMETER stop <|start_header_id|>
PARAMETER stop <|end_header_id|>
PARAMETER stop <|eot_id|>

2.2 修改配置文件

创建模型配置文件mymodel.modefile,将获取的配置文件加入参数PARAMETER num_gpu 5​,该参数表名指定加载进gpu的模型层数

# Modelfile generated by "ollama show"
# To build a new Modelfile based on this, replace FROM with:
FROM llama3:8b

# 添加参数
PARAMETER num_gpu 5

TEMPLATE "{{ if .System }}<|start_header_id|>system<|end_header_id|>

{{ .System }}<|eot_id|>{{ end }}{{ if .Prompt }}<|start_header_id|>user<|end_header_id|>

{{ .Prompt }}<|eot_id|>{{ end }}<|start_header_id|>assistant<|end_header_id|>

{{ .Response }}<|eot_id|>"
PARAMETER num_keep 24
PARAMETER stop <|start_header_id|>
PARAMETER stop <|end_header_id|>
PARAMETER stop <|eot_id|>

1.3 创建模型

利用新建的模型配置文件创建模型命令为:

ollama create mymodel -f mymodel.modefile

创建成功后可利用ollama list​查看创建的模型

1717503683544

1.4 查看修改结果

ollama run mymodel​运行模型,然后查看日志server.log文件可以看到加载模型GPU的层数变为了5层。

1717503904892

参考文献

  1. https://www.bilibili.com/read/cv33547929/
  2. https://github.com/ollama/ollama/issues/1855

### 解决Docker容器中内存不足的问题 #### 调整Docker内存限制的方法 对于Docker容器而言,可以配置启动选项来增加分配给特定容器的资源量。当遇到内存不足的情况时,一种解决方案是通过修改`docker run`命令中的参数来提高可用内存上限。 如果是在Linux或macOS上操作,并且使用的是默认安装方式,则可以在启动带有Ollama镜像的容器时指定更多的RAM: ```bash docker run -d \ --memory="8g" \ # 设置最大允许使用的内存量为8GB --memory-swap="-1" \ # 不限制交换空间大小 -v ollama:/root/.ollama \ -p 11434:11434 \ --name ollama \ ollama/ollama ``` 上述命令设置了容器的最大可使用物理内存为8GB,并取消了对swap分区大小的限制[^2]。这有助于防止因主机系统缺乏足够的空闲内存而导致的应用程序崩溃。 另外,在Windows平台上运行Docker Desktop的情况下,还需要进入其设置界面手动调整整个环境能够访问到的最大内存量。 #### 优化应用以减少内存使用的技术 除了直接增大容器内部可用资源外,还可以考虑从软件层面入手降低消耗。针对大型AI模型如Llama系列,有几种常见做法可以帮助缓解这个问题: - **量化处理**:采用较低精度的数据表示形式(比如INT8而非FP32),这样既能保持较好的性能又能显著节省存储需求。 - **剪枝技术**:移除神经网络结构里那些贡献较小甚至无用的部分权重连接,从而减小整体规模并提升推理速度。 - **分布式部署**:将单个大模型拆分成多个子模块分别加载至不同节点之上协同工作;或者利用多台机器组成集群共同完成计算任务。 最后值得注意的一点是,对于特别庞大的预训练语言模型来说,有时即使经过各种调优措施之后仍然难以满足实际应用场景下的硬件条件要求。此时不妨尝试寻找更轻量级但功能相似的选择作为替代方案[^1]。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

旅程@.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值