Ollama:一个在本地部署、运行大型语言模型的工具

news2025/3/17 3:51:28

Ollama:一个在本地部署、运行大型语言模型的工具

  • Ollama部署、运行大型语言模型
    • 概述
    • 安装
    • 配置
    • Ollama命令
    • 模型库
    • 使用示例
    • 自定义模型
      • 从GGUF导入
      • 自定义提示
      • 从PyTorch或Safetensors导入
    • 开启服务
    • REST API
    • 卸载Ollama
  • One-API
    • 概述
    • One-API管理本地模型
  • Open WebUI
    • 概述
    • Docker部署
    • Open WebUI配置

Ollama部署、运行大型语言模型

概述

Ollama是一个专为在本地机器上便捷部署和运行大型语言模型(LLM)而设计的工具。

官方网站:https://ollama.com/

Github:https://github.com/ollama/ollama

安装

Ollama支持macOS、Linux和Windows多个平台运行

macOS:下载Ollama

Windows:下载Ollama

Docker:可在Docker Hub上找到Ollama Docker镜像

Linux:因为使用服务器,这里便以Linux操作系统使用为例记录说明


其中Linux通过命令直接安装如下:

root@master:~/work# curl -fsSL https://ollama.com/install.sh | sh
>>> Downloading ollama...
######################################################################## 100.0%##O#-#                                                                        
>>> Installing ollama to /usr/local/bin...
>>> 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.

查看ollama的状态

root@master:~/work# systemctl status ollama
● ollama.service - Ollama Service
     Loaded: loaded (/etc/systemd/system/ollama.service; enabled; vendor preset: enabled)
     Active: active (running) since Thu 2024-05-16 07:48:52 UTC; 19s ago
   Main PID: 1463063 (ollama)
      Tasks: 19 (limit: 120679)
     Memory: 488.7M
        CPU: 6.848s
     CGroup: /system.slice/ollama.service
             └─1463063 /usr/local/bin/ollama serve

May 16 07:48:52 master ollama[1463063]: Couldn't find '/usr/share/ollama/.ollama/id_ed25519'. Generating new private key.
May 16 07:48:52 master ollama[1463063]: Your new public key is:
May 16 07:48:52 master ollama[1463063]: ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIKkP+MSQgroycM4iPUhDAUW02qwhEIB4vtANecwzN3En

安装成功后执行ollama -v命令,查看版本信息,如果可以显示则代表已经安装好

root@master:~# ollama -v
ollama version is 0.1.38

配置

编辑vim /etc/systemd/system/ollama.service文件来对ollama进行配置

1.更改HOST

由于Ollama的默认参数配置,启动时设置了仅本地访问,因此需要对HOST进行配置,开启监听任何来源IP

[Service]
# 配置远程访问
Environment="OLLAMA_HOST=0.0.0.0"

2.更改模型存储路径

默认情况下,不同操作系统大模型存储的路径如下:

macOS: ~/.ollama/models

Linux: /usr/share/ollama/.ollama/models

Windows: C:\Users.ollama\models

官方提供设置环境变量OLLAMA_MODELS来更改模型文件的存储路径

[Service]
# 配置OLLAMA的模型存放路径
Environment="OLLAMA_MODELS=/data/ollama/models"

注意:

由于当时使用root账号,同时目录权限也属于root,配置好后导致服务无法正常启动

此时,可以查看Ollama的运行日志,特别是在遇到问题需要调试时,可以使用以下命令:

journalctl -u ollama

解决问题:

因为指定的目录ollama用户及用户组没有相应权限,导致服务不能启动。通过授权给相应的目录权限解决问题。

chown ollama:ollama ollama/models

3.更改运行GPU

配置环境变量CUDA_VISIBLE_DEVICES来指定运行Ollama的GPU,默认不需要改动,适用于多卡环境。

Environment="CUDA_VISIBLE_DEVICES=0,1"

