Ollama高手,调优Ollama环境变量,提高性能与安全性

Ollama系列文章:
Ollama入门,一键启动本地DeepSeek大模型
Ollama入门,Ollama技术架构与原理
Ollama进阶,在Python、Java、Go项目中集成Deepseek、QWQ大模型
Ollama进阶,在Javascript(nodejs)前后端项目中集成Deepseek、QWQ大模型
Ollama高手,玩转本地自定义大模型(LLM)
Ollama高手,调优Ollama环境变量,提高性能与安全性
Ollama高手,调优Ollama模型参数,提高模型输出质量


在前面的系列文章中我们了解了如何在自有的项目中集成Ollama大模型,同时也知道了如何根据项目自身情况自定义大语言模型,从而完成与项目的集成。现在我们进一步探讨Ollama的环境变量调优,使之可以充分调动本地机器的软硬件资源,以提升系统的性能。同时Ollama默认配置存在未授权访问与模型窃取等安全隐患,生产环境中需要进行必要的调整,以提高安全性。

在这里插入图片描述

1、如何修改Ollama环境变量

在 Ollama 中,环境变量用于配置运行时的行为、优化性能、控制资源使用等。通过环境变量可以方便地调整 Ollama 的功能,而无需修改代码或重新编译。

在 Linux / macOS 中修改环境变量

1、临时修改,在终端中直接设置环境变量:

export OLLAMA_PORT=12345
export OLLAMA_MODEL_DIR=/path/to/models
ollama serve

2、永久修改,编辑 Shell 配置文件:

~/.bashrc #bash
~/.zshrc #zsh 
~/.config/fish/config.fish #fish

打开配置文件后,在文件末尾添加:

export OLLAMA_PORT=12345
export OLLAMA_MODEL_DIR=/path/to/models
export OLLAMA_NUM_GPUS=1

保存后运行以下命令使其生效:

source ~/.bashrc     # bash
source ~/.zshrc       # zsh

完成修改后,可以通过echo $OLLAMA_PORT命令查看是否生效。

在 Windows 中修改环境变量

1、临时修改,在 PowerShell 中运行:

$env:OLLAMA_PORT="12345"
$env:OLLAMA_MODEL_DIR="C:\path\to\models"
ollama serve

2、永久修改,通过环境变量设置界面添加或修改,然后重启计算机

变量名: OLLAMA_PORT
变量值: 12345

完成修改后,可以通过echo %OLLAMA_PORT%echo $env:OLLAMA_PORT命令查看是否生效。

在 Docker 中修改环境变量

可以通过 -e 选项传入环境变量:

docker run -e OLLAMA_PORT=12345 -e OLLAMA_MODEL_DIR=/models ollama/ollama:latest

2、如何通过环境变量调优Ollama GPU使用

通过环境变量调优 Ollama 的 GPU 使用,可以有效提升推理性能,减少内存消耗,并根据硬件资源合理分配任务。可以根据本地硬件情况,选择合适的方式进行优化,具体而言:
显存充足的 GPU: 尝试 OLLAMA_GPU_LAYERS=40 以上的设置,以便更多层数在 GPU 上运行。
显存有限的 GPU: 限制 GPU 层数,同时监控显存占用 (nvidia-smi),以避免 OOM(Out of Memory)错误。
CPU+GPU 混合推理: 如果 GPU 层数设置过高导致显存不足,可适当减少 OLLAMA_GPU_LAYERS,让部分推理任务回退到 CPU。
拥有大内存的机器: 启用 MLOCK,使用 OLLAMA_USE_MLOCK=1 锁定内存,避免数据换页。

场景 1:最大化 GPU 利用率

尽可能将模型加载到 GPU 上运行,减少 CPU 负载;同时使用 mlock 锁定模型在内存中,提升推理性能,适用于高性能 GPU,显存充足的场景

export OLLAMA_ENABLE_CUDA=1
export OLLAMA_GPU_LAYERS=40
export OLLAMA_USE_MLOCK=1

场景 2:显存有限的 GPU 使用

限制 GPU 使用的显存,确保不会因显存不足导致崩溃;同时部分层数在 CPU 上运行,减轻 GPU 负担,适用于显存较小的 GPU(如 8GB 或 12GB)

