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

说明:

  1. [Unit]:描述服务的基本信息,如服务名称和依赖。

    • Description: Ollama 服务的描述。
    • After: 依赖网络服务启动后再启动 Ollama。
  2. [Service]:定义服务如何启动和运行。

    • ExecStart: 启动命令,此处使用 /usr/local/bin/ollama serve 启动 Ollama。
    • Environment: 设置环境变量 OLLAMA_NUM_PARALLELOLLAMA_MAX_LOADED_MODELS,分别控制并发请求处理数量和同时加载的模型数量。
    • WorkingDirectory: 指定 Ollama 服务的工作目录。
    • Restart=always: 如果服务崩溃或意外退出,自动重启服务。
    • RestartSec=10: 在重启前等待 10 秒。
  3. [Install]:定义服务的安装行为。

    • WantedBy=multi-user.target: 指定服务在多用户模式下启动。

安装和启动步骤:

  1. 将该文件保存为 /etc/systemd/system/ollama.service

    sudo nano /etc/systemd/system/ollama.service
  2. 保存并退出后,重新加载 systemd 配置:

    sudo systemctl daemon-reload
  3. 启动并使 Ollama 服务开机自启:

    sudo systemctl start ollama
    sudo systemctl enable ollama
  4. 检查服务状态:

    sudo systemctl status ollama

通过这个配置,Ollama 服务可以同时处理多个请求并加载多个模型。


Ollama可配置环境变量

OLLAMA_DEBUG: 显示额外的调试信息(例如:OLLAMA_DEBUG=1)。
OLLAMA_HOST: Ollama 服务器的 IP 地址(默认值:127.0.0.1:11434),如果你想要在局域网内的其他设备上访问它可以设置为0.0.0.0。
OLLAMA_PORT: 如果默认的 11434 端口被占用了,可以用它设置一个新的,比如 4567
OLLAMA_KEEP_ALIVE: 模型在内存中保持加载的时长(默认值:“5m”),防止睡眠,如果对外提供服务,可以设置类似24h这样的值,这样24小时内它就不会睡眠了,但同样的它也会一直加载在内存中。
OLLAMA_MAX_LOADED_MODELS: 每个 GPU 上最大加载模型数量。
OLLAMA_MAX_QUEUE: 请求队列的最大长度。
OLLAMA_MODELS: 模型目录的路径,默认`.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 库以绕过自动检测。

常用配置

  1. 显卡资源使用不均横
    设置环境变量OLLAMA_SCHED_SPREAD1即可
  2. 加速计算
    FlashAttention 是一种优化的注意力机制,用于加速深度学习模型中常见的自注意力计算,尤其是在Transformer架构中。它通过改进内存访问模式和计算策略,显著提高了计算效率和内存使用率。
    我们可以通过设置环境变量OLLAMA_FLASH_ATTENTION1,开启改选项

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

标签: AI

相关文章

图片Base64编码

CSR生成

图片无损放大

图片占位符

Excel拆分文件