当前位置: 首页 > article >正文

ollama使用详解

1. 概述

官网:Ollama

GITHUB:

ollama/ollama: Get up and running with Llama 2, Mistral, Gemma, and other large language models. (github.com)

open-webui(ollama webui)

open-webui/open-webui: User-friendly WebUI for LLMs (Formerly Ollama WebUI) (github.com)

ollama支持的模型库:

library (ollama.com)

Ollama是一个开源的大型语言模型服务,提供了类似OpenAI的API接口和聊天界面,可以非常方便地部署最新版本的GPT模型并通过接口使用。支持热加载模型文件,无需重新启动即可切换不同的模型。

Ollama的优势:提供类似OpenAI的简单内容生成接口,极易上手使用,类似ChatGPT的的聊天界面,无需开发直接与模型聊天,支持热切换模型,灵活多变。

Ollama可以让你很好的运行当前流行的各种大模型,并与各种其他平台相结合,对外提供大模型服务,比如 ollama + oneapi,ollama + lobe-chat,ollama + gpustack 等。

ollama可以很好的支持 CPU 和 GPU 两种运行方式。

最好的参考文档及FAQ

ollama/docs at main · ollama/ollama (github.com)

faq.md 中有包含所有环境变量的说明。

2. 部署实施

系统环境:ubuntu22.04 64bit (本文试验环境)

2.1 下载

 Download Ollama on Linux

curl -fsSL https://ollama.com/install.sh | sh

通过输出日志,可以看到下载完毕后,自动安装,并创建了systemd服务。

>>> Installing ollama to /usr/local/bin...
[sudo] password for ubuntu: 
>>> Creating ollama user...
>>> Adding ollama user to render group...
>>> Adding ollama user to video group...
>>> Adding current user to ollama group...
>>> Creating ollama systemd service...
>>> Enabling and starting ollama service...
Created symlink /etc/systemd/system/default.target.wants/ollama.service → /etc/systemd/system/ollama.service.
>>> NVIDIA GPU installed.

可以看到创建了服务,路径:/etc/systemd/system/ollama.service,后面根据需要,可以编辑。

版本查询:

ollama --version
# 看到版本输出:ollama version is 0.1.30

安装成功!接下来便可以用 pull 命令从在线模型库下载模型来玩了。

2.2 模型测试

在 library (ollama.com) 中查询 qwen,可以看到 Qwen已经在模型库中:

Qwen 1.5 is a series of large language models by Alibaba Cloud spanning from 0.5B to 72B parameters

选择一个模型下载并运行:

ollama pull qwen:7b

# 运行
ollama run qwen:7b

Ollama 采取了与 Docker 组织镜像相似的方案,使用模型名加上标签的形式( model:tag )来确定具体的模型版本,不加标签时默认为 latest ,通常对应 7B 参数量 4bit 量化版。而如果要运行 13B 版本,就可以使用 13b 标签。

2.3 ollama服务

默认端口为 11434,可以通过http://ip:port 进行查看。

需要对外发布,则需要修改 OLLAMA_HOST 设置。

参考:ollama/docs/faq.md at main · ollama/ollama (github.com)  中 

直接编辑 ollama.service文件

切换到root权限在,利用 vi /etc/systemd/system/ollama.service 打开编辑。参考如下:

[Unit]
Description=Ollama Service
After=network-online.target

[Service]
ExecStart=/usr/local/bin/ollama serve
User=ollama
Group=ollama
Restart=always
RestartSec=3
Environment="PATH=/home/ubuntu/.local/bin:/home/ubuntu/miniconda3/bin:/home/ubuntu/miniconda3/condabin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin"
Environment="CUDA_VISIBLE_DEVICES=0,1,2,3"
Environment="OLLAMA_HOST=0.0.0.0:11434"

[Install]
WantedBy=default.target

默认ollama是采用CPU运算,如果要使用GPU,则需要配置 Environment="CUDA_VISIBLE_DEVICES=0,1,2,3" 根据实际情况分配即可。

修改完后,reload and restart:

systemctl daemon-reload
systemctl restart ollama

2.4 让大模型一直驻留在内存

默认情况,ollama默认5分钟,会把model unload,但下一次载入时,会消耗更多的时间。

The keep_alive parameter can be set to:

  • a duration string (such as "10m" or "24h")
  • a number in seconds (such as 3600)
  • any negative number which will keep the model loaded in memory (e.g. -1 or "-1m")
  • '0' which will unload the model immediately after generating a response

For example, to preload a model and leave it in memory use:

curl http://localhost:11434/api/generate -d '{"model": "llama2", "keep_alive": -1}'

To unload the model and free up memory use:

curl http://localhost:11434/api/generate -d '{"model": "llama2", "keep_alive": 0}'

直接在 ollama.service 中添加设置 OLLAMA_KEEP_ALIVE=-1 即可。

但现在有一个问题,这种方法同时只能一个模型驻留在内存中。

2.5 单模型多请求和多模型多请求

可以设置环境变量:

OLLAMA_NUM_PARALLEL

