Docker基于Ollama本地部署大语言模型

一、Ollama介绍

Ollama 是一个开源的大型语言模型(LLM)平台,旨在简化大型语言模型在本地环境中的运行、管理和交互。通过Ollama,用户可以轻松加载和使用各种预训练的语言模型,执行诸如文本生成、翻译、代码编写、问答等多种自然语言处理任务。本文将详细介绍如何使用Ollama和Docker在本地部署大型语言模型。

二、Ollama安装

2.1、拉取镜像

我们将使用Docker容器来安装Ollama。首先,从华为云的镜像仓库拉取Ollama镜像:

shell 复制代码
docker pull swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/ollama/ollama:rocm

2.2、运行容器

接下来,运行我们刚刚拉取的镜像,并将容器的11434端口映射到主机的11434端口。为了简化操作,这里不进行磁盘卷挂载。

shell 复制代码
docker run -d -p 11434:11434 --name ollama swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/ollama/ollama

运行成功后,可以通过访问localhost:11434来确认Ollama是否成功运行。

三、模型部署

我们可以使用Ollama指令直接下载并运行大型语言模型。这里,我们将演示如何使用GGUF文件加载阿里开源的Qwen2模型。

首先,从以下地址下载Qwen2模型:

Qwen2下载地址

下载完成后,将模型文件拷贝到Docker容器中

shell 复制代码
docker cp Qwen2-0.5B.Q3_K_M.gguf ollama:/

在拷贝的目录下创建Modelfile文件

shell 复制代码
docker exec -it ollama bash
vim Modelfile

在文件中指定gguf文件的地址

shell 复制代码
FROM ./Qwen2-0.5B.Q3_K_M.gguf

开始创建模型

shell 复制代码
ollama create qwen2 -f Modelfile

模型创建成功后,我们可以使用Ollama来管理模型,类似于Docker管理容器镜像。以下是一些常用的Ollama命令:

shell 复制代码
ollama serve         #启动ollama
ollama create        #从模型文件创建模型
ollama show          #显示模型信息
ollama run           #运行模型
ollama pull          #从注册表中拉取模型
ollama push          #将模型推送到注册表
ollama list          #列出模型
ollama cp            #复制模型
ollama rm            #删除模型
ollama help          #获取有关任何命令的帮助信息
ollama ps            #查看运行的模型
ollama list          #查看模型列表

运行我们创建的模型,进入会话终端。虽然模型运行成功,但效果可能不太理想(可能是模型文件的问题)。不过,这已经证明了我们在本地成功部署了Qwen2大型语言模型。

复制代码
ollama run qwen2

四、API接口调用

既然我们已经本地成功部署运行了大模型,现在我们使用python通过ollama的API接口来调用大模型。

4.1、本地调用

在本地环境中,我们可以使用Python中的Ollama模块来调用模型。首先,安装Ollama模块:

shell 复制代码
pip install ollama
python 复制代码
from ollama import chat
from ollama import ChatResponse

response = chat(model='qwen2', messages=[
  {
    'role': 'user',
    'content': '屁的化学成分是什么?',
  },
])
print(response['message']['content'])
print(response.message.content)

OK,这个结果就还行。

4.2、IP地址调用

在实际应用中,我们通常会将模型部署在云服务器上,并通过API接口发送HTTP请求来调用模型。以下是使用Python通过IP地址调用模型的示例代码:

python 复制代码
import requests

url = "http://localhost:11434/api/generate"
data = {
    "model": "qwen2",
    "prompt": "屁是由什么组成的?",
    "stream": False
}
response = requests.post(url, json=data)
data = response.json()
print(data["response"])

五、总结

通过本文,我们详细介绍了如何在本地使用Ollama和Docker部署大型语言模型。从镜像拉取、容器运行到模型部署和API调用,每一步都进行了详细的说明和演示。虽然模型效果不理想,但通过不断优化和调整,我们可以逐步提升模型的效果。例如LangChain等等。

相关推荐
Watermelo6173 分钟前
探究TOON的价值边界:比JSON更优的大模型友好数据格式?
数据结构·人工智能·语言模型·自然语言处理·数据挖掘·数据分析·json
萧鼎7 分钟前
深入解析 Python 的 Word 模板引擎:docxtpl 全面指南
开发语言·python·word
Yeats_Liao14 分钟前
昇腾910B与DeepSeek:国产算力与开源模型的架构适配分析
人工智能·python·深度学习·神经网络·机器学习·架构·开源
智航GIS16 分钟前
11.3 Pandas 模块功能概览
python·信息可视化·pandas
浩子智控17 分钟前
开源RPA选择
python·c#·软件工程
kszlgy19 分钟前
Day48 随机函数与广播机制
python
子午23 分钟前
【2026原创】昆虫识别系统~Python+深度学习+卷积算法+模型训练+人工智能
人工智能·python·深度学习
laplace012328 分钟前
agent模型基础
人工智能·语言模型·自然语言处理·agent·rag
nju_spy30 分钟前
动手学强化学习上交张伟楠(一)导论 + 多臂老虎机 MAB(ε-greedy+上置信界+汤普森采样)
人工智能·python·强化学习·actor-critic·多臂老虎机·汤普森采样·探索与利用
tjjucheng31 分钟前
专业做小程序定制开发的企业
python