Ollama本地部署大模型及应用

news2024/11/16 6:53:21

文章目录

  • 前言
  • 一、下载安装
    • 1.Mac
    • 2.Windows
    • 3.linux
    • 4.docker
    • 5.修改配置(可选)
      • 1.linux系统
      • 2.window 系统
      • 3.mac系统
  • 二、Ollama使用
    • 1.命令
    • 2.模型下载
    • 3.自定义模型
    • 4.API 服务
  • 三、Open WebUI 使用
  • 四、Dify使用


前言

Ollama 是一个专注于本地部署大型语言模型的工具,通过提供便捷的模型管理、丰富的预建模型库、跨平台支持以及灵活的自定义选项,使得开发者和研究人员能够在本地环境中高效利用大型语言模型进行各种自然语言处理任务,而无需依赖云服务或复杂的基础设施设置。

以下是其主要特点和功能概述:

  1. 简化部署:Ollama 目标在于简化在 Docker 容器中部署大型语言模型的过程,使得非专业用户也能方便地管理和运行这些复杂的模型。

  2. 轻量级与可扩展:作为轻量级框架,Ollama 保持了较小的资源占用,同时具备良好的可扩展性,允许用户根据需要调整配置以适应不同规模的项目和硬件条件。

  3. API支持:提供了一个简洁的 API,使得开发者能够轻松创建、运行和管理大型语言模型实例,降低了与模型交互的技术门槛。

  4. 预构建模型库:包含一系列预先训练好的大型语言模型,用户可以直接选用这些模型应用于自己的应用程序,无需从头训练或自行寻找模型源。

一、下载安装

1.Mac

下载对应的客户端软件,并安装
下载地址:https://ollama.com/download/Ollama-darwin.zip

2.Windows

下载对应的客户端软件,并安装
下载地址:https://ollama.com/download/OllamaSetup.exe

3.linux

运行命令一键下载安装

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

查看下服务状态

systemctl status ollama

查看安装版本

ollama -v

4.docker

Docker Hub 上提供了官方的 Ollama Docker 镜像。ollama/ollama

需要配置GPU驱动可以看Ollama的docker镜像文档https://hub.docker.com/r/ollama/ollama

拉取镜像

# 使用 CPU 或者 Nvidia GPU 来推理模型
docker pull ollama/ollama
# 使用 AMD GPU 来推理模型
docker pull ollama/ollama:rocm

针对不同的设备,我们的运行指令也需要有不同的调整:

# 默认 CPU 模式运行
docker run -d -v ollama:/root/.ollama -p 11434:11434 --name ollama ollama/ollama

# Nvidia GPU 模式运行
docker run -d --gpus=all -v ollama:/root/.ollama -p 11434:11434 --name ollama ollama/ollama

# AMD 显卡运行
docker run -d --device /dev/kfd --device /dev/dri -v ollama:/root/.ollama -p 11434:11434 --name ollama ollama/ollama:rocm

5.修改配置(可选)

Ollama 可以设置的环境变量

OLLAMA_HOST:这个变量定义了Ollama监听的网络接口。通过设置OLLAMA_HOST=0.0.0.0,我们可以让Ollama监听所有可用的网络接口,从而允许外部网络访问。

OLLAMA_MODELS:这个变量指定了模型镜像的存储路径。通过设置OLLAMA_MODELS=F:\OllamaCache,我们可以将模型镜像存储在E盘,避免C盘空间不足的问题。

OLLAMA_KEEP_ALIVE:这个变量控制模型在内存中的存活时间。设置OLLAMA_KEEP_ALIVE=24h可以让模型在内存中保持24小时,提高访问速度。

OLLAMA_PORT:这个变量允许我们更改Ollama的默认端口。例如,设置OLLAMA_PORT=8080可以将服务端口从默认的11434更改为8080。

OLLAMA_NUM_PARALLEL:这个变量决定了Ollama可以同时处理的用户请求数量。设置OLLAMA_NUM_PARALLEL=4可以让Ollama同时处理两个并发请求。

