Ollama教程——入门:开启本地大型语言模型开发之旅
Ollama教程——入门:开启本地大型语言模型开发之旅
- 引言
- 安装ollama
- macOS
- Windows预览版
- Linux
- Docker
- ollama的库和工具
- ollama-python
- ollama-js
- 快速开始
- 运行模型
- 访问模型库
- 自定义模型
- 从GGUF导入模型
- 自定义提示
- CLI参考
- 创建模型
- 拉取模型
- 删除模型
- 复制模型
- 多行输入
- 多模态模型
- 提示作为参数传入
- REST API
- 生成响应
- 与模型对话
- 构建ollama
- 安装依赖
- 生成依赖
- 构建二进制文件
- 运行本地构建
- 总结

引言
在当今的技术世界里,大型语言模型(Large Language Models, LLMs)已经成为了不可或缺的工具,它们能够在各种任务上展示出人类级别的性能,从文本生成到代码编写,再到语言翻译。然而,部署和运行这些模型通常需要大量的资源和专业知识,尤其是在本地环境中。这就是ollama登场的地方。
ollama是一个旨在简化大型语言模型本地部署和运行过程的工具。它提供了一个轻量级、易于扩展的框架,让开发者能够在本地机器上轻松构建和管理LLMs。通过ollama,开发者可以访问和运行一系列预构建的模型,或者导入和定制自己的模型,无需关注复杂的底层实现细节。
本文将指导您如何安装ollama,介绍其主要功能,以及如何利用它来探索和利用大型语言模型的强大能力。无论您是希望快速体验LLMs,还是需要在本地环境中深度定制和运行模型,ollama都能提供必要的工具和指南。
安装ollama
ollama的安装过程简单直接,支持包括macOS、Windows、Linux在内的多种操作系统,以及Docker环境,确保了广泛的可用性和灵活性。以下是各平台的安装指南。
macOS
对于macOS用户,ollama提供了一个预打包的zip文件,可以通过以下链接下载:Download
下载完成后,解压zip文件,并按照包内的说明完成安装。安装过程可能需要您确认安全性和权限设置,以确保软件能够正常运行。
Windows预览版
Windows用户可以通过下面的链接下载安装程序:Download
运行安装程序并遵循屏幕上的指示完成安装。请注意,Windows版本目前处于预览阶段,可能还不如其他平台稳定。
Linux
在Linux上,您可以使用以下命令行方式进行安装:
curl -fsSL https://ollama.com/install.sh | sh
此脚本会自动检测您的系统环境,并安装所需的依赖和ollama本身。如果您希望手动安装,也可以参考手动安装指南。
Docker
ollama同样提供了官方Docker镜像,可以通过以下命令拉取:
docker pull ollama/ollama
使用Docker安装ollama,能够确保环境的一致性和隔离性,特别适合在多种环境中进行测试和部署。
ollama的库和工具
在成功安装ollama之后,您可以利用它提供的多个库和工具来扩展您的开发工作。ollama主要支持Python和JavaScript两种编程语言的库,分别是ollama-python和ollama-js,这两个库使得在相应的语言环境中使用ollama变得更加方便和高效。
ollama-python
ollama-python库提供了一个Python接口来与ollama交互,使得Python开发者可以轻松地在他们的项目中集成和运行大型语言模型。安装此库非常简单,只需使用pip命令:
pip install ollama-python
安装后,您可以通过几行简单的代码来运行模型,比如:
import ollama# 运行Llama 2模型
response = ollama.run('llama2', '你好,世界!')
print(response)
ollama-js
对于JavaScript开发者,ollama-js库同样提供了一个易于使用的接口。您可以通过npm或yarn来安装这个库:
npm install ollama-js
# 或者
yarn add ollama-js
安装完成后,您可以在Node.js项目中直接调用ollama:
const ollama = require('ollama-js');// 运行Llama 2模型
ollama.run('llama2', 'Hello world!', response => {console.log(response);
});
通过这些库,ollama极大地简化了在不同语言项目中使用大型语言模型的过程,不论您是在构建AI驱动的应用,还是仅仅想要在本地测试和学习这些模型,ollama都能提供必要的支持。
快速开始
ollama的快速开始指南将帮助您迅速上手运行大型语言模型。这一部分将指导您如何利用简单的命令行操作来启动和与模型交互。
运行模型
要开始与模型交互,您首先需要选择一个模型来运行。ollama提供了一个丰富的模型库,包括最新的Llama 2模型。运行模型的命令非常直接:
ollama run llama2
这个命令会启动Llama 2模型,之后您就可以与它进行交互了。在命令行中输入您的问题或提示,模型将返回相应的答案。
访问模型库
ollama支持的模型列表可在ollama.com/library上找到。这里列出了所有可用的模型及其详细信息,包括模型的参数数量、大小和下载指令。下面是一些可以直接运行的示例模型:
| 模型 | 参数量 | 大小 | 下载指令 |
|---|---|---|---|
| Llama 2 | 7B | 3.8GB | ollama run llama2 |
| Dolphin Phi | 2.7B | 1.6GB | ollama run dolphin-phi |
| Code Llama | 7B | 3.8GB | ollama run codellama |
| Llama 2 Uncensored | 7B | 3.8GB | ollama run llama2-uncensored |
选择您感兴趣的模型,并使用相应的下载指令即可开始使用。请注意,运行大型模型可能需要较多的内存空间。例如,运行7B参数量的模型至少需要8GB的RAM,而13B参数量的模型则需要16GB的RAM。
自定义模型
ollama不仅支持运行预构建的模型,还提供了灵活的工具来导入和自定义您自己的模型。无论是从GGUF格式导入还是进行模型的个性化设置,ollama都能满足您的需求。
从GGUF导入模型
若您手头有GGUF格式的模型,可以轻松地将其导入到ollama中。首先,您需要创建一个名为Modelfile的文件,并在其中指定要导入的模型路径:
FROM ./your-model.gguf
然后,使用下面的命令来创建模型:
ollama create your-model-name -f Modelfile
最后,通过运行以下命令来启动模型:
ollama run your-model-name
自定义提示
您还可以通过自定义提示来调整模型的行为。首先,拉取您想要定制的模型:
ollama pull llama2
接着,创建一个Modelfile,在其中设置参数和系统消息:
FROM llama2
# 设置创造性更高的温度参数
PARAMETER temperature 1
# 设置系统消息
SYSTEM """
你是超级马里奥,以马里奥的身份回答问题。
"""
之后,创建并运行您的定制模型:
ollama create custom-llama2 -f Modelfile
ollama run custom-llama2
这样,您就能按照自己的需求定制模型了。
CLI参考
ollama提供了一套丰富的命令行界面(CLI)工具,允许用户从命令行管理模型。这些命令涵盖了从创建模型到更新、删除以及运行模型的各个方面。以下是一些核心命令的使用说明。
创建模型
使用ollama create命令可以根据Modelfile创建一个新的模型:
ollama create my-model -f ./Modelfile
这个命令会读取Modelfile中的配置,并创建一个名为my-model的新模型。
拉取模型
要从ollama的模型库中拉取一个模型到本地,可以使用ollama pull命令:
ollama pull llama2
这个命令不仅可以用来下载新的模型,也可以更新本地的模型。如果模型已经存在,ollama pull会仅下载变更的部分。
删除模型
如果需要删除一个本地的模型,可以使用ollama rm命令:
ollama rm my-model
这将从您的本地环境中删除名为my-model的模型。
复制模型
您可以使用ollama cp命令复制一个模型,创建一个新的模型副本:
ollama cp original-model new-model
这将创建一个original-model的副本,并将其命名为new-model。
多行输入
对于需要多行输入的情况,您可以使用三个引号"""来包围文本:
ollama run my-model """第一行
第二行
第三行"""
多模态模型
ollama支持多模态模型,允许您处理包括文本和图片在内的多种类型的输入。例如:
ollama run my-multimodal-model "这张图片上是什么? /path/to/image.png"
提示作为参数传入
您还可以将提示直接作为命令行参数传给模型:
ollama run my-model "请总结这个文件:$(cat README.md)"
这将把README.md文件的内容作为提示传给模型。
REST API
除了命令行界面,ollama还提供了REST API,使得您可以通过HTTP请求与模型交互。这对于在Web应用程序中集成ollama尤其有用。
生成响应
要生成模型的响应,您可以发送一个POST请求到/api/generate:
curl -X POST http://localhost:11434/api/generate -d '{"model": "llama2","prompt": "为什么天空是蓝色的?"
}'
这将返回模型对于给定提示的回答。
与模型对话
如果您想要与模型进行对话式交互,可以发送请求到/api/chat:
curl -X POST http://localhost:11434/api/chat -d '{"model": "mistral","messages": [{ "role": "user", "content": "为什么天空是蓝色的?" }]
}'
这将启动一个对话会话,并返回模型的回答。
既然我们已经探讨了ollama的核心功能和操作方法,让我们继续了解如何构建和运行ollama,以及如何从开发者的角度更深入地利用它。
构建ollama
构建ollama允许您参与到其开发中,定制特定的功能或对现有代码进行改进。以下是构建ollama的基本步骤。
安装依赖
构建ollama之前,您需要确保系统中安装了必要的依赖。对于大多数用户,这意味着需要安装cmake和go。例如,在macOS上,您可以使用Homebrew来安装这些依赖:
brew install cmake go
在其他操作系统上,您可能需要使用不同的包管理器来安装cmake和go。
生成依赖
安装好必要的软件后,下一步是生成ollama的依赖项。这可以通过执行以下命令完成:
go generate ./...
这个命令会处理ollama项目中的所有必要的预生成步骤,确保后续的构建过程可以顺利进行。
构建二进制文件
完成依赖生成后,您就可以构建ollama的二进制文件了。构建过程同样简单,只需执行以下命令:
go build .
这将编译ollama的源代码,生成一个可执行的二进制文件。这个文件可以用来直接运行ollama,或者进行进一步的测试和开发。
更详细的构建指南和开发者文档可以在ollama的GitHub页面上找到。
运行本地构建
构建完成后,您就可以开始运行ollama了。首先,启动ollama的服务器:
./ollama serve
这个命令会启动ollama的后台服务,监听指定的端口,等待接收和处理请求。
然后,在另一个终端窗口,您可以运行一个模型,比如:
./ollama run llama2
这将使用您本地构建的ollama版本来运行Llama 2模型,您可以像使用发布版本的ollama一样与它进行交互。
总结
ollama提供了一个强大而灵活的平台,允许开发者在本地环境中轻松地部署和运行大型语言模型。无论您是希望快速体验这些模型的能力,还是需要深度定制和开发,ollama都能满足您的需求。通过上述的指南,您应该已经对如何使用ollama有了较为全面的了解,可以开始您的探索和开发之旅了。
相关文章:
Ollama教程——入门:开启本地大型语言模型开发之旅
Ollama教程——入门:开启本地大型语言模型开发之旅 引言安装ollamamacOSWindows预览版LinuxDocker ollama的库和工具ollama-pythonollama-js 快速开始运行模型访问模型库 自定义模型从GGUF导入模型自定义提示 CLI参考创建模型拉取模型删除模型复制模型多行输入多模态…...
基于PHP的新闻管理系统(用户发布版)
有需要请加文章底部Q哦 可远程调试 基于PHP的新闻管理系统(用户发布版) 一 介绍 此新闻管理系统基于原生PHP开发,数据库mysql,前端bootstrap。系统角色分为用户和管理员。本新闻管理系统采用用户发布新闻,管理员审核后展示模式。 技术栈&am…...
基础篇3 浅试Python爬虫爬取视频,m3u8标准的切片视频
浅试Python爬取视频 1.页面分析 使用虾米视频在线解析使用方式:https://jx.xmflv.cc/?url目标网站视频链接例如某艺的视频 原视频链接 解析结果: 1.1 F12查看页面结构 我们发现页面内容中什么都没有,video标签中的src路径也不是视频的数据。 1.2 …...
Adaboost集成学习 | Matlab实现基于BiLSTM-Adaboost双向长短期记忆神经网络结合Adaboost集成学习时间序列预测(股票价格预测)
目录 效果一览基本介绍模型设计程序设计参考资料效果一览 基本介绍 Matlab实现基于BiLSTM-Adaboost双向长短期记忆神经网络结合Adaboost集成学习时间序列预测(股票价格预测) 模型设计 股票价格预测是一个具有挑战性的时间序列预测问题,可以使用深度学习模型如双向长短期记忆…...
MySQL两表联查之分组成绩第几问题
MySQL 数据库操作实践:两表联查之分组成绩第几问题 在本篇博客中,我将展示MySQL 从创建表、到插入数据,并进行一些复杂的查询操作。 1. 建立表格 首先,我们创建两个表:department(部门)和 em…...
每日一题(leetcode2952):添加硬币最小数量 初识贪心算法
这道题如果整体去思考,情况会比较复杂。因此我们考虑使用贪心算法。 1 我们可以假定一个X,认为[1,X-1]区间的金额都可以取到,不断去扩张X直到大于target。(这里为什么要用[1,X-1]而不是[1,X],总的来说是方便,潜在思想…...
[Errno 2] No such file or directory: ‘g++‘
报错解释: 这个错误表明系统试图访问名为g++的文件或目录,但没有找到。g++是GNU编译器集合(GNU Compiler Collection)中的C++编译器。如果系统中没有安装g++或者g++不在环境变量的路径中,就会出现这个错误。 解决方法: 确认g++是否已安装: 在Linux上,可以尝试运行g+…...
go的通信Channel
一、channel是什么 1.一种通信机制 channel是goroutine与goroutine之间数据通信的一种通信机制。一般都是2个g及以上一起工作。 channel与关键字range和select紧密相关。 二、channel的结构 go源码:GitHub - golang/go: The Go programming language src/runt…...
手写红黑树【数据结构】
手写红黑树【数据结构】 前言版权推荐手写红黑树一、理论知识红黑树的特征增加删除 二、手写代码初始-树结点初始-红黑树初始-遍历初始-判断红黑树是否有效查找增加-1.父为黑,直接插入增加-2. 父叔为红,颜色调换增加-3. 父红叔黑,颜色调换&am…...
[蓝桥杯练习]通电
kruskal做法(加边) #include <bits/stdc.h> using namespace std; int x[10005],y[10005],z[10005];//存储i点的x与y坐标 int bcj[10005];//并查集 struct Edge{//边 int v1,v2; double w; }edge[2000005]; int cmp(Edge a, Edge b){return a.w < b.w;} int find(i…...
安全算法 - 摘要算法
摘要算法是一种将任意长度的数据转换为固定长度字节串的算法。它具有以下特点和应用。 首先,摘要算法能够生成一个唯一且固定长度的摘要值,用于验证数据的完整性和一致性。无论输入数据有多长,生成的摘要值始终是固定长度的,且即…...
操作系统:动静态库
目录 1.动静态库 1.1.如何制作一个库 1.2.静态库的使用和管理 1.3.安装和使用库 1.4.动态库 1.4.1.动态库的实现 1.4.2.动态库与静态库的区别 1.4.3.共享动态库给系统的方法 2.动态链接 2.1.操作系统层面的动态链接 1.动静态库 静态库(.a)&…...
车载电子电器架构 —— 局部网络管理汇总
车载电子电器架构 —— 局部网络管理汇总 我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 屏蔽力是信息过载时代一个人的特殊竞争力,任何消耗你的人和事,多看一眼都是你的不对。非必要不费力证明…...
网络安全 | 什么是DDoS攻击?
关注WX:CodingTechWork DDoS-介绍 DoS:Denial of Service,拒绝服务。DDoS是通过大规模的网络流量使得正常流量不能访问受害者目标,是一种压垮性的网络攻击,而不是一种入侵手段。NTP网络时间协议,设备需要…...
[Godot] 3D拾取
CollisionObject3D文档 Camera3D文档 CollisionObject3D有个信号_input_event,可以用于处理3D拾取。 Camera3D也有project_position用于将屏幕空间坐标投影到3D空间。 extends Node3D#是否处于选中状态 var selected : bool false #摄像机的前向量 var front : V…...
知识融合:知识图谱构建的关键技术
目录 一、引言二、知识图谱基础2.1 知识表示三元组属性图 2.2 知识抽取实体抽取关系抽取属性抽取 三、知识融合的核心问题3.1 实体识别与链接实体识别实体链接 3.2 重复实体合并方法示例 3.3 关系融合挑战方法示例 四、知识融合技术深度解析4.1 基于规则的方法规则设计原则规则…...
外贸建站:WordPress搭建外贸独立站零基础自建站完整教程(2024)
对于做外贸来说,拥有自己的外贸独立网站真的非常重要。在外贸领域,如今各平台竞争激烈,规则多,成本高,价格战、政策变化快,还存在封店风险等等因素。在这种情况下,拥有外贸独立站就能很好规避上…...
【教程】Kotlin语言学习笔记(五)——Lambda表达式与条件控制
写在前面: 如果文章对你有帮助,记得点赞关注加收藏一波,利于以后需要的时候复习,多谢支持! 【Kotlin语言学习】系列文章 第一章 《认识Kotlin》 第二章 《数据类型》 第三章 《数据容器》 第四章 《方法》 第五章 《L…...
C++的并发世界(三)——线程对象生命周期
0.案例代码 先看下面一个例子: #include <iostream> #include <thread>void ThreadMain() {std::cout << "begin sub thread:" << std::this_thread::get_id()<<std::endl;for (int i 0; i < 10; i){std::cout <&…...
SAD法(附python实现)和Siamese神经网络计算图像的视差图
1 视差图 视差图:以左视图视差图为例,在像素位置p的视差值等于该像素在右图上的匹配点的列坐标减去其在左图上的列坐标 视差图和深度图: z f b d z \frac{fb}{d} zdfb 其中 d d d 是视差, f f f 是焦距, b b…...
深入剖析AI大模型:大模型时代的 Prompt 工程全解析
今天聊的内容,我认为是AI开发里面非常重要的内容。它在AI开发里无处不在,当你对 AI 助手说 "用李白的风格写一首关于人工智能的诗",或者让翻译模型 "将这段合同翻译成商务日语" 时,输入的这句话就是 Prompt。…...
React Native 导航系统实战(React Navigation)
导航系统实战(React Navigation) React Navigation 是 React Native 应用中最常用的导航库之一,它提供了多种导航模式,如堆栈导航(Stack Navigator)、标签导航(Tab Navigator)和抽屉…...
深入理解JavaScript设计模式之单例模式
目录 什么是单例模式为什么需要单例模式常见应用场景包括 单例模式实现透明单例模式实现不透明单例模式用代理实现单例模式javaScript中的单例模式使用命名空间使用闭包封装私有变量 惰性单例通用的惰性单例 结语 什么是单例模式 单例模式(Singleton Pattern&#…...
工程地质软件市场:发展现状、趋势与策略建议
一、引言 在工程建设领域,准确把握地质条件是确保项目顺利推进和安全运营的关键。工程地质软件作为处理、分析、模拟和展示工程地质数据的重要工具,正发挥着日益重要的作用。它凭借强大的数据处理能力、三维建模功能、空间分析工具和可视化展示手段&…...
在四层代理中还原真实客户端ngx_stream_realip_module
一、模块原理与价值 PROXY Protocol 回溯 第三方负载均衡(如 HAProxy、AWS NLB、阿里 SLB)发起上游连接时,将真实客户端 IP/Port 写入 PROXY Protocol v1/v2 头。Stream 层接收到头部后,ngx_stream_realip_module 从中提取原始信息…...
(二)原型模式
原型的功能是将一个已经存在的对象作为源目标,其余对象都是通过这个源目标创建。发挥复制的作用就是原型模式的核心思想。 一、源型模式的定义 原型模式是指第二次创建对象可以通过复制已经存在的原型对象来实现,忽略对象创建过程中的其它细节。 📌 核心特点: 避免重复初…...
第一篇:Agent2Agent (A2A) 协议——协作式人工智能的黎明
AI 领域的快速发展正在催生一个新时代,智能代理(agents)不再是孤立的个体,而是能够像一个数字团队一样协作。然而,当前 AI 生态系统的碎片化阻碍了这一愿景的实现,导致了“AI 巴别塔问题”——不同代理之间…...
Swagger和OpenApi的前世今生
Swagger与OpenAPI的关系演进是API标准化进程中的重要篇章,二者共同塑造了现代RESTful API的开发范式。 本期就扒一扒其技术演进的关键节点与核心逻辑: 🔄 一、起源与初创期:Swagger的诞生(2010-2014) 核心…...
MySQL账号权限管理指南:安全创建账户与精细授权技巧
在MySQL数据库管理中,合理创建用户账号并分配精确权限是保障数据安全的核心环节。直接使用root账号进行所有操作不仅危险且难以审计操作行为。今天我们来全面解析MySQL账号创建与权限分配的专业方法。 一、为何需要创建独立账号? 最小权限原则…...
SiFli 52把Imagie图片,Font字体资源放在指定位置,编译成指定img.bin和font.bin的问题
分区配置 (ptab.json) img 属性介绍: img 属性指定分区存放的 image 名称,指定的 image 名称必须是当前工程生成的 binary 。 如果 binary 有多个文件,则以 proj_name:binary_name 格式指定文件名, proj_name 为工程 名&…...
