Ollama启动服务的方法
- 生产部署启动方法:使用
SystemD的启动和配置Ollama服务的方法。这种方式是通过创建systemd服务单元文件(即ollama.service),将ollama serve配置为系统服务,从而可以使用如systemctl start ollama等命令来启动和停止Ollama服务。比较适用于生产环境、需要长期稳定运行的服务以及自动化管理的场景。同时也更适合快速入门。 - 本地开发和测试方法:ollama serve。
Ollama还有另外一种启动REST API的方法,即直接在命令行中运行ollama serve命令,启动服务进程。比较适合本地开发环境,临时测试或调试,同时拥有更多的控制权限。
这里有一些关键的参数,可以控制Ollama 服务的启动行为:
- OLLAMA_HOST:设置
Ollama服务的监听地址,默认是127.0.0.1:11434,如果需要指定其他地址,可以设置为公网IP:11434; - CUDA_VISIBLE_DEVICES:设置
Ollama服务使用的GPU设备,默认选择所有可用的GPU设备,如果需要指定其他GPU设备,可以设置为1,2等,用逗号分隔; - OLLAMA_SCHED_SPREAD:设置
Ollama所选择GPU资源是否均匀分布,默认是true,如果设置为false,则Ollama会优先选择性能最好的GPU设备; - OLLAMA_NUM_PARALLEL:设置
Ollama每个模型可以同时处理的最大并行请求数量。默认值会根据可用显(内)存自动选择4或1。 - OLLAMA_MAX_QUEUE:如果在已经加载一个或多个模型的同时,没有足够的可用内存来加载新的模型请求,则所有新请求将排队,直到可以加载新型号为止。随着先前的模型闲置,将卸载一个或多个,以腾出空间为新型号腾出空间。排队的请求将按顺序处理;
- OLLAMA_MAX_LOADED_MODELS:设置最大加载的模型数量,默认是 3 * GPU 的数量,如果超过这个数量,新的请求会被拒绝;
ollama serve可以灵活设置参数组合,比如:
OLLAMA_HOST=192.168.110.131:11434 CUDA_VISIBLE_DEVICES=0,1 OLLAMA_SCHED_SPREAD=1 OLLAMA_NUM_PARALLEL=10 ollama serve
- 并发会导致单个请求的处理时间变长;
- 并发因为是并行处理,虽然单个请求时间变长,但是系统整体吞吐量会得到提升;
- 不一定用更多的卡就可以获得更高的吞吐量,需要根据实际情况去调整。
因此,在实际测试的时候,要尝试在不同的硬件配置和并发级别下进行测试,以找到最佳的性能平衡点。
Ollama 服务启动方式对比
| 特性 | ollama serve 启动 | systemd 启动 |
|---|---|---|
| 运行方式 | 前台运行,依赖终端 | 后台运行,独立于终端 |
| 服务管理 | 手动管理 | 支持启动、停止、重启、状态查看 |
| 自动恢复 | 不支持 | 支持崩溃后自动重启 |
| 开机自启动 | 不支持 | 支持 |
| 日志管理 | 输出到终端,无持久化 | 由 journald 管理,支持持久化 |
| 资源控制 | 无 | 支持 CPU、内存等资源限制 |
| 适用场景 | 开发、测试、临时运行 | 生产环境、长期运行 |