Ollama初识

news/2025/3/24 21:48:06/文章来源:https://www.cnblogs.com/tangwc/p/18787750

前言

最近由于 deepseek 的火爆,AI 大语言模型又一次被抬了出来,对此早有关注的我决定尝试本地化部署使用体验一下,并且搭建一个本地的 AI 助手。
根据我之前了解到的信息,在使用大模型,现在较为方便的方法一般是先搭建一个大模型的管理工具,工具主要可以管理,训练,微调和部署生成式 AI,并且支持不同模型架构的大模型,这里我选择使用热度最高的 Ollama 作为管理工具,该工具与模型的关系如下所示:

graph TDA[用户请求] --> B[Ollama接收请求]B --> C{选择合适的模型}C --> D[模型处理请求]C --> E[使用其他模型(可选)]D --> F[生成反馈]E --> FF --> G[返回反馈给用户]

接下来主要介绍下如何安装和使用该工具。

Ollama 安装过程

这里展示两个平台的安装方式

  • Windows
    进入官网直接下载 exe 安装包安装即可,这里不再过多说明
  • Linux
    使用命令行进行安装,安装命令
curl -fsSL https://ollama.com/install.sh | sh

安装完成后打开 ollama 会自动运行,在终端输入 ollama -v,返回 ollama 安装版本号即安装完成。

Ollama 相关配置说明

完成安装后,只需要拉取模型就可以正常的运行模型了,但在此之前,我们先将其内部参数进行设置一下,这里会将所有的命令参数都说明一遍,重要必须配置的参数这里会着重说明,部分参数可以看自身情况进行配置。

1. Ollama 可配置环境变量

[!NOTE]
所有的环境变量均可以在 GitHub 源码 cmd. Go 中找到,后面版本更新可能会导致这里有些变化,当前介绍的是 V 0.5.12 版本。