OLLAMA_MAX_LOADED_MODELS

3. 通过docker安装与运行

各种指令参考:

# 外部端口:内部端口
docker run -d -p 11434:11434 ollama/ollama
# 外部访问
本地:http://localhost:11434

# 务必要添加 --restart always 参数

# 无GPU
docker run -d -v ollama:/root/.ollama -p 11434:11434 --name ollama --restart always ollama/ollama

# 有GPU
docker run -d --gpus=all -v ollama:/root/.ollama -p 11434:11434 --name ollama --restart always ollama/ollama

docker run -d --gpus=all -v ollama:/root/.ollama -e OLLAMA_ORIGINS="*" -p 11434:11434 --name ollama --restart always ollama/ollama

docker run -d --gpus=all -v ollama:/root/.ollama -e OLLAMA_NUM_PARALLEL=2 -e OLLAMA_MAX_LOADED_MODELS=2 -e OLLAMA_ORIGINS="*" -p 11434:11434 --name ollama --restart always ollama/ollama

# 进入容器指令,ollama为容器名称:
docker exec -it ollama /bin/bash
# 运行模型,需要先进入容器内,然后运行
ollama run qwen2.5:0.5b # 用于测试

# 然后在外部通过链接访问测试

可以通过 -e 参数设置环境变量,-v 参数挂载卷。

-e OLLAMA_NUM_PARALLEL=2
-e OLLAMA_MAX_LOADED_MODELS=2
# 因浏览器安全限制,需要为 Ollama 进行跨域配置后方可正常使用。比如 lobe-chat中,就需要配套此参数。
-e OLLAMA_ORIGINS="*"
# 具体可以参见 docs/faq.md 文件

4. 常用指令

# 帮助
ollama -h

# Create a model
ollama create mymodel -f ./Modelfile
# Pull a model
ollama pull llama2
# Remove a model
ollama rm llama2
# Copy a model
# # 很多模型下载后,包含了很长的路径信息,不方便处理,可以通过cp指令,拷贝一份,然后重新简洁命名。
ollama cp  sdfxxxxx/llama2  my-llama2
# List models
ollama list
# Run a model
ollama run llama2

sudo systemctl stop ollama # 停止服务
sudo systemctl start ollama # 启动服务
# 监听http服务,指定GPU
export OLLAMA_HOST="0.0.0.0:11434"
export CUDA_VISIBLE_DEVICES="0"

ollama serve # 启动 如果以服务的方式已运行,则此处运行时会提示端口已占用

ollama show --modelfile xxxx  # 可以查看模型信息

指令参考:

ollama/cmd/cmd.go at main · ollama/ollama (github.com)

环境变量:

OLLAMA_HOST         The host:port to bind to (default "127.0.0.1:11434")
OLLAMA_ORIGINS      A comma separated list of allowed origins.
OLLAMA_MODELS       The path to the models directory (default is "~/.ollama/models")
OLLAMA_KEEP_ALIVE   The duration that models stay loaded in memory (default is "5m")
OLLAMA_DEBUG        Set to 1 to enable additional debug logging

查看日志:利用 journalctl 处理

# -e 直接跳转到页的最后
# -r 时间倒序查看
# -n 10 最新的10条
# -f 实时查看
journalctl -e -u ollama -f -r 

# 具体详情,可以查询 journalctl 说明。

(end)


http://www.kler.cn/a/521096.html

相关文章:

  • [免费]基于Python的Django博客系统【论文+源码+SQL脚本】
  • maven的打包插件如何使用
  • 21款炫酷烟花合集
  • 基于Python的哔哩哔哩综合热门数据分析系统的设计与实现
  • 初阶数据结构:链表(二)
  • C语言------指针从入门到精通
  • JavaScript 的 Promise 对象和 Promise.all 方法的使用
  • 验证二叉搜索树(力扣98)
  • Pandas基础03(数据的合并操作/concat()/append()/merge())
  • 第五节 MATLAB命令
  • 【大厂面试AI算法题中的知识点】方向涉及:ML/DL/CV/NLP/大数据...本篇介绍Transformer相较于CNN的优缺点?
  • WPF基础 | WPF 常用控件实战:Button、TextBox 等的基础应用
  • 对比OpenAI的AI智能体Operator和智谱的GLM-PC,它们有哪些不同?
  • MongoDB的事务机制
  • 智慧园区解决方案助力数字化转型与智能生态系统建设
  • 基于SpringBoot电脑组装系统平台系统功能实现三
  • PostgreSQL技术内幕23:PG统计信息的收集和应用
  • 【Leetcode 热题 100】300. 最长递增子序列
  • [SWPUCTF 2022 新生赛]js_sign
  • 【java数据结构】哈希表
  • 2025年美赛数学建模F题 为农业再培养腾出空间
  • 葡萄果品分级以及葡萄簇识别-目标检测数据集
  • SOAFEE 技术研讨会:汽车软件定义与自动驾驶技术探讨
  • arduino学习
  • Kotlin单例类
  • LeetCode - Google 校招100题 第9天 Hard 题汇总 (12题)