Ollama开启多模型、高并发配置等配置 可用性更强
ollama默认是单模型运行,并且同时发起两个提问,他会一个个处理,所以在内存允许的情况下,有时候我们会开启多模型和并发处理
下面是我linux服务下完整的 systemd
服务文件示例,它用于配置 Ollama 服务,支持多并发处理请求和多模型加载:
Ollama systemd
服务文件示例
[Unit]
Description=Ollama AI Model Server
After=network.target
[Service]
Type=simple
ExecStart=/usr/local/bin/ollama serve
# 配置并行处理请求的数量
Environment="OLLAMA_NUM_PARALLEL=4"
# 配置同时加载的模型数量
Environment="OLLAMA_MAX_LOADED_MODELS=4"
# 设置工作目录
WorkingDirectory=/var/lib/ollama
# 如果进程崩溃自动重启
Restart=always
# 重启等待时间
RestartSec=10
# 配置所需的用户和权限
User=ollama
Group=ollama
[Install]
WantedBy=multi-user.target
说明:
[Unit]
:描述服务的基本信息,如服务名称和依赖。Description
: Ollama 服务的描述。After
: 依赖网络服务启动后再启动 Ollama。
[Service]
:定义服务如何启动和运行。ExecStart
: 启动命令,此处使用/usr/local/bin/ollama serve
启动 Ollama。Environment
: 设置环境变量OLLAMA_NUM_PARALLEL
和OLLAMA_MAX_LOADED_MODELS
,分别控制并发请求处理数量和同时加载的模型数量。WorkingDirectory
: 指定 Ollama 服务的工作目录。Restart=always
: 如果服务崩溃或意外退出,自动重启服务。RestartSec=10
: 在重启前等待 10 秒。
[Install]
:定义服务的安装行为。WantedBy=multi-user.target
: 指定服务在多用户模式下启动。
安装和启动步骤:
将该文件保存为
/etc/systemd/system/ollama.service
。sudo nano /etc/systemd/system/ollama.service
保存并退出后,重新加载
systemd
配置:sudo systemctl daemon-reload
启动并使 Ollama 服务开机自启:
sudo systemctl start ollama sudo systemctl enable ollama
检查服务状态:
sudo systemctl status ollama
通过这个配置,Ollama 服务可以同时处理多个请求并加载多个模型。
Ollama可配置环境变量
OLLAMA_DEBUG: 显示额外的调试信息(例如:OLLAMA_DEBUG=1)。
OLLAMA_HOST: Ollama 服务器的 IP 地址(默认值:127.0.0.1:11434)。
OLLAMA_KEEP_ALIVE: 模型在内存中保持加载的时长(默认值:“5m”)。
OLLAMA_MAX_LOADED_MODELS: 每个 GPU 上最大加载模型数量。
OLLAMA_MAX_QUEUE: 请求队列的最大长度。
OLLAMA_MODELS: 模型目录的路径。
OLLAMA_NUM_PARALLEL: 最大并行请求数。
OLLAMA_NOPRUNE: 启动时不修剪模型 blob。
OLLAMA_ORIGINS: 允许的源列表,使用逗号分隔。
OLLAMA_SCHED_SPREAD: 始终跨所有 GPU 调度模型。
OLLAMA_TMPDIR: 临时文件的位置。
OLLAMA_FLASH_ATTENTION: 启用 Flash Attention。
OLLAMA_LLM_LIBRARY: 设置 LLM 库以绕过自动检测。
常用配置
- 显卡资源使用不均横
设置环境变量OLLAMA_SCHED_SPREAD
为1
即可 - 加速计算
FlashAttention 是一种优化的注意力机制,用于加速深度学习模型中常见的自注意力计算,尤其是在Transformer架构中。它通过改进内存访问模式和计算策略,显著提高了计算效率和内存使用率。
我们可以通过设置环境变量OLLAMA_FLASH_ATTENTION
为1
,开启改选项
3.增加上下文窗口
假设你从Ollama上拉取了大模型,其默认的窗口大小只有2048。我们可以通过如下方法,提高上下文窗口ollama show --modelfile qwen2.5-coder > Modelfile
我们看一下生成的Modelfile
# Modelfile generated by "ollama show"
# To build a new Modelfile based on this, replace FROM with:
# FROM qwen2.5-coder:latest
FROM ~/.ollama/models/blobs/sha256-ced7796abcbb47ef96412198ebd31ac1eca21e8bbc831d72a31df69e4a30aad5
TEMPLATE """{{- if .Suffix }}<|fim_prefix|>{{ .Prompt }}<|fim_suffix|>{{ .Suffix }}<|fim_middle|>
{{- else if .Messages }}
{{- if or .System .Tools }}<|im_start|>system
{{- if .System }}
{{ .System }}
{{- end }}
{{- if .Tools }}
# Tools
You may call one or more functions to assist with the user query.
You are provided with function signatures within <tools></tools> XML tags:
<tools>
{{- range .Tools }}
{"type": "function", "function": {{ .Function }}}
{{- end }}
</tools>
For each function call, return a json object with function name and arguments within <tool_call></tool_call> XML tags:
<tool_call>
{"name": <function-name>, "arguments": <args-json-object>}
</tool_call>
{{- end }}<|im_end|>
{{ end }}
{{- range $i, $_ := .Messages }}
{{- $last := eq (len (slice $.Messages $i)) 1 -}}
{{- if eq .Role "user" }}<|im_start|>user
{{ .Content }}<|im_end|>
{{ else if eq .Role "assistant" }}<|im_start|>assistant
{{ if .Content }}{{ .Content }}
{{- else if .ToolCalls }}<tool_call>
{{ range .ToolCalls }}{"name": "{{ .Function.Name }}", "arguments": {{ .Function.Arguments }}}
{{ end }}</tool_call>
{{- end }}{{ if not $last }}<|im_end|>
{{ end }}
{{- else if eq .Role "tool" }}<|im_start|>user
<tool_response>
{{ .Content }}
</tool_response><|im_end|>
{{ end }}
{{- if and (ne .Role "assistant") $last }}<|im_start|>assistant
{{ end }}
{{- end }}
{{- else }}
{{- if .System }}<|im_start|>system
{{ .System }}<|im_end|>
{{ end }}{{ if .Prompt }}<|im_start|>user
{{ .Prompt }}<|im_end|>
{{ end }}<|im_start|>assistant
{{ end }}{{ .Response }}{{ if .Response }}<|im_end|>{{ end }}"""
SYSTEM You are a helpful assistant.
PARAMETER stop <|endoftext|>
然后在PARAMETER处增加如下配置,32768就是上下文窗口大小,设置成你想要的即可
注意增加上下文窗口可能增加显存的使用,谨慎增加PARAMETER num_ctx 32768
然后创建新模型即可ollama create qwen2.5-coder:7b-32k -f Modelfile
接下来,你就可以使用运行具有更高上下文的模型了 ollama run qwen2.5-coder:7b-32k
版权声明:本文为原创文章,版权归 全栈开发技术博客 所有。
本文链接:https://www.lvtao.net/tool/ollama-parallel-max-models.html
转载时须注明出处及本声明