OLLAMA_MAX_LOADED_MODELS:这个变量限制了Ollama可以同时加载的模型数量。设置OLLAMA_MAX_LOADED_MODELS=4可以确保系统资源得到合理分配。

不同操作系统,模型默认存放在:

macOS: ~/.ollama/models
Linux: /usr/share/ollama/.ollama/models
Windows: C:\Users\xxx\.ollama\models

默认只能本地访问,如果需要局域网内其他机器也能访问(比如嵌入式设别要访问本地电脑),需要对 HOST 进行配置,开启监听任何来源IP

1.linux系统

配置文件在:/etc/systemd/system/ollama.service

[Service]
#修改HOST
Environment="OLLAMA_HOST=0.0.0.0"
#修改模型存放位置
Environment="OLLAMA_MODELS=/data/ollama/models"
#如果有多张 GPU,可以对 CUDA_VISIBLE_DEVICES 配置,指定运行的 GPU,默认使用多卡。
Environment="CUDA_VISIBLE_DEVICES=0,1"

配置修改后,需要重启 ollama

systemctl daemon-reload
systemctl restart ollama

2.window 系统

#直接在系统环境变量中加入
OLLAMA_HOST=0.0.0.0:11434

重启服务后生效

3.mac系统

使用launchctl配置环境变量

launchctl setenv OLLAMA_HOST "0.0.0.0:11434"

重启服务后生效

文档:https://github.com/ollama/ollama/blob/main/docs/faq.md

二、Ollama使用

1.命令

终端输入ollama

在这里插入图片描述

ollama serve	# 启动ollama
ollama create	# 从模型文件创建模型
ollama show		# 显示模型信息
ollama run		# 运行模型,会先自动下载模型
ollama stop     # 停止运行模型
ollama pull		# 从注册仓库中拉取模型
ollama push		# 将模型推送到注册仓库
ollama list		# 列出已下载模型
ollama ps		# 列出正在运行的模型
ollama cp		# 复制模型
ollama rm		# 删除模型
ollama models details [模型名称] # 获取更多模型信息

2.模型下载

在官方有类似 Docker 托管镜像的 Docker Hub,Ollama 也有个 Library 托管支持的大模型。
地址:https://ollama.com/library
在这里插入图片描述
使用命令ollama run 自动下载模型后运行

ollama run qwen2.5

在这里插入图片描述

3.自定义模型

如果要使用的模型不在 Ollama 模型库怎么办?

GGUF (GPT-Generated Unified Format)模型
GGUF 是由 llama.cpp 定义的一种高效存储和交换大模型预训练结果的二进制格式。

Ollama 支持采用 Modelfile 文件中导入 GGUF 模型。

这里我使用Llama3.1-8B-Chinese-Chat模型举例子
模型地址:https://modelscope.cn/models/XD_AI/Llama3.1-8B-Chinese-Chat/files
在这里插入图片描述
step 1:新建一个文件名为 llama3-modelfile 的文件,然后在其中指定 llama3 模型路径:

FROM /root/models/llama3.1_8b_chinese_chat_f16.gguf

step 2: 创建模型
这里的llama3.1_8b名字可以自定义

ollama create llama3.1_8b -f llama3-modelfile

step 3: 运行模型

ollama run llama3

4.API 服务

除了本地运行模型以外,还可以把模型部署成 API 服务。

执行下述指令,可以一键启动 REST API 服务:

ollama serve

下面介绍两个常用示例:

1、生成回复

curl http://129.150.63.xxx:11434/api/generate -d '{
  "model": "qwen2:0.5b",
  "prompt":"Why is the sky blue?",
  "stream":false
}'

2、模型对话

curl http://localhost:11434/api/chat -d '{
  "model": "qwen2:0.5b",
  "messages": [
    { "role": "user", "content": "why is the sky blue?" }
  ],
  "stream":false
}'

更多参数和使用,可参考 API 文档:https://github.com/ollama/ollama/blob/main/docs/api.md

三、Open WebUI 使用