4.应用配置
重载systemd并重启Ollama

systemctl daemon-reload

systemctl restart ollama

5.访问测试

浏览器访问http://IP:11434/,出现Ollama is running代表成功。
在这里插入图片描述

Ollama命令

Shell窗口输入ollama,打印ollama相关命令说明

root@master:~/work# ollama
Usage:
  ollama [flags]
  ollama [command]

Available Commands:
  serve       Start ollama
  create      Create a model from a Modelfile
  show        Show information for a model
  run         Run a model
  pull        Pull a model from a registry
  push        Push a model to a registry
  list        List models
  ps          List running models
  cp          Copy a model
  rm          Remove a model
  help        Help about any command

Flags:
  -h, --help      help for ollama
  -v, --version   Show version information

Use "ollama [command] --help" for more information about a command.

ollama的操作命令跟docker操作命令非常相似

ollama serve	# 启动ollama
ollama create	# 从模型文件创建模型
ollama show		# 显示模型信息
ollama run		# 运行模型
ollama pull		# 从注册仓库中拉取模型
ollama push		# 将模型推送到注册仓库
ollama list		# 列出已下载模型
ollama cp		# 复制模型
ollama rm		# 删除模型
ollama help		# 获取有关任何命令的帮助信息

模型库

Ollama的Library,类似Docker的Docker Hub,在这里可以查找受Ollama支持的大模型。
在这里插入图片描述
以下是一些可以下载的示例模型:

注意:Ollama支持8 GB的RAM可用于运行7B型号,16 GB可用于运行13B型号,32 GB可用于运行33B型号。当然这些模型是经过量化过的。

在这里插入图片描述

使用示例

下载llama3-8b模型

root@master:~# ollama pull llama3:8b
pulling manifest 
pulling 00e1317cbf74... 100% ▕██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏ 4.7 GB                         
pulling 4fa551d4f938... 100% ▕██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏  12 KB                         
pulling 8ab4849b038c... 100% ▕██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏  254 B                         
pulling 577073ffcc6c... 100% ▕██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏  110 B                         
pulling ad1518640c43... 100% ▕██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏  483 B                         
verifying sha256 digest 
writing manifest 
removing any unused layers 
success

下载成功查看模型

root@master:~# ollama list
NAME            ID              SIZE    MODIFIED      
llama3:8b       a6990ed6be41    4.7 GB  3 minutes ago

运行模型并进行对话

root@master:~# ollama run llama3:8b
>>> hi
Hi! How's your day going so far? I'm here to chat and help with any questions or topics you'd like to discuss. What's on your mind?

>>> Send a message (/? for help)

自定义模型

所谓自定义模型就是不适用Ollama官方模型库中的模型,理论可以使用其他各类经过转换处理的模型

从GGUF导入

Ollama支持在Modelfile文件中导入GGUF模型

创建一个名为 Modelfile的文件,其中包含一条FROM指令,其中包含要导入的模型的本地文件路径。

FROM ./Llama3-FP16.gguf

在Ollama中创建模型

ollama create llama3 -f Modelfile

运行模型

ollama run llama3 

完整执行日志如下:

root@master:~/work# touch Modelfile
root@master:~/work# mv /root/work/jupyterlab/models/Llama3-FP16.gguf ./
root@master:~/work# ollama create llama3 -f Modelfile
transferring model data 
using existing layer sha256:547c95542e3fa5cc232295ea3cbd49fc14b4f4489ca9b465617076c1f55d4526 
creating new layer sha256:81834e074ec2a24086bdbf16c3ba70eb185f5883cde6495e95f5141e4d325456 
writing manifest 
success
root@master:~/work# ollama run llama3
>>> Send a message (/? for help)

自定义提示

Ollama库中的模型可以通过提示进行自定义。

FROM llama3

# 设置温度参数
PARAMETER temperature 1

