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

相关推荐
疯狂成瘾者16 小时前
语义分块提升RAG检索精度
python
小陈工18 小时前
Python Web开发入门(十七):Vue.js与Python后端集成——让前后端真正“握手言和“
开发语言·前端·javascript·数据库·vue.js·人工智能·python
A__tao1 天前
Elasticsearch Mapping 一键生成 Java 实体类(支持嵌套 + 自动过滤注释)
java·python·elasticsearch
研究点啥好呢1 天前
Github热门项目推荐 | 创建你的像素风格!
c++·python·node.js·github·开源软件
迷藏4941 天前
**发散创新:基于Rust实现的开源合规权限管理框架设计与实践**在现代软件架构中,**权限控制(RBAC)** 已成为保障
java·开发语言·python·rust·开源
小超同学你好1 天前
面向 LLM 的程序设计 6:Tool Calling 的完整生命周期——从定义、决策、执行到观测回注
人工智能·语言模型
功德+n1 天前
Linux下安装与配置Docker完整详细步骤
linux·运维·服务器·开发语言·docker·centos
明日清晨1 天前
python扫码登录dy
开发语言·python
bazhange1 天前
python如何像matlab一样使用向量化替代for循环
开发语言·python·matlab
人工干智能1 天前
科普:python中你写的模块找不到了——`ModuleNotFoundError`
服务器·python