Open WebUI 是一个可扩展的自托管 WebUI,前身就是 Ollama WebUI,为 Ollama 提供一个可视化界面,可以完全离线运行,支持 Ollama 和兼容 OpenAI 的 API。

GitHub地址:https://github.com/open-webui/open-webui
文档地址:https://docs.openwebui.com/

Open WebUI 部署
我们直接采用 docker 部署 Open WebUI:

因为我们已经部署了 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

其中:–add-host=host.docker.internal:host-gateway 是为了添加一个主机名映射,将 host.docker.internal 指向宿主机的网关,方便容器访问宿主机服务

假设你之前没有安装过 Ollama,也可以采用如下镜像(打包安装Ollama + Open WebUI):

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 使用
在打开主机 3000 端口的防火墙之后,浏览器中输入:http://your_ip:3000/,注册一个账号:

在这里插入图片描述
可以发现界面和 ChatGPT 一样简洁美观,首先需要选择一个模型,我部署了 qwen2.5,于是先用它试试:
在这里插入图片描述
右上角这里可以设置系统提示词,以及模型参数等等:
在这里插入图片描述

在个人设置这里,可以看到内置的 TTS 服务:
在这里插入图片描述
输入消息进行对话
在这里插入图片描述

觉得上述流程略显麻烦?没问题,你的困惑早有人帮你搞定了,GitHub 上有开发者做了 docker-compose 一键整合安装包。Ollama Docker Compose 该项目使用 Docker Compose 简化了 Ollama 的部署,从而可以轻松地在容器化环境中运行 Ollama 及其所有依赖项。

传送门:https://github.com/valiantlynx/ollama-docker
你只需要一行命令:

docker-compose up -d

就能一键启动 Ollama + Open WebUI~

启动成功后,注意看一下不同容器的端口号:

docker ps

四、Dify使用

在 Dify 中接入 Ollama
在 设置 > 模型供应商 > Ollama 中填入:
在这里插入图片描述

  • 模型名称:llava
  • 基础 URL:http://:11434
    此处需填写可访问到的 Ollama 服务地址。
    若 Dify 为 docker 部署,建议填写局域网 IP 地址,如:http://192.168.1.100:11434 或 docker 宿主机 IP 地址,如:http://172.17.0.1:11434。
    若为本地源码部署,可填写 http://localhost:11434。
  • 模型类型:对话
  • 模型上下文长度:4096
    模型的最大上下文长度,若不清楚可填写默认值 4096。
  • 最大 token 上限:4096
    模型返回内容的最大 token 数量,若模型无特别说明,则可与模型上下文长度保持一致。
  • 是否支持 Vision:是
    当模型支持图片理解(多模态)勾选此项,如 llava。

如果您使用Docker部署Dify和Ollama,您可能会遇到以下错误:

