[toc]
Ollama笔记

Ollama 介绍
Ollama 是一个开源的大型语言模型(LLM)平台,旨在让用户能够轻松地在本地运行、管理和与大型语言模型进行交互。
Ollama 核心功能和特点
- 多种语言模型支持 Ollama 提供了多种开箱即用的模型,包括常见的 GPT、BERT 等大型语言模型。用户可以轻松加载并使用这些模型。
- 本地部署与离线使用 Ollama 允许开发者在本地计算环境中运行模型。这意味着可以脱离对外部服务器的依赖,保证数据隐私。
- 支持模型微调和自定义 用户还可以在Ollama上进行模型微调。根据自己的特定需求,开发者可以使用自己收集的数据对模型进行再训练,从而优化模型的性能和准确度。
- 跨平台支持 Ollama 支持在多个操作系统上运行,包括 Windows、macOS 和 Linux。这样无论是开发者在本地环境调试,还是企业在生产环境部署,都能得到一致的体验。
- 开放源码与社区支持 Ollama 是一个开源项目,这意味着开发者可以查看源代码,进行修改和优化,也可以参与到项目的贡献中。此外,Ollama 有一个活跃的社区,开发者可以从中获取帮助并与其他人交流经验。
Ollama 的使用场景
- 内容创作:帮助作家、记者、营销人员快速生成高质量的内容,例如博客文章、广告文案等。
- 编程辅助:帮助开发者生成代码、调试程序或优化代码结构。
- 教育和研究:辅助学生和研究人员进行学习、写作和研究,例如生成论文摘要或解答问题。
- 跨语言交流:提供高质量的翻译功能,帮助用户打破语言障碍。
- 个人助手:作为一个智能助手,帮助用户完成日常任务,例如撰写邮件、生成待办事项等。
简而言之,Ollama本身不是一个大语言模型,而是一个大语言模型管理平台。Ollama提供了方便的界面和 API,从而让用户能够轻松地在本地运行、管理和与各种大型语言模型进行交互。类如 Docker 之于容器,Ollama 之于大语言模型。
Ollama 安装
Ollama 支持多种操作系统,包括 macOS、Windows、Linux 以及通过 Docker 容器运行。
Ollama 对硬件要求不高,旨在让用户能够轻松地在本地运行、管理和与大型语言模型进行交互。
windows 安装
直接登录 Ollama官网 https://ollama.com/ ,下载 Windows 版本的安装程序。
下载完成后,双击安装程序并按照提示完成安装即可。
安装完成后的运行截图
安装完成后的命令行验证截图 
docker 安装
也可以通过 Docker 安装 Ollama。
官方 Docker 镜像 ollama/ollama 可在 Docker Hub 上获取:https://hub.docker.com/r/ollama/ollama
# 下载 ollama 镜像
docker pull ollama/ollama
# 运行 ollama 容器
docker run -p 11434:11434 ollama/ollamaollma 基本概念
模型(Model)
模型通常是由大量参数构成的神经网络,通过对大量文本数据进行训练,能够学习语言规律并进行高效的推理。
在 Ollama 中,模型是核心组成部分。它们是经过预训练的机器学习模型,能够执行不同的任务,例如文本生成、文本摘要、情感分析、对话生成等。
Ollama 支持多种流行的预训练模型,常见的模型有:
- deepseek-v3:深度求索提供的大型语言模型,专门用于文本生成任务。
- LLama2:Meta 提供的大型语言模型,专门用于文本生成任务。
- GPT:OpenAI 的 GPT 系列模型,适用于广泛的对话生成、文本推理等任务。
- BERT:用于句子理解和问答系统的预训练模型。
- 其他自定义模型:用户可以上传自己的自定义模型,并利用 Ollama 进行推理。
Ollama模型库
Ollama 模型库是一个集中存储和管理大型语言模型的平台。它提供了一个统一的界面,让用户能够方便地浏览、下载、上传和管理各种模型。
用户可以在 Ollama 模型库中查找并选择适合自己任务的模型。例如,用户可以根据模型的大小、性能和任务类型来筛选模型。
Ollama 模型库还提供了模型的元数据信息,例如模型的训练数据、模型的参数数量、模型的性能指标等。这些信息对于用户选择和评估模型非常有帮助。
任务(Task)
用户可以在Ollama中加载不同的模型来完成各种任务。
每个任务对应模型的不同应用场景,主要包括但不限于以下几种:
- 对话生成:通过与用户交互生成自然的对话回复。
- 文本生成:根据给定的提示生成自然语言文本,例如写文章、生成故事等。
- 情感分析:分析给定文本的情感倾向(如正面、负面、中立)。
- 文本摘要:将长文本压缩为简洁的摘要。
- 翻译:将文本从一种语言翻译成另一种语言。
推理(Inference)
推理是指在已训练的模型上进行输入处理,生成输出的过程。
推理过程
- 输入:用户向模型提供文本输入,可以是一个问题、提示或者对话内容。
- 模型处理:模型通过内置的神经网络根据输入生成适当的输出。
- 输出:模型返回生成的文本内容,可能是回复、生成的文章、翻译文本等。
微调(Fine-tuning)
Ollama 支持微调功能,用户可以使用自己的数据集对预训练模型进行微调,来定制模型的输出。
微调有助于模型在处理特定领域问题时表现得更加精确和高效。
微调过程
- 准备数据集:用户准备特定领域的数据集,数据格式通常为文本文件或 JSON 格式。
- 加载预训练模型:选择一个适合微调的预训练模型,例如 LLama2 或 GPT 模型。
- 训练:使用用户的特定数据集对模型进行训练,使其能够更好地适应目标任务。
- 保存和部署:训练完成后,微调过的模型可以保存并部署,供以后使用。
Ollama 相关命令
当我们成功安装好ollama后,除了通过界面来进行操作,也可以通过命令行来进行操作。
下面是常用的ollama命令
# 查询ollama版本
ollama v
ollama --version
# 显示本地所有已下载的模型。
ollama list 或者 ollama ls
# 查询进程。显示当前正在运行的模型及显存占用
ollama ps
# 查看任何命令的帮助信息。
ollama help
# 从ollama的远程仓库中下载模型到本地环境中,但不运行。
ollama pull <model-name>
# 例如 下载 llama3 模型
ollama pull llama3
# 删除模型
ollama rm <model-name> 或者 ollama remove <model-name>
# 例如 删除 llama3 模型
ollama rm llama3
# 运行本地环境的模型。如果本地不存在模型,则先下载后运行
# run 会在运行后,自动进入模型交互模式
ollama run <model-name>
# 例如 运行 llama3 模型
ollama run llama3
# 复制本地环境的模型并重命名,主要用于测试
ollama cp <model-name> <new-model-name>
# 例如 复制 llama3 模型并重命名为 llama3-test
ollama cp llama3 llama3-test
# 查看模型元数据
ollama show <model-name>
# 例如 查看 llama3 模型元数据
ollama show llama3
# 根据 Modelfile文件 创建自定义模型(高级)。
ollama create <model-name> -f <Modelfile>
# 例如 创建一个基于 Modelfile文件 的自定义模型 my-bot
ollama create my-bot -f ./Modelfile模型交互
Ollama 提供了多种方式与模型进行交互,其中最常见的就是通过命令行进行交互操作。
使用 ollama run 命令启动模型并进入交互模式。
# 例如 运行 llama3 模型,并进入命令行交互模式
> ollama run llama3
>>> 你好,我是一个基于ollama的模型 ...............在命令行交互模式中,用户可以输入文本并按下回车键来与模型进行交互。模型会根据输入生成相应的输出。
如果想要退出命令行交互模式,用户可以输入 /bye 或按下 Ctrl+d 退出。
命令行交互模式下的交互命令
/bye:退出命令行交互模式。/clear:清空当前的上下文记忆(开启一段新的对话)。/help:显示帮助信息,包括可用的交互命令。/show info:查看当前模型的详细参数信息。
通过 Modelfile文件 创建自定义模型
通过 Modelfile文件 定义自定义提示词或系统指令,可以使模型在交互中遵循特定规则。
- 创建一个 Modelfile 文件
FROM llama3
SYSTEM "你是一个编程助手,专门帮助用户编写代码。"- 使用 ollama create 命令创建自定义模型
# 例如 创建一个基于 Modelfile文件 的自定义模型 ollama-coder
ollama create ollama-coder -f ./Modelfile- 运行自定义模型
# 例如 运行 ollama-coder 模型,并进入命令行交互模式
> ollama run ollama-coder
>>> 你好,我是一个基于ollama的编程助手 ...............Modelfile文件指令
FROM <model>:基础模型
SYSTEM "xxx":设定系统提示
PARAMETER key=value:设定默认参数
TEMPLATE "xxx":自定义 Chat 模板
LICENSE "xxx":设置 License
ADAPTER <file> / WEIGHTS <file>:加载 LoRA 或额外权重Ollama API接口
当Ollama 运行在服务器端时,用户可以通过 API接口 来与Ollama进行交互。
启动 Ollama 服务
在使用 Ollama API 之前,需要确保 Ollama 服务正在运行。可以通过以下命令启动Ollama服务
# 启动 Ollama 服务
ollama serve默认情况下,Ollama 成功安装后,服务会默认运行在 http://localhost:11434。
Ollama API 文档
具体的API文档可以参考Ollama的官方文档:Ollama API 文档
下面给出一个简单的示例。
Python 使用 requests 库与 Ollama API 交互。
import requests
## 生成文本
def generate_text():
response = requests.post(
"http://localhost:11434/api/generate",
json={
"model": "deepseek-coder",
"prompt": "你好,你能帮我写一段代码吗?",
"stream": False
}
)
print(response.json())
# 多轮对话
def multi_round_dialogue():
response = requests.post(
"http://localhost:11434/api/chat",
json={
"model": "deepseek-coder",
"messages": [
{
"role": "user",
"content": "你好,你能帮我写一段 Python 代码吗?"
}
],
"stream": False
}
)
print(response.json())