使用 Ollama 搭建本地大模型

简介

Ollama 是一个开源项目,可用于部署本地大语言模型,支持众多的开源大模型,支持个人电脑。有了 Ollama,我们就可以在本地服务器或者个人电脑体验大语言模型或者进行大语言模型的开发了。

官方网址:https://ollama.com/
开源仓库:https://github.com/ollama/ollama

安装

Ollama 支持多种安装方式。

直接安装

直接安装支持 Linux、Mac 和 Windows 操作系统。可以从官方网站或者开源仓库直接下载安装包,下载后直接安装即可。

例如,在 Linux 上安装。

# 1. 使用安装脚本
curl -fsSL https://ollama.com/install.sh | sh
# 2. 下载解压安装
curl -fsSL https://ollama.com/download/ollama-linux-amd64.tgz | sudo tar zx -C /usr

Docker 安装

Ollama 也提供了 Docker 镜像,从镜像源拉取即可。

docker pull ollama/ollama

启动仅 CPU 模式。

docker run -d -v ollama:/root/.ollama -p 11434:11434 --name ollama ollama/ollama

也支持 GPU,需要安装相关的组件,详细可参考官方文档

使用

下载大模型

使用 run 子命令下载大模型,例如我们可以下载开源的千问 2 大模型。

ollama pull qwen2

这里可查看官方支持的大语言模型。

查看大模型

使用 list 子命令可以查看本地已下载的大模型。

ollama list

在这里插入图片描述

show 子命令可查看某个大模型的详细信息。

ollama show qwen2

在这里插入图片描述

大模型管理

cp 可以用来复制模型,rm 可以删除模型。

# 复制大模型
ollama cp qwen2 qwen2-test
# 删除大模型
ollama rm qwen2

聊天

使用 run 命令可启动命令行聊天窗口,可直接提问。

ollama run qwen2

在这里插入图片描述

运行服务

serve 子命令启动一个 Web 服务,可通过 API 接口与大模型交互,默认端口 11434。如果是直接安装的,Ollama 会注册为服务,无需手动启动。例如,在 CentOS Linux 系统上,Ollama 会使用 systemd 注册为服务,使用 systemctl 进行管理。

在这里插入图片描述

使用 ps 子命令可查看已经运行的大模型。

ollama ps

在这里插入图片描述

配置

Ollama 服务默认仅支持本地请求,如果需要在服务器上部署,通过局域网调用,需要配置 OLLAMA_HOST 环境变量。

OLLAMA_HOST=0.0.0.0:11434 ollama serve

如果使用了 systemd 配置服务,需要修改配置文件 /etc/systemd/system/ollama.service

vim /etc/systemd/system/ollama.service

在 [Service] 段下增加如下配置。

Environment="OLLAMA_HOST=0.0.0.0:11434"

然后载入配置并重启。

systemctl daemon-reload
systemctl restart ollama

接口请求

接下来我们就可以开始大语言模型的探索了。服务启动后就可以使用 curl 或其他工具通过 API 接口访问大语言模型了。

curl http://localhost:11434/api/generate -d '{"model":"qwen2", "prompt":"什么是大语言模型?", "stream": false}'

在这里插入图片描述

支持众多的 API 接口,可查看官方文档

也支持其他框架的整合,如 LangChain。

需要先安装依赖 pip install langchain langchain-community langchain-ollama

from langchain_ollama import ChatOllama

# 指定服务地址
base_url = 'http://localhost:11434'
# 指定模型名称
llm_model = 'qwen2'
# 创建聊天模型
llm = ChatOllama(base_url=base_url, model=llm_model, temperature=0.3)
# 提问内容
message = [('human', '什么是大语言模型?')]
response = llm.invoke(message)
print(response)

会得到类似如下的返回。

content='大语言模型(Large Language Model)是基于深度学习技术构建的复杂神经网络模型,专门用于生成和理解人类语言。这类模型通常包含数以十亿计甚至数百亿个参数,并在大规模文本数据集上进行训练,以便能够处理复杂的语义结构、上下文关联以及多种语言风格。\n\n大语言模型具有以下特点:\n\n1. **多模态能力**:一些大语言模型不仅限于文本生成,还能理解和生成图像、音频等其他类型的数据。\n2. **自回归性质**:它们通常采用自回归的方式进行训练和推理,即在生成序列时,每次预测下一个元素的概率分布依赖于前面已生成的元素。\n3. **大规模参数量**:大语言模型拥有庞大的参数数量,这使得它们能够学习到更复杂的语义关系和上下文信息。\n4. **预训练-微调模式**:许多大语言模型采用预训练(在大量无标注数据上进行)后,再针对特定任务进行微调的策略。这种模式允许模型在特定任务上获得更好的性能。\n\n大语言模型的应用非常广泛:\n\n1. **文本生成**:包括文章、故事、代码等自然语言内容的自动生成。\n2. **对话系统**:用于构建能够与人类进行流畅对话的聊天机器人或虚拟助手。\n3. **翻译**:实现多语言之间的自动翻译,提升跨语言沟通效率。\n4. **问答系统**:为用户提供准确的答案和信息检索服务。\n\n由于大语言模型的强大能力,它们在学术研究、商业应用以及日常生活中都扮演着越来越重要的角色。然而,这些模型也面临着诸如数据隐私、伦理问题、生成内容的准确性与偏见等挑战。' response_metadata={'model': 'qwen2', 'created_at': '2024-09-06T07:48:00.183978737Z', 'message': {'role': 'assistant', 'content': ''}, 'done_reason': 'stop', 'done': True, 'total_duration': 49740083626, 'load_duration': 26010956, 'prompt_eval_count': 13, 'prompt_eval_duration': 133304000, 'eval_count': 360, 'eval_duration': 49539022000} id='run-463714e2-2db8-48fa-a30b-da748b9991b3-0' usage_metadata={'input_tokens': 13, 'output_tokens': 360, 'total_tokens': 373}

Web UI

目前也有开源项目提供了 Ollama 的 Web UI,可以简化我们对 Ollama 的操作,可快速搭建聊天机器人。

open-webui
在这里插入图片描述

总结

Ollama 是一个非常强大的开源项目,通过它运行本地大模型的学习成本已经非常低。快来搭建自己的大模型服务吧!

如果有帮助的话请点赞、收藏哦。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值