httpconnectionpool(host=127.0.0.1, port=11434): max retries exceeded with url:/cpi/chat (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x7f8562812c20>: fail to establish a new connection:[Errno 111] Connection refused'))

httpconnectionpool(host=localhost, port=11434): max retries exceeded with url:/cpi/chat (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x7f8562812c20>: fail to establish a new connection:[Errno 111] Connection refused'))

这个错误是因为 Docker 容器无法访问 Ollama 服务。localhost 通常指的是容器本身,而不是主机或其他容器。要解决此问题,您需要将 Ollama 服务暴露给网络。
OLLAMA_HOST=0.0.0.0

如果以上步骤无效,可以使用以下方法:
问题是在docker内部,你应该连接到host.docker.internal,才能访问docker的主机,所以将localhost替换为host.docker.internal服务就可以生效了:http://host.docker.internal:11434

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

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

相关文章

第四届摩纳哥智能化可持续发展游艇码头交流会

第四届摩纳哥智能化可持续发展游艇码头交流会 游艇生态和经济转型 2024年9月23日&#xff0c;第四届摩纳哥智能化可持续发展游艇码头交流会于摩纳哥游艇俱乐部顺利落幕。该交流会由摩纳哥游艇码头顾问公司&#xff08;M3&#xff09;主办&#xff0c;吸引了全球250名游艇行业领…

数据集-目标检测系列-口罩检测数据集 mask>> DataBall

数据集-目标检测系列-口罩检测数据集 mask>> DataBall 数据集-目标检测系列-口罩检测数据集 mask 数据量&#xff1a;1W DataBall 助力快速掌握数据集的信息和使用方式&#xff0c;享有百种数据集&#xff0c;持续增加中。 数据项目地址&#xff1a; gitcode: https…

JAVA笔记 | 实际上用到的策略模式(可直接套用)

自己开发中用到了策略模式&#xff0c;这样写不一定是最好的&#xff0c;但是满足了业务场景跟使用要求&#xff0c;做个笔记&#xff0c;下次有用到可以快速复习跟套用 假设使用场景&#xff1a;有几只宠物&#xff0c;猫跟狗等&#xff0c;要求他们做各种动作&#xff0c;比如…

无人机之物流货运篇

一、无人机货运的崛起 随着电商、快递行业的蓬勃发展&#xff0c;传统的地面物流已经难以满足日益增长的快递量和对速度的追求。而无人机货运凭借其高效、快捷、灵活的特点&#xff0c;逐渐成为了物流行业的新宠。无人机可以在城市上空快速穿梭&#xff0c;不受地面交通拥堵的限…

语言模型发展史

四个阶段 第一阶段&#xff1a;基于规则和统计的语言模型 由人工设计特征并使用统计方法对固定长度的文本窗口序列进行建模分析&#xff0c;这种建模方式也被称为N-gram语言模型。 优点&#xff1a; 1&#xff09;采用极大似然估计, 参数易训练 2&#xff09;完全包含了前n-…

Arthas vmtool(从 jvm 里查询对象,执行 forceGc)

文章目录 二、命令列表2.1 jvm相关命令2.1.15 vmtool&#xff08;从 jvm 里查询对象&#xff0c;执行 forceGc&#xff09;举例1&#xff1a;获取对象 二、命令列表 2.1 jvm相关命令 2.1.15 vmtool&#xff08;从 jvm 里查询对象&#xff0c;执行 forceGc&#xff09; vmtoo…

nodejs 014: React.FC 与 Evergreen(常青树) React UI 框架的的Dialog组件

React.FC React.FC是React中用于定义函数组件“Function Component”的类型。它代表&#xff0c;可以帮助你在TypeScript中提供类型检查和自动补全。使用React.FC时&#xff0c;可以明确指定组件的props类型&#xff0c;并且它会自动推导children属性。下面是一个使用 React.F…

微服务-- Gateway服务网关

Spring Cloud Gateway 是 Spring Cloud 的一个全新项目&#xff0c;该项目是基于 Spring 5.0&#xff0c;Spring Boot 2.0 和 Project Reactor 等响应式编程和事件流技术开发的网关&#xff0c;它旨在为微服务架构提供一种简单有效的统一的 API 路由管理方式。 为什么需要网关…

从0开始linux(5)——vim

欢迎来到博主的专栏&#xff1a;从0开始linux 博主ID&#xff1a;代码小豪 文章目录 vim的多种模式底行模式命令命令模式视块模式&#xff08;visual block&#xff09; vim的配置 vim是linux系统的文本编辑器。就像windows的记事本一样。 使用vim指令可以使用vim打开一个文本文…

MacOS多桌面调度快捷键

单桌面调度快捷键 可能是我用着妙控鼠标用着不习惯&#xff0c;所以追求快捷键操作&#xff0c;看起来也比较酷。而且在Windows上&#xff0c;我基本不使用多桌面&#xff0c;但是看着同事用Mac的多桌面用的飞起&#xff0c;炫酷程度不亚于win7的Windows键Tab。在不使用多桌面的…

小川科技携手阿里云数据库MongoDB:数据赋能企业构建年轻娱乐生态

随着信息技术的飞速发展&#xff0c;企业在处理海量数据时所面临的挑战日益严峻。特别是在年轻娱乐领域&#xff0c;用户行为的多样性和数据量的激增对数据存储与分析技术提出了更高的要求。在此背景下&#xff0c;小川凭借其前瞻性的技术视野&#xff0c;选择了MongoDB作为其数…

乒乓buffer(国科微笔试填空)_2024年9月26日

乒乓buffer是否提高了并行度&#xff1f;是 流水线式处理&#xff0c;提高并行度 位宽为4&#xff0c;深度为8的sram&#xff1a; 当sel拉高时&#xff0c;a、b模块在wren和rden有效时分别写和读&#xff1b;当sel拉低时&#xff0c;a、b模块在rdenwren有效时分别读和写

远程访问软路由

远程访问软路由主要涉及通过互联网从远程位置访问和控制基于软件的路由器系统。以下是远程访问软路由的一般方法&#xff1a; 一、远程访问软路由的方法 通过Web管理界面访问&#xff1a; 适用于大多数支持Web管理的软路由系统。用户只需在浏览器中输入软路由的公网IP地址或域…

【C语言】手把手带你拿捏指针(完)(指针笔试、面试题解析)

文章目录 一、sizeof和strlen的对⽐1.sizeof2.strlen3.sizeof与strlen对比 二、数组和指针笔试解析1.一维数组2.字符、字符串数组和字符指针代码1代码2代码3代码4代码5代码6 3.二维数组4.总结 三、指针运算笔试题解析代码1代码2代码3代码4代码5代码6 一、sizeof和strlen的对⽐ …

freeRDP OPenssl

libusb需要下载 我使用的是VS2019编译 所以需要include 与vs2019 在cmake里面修改路径 C:/Users/JPM/source/repos/freeRDP/FreeRDP-stable-2.0/libusb-1.0.24/include/libusb-1.0 C:/Users/JPM/source/repos/freeRDP/FreeRDP-stable-2.0/libusb-1.0.24/VS2019/MS64/static/l…

【中级通信工程师】终端与业务(四):通信产品

【零基础3天通关中级通信工程师】 终端与业务(四)&#xff1a;通信产品 本文是中级通信工程师考试《终端与业务》科目第四章《通信产品》的复习资料和真题汇总。终端与业务是通信考试里最简单的科目&#xff0c;有效复习通过率可达90%以上&#xff0c;本文结合了高频考点和近几…

计算机毕业设计PySpark+Django深度学习游戏推荐系统 游戏可视化 游戏数据分析 游戏爬虫 Scrapy 机器学习 人工智能 大数据毕设

本论文的主要研究内容如下&#xff1a; 了解基于Spark的TapTap游戏数据分析系统的基本架构&#xff0c;掌握系统的开发方法&#xff0c;包括系统开发基本流程、开发环境的搭建、测试与运行等。 主要功能如下&#xff1a; &#xff08;1&#xff09;用户管理模块&#xff1a;…

OpenCV图像文件读写(5)从文件系统中读取图像的标准函数imread()的使用

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 从文件加载图像。 imread 函数从指定的文件加载图像并返回它。如果图像无法读取&#xff08;因为文件缺失、权限不当、格式不受支持或无效&…

IDEA使用技巧和插件推荐

作为专业开发人员&#xff0c;选择一个强大的集成开发环境&#xff08;IDE&#xff09;是至关重要的。IntelliJ IDEA&#xff08;简称IDEA&#xff09;不仅功能丰富&#xff0c;而且操作便捷&#xff0c;是众多开发者的首选。本文将分享一些使用IDEA的技巧&#xff0c;以及推荐…

测试部署单副本 oceanbase-3.2.4.1 企业版

由于项目需要&#xff0c;测试部署单副本 oceanbase-3.2.4.1 企业版 1.安装前提 准备4cpu,12G内存,100G磁盘 统为centos7.9 yum install -y yum-utils wget net-tools tree yum-config-manager --add-repo https://mirrors.aliyun.com/oceanbase/OceanBase.repo 2.创建用…