# 设置SYSTEM 消息
SYSTEM """
作为AI智能助手,你将竭尽所能为员工提供严谨和有帮助的答复。
"""

更多参数说明参考:Modelfile文档

从PyTorch或Safetensors导入

所谓从从PyTorch或Safetensors导入Ollama,其实就是使用llama.cpp项目,对PyTorch或Safetensors类型的模型进
行转换、量化处理成GGUF格式的模型,然后再用Ollama加载使用 。

上述从GGUF导入使用的模型:Llama3-FP16.gguf便是经过llama.cpp项目处理得到的。

llama.cpp的使用参考:使用llama.cpp实现LLM大模型的格式转换、量化、推理、部署

官方文档参考:导入模型指南

开启服务

运行模型后,执行ollama serve命令启动Ollama服务,然后就可以通过API形式进行模型调用

ollama serve会自动启动一个http服务,可以通过http请求模型服务

首次启动会自动生成ssh私钥文件,同时打印公钥内容。

root@master:/usr/local/docker# ollama serve
Couldn't find '/root/.ollama/id_ed25519'. Generating new private key.
Your new public key is: 

ssh-ed25519 AAAAC3NzaC1lZDI1NTE5ssssssxxxxxxxxxxjx3diFB3a5deoGLnT7gHXxjA6R

2024/05/16 09:27:27 routes.go:1008: INFO server config env="map[OLLAMA_DEBUG:false OLLAMA_LLM_LIBRARY: OLLAMA_MAX_LOADED_MODELS:1 OLLAMA_MAX_QUEUE:512 OLLAMA_MAX_VRAM:0 OLLAMA_NOPRUNE:false OLLAMA_NUM_PARALLEL:1 OLLAMA_ORIGINS:[http://localhost https://localhost http://localhost:* https://localhost:* http://127.0.0.1 https://127.0.0.1 http://127.0.0.1:* https://127.0.0.1:* http://0.0.0.0 https://0.0.0.0 http://0.0.0.0:* https://0.0.0.0:*] OLLAMA_RUNNERS_DIR: OLLAMA_TMPDIR:]"
time=2024-05-16T09:27:27.635Z level=INFO source=images.go:704 msg="total blobs: 0"
time=2024-05-16T09:27:27.635Z level=INFO source=images.go:711 msg="total unused blobs removed: 0"
time=2024-05-16T09:27:27.635Z level=INFO source=routes.go:1054 msg="Listening on 127.0.0.1:11434 (version 0.1.38)"
time=2024-05-16T09:27:27.635Z level=INFO source=payload.go:30 msg="extracting embedded files" dir=/tmp/ollama4098813456/runners
time=2024-05-16T09:27:31.242Z level=INFO source=payload.go:44 msg="Dynamic LLM libraries [cpu cpu_avx cpu_avx2 cuda_v11 rocm_v60002]"
time=2024-05-16T09:27:31.401Z level=INFO source=types.go:71 msg="inference compute" id=GPU-4c974b93-cf0c-486e-9e6c-8f91bc02743c library=cuda compute=7.0 driver=12.2 name="Tesla V100S-PCIE-32GB" total="31.7 GiB" available="16.5 GiB"

在这里插入图片描述

REST API

更多、具体API,请参阅 API文档

1.生成回复

curl http://IP:11434/api/chat -d '{
  "model": "llama3:8b",
  "messages": [
    { "role": "user", "content": "你好啊" }
  ]
}'

请求参数示例:

{
    "model": "llama3",
    "prompt": "你好啊",
    "stream": false
}

2.与模型聊天

curl http://IP:11434/api/chat -d '{
  "model": "llama3",
  "messages": [
    { "role": "user", "content": "你好啊" }
  ]
}'

请求参数示例:

{
    "model": "llama3",
    "messages": [
        {
            "role": "system",
            "content": "你是一个乐于助人的AI助手。"
        },
        {
            "role": "user",
            "content": "你好啊"
        }
    ],
    "stream": false
}

