当前位置: 首页 > news >正文

ubuntu中使用ollama部署本地deepseek

ubuntu中使用ollama部署本地deepseek

一、安装Docker

1、先卸载旧版,如果没有的话,就不用执行了,直接第二步。

apt-get remove docker docker-engine docker.io containerd runc

2、在终端输入

apt update
apt-get install ca-certificates curl gnupg lsb-release

3、安装证书

curl -fsSL http://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -

4、写入软件源信息

sudo add-apt-repository "deb [arch=amd64] http://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"

5、安装

sudo apt-get install docker-ce docker-ce-cli containerd.io

中途出现问题的话,使用 sudo apt-get update 试试

二、安装ollama

docker中安装ollama

docker pull ollama/ollama

使用CPU运行

docker中仅使用CPU运行ollama

docker run -d --mount type=bind,source=/home/ubuntu,target=/root -p 11434:11434 --name ollama ollama/ollama

使用GPU运行

配置仓库
curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey \
    | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg
curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list \
    | sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' \
    | sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list
sudo apt-get update
安装nvidia-container-toolkit

sudo apt-get install -y nvidia-container-toolkit

国内镜像好像没有这个包,若没有梯子可以手动去下载 https://mirror.cs.uchicago.edu/nvidia-docker/libnvidia-container/stable/

在这里插入图片描述

根据自己的ubuntu版本进行选择

https://mirror.cs.uchicago.edu/nvidia-docker/libnvidia-container/stable/ubuntu20.04/amd64/

需要下载如何几个包

  1. nvidia-container-toolkit-base_1.13.5-1_amd64.deb
  2. libnvidia-container1_1.13.5-1_amd64.deb
  3. libnvidia-container-tools_1.13.5-1_amd64.deb
  4. nvidia-container-toolkit_1.13.5-1_amd64.deb
# 按顺序安装即可
sudo apt install -y ./nvidia-container-toolkit/nvidia-container-toolkit-base_1.13.5-1_amd64.deb
sudo apt install -y ./nvidia-container-toolkit/libnvidia-container1_1.13.5-1_amd64.deb 
sudo apt install -y ./nvidia-container-toolkit/libnvidia-container-tools_1.13.5-1_amd64.deb 
sudo apt install -y ./nvidia-container-toolkit/nvidia-container-toolkit_1.13.5-1_amd64.deb 
docker中使用GPU运行ollama

docker run -d --gpus=all --mount type=bind,source=/home/ubuntu,target=/root -p 11434:11434 --name ollama ollama/ollama

三、准备DeepSeek模型和运行

从modelscope下载模型

打开modelscope网站,搜索DeepSeek模型,选择gguf格式的模型下载。

https://modelscope.cn/home

在这里插入图片描述

pip install modelscope

# 下载gguf模型文件到/home/ubuntu/DeepSeek-R1-Distill-Qwen-1.5B-GGUF目录
modelscope download --model unsloth/DeepSeek-R1-Distill-Qwen-1.5B-GGUF DeepSeek-R1-Distill-Qwen-1.5B-Q8_0.gguf --local_dir /home/ubuntu/DeepSeek-R1-Distill-Qwen-1.5B-GGUF

ollama使用gguf模型,需要准备一个Modelfile.txt文件

文件中写入FROM + 模型路径

FROM /home/ubuntu/ollama/DeepSeek-R1-Distill-Qwen-1.5B/DeepSeek-R1-Distill-Qwen-1.5B-Q4_K_M.gguf

使用ollama创建模型

# docker接入ollama容器中
docker exec -it ollama /bin/bash

ollama create DeepSeek-R1-Distill-Qwen-1.5B -f Modelflie.txt

运行模型

ollama run DeepSeek-R1-Distill-Qwen-1.5B

拷贝ollama下载好的模型到ollama目录下

若有其他人通过ollama已经下载好的模型,可以直接拷贝到ollama目录下

在这里插入图片描述

由于我们在运行ollama容器时,挂载了容器的/root目录到宿主的/home/ubuntu,所以可以直接拷贝文件。

此时,docker容器中ollama的models目录在宿主的/home/ubuntu/.ollama/目录下。我们将下载好的models文件夹拷贝进去即可

cp -r /home/ubuntu/models/ /home/ubuntu/.ollama/

或者使用rsync命令拷贝文件夹,忽略已存在的文件。

# 忽略已存在的文件,拷贝文件夹
# -a:归档模式,递归拷贝并保留符号链接、权限、时间戳等。
# -v:详细模式,显示拷贝过程中的详细信息。
# --ignore-existing:跳过目标位置中已存在的文件。
rsync -av --ignore-existing /source/directory/ /target/directory/

运行模型

