Ollama模型压力测试

5 阅读3分钟

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设备,可以设置为12 等,用逗号分隔;
  • OLLAMA_SCHED_SPREAD:设置Ollama所选择GPU资源是否均匀分布,默认是true,如果设置为false,则Ollama会优先选择性能最好的GPU设备;
  • OLLAMA_NUM_PARALLEL:设置Ollama 每个模型可以同时处理的最大并行请求数量。默认值会根据可用显(内)存自动选择41
  • 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
  1. 并发会导致单个请求的处理时间变长;
  2. 并发因为是并行处理,虽然单个请求时间变长,但是系统整体吞吐量会得到提升;
  3. 不一定用更多的卡就可以获得更高的吞吐量,需要根据实际情况去调整。

   因此,在实际测试的时候,要尝试在不同的硬件配置和并发级别下进行测试,以找到最佳的性能平衡点。

Ollama 服务启动方式对比

特性ollama serve 启动systemd 启动
运行方式前台运行,依赖终端后台运行,独立于终端
服务管理手动管理支持启动、停止、重启、状态查看
自动恢复不支持支持崩溃后自动重启
开机自启动不支持支持
日志管理输出到终端,无持久化由 journald 管理,支持持久化
资源控制支持 CPU、内存等资源限制
适用场景开发、测试、临时运行生产环境、长期运行