卸载Ollama

停止并禁用服务

systemctl stop ollama

systemctl disable ollama

删除服务文件和Ollama二进制文件

rm /etc/systemd/system/ollama.service 

rm $(which ollama)

清理Ollama用户和组

rm -r /usr/share/ollama

userdel ollama

groupdel ollama

One-API

概述

One-API是一个OpenAI接口管理 & 分发系统,支持各类大模型。这里使用Docker快速进行部署。

GitHub:https://github.com/songquanpeng/one-api

拉取镜像

docker pull justsong/one-api

创建挂载目录

mkdir -p /usr/local/docker/oneapi

启动容器

docker run --name one-api -d --restart always -p 3001:3000 -e TZ=Asia/Shanghai -v /usr/local/docker/oneapi:/data justsong/one-api

访问IP:3001

初始账号用户名为 root,密码为 123456

在这里插入图片描述

One-API管理本地模型

在创建渠道时选择Ollama,然后手工填上自己要使用的模型,密钥任意,最重要的是后面在代理中写上自己ollama服务的地址即可
在这里插入图片描述
测试成功后,在各类OpenAI套壳软件中,通过配置类似于OpenAI的密钥、API地址等参数,就可以象使用OpenAI一样。
在这里插入图片描述

Open WebUI

概述

Open WebUI 是一个可扩展、功能丰富且用户友好的自托管 WebUI,旨在完全离线操作。它支持各种 LLM 运行程序,包括 Ollama 和 OpenAI 兼容的 API。

GitHub:https://github.com/open-webui/open-webui

Open WebUI:https://docs.openwebui.com/

Open WebUI社区: https://openwebui.com/

Docker部署

使用Docker快速安装部署Open WebUI,需要注意:确保在Docker命令中包含-v open-webui:/app/backend/data。因为它确保数据库正确安装并防止任何数据丢失。

使用Docker进行Open WebUI安装部署,根据场景不同,可分为以下几类:

1.默认配置安装,如果计算机上有Ollama,请使用以下命令:

docker run -d -p 3000:8080 --add-host=host.docker.internal:host-gateway -v open-webui:/app/backend/data --name open-webui --restart always ghcr.io/open-webui/open-webui:main

docker run -d -p 3000:8080  -v open-webui:/app/backend/data --name open-webui --restart always ghcr.io/open-webui/open-webui:main

2.Ollama位于不同的服务器上,连接到另一台服务器上的 Ollama,请将OLLAMA_BASE_URL更改为服务器的URL:

docker run -d -p 3000:8080 -e OLLAMA_BASE_URL=https://example.com -v open-webui:/app/backend/data --name open-webui --restart always ghcr.io/open-webui/open-webui:main

3.要运行支持Nvidia GPU的Open WebUI,请使用以下命令:

docker run -d -p 3000:8080 --gpus all --add-host=host.docker.internal:host-gateway -v open-webui:/app/backend/data --name open-webui --restart always ghcr.io/open-webui/open-webui:cuda

4.安装带有捆绑Ollama支持的Open WebUI

使用GPU支持:通过运行以下命令来利用GPU资源:

docker run -d -p 3000:8080 --gpus=all -v ollama:/root/.ollama -v open-webui:/app/backend/data --name open-webui --restart always ghcr.io/open-webui/open-webui:ollama

仅适用于CPU:如果不使用GPU,请改用以下命令:

docker run -d -p 3000:8080 -v ollama:/root/.ollama -v open-webui:/app/backend/data --name open-webui --restart always ghcr.io/open-webui/open-webui:ollama

Open WebUI配置

访问http://IP:3000,创建一个账号(管理员)
在这里插入图片描述
进入Open WebUI后,界面如下。在Settings中进行相关设置。
在这里插入图片描述
设置语言
在这里插入图片描述
设置Ollama的访问地址
在这里插入图片描述
选择模型,开始聊天。
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1694810.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