命令 功能
OLLAMA_DEBUG 启用额外的调试信息。默认为 false。开启此变量可以获取更多的调试日志,帮助排查问题,例如 OLLAMA_DEBUG=1 可以启用调试模式。
OLLAMA_HOST 定义 Ollama 服务器的协议和主机地址。默认为 127.0.0.1:11434,仅本机地址可通过 11434 端口访问该服务。可以通过此变量自定义 Ollama 服务的监听地址和端口,例如设置为 0.0.0.0:8080 ,可允许其他电脑访问 Ollama(如:局域网中的其他电脑)。
OLLAMA_KEEP_ALIVE 控制模型在内存中的存活时间。默认为 5 分钟。负值表示无限存活,0 表示不保持模型在内存中。此变量用于优化模型加载和运行的性能,例如 OLLAMA_KEEP_ALIVE=30m 可以让模型在内存中保持 30 分钟。
OLLAMA_MAX_LOADED_MODELS 限制同时加载的模型数量。默认为 0,表示不限制。此变量用于合理分配系统资源,避免过多模型同时加载导致资源不足,例如 OLLAMA_MAX_LOADED_MODELS=4 可以限制同时加载 4 个模型。
OLLAMA_MAX_QUEUE 设置请求队列的最大长度。默认为 512。此变量用于控制并发请求的数量,避免过多请求同时处理导致服务过载,例如 OLLAMA_MAX_QUEUE=1024 可以将队列长度设置为 1024。
OLLAMA_MODELS 指定模型文件的存储路径。默认为用户主目录下的 .ollama/models 文件夹。通过设置此变量,可以自定义模型文件的存储位置,例如 OLLAMA_MODELS=/path/to/models 将模型存储在指定的路径下。
OLLAMA_NUM_PARALLEL 设置同时处理的并行请求数量。默认为 0,表示不限制。此变量用于优化服务的并发处理能力,例如 OLLAMA_NUM_PARALLEL=8 可以同时处理 8 个并行请求。
OLLAMA_NOPRUNE 在启动时不清理模型文件。默认为 false。启用此变量可以保留所有模型文件,避免不必要的清理操作,例如 OLLAMA_NOPRUNE=1 可以禁用模型文件的清理。
OLLAMA_ORIGINS 配置允许跨域请求的来源列表。默认包含 localhost127.0.0.10.0.0.0 等本地地址以及一些特定协议的来源。通过设置此变量,可以指定哪些来源可以访问 Ollama 服务,例如 OLLAMA_ORIGINS=*,https://example.com 允许所有来源以及 https://example.com 的跨域请求。
OLLAMA_SCHED_SPREAD 允许模型跨所有 GPU 进行调度。默认为 false。启用此变量可以提高模型运行的灵活性和资源利用率,例如 OLLAMA_SCHED_SPREAD=1 可以启用跨 GPU 调度。
OLLAMA_TMPDIR 临时文件的位置
OLLAMA_FLASH_ATTENTION 启用实验性的 Flash Attention 特性。默认为 false。此变量用于测试和使用新的注意力机制特性,例如 OLLAMA_FLASH_ATTENTION=1 可以启用 Flash Attention。
OLLAMA_KV_CACHE_TYPE K/V 缓存的量化类型(默认:f 16)
OLLAMA_LLM_LIBRARY 设置 LLM 库以绕过自动检测。
OLLAMA_GPU_OVERHEAD 为每个 GPU 预留的显存(以字节为单位)。默认为 0。此变量用于确保每个 GPU 有一定的显存余量,避免显存不足导致的问题,例如 OLLAMA_GPU_OVERHEAD=1073741824 可以为每个 GPU 预留 1 GB 的显存。
OLLAMA_LOAD_TIMEOUT 设置模型加载过程中的超时时间。默认为 5 分钟。0 或负值表示无限超时。此变量用于防止模型加载过程过长导致服务无响应,例如 OLLAMA_LOAD_TIMEOUT=10m 可以将超时时间设置为 10 分钟。
HTTP_PROXY 设置 HTTP 代理服务器地址。此变量用于配置 Ollama 在进行 HTTP 请求时使用的代理服务器,例如 HTTP_PROXY=http://proxy.example.com:8080 可以让 Ollama 使用指定的 HTTP 代理。
HTTPS_PROXY 设置 HTTPS 代理服务器地址。此变量用于配置 Ollama 在进行 HTTPS 请求时使用的代理服务器,例如 HTTPS_PROXY=https://proxy.example.com:8080 可以让 Ollama 使用指定的 HTTPS 代理。
NO_PROXY 设置不使用代理的地址列表。此变量用于指定哪些地址在进行请求时不使用代理,例如 NO_PROXY=localhost,example.com 可以让 Ollama 在访问 localhostexample.com 时不使用代理.

2. Ollama 终端控制命令

命令 用途
ollama serve 在本地系统上启动 Ollama。
ollama create <new_model> 从现有模型创建一个新模型,用于定制或训练。
ollama show < model > 显示特定模型的详细信息,例如其配置和发布日期。
ollama run < model > 运行指定的模型,使其准备好进行交互。
ollama pull < model > 将指定的模型下载到您的系统。
ollama list 列出所有已下载的模型。
ollama ps 显示当前正在运行的模型。
ollama stop < model > 停止指定的正在运行的模型。
ollama rm < model > 从您的系统中移除指定的模型。

3. Ollama 初始设置

1. Windows 配置

找到系统的环境变量设置的地方,添加系统进系统变量。
image.png
这里说明几个需要配置的

  • OLLAMA_HOST : 0.0.0.0:11434
  • OLLAMA_MODELS : 选择一个存储地址,最好是固态硬盘
  • HTTP_PROXY / HTTPS_PROXY / NO_PROXY : 根据自己网络情况挂代理
  • OLLAMA_KEEP_ALIVE :这里可以设置成 1 h 提高短时间内响应及时率
    配置完成后重启启动 ollama 软件即可

2. Linux 配置

Liunx 下,安装完成 ollama 后,配置文件位于 /etc/systemd/system/ollama.service,我们使用 vim 打开并修改。

sudo vim /etc/systemd/system/ollama.service

打开 vim 后键盘按 A 开始修改文件

[Service]
Environment="OLLAMA_HOST=0.0.0.0:11434"
Environment="OLLAMA_KEEP_ALIVE=1h"