# 查看模型列表
ollama list

# 运行模型
ollama run DeepSeek-R1-Distill-Qwen-1.5B

四、使用接口进行访问

/api/chat 和 /api/generate 这两个API端点的主要区别在于它们的设计目的和处理上下文的方式:

/api/generate

用途: 这个端点主要用于生成单个文本片段。它接收输入并返回基于该输入的模型生成的文本,通常不考虑之前的消息历史或对话上下文。

功能: 它可以用于各种生成任务,如文章创作、代码生成、故事编写等,其中每次请求都是独立的,不依赖于前一次请求的结果。

# POST
10.0.113.101:11434/api/generate

# 请求体json
{
  "model": "DeepSeek-R1-Distill-Qwen-1.5B",
  "prompt": "你好,我是",
  "stream": false
}

/api/chat

用途: 这个端点用于支持对话式的交互。它通常需要一个消息列表作为输入,以维护对话的历史和上下文,确保模型能够理解并响应连续的对话。

功能: 它适合于创建聊天机器人、问答系统或任何需要多轮对话的应用场景。通过跟踪对话历史,模型可以提供更加连贯和情境相关的响应。

# POST
10.0.113.101:11434/api/chat

# 请求体json
{
    "model": "deepseek-r1:70b",
    "messages": [
        { "role": "assistant", "content": "ai对测绘行业有哪些影响"}
    ],
    "stream": false
}

总结而言,/api/generate 更适合一次性生成任务,而 /api/chat 更适合需要持续对话和上下文记忆的任务。

主要事项:

ollama把本地大模型加载到内存后,一段时间不使用,ollama就会把这个大模型从内存中赶出去,为了释放内存。

这会导致每次请求都需要重新加载模型,这会导致请求时间较长。

解决办法:

方法一:使用ollama的api接口访问时,设置"keep_alive":-1

方法二:在 /etc/systemd/system/ollama.service 中加入 Environment=“OLLAMA_KEEP_ALIVE=-1”

ollama.service文件内容:

[Service]
ExecStart=/usr/bin/ollama serve
User=ollama
Group=ollama
Restart=always
RestartSec=3
Environment="OLLAMA_KEEP_ALIVE=-1"

修改后执行命令:

sudo systemctl daemon-reload
sudo systemctl enable ollama

docker环境中可以使用docker compose进行部署配置,在docker-compose.yml文件中加入环境变量即可。

version: "3.9"
services:
  ollama:
    image: ollama/ollama
    container_name: ollama
    ports:
      - "11434:11434"
    volumes:
      - /home/ubuntu:/home/ubuntu
      - /home/ubuntu:/root
    environment:
      - OLLAMA_KEEP_ALIVE=-1

五、使用AnythingLLM进行交互

# docker中安装AnythingLLM
docker pull mintplexlabs/anythingllm

# docker中运行AnythingLLM
docker run -d --name anythingllm --mount type=bind,source=/home/ubuntu,target=/root -p 3001:3001 mintplexlabs/anythingllm

相关文章:

  • 在Spring Boot项目中接入DeepSeek深度求索,感觉笨笨的呢
  • SpringMVC(五)拦截器
  • 深度学习中LayerNorm与RMSNorm对比
  • Web安全:保护您的网站免受网络威胁
  • 2024下半年真题 系统架构设计师 案例分析
  • 将景区天气数据存储到Excel文件中
  • 【微服务】Nacos 配置动态刷新(简易版)(附配置)
  • 基于express+TS+mysql+sequelize的后端开发环境搭建
  • 深入理解 Python 中的 Socket 编程
  • GitHub:添加ssh密钥
  • 【文献阅读】DeepRAG:大语言模型的检索增强推理新范式
  • 【Springboot知识】开发属于自己的中间件健康监测HealthIndicate
  • Obsidian中Text Generate接入智谱清言报错:JSON parse error
  • 计算机视觉|一文读懂NeRF:为3D场景重建带来新突破
  • 系统架构设计师—论文解析—论文写作技巧
  • PowerBI实用技巧——案例十三 (根据所选日期,动态计算每年新客户数量)
  • uniapp-x 之useAttrs只读
  • Excel单元格中插入自定义超链接
  • ffmpeg面试题整理
  • 本地部署LLaMA-Factory
  • 泽连斯基启程前往土耳其
  • 十年磨一剑!上海科学家首次揭示宿主识别肠道菌群调控免疫新机制
  • 阿坝州委书记徐芝文已任四川省政府党组成员
  • 周启鸣加盟同济大学,曾任香港浸会大学深圳研究院院长
  • 特朗普访中东绕行以色列,专家:凸显美以利益分歧扩大
  • 库尔德工人党决定自行解散