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等等。

相关推荐
数据智能老司机13 分钟前
精通 Python 设计模式——SOLID 原则
python·设计模式·架构
c8i2 小时前
django中的FBV 和 CBV
python·django
c8i2 小时前
python中的闭包和装饰器
python
这里有鱼汤5 小时前
小白必看:QMT里的miniQMT入门教程
后端·python
TF男孩15 小时前
ARQ:一款低成本的消息队列,实现每秒万级吞吐
后端·python·消息队列
该用户已不存在20 小时前
Mojo vs Python vs Rust: 2025年搞AI,该学哪个?
后端·python·rust
站大爷IP1 天前
Java调用Python的5种实用方案:从简单到进阶的全场景解析
python
用户8356290780511 天前
从手动编辑到代码生成:Python 助你高效创建 Word 文档
后端·python
c8i1 天前
python中类的基本结构、特殊属性于MRO理解
python
muyun28001 天前
Docker 下部署 Elasticsearch 8 并集成 Kibana 和 IK 分词器
elasticsearch·docker·容器