export OLLAMA_ENABLE_CUDA=1
export OLLAMA_GPU_LAYERS=20
export OLLAMA_MAX_GPU_MEMORY=6GB

场景 3:多 GPU 环境下的调优

由于目前Ollama并不支持多GPU,因此可以选择性能好的GPU 运行。

export OLLAMA_NUM_GPUS=1
export OLLAMA_GPU_LAYERS=30

监控 GPU 状态

在调优 GPU 使用后,可以通过以下方式监控 GPU 的实际利用率:

使用 nvidia-smi 查看 GPU 使用情况

nvidia-smi

使用 ollama 查看模型运行状态

curl http://localhost:11434/api/status

Ollama GPU调优时常用的环境变量

环境变量用途示例值说明
OLLAMA_NUM_GPUS指定使用的 GPU 数量1、2目前 Ollama 主要支持单 GPU,但未来可能支持多 GPU
OLLAMA_GPU_LAYERS设置在 GPU 上运行的层数32、40数值越大,GPU 负载越高,减少 CPU 使用率
OLLAMA_ENABLE_CUDA强制启用 CUDA 进行 GPU 推理1 或 true确保 CUDA 可用时启用此选项
OLLAMA_USE_MLOCK锁定模型在内存中,防止数据交换到磁盘1 或 true提高推理速度,防止内存交换
OLLAMA_USE_GPU_OFFLOAD启用 GPU Offload,将部分任务从 CPU 转移到 GPU1 或 true适合带有较大显存的 GPU
OLLAMA_MAX_GPU_MEMORY限制 Ollama 使用的 GPU 显存量8GB、16GB在多任务场景下有效避免显存溢出

3、如何通过环境变量调优Ollama并发性

通过环境变量调优并发能力,可以提升处理请求的效率、优化资源利用率,并确保在多线程或多请求场景下的稳定性。

场景 1:提升 API 服务的并发能力

使用更多 Worker 实例处理请求,提升 API 的吞吐量;使用多线程加速推理,充分利用 CPU 资源;缓存模型结果,减少重复计算;保持连接,减少网络延迟。适用于高流量场景,需要处理大量请求

export OLLAMA_MAX_WORKERS=8
export OLLAMA_NUM_THREADS=16
export OLLAMA_CACHE_SIZE=8GB
export OLLAMA_KEEP_ALIVE_TIMEOUT=60s

场景 2:限制资源消耗的稳定运行

限制并发请求数量,避免占用过多的 CPU 和内存;使用较小的缓存空间,减少内存压力;在合理的超时时间内保持连接,减少重新建立连接的开销。适用于资源受限的环境,例如笔记本电脑或小型服务器

export OLLAMA_MAX_WORKERS=2
export OLLAMA_NUM_THREADS=4
export OLLAMA_CACHE_SIZE=2GB
export OLLAMA_KEEP_ALIVE_TIMEOUT=30s

场景 3:GPU 资源充足的场景

GPU 解码加速,大幅提升响应速度;高并发 Worker 和多线程处理,最大化 GPU 计算能力;较大的缓存空间减少重复推理,提高性能。在有强大 GPU 支持的机器上,可以开启并行解码和多线程优化。

export OLLAMA_ENABLE_PARALLEL_DECODE=1
export OLLAMA_MAX_WORKERS=8
export OLLAMA_NUM_THREADS=32
export OLLAMA_CACHE_SIZE=12GB

Ollama并发调优环境变量

环境变量用途示例值说明
OLLAMA_MAX_WORKERS控制最大并发 Worker 数量,决定模型推理任务的并行度2、4、8设置较高值以支持更多并发请求
OLLAMA_NUM_THREADS控制每个 Worker 使用的线程数4、8、16提高 CPU 利用率,多线程加速推理
OLLAMA_CACHE_SIZE设置模型缓存的大小,减少重复加载4GB、8GB对相同模型和输入减少计算开销
OLLAMA_KEEP_ALIVE_TIMEOUT控制 HTTP 连接的保持时间30s、60s避免频繁建立连接,提升 API 的响应速度
OLLAMA_ENABLE_PARALLEL_DECODE启用并行解码,提高多请求时的响应效率1 或 true在 GPU 支持的情况下提升多请求处理效率

4、如何通过环境变量调优Ollama安全性

Ollama默认配置存在未授权访问与模型窃取等安全隐患,生产环境中需要进行必要的调整,以提高安全性。