部分配置按需求添加,配置完成后保存并退出。
输入下面指令载入并重启 ollama:

sudo systemctl daemon-reload
sudo systemctl restart ollama

到此初始配置完成。

4. 运行模型

访问 Ollama Search,这里是 ollama 的官网,官方提供的可以直接下载的模型都在这里,可以选择任意一个然后,用提供的指令直接下载并运行。
image.png
image.png

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Pass-15

function isImage($filename){//需要开启php_exif模块$image_type = exif_imagetype($filename);switch ($image_type) {case IMAGETYPE_GIF:return "gif";break;case IMAGETYPE_JPEG:return "jpg";break;case IMAGETYPE_PNG:return "png";break…

Pass-16

$is_upload = false; $msg = null; if (isset($_POST[submit])){// 获得上传文件的基本信息,文件名,类型,大小,临时文件路径$filename = $_FILES[upload_file][name];$filetype = $_FILES[upload_file][type];$tmpname = $_FILES[upload_file][tmp_name];$target_path=UPLO…

upload pass-01

直接上传一句话木马貌似不行,尝试抓包看看发现全是get请求抓不到post传参上传一句话木马的包,合理猜测是不是前段验证,F12禁用JavaScript验证试试看可以看到成功上传并且返回了图片使用phpinfo()命令发现一句话木马成功上传 同理,是不是我们上传一个图片(此时通过了前段白…

# 集美大学课程实验报告-实验3:栈和队列

集美大学课程实验报告-实验2:线性表项目名称 内容课程名称 数据结构班级 网安2411指导教师 郑如滨学生姓名 李斌财学号 202421336021实验项目名称 站和队列上机实践日期上机实践时间 2学时一、目的(本次实验所涉及并要求掌握的知识点) 掌握STL中栈和队列的基本存储结构 掌握…

L3 设计,开发,认证

我都想笑了之十万八千个视频需要看。L3 设计,开发,认证 这里我暂时跳过了那些PPT里面要求看的视频,过一会再整理。 利益相关者和需求 ​ 从图中我们可以得到如下信息:航空器的生命周期:设计——生产——认证——运营 原始设备制造商(original equipment manufacturer,OE…

KMP 入门

前传:BF 算法 BF 算法即为暴力解法,一位一位向下匹配。 时间复杂度约为 \(O(n \times m)\)。KMP KMP 算法的主要思想是利用部分匹配信息,避免重复匹配,提高字符串查找效率。 KMP 算法总时间复杂度是 \(O(n + m)\),匹配用时 \(O(n)\)。 \(m\) 为模式串长度,\(n\) 为目标串…

web-CodeInject

<?php#Author: h1xaerror_reporting(0); show_source(__FILE__);eval("var_dump((Object)$_POST[1]);");eval("var_dump((Object)$_POST[1]);");:这行代码使用了eval()函数,这是一个非常危险的函数,因为它会执行传递给它的字符串作为PHP代码。这意味…

kettle插件-dm达梦数人大金仓Vastbase数据库插件

在国家大力倡导原创技术、推动信息技术应用创新(信创)的政策背景下,摆脱对国外技术的依赖、构建自主可控的信息技术体系成为重要发展方向。大数据作为信息技术的重要组成部分,国产大数据技术和产品迎来了前所未有的发展机遇。 信创旨在实现核心技术自主可控,保障国家信息安…

广义优势估计(GAE):端策略优化PPO中偏差与方差平衡的关键技术

广义优势估计(Generalized Advantage Estimation, GAE)由Schulman等人在2016年的论文中提出,是近端策略优化(PPO)算法的重要基础理论,也是促使PPO成为高效强化学习算法的核心因素之一。 GAE的理论基础建立在资格迹(eligibility traces)和时序差分λ(TD-λ)之上,为深入理解GA…

集合体系介绍、collection的使用--java进阶day09

1.集合体系结构 我们要学习的集合大体分为两种,一种是单列集合,一种是双列集合2.单列集合 单列集合又分为两个派系,分别为list接口和set接口,这两个接口皆是collection接口的子接口3.Collection接口既然要使用,那就必然要创建对象,但我们知道Collection是接口,不能实例化…