VUE3 学习笔记(十)查看vue版本

命令: npm list vue(空) (在项目的根目录下执行以下命令即可查看项目所使用的vue版本) npm list vue version(空) npm info vue (全局查看vue版本号,详细) npm list vue -g(全局查看vue版本号,简单) npm view vue version(查看项目依赖的vue…

Jeecg | 如何解决 ERR Client sent AUTH, but no password is set 问题

最近在尝试Jeecg低代码开发,但是碰到了超级多的问题,不过总归是成功运行起来了。 下面说说碰到的最后一个配置问题:连接redis失败 Error starting ApplicationContext. To display the conditions report re-run your application with deb…

解决鼠标滚动时element-ui下拉框错位的问题

问题描述:elementUi的el-select下拉选择框,打开之后,直到失去焦点才会自动关闭。 在有滚动条的弹窗中使用时就会出现打开下拉框,滚动弹窗,el-select下拉框会超出弹窗范围的问题. 解决方案: 1、先在util文件夹下创建个hideSelect.js文件,代码…

内网穿透--Nps-自定义-上线

免责声明:本文仅做技术交流与学习... 目录 Nps项目: 一图通解: 1-下载nps/npc 2-服务端启动 访问web网页: 添加客户端,生成密匙. 3-kali客户端连接服务端 4-添加协议隧道. 5-kali生成后门: 6-kali创建监听: Nps项目: https://github.com/ehang…

算法刷题笔记 高精度乘法(C++实现)

文章目录 题目描述解题思路解题代码 题目描述 给定两个非负整数(不含前导0)A和B,请你计算 AB的值。 输入格式 共两行,第一行包含整数 A,第二行包含整数 B。 输出格式 共一行,包含AB的值。 数据范围 …

Putty: 随心御剑——远程启动服务工具plink

一、引言:如何远程控制 也许你会有这样的场景,交互程序(以下简称UI程序)跑在windows端,而控制程序跑在Linux上。我们想要通过windows端 UI程序来启动Linux下面的服务,来一场酣畅淋漓的御剑飞行咋办,难道要自己十年磨一剑,在Linux下编写一个受控服务程序么.计算机科技发…

最新:windows下安装pcl点云库

📚博客主页:knighthood2001 ✨公众号:认知up吧 (目前正在带领大家一起提升认知,感兴趣可以来围观一下) 🎃知识星球:【认知up吧|成长|副业】介绍 ❤️如遇文章付费,可先看…

【问题解决】ImportError: generic_type: cannot initialize type “ExternalAllocator“

一、问题描述 我的环境是Ubuntu20.04&#xff0c;Cuda版本是11.4&#xff0c;在复现OpenPCDet的时候遇到了下面问题&#xff1a; Traceback (most recent call last):File "train.py", line 7, in <module>from test import repeat_eval_ckptFile "/mnt…

Scala的简单学习一

一 相关知识 1.1 scala的安装 1.在idea中导入依赖&#xff0c;并在Idea下载scala插件 1.2 scala基础知识点 1.scala代码中一行语句的结束是以换行符为标准&#xff0c;可以不用写分号 2.class是一个普通的类&#xff0c;object相当于一个单例对象&#xff0c;object类中的…

git分支策略(github-flow VS git flow,如何选择)

一. 结论 Github flow&#xff1a;最简单 小型项目&#xff0c;持续部署&#xff0c;自动化测试程度高&#xff0c;发布流程简单 Git flow&#xff1a;复杂但最常用 大型项目&#xff0c;发布周期长&#xff0c;需要同时维护多个版本&#xff0c;发布流程复杂 表格提供了不…

36PE启动盘新秀:Ventoy(附各种PE的ISO下载)

PE启动盘新秀:Ventoy(附各种PE的ISO下载) 在我们以前的认知中,一个U盘只能制作包含一个系统的启动盘.比如,安装了微PE工具箱的U盘就不能安装其他什么PE工具箱了.这有时候让我们很无奈,只能买好多U盘,一个U盘一个PE系统. 这个问题的本质是什么?事实上,笔者认为,就是单个的ISO文…

Andoird使用Room实现持久化及使用Room进行增删查改

文章目录 Room概述Room的使用一、在gradle.build中添加依赖库kotlinJava 创建实体类创建抽象Dao层接口创建DataBase层使用创建的查看数据库 总结&#xff1a; 这篇文章会告诉你如何在Android中通过kotlin或者Java来实现数据持久化 Room概述 处理大量结构化数据的应用可极大地受…

2024年【N1叉车司机】考试题及N1叉车司机找解析

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 N1叉车司机考试题参考答案及N1叉车司机考试试题解析是安全生产模拟考试一点通题库老师及N1叉车司机操作证已考过的学员汇总&#xff0c;相对有效帮助N1叉车司机找解析学员顺利通过考试。 1、【多选题】《特种设备使用…

FreeRTOS 源码概述

FreeRTOS 目录结构 使用 STM32CubeMX 创建的 FreeRTOS 工程中&#xff0c;FreeRTOS 相关的源码如下: 主要涉及2个目录&#xff1a; Core Inc 目录下的 FreeRTOSConfig.h 是配置文件 Src 目录下的 freertos.c 是 STM32CubeMX 创建的默认任务 Middlewares\Third_Party…

深入解析编程逻辑中的关键字与逻辑运算

新书上架~&#x1f447;全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我&#x1f446;&#xff0c;收藏下次不迷路┗|&#xff40;O′|┛ 嗷~~ 目录 一、认识关键字及其重要性 二、逻辑运算的关键字 1. and、or 和 not 的运用 2. 逻辑运算的…

42-3 应急响应之服务排查

一、服务排查 服务是后台运行的进程,可在计算机启动时自动启动,也可暂停和重新启动,且不显示用户界面。它们特别适用于长时间运行的功能,以避免影响其他用户在同一台计算机上的工作。在应急响应中,服务常被恶意软件用作驻留方法。 二、Windows服务排查 打开【运行】对话框…

【独家揭秘!玩转ChatGPT?一文带你解锁秘籍!】

&#x1f680;【独家揭秘&#xff01;玩转ChatGPT&#xff1f;一文带你解锁秘籍&#xff01;】&#x1f680; &#x1f449; 【直达ChatGPT体验站】 ChatGPT&#xff0c;全称“Chat Generative Pre-trained Transformer”&#xff0c;是人工智能研究实验室OpenAI于2022年底推出…

9.2 Go语言入门(包和导入)

Go语言入门&#xff08;包和导入&#xff09; 目录一、包和导入1. 包&#xff08;Package&#xff09;1.1 包的定义1.2 包的作用1.3 main 包1.4 非 main 包 2. 导入&#xff08;Import&#xff09;2.1 导入标准库2.2 导入第三方包2.3 导入本地包2.4 导入别名2.5 导入并调用初始…

第四课 communcation服务-can配置第二弹

Davinci配置目标: 介绍DBC基本属性,并且配置出一个DBC。 将DBC导入到vector的davinci工具,生成我们想要的代码。 Davinci配置步骤: 1. 编辑DBC文件 DBC文件是一种非常重要的工具,所谓DBC就是Database CAN,CAN网络的数据库文件,定义了CAN网络的节点、消息、信号的所有…

查看远程桌面连接登录不上服务器,远程桌面连接登录不上服务器是什么情况?怎么解决?

在信息技术领域&#xff0c;远程桌面连接&#xff08;RDP&#xff09;是一种重要的远程管理工具&#xff0c;它允许管理员或用户从远程位置访问和控制服务器或计算机。然而&#xff0c;在实际操作中&#xff0c;远程桌面连接不上服务器的情况时有发生&#xff0c;这通常是由多种…