场景 1:保护 API 访问

使用身份认证 Token 保护 API,只有持有正确 Token 的请求才会被接受;限制 API 仅允许特定来源访问,防止 CSRF 攻击;使用 TLS 保护通信安全,防止数据泄露;限制请求大小,防止大数据攻击;使用非默认端口,减少端口扫描风险。适用于需要暴露 API 服务的场景

export OLLAMA_AUTH_TOKEN="super-secret-token"
export OLLAMA_ALLOW_ORIGINS="https://example.com"
export OLLAMA_MAX_REQUEST_SIZE="5MB"
export OLLAMA_API_PORT=11435
export OLLAMA_ENABLE_TLS=1
export OLLAMA_TLS_CERT_FILE="/path/to/cert.pem"
export OLLAMA_TLS_KEY_FILE="/path/to/key.pem"

场景 2:保护本地模型数据

禁止从远程下载模型,防止未经授权的模型替换;启用只读模式,防止模型和配置被意外或恶意修改。适用于需要防止模型数据被篡改或远程拉取的场景

export OLLAMA_DISABLE_REMOTE_PULL=1
export OLLAMA_READ_ONLY=1

场景 3:安全监控和调试

记录 API 请求、模型运行状态和异常信息,便于排查问题;使用 INFO 日志级别记录重要事件,同时避免过多无关日志。适用于需要监控异常行为和记录日志的场景

export OLLAMA_LOG_LEVEL="INFO"

场景 4:沙盒环境运行模型

将模型运行在隔离的沙盒环境中,防止模型对系统产生破坏;限制模型对文件系统、网络等资源的访问。适用于执行不受信任的模型或检测模型行为的场景。

export OLLAMA_ENABLE_SANDBOX=1

监控和验证

在设置安全性相关环境变量后,可以通过以下方式验证和监控:
测试 API 身份认证

curl -H "Authorization: Bearer your-secret-token" http://localhost:11435/api/status

查看 API 日志

cat /var/log/ollama.log

验证 TLS 证书

curl --cacert /path/to/cert.pem https://localhost:11435/api/status

常用的安全性相关环境变量

环境变量用途示例值说明
OLLAMA_AUTH_TOKEN设置 API 请求的身份认证 Tokenyour-secret-token启用身份认证,防止未授权访问
OLLAMA_ALLOW_ORIGINS配置允许的跨域请求源https://example.com限制特定来源访问 API,防止 CSRF 攻击
OLLAMA_DISABLE_REMOTE_PULL禁止从远程下载模型1 或 true防止未经授权的模型拉取
OLLAMA_READ_ONLY将 Ollama 置于只读模式1 或 true禁止对模型和配置的更改
OLLAMA_API_PORT自定义 API 端口11434避免使用默认端口,减少攻击面
OLLAMA_MAX_REQUEST_SIZE限制 API 请求的最大数据大小10MB防止 DoS(拒绝服务)攻击
OLLAMA_LOG_LEVEL控制日志的详细程度INFO、WARN、ERROR记录重要事件,监控异常行为
OLLAMA_ENABLE_TLS启用 TLS 加密1 或 true保护 API 通信,防止中间人攻击
OLLAMA_TLS_CERT_FILE提供 TLS 证书路径/path/to/cert.pem配合 TLS 使用
OLLAMA_TLS_KEY_FILE提供 TLS 私钥路径/path/to/key.pem配合 TLS 使用
OLLAMA_ENABLE_SANDBOX启用模型沙盒环境1 或 true隔离模型运行环境,防止模型恶意行为

5、常用Ollama 环境变量

Ollama环境变量默认值

在Ollama的源代码文件envconfig/config.go中定义了Ollama默认配置:

