Ollama大模型本地部署详解
大模型发展日益迅猛,作为普通开发人员,如何快速跟上节奏、把大模型应用到我们自己的产品中呢?这里给出一个解决方案,可以快速在本地部署一套大模型服务,并能通过多种方式进行应用。
目录
1. Ollama介绍
2. 安装
3. 基本使用
4. 通过python代码调用ollama上的大模型
5. 远程访问ollama
参考
1. Ollama介绍
Ollama 是一个开源的大型语言模型(LLM)服务工具,旨在简化在本地机器上部署和运行大型语言模型的过程。
总的来说,Ollama 通过其易用性、灵活性和高性能,为用户在本地部署和运行大型语言模型提供了一个优秀的解决方案,极大地降低了使用门槛,拓展了大型语言模型的应用范围。
2. 安装
* 需要科学上网
Ollama支持多种操作系统:macos、linux、windows。各个系统的安装方式如下:
下载并安装:https://ollama.com/download/Ollama-darwin.zip
curl -fsSL https://ollama.com/install.sh | sh
下载并安装:https://ollama.com/download/OllamaSetup.exe
安装完毕后,在命令行输入“ollama”或“ollama -h”能看到如下结果,则表明安装成功:
Large language model runner
Usage:
ollama [flags]
ollama [command]
Available Commands:
serve Start ollama
create Create a model from a Modelfile
show Show information for a model
run Run a model
stop Stop a running model
pull Pull a model from a registry
push Push a model to a registry
list List models
ps List running models
cp Copy a model
rm Remove a model
help Help about any command
Flags:
-h, --help help for ollama
-v, --version Show version information
Use "ollama [command] --help" for more information about a command.
3. 基本使用
安装完毕后,可以通过ollama run XXX来下载并启动一个大模型,或者只pull不启动。我们以run为例,拉取一个qwen2.5大模型来做个测试。
PS: Qwen2.5模型在阿里巴巴最新的大规模数据集上进行预训练,该数据集包含高达18万亿个标记。该模型支持最多128,000个标记,并具有多语言支持功能。
启动模型(如果尚未拉取,则会自动拉取改模型到本地):
ollama run qwen2.5
其他模型,比如deepseek,也可用类似方式拉取:
ollama run deepseek-r1:1.5b
更多模型可参考:Ollama。
下面是与qwen2.5的一次简单对话:
>>> 你好
你好!有什么我可以帮助你的吗?
>>> 你是谁
我是Qwen,一个由阿里云开发的语言模型助手。我被设计用来提供信息、回答问题和协
助各种任务。有什么我可以帮忙的吗?
>>> 你能做什么
当然可以!我能够帮助你完成多种任务,包括但不限于:
1. **问答与知识查询**:我可以为你提供百科全书式的知识,帮助解答各类问题。
2. **撰写文本**:无论是文章、故事、信件还是其他类型的文本,都可以请你来帮忙
润色或创作。
3. **编程与技术咨询**:对于编程问题和技术咨询,我也可以提供支持和建议。
4. **学习辅助**:我可以解释复杂的概念,帮助你更好地理解课程内容。
5. **日常生活建议**:从旅行建议到健康小贴士,我可以提供一些建议。
请告诉我你需要什么帮助或想要了解的内容,我会尽力协助你!
>>> 使用C++写一个找质数的代码
当然可以!下面是一个用C++编写的简单程序,用于查找指定范围内的所有质数。我们
将实现一个函数 `isPrime` 来判断一个数是否是质数,并在主函数中打印出2到100之
间的所有质数。
```cpp
#include <iostream>
#include <cmath>
// 判断一个数是否为质数
bool isPrime(int num) {
if (num <= 1) return false; // 小于或等于1的不是质数
if (num == 2) return true; // 2是唯一的偶数质数
if (num % 2 == 0) return false; // 能被2整除的数不是质数
for (int i = 3; i <= sqrt(num); i += 2) {
if (num % i == 0)
return false;
}
return true;
}
// 打印指定范围内的所有质数
void printPrimes(int start, int end) {
std::cout << "Prime numbers between " << start << " and " << end << "
are: ";
for (int i = start; i <= end; ++i) {
if (isPrime(i)) {
std::cout << i << " ";
}
}
std::cout << std::endl;
}
int main() {
// 指定范围
int start = 2, end = 100;
// 打印指定范围内的所有质数
printPrimes(start, end);
return 0;
}
```
### 解释
1. **`isPrime` 函数**:
- 判断一个数是否为质数。
- 首先检查是否小于或等于1,如果是则返回 `false`。
- 检查是否为2(唯一的偶数质数),如果是则返回 `true`。
- 排除所有能被2整除的奇数。
- 从3开始逐个检查奇数因子,如果存在,则该数不是质数。
2. **`printPrimes` 函数**:
- 打印指定范围内的所有质数。
- 使用 `isPrime` 函数判断每个数是否为质数,并打印结果。
3. **主函数 (`main`)**:
- 指定查找的起始和结束范围(这里是2到100)。
- 调用 `printPrimes` 函数来输出结果。
你可以将这段代码复制到你的C++开发环境中运行,它会打印出2到100之间的所有质数
。如果你有任何其他需求或问题,请告诉我!
我本次用的显卡是3070Ti,实际使用发现速度停快的,几乎都是秒出结果。
其会自动利用本地的计算设备,从下面的图也能看到占了我5G+的显存:
4. 通过python代码调用ollama上的大模型
通过ollama将大模型拉取到本地后,还可以通过对应的python库来调用大模型,这样就可以实现将大模型集成到其他应用当中的目的了。
首先,在python环境中安装库:
pip install ollama
然后,就可以写Python代码来调用大模型进行推理了(注意:里面的model参数用于指定你想要调用的模型名称):
from ollama import chat
from ollama import ChatResponse
response: ChatResponse = chat(model='qwen2.5', messages=[
{
'role': 'user',
'content': '天为什么是蓝色的?',
},
])
print(response['message']['content'])
# or access fields directly from the response object
print(response.message.content)
上面是直接一次性响应,对于答案较长且需要实时响应的场景,我们需要启用流式响应。通过设置stream=True可以启用响应流:
from ollama import chat
stream = chat(
model='qwen2.5',
messages=[{'role': 'user', 'content': '天为什么是蓝色的?'}],
stream=True,
)
for chunk in stream:
print(chunk['message']['content'], end='', flush=True)
更多用法,可以参考:GitHub – ollama/ollama-python: Ollama Python library
5. 远程访问ollama
通常我们需要将ollama部署到一台服务器上,然后其他的电脑远程访问。这时,需要对服务器作一定的设置,因为默认的ollama服务只在本地可访问。
# 打开并编辑Ollama的systemd服务文件
# 1. 打开ia
sudo systemctl edit ollama.service
# 2. 添加如下内容; 注意,这一步需要在“### Anything between here and the comment below will become the contents of the drop-in file”下面,“### Edits below this comment will be discarded”前面
[Service]
Environment="OLLAMA_HOST=0.0.0.0:11434"
# 3. 重启服务
sudo systemctl daemon-reload
sudo systemctl restart ollama
# 4. 防火墙设置
sudo ufw allow 11434/tcp
经过上面步骤后,可以在其他电脑上通过访问“http://<Ubuntu服务器的IP地址>:11434
”来验证一下是否能够正常连接服务器。若出现“Ollama is running”字样,则表明OK。
参考
https://ollama.com/
https://ollama.com/search
GitHub – ollama/ollama-python: Ollama Python library
作者:AICVHub