func AsMap() map[string]EnvVar {
    return map[string]EnvVar{
        "OLLAMA_DEBUG":             {"OLLAMA_DEBUG", Debug, "Show additional debug information (e.g. OLLAMA_DEBUG=1)"},
        "OLLAMA_FLASH_ATTENTION":   {"OLLAMA_FLASH_ATTENTION", FlashAttention, "Enabled flash attention"},
        "OLLAMA_HOST":              {"OLLAMA_HOST", "", "IP Address for the ollama server (default 127.0.0.1:11434)"},
        "OLLAMA_KEEP_ALIVE":        {"OLLAMA_KEEP_ALIVE", KeepAlive, "The duration that models stay loaded in memory (default \"5m\")"},
        "OLLAMA_LLM_LIBRARY":       {"OLLAMA_LLM_LIBRARY", LLMLibrary, "Set LLM library to bypass autodetection"},
        "OLLAMA_MAX_LOADED_MODELS": {"OLLAMA_MAX_LOADED_MODELS", MaxRunners, "Maximum number of loaded models (default 1)"},
        "OLLAMA_MAX_QUEUE":         {"OLLAMA_MAX_QUEUE", MaxQueuedRequests, "Maximum number of queued requests"},
        "OLLAMA_MAX_VRAM":          {"OLLAMA_MAX_VRAM", MaxVRAM, "Maximum VRAM"},
        "OLLAMA_MODELS":            {"OLLAMA_MODELS", "", "The path to the models directory"},
        "OLLAMA_NOHISTORY":         {"OLLAMA_NOHISTORY", NoHistory, "Do not preserve readline history"},
        "OLLAMA_NOPRUNE":           {"OLLAMA_NOPRUNE", NoPrune, "Do not prune model blobs on startup"},
        "OLLAMA_NUM_PARALLEL":      {"OLLAMA_NUM_PARALLEL", NumParallel, "Maximum number of parallel requests (default 1)"},
        "OLLAMA_ORIGINS":           {"OLLAMA_ORIGINS", AllowOrigins, "A comma separated list of allowed origins"},
        "OLLAMA_RUNNERS_DIR":       {"OLLAMA_RUNNERS_DIR", RunnersDir, "Location for runners"},
        "OLLAMA_TMPDIR":            {"OLLAMA_TMPDIR", TmpDir, "Location for temporary files"},
    }
}

常用的Ollama 环境变量

基础配置

环境变量用途示例值说明
OLLAMA_HOST指定 Ollama API 监听的地址0.0.0.0 或 127.0.0.1用于在本地或远程访问 API
OLLAMA_PORT指定 Ollama API 的监听端口11434 默认端口为11434,可更改以避免端口冲突

模型管理配置

环境变量用途示例值说明
OLLAMA_PULL_PROXY设置模型下载时的代理地址http://proxy.example.com用于加速模型拉取,尤其在国内
OLLAMA_MODEL_DIR指定模型存储目录/path/to/models用于从自定义目录加载模型
OLLAMA_CACHE_DIR指定模型缓存目录/path/to/cache避免重复下载模型
OLLAMA_ALLOW_REMOTE_MODELS是否允许拉取远程模型1 或 true可用于限制从外部下载模型
OLLAMA_FORCE_REDOWNLOAD强制重新下载模型1 或 true在模型更新时确保拉取最新版本

性能优化配置

环境变量用途示例值说明
OLLAMA_NUM_GPUS指定使用的 GPU 数量1 或 2用于多 GPU 推理,但目前 Ollama 主要支持单 GPU
OLLAMA_NUM_THREADS设置推理时使用的 CPU 线程数8可用于 CPU 推理优化
OLLAMA_GPU_LAYERS指定在 GPU 中运行的层数32适用于模型量化时的 GPU 加速
OLLAMA_ENABLE_CUDA启用 CUDA 进行 GPU 推理1 或 true确保 CUDA 可用时启用
OLLAMA_USE_MLOCK锁定内存,防止数据被交换到磁盘1 或 true提高推理性能,尤其是大模型

安全性配置

环境变量用途示例值说明
OLLAMA_AUTH_TOKEN配置 API 调用的身份认证Token your_token_here用于保护 API 免受未授权访问
OLLAMA_DISABLE_REMOTE_MODELS禁止从远程加载模型1 或 true确保只使用本地模型
OLLAMA_LOG_LEVEL设置日志级别info, debug, error便于进行安全监控和日志记录

调试与开发配置

环境变量用途示例值说明
OLLAMA_LOG_FILE指定日志输出文件/path/to/logfile.log保存日志到文件以供后续分析
OLLAMA_DEV_MODE启用开发模式1 或 true提供额外的调试信息
OLLAMA_PROFILE启用性能分析1 或 true输出性能数据以分析推理速度
OLLAMA_DEBUG启用调试模式1 或 true显示更多日志信息,便于排查问题
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值