llm · 2025-03-04 0

docker 搭建 ollama 和 deepseek

工具

  1. ollama:用于下载和管理模型
  2. DeepSeek-R1:是要使用的 LLM模型
  3. Nomic-Embed-Text向量模型: 用于将文本库进行切分,编码,转换进入向量库

一、启动 ollama

1.拉取镜像

docker pull ollama/ollama:0.5.13-rc6

2.配置 Docker 使用 GPU

1) 安装 nvidia-container-toolkit

若使用 GPU,使用的是 Nvidia GPU,需安装 nvidia-container-toolkit

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
apt-get update
apt-get install -y nvidia-container-toolkit

2) 配置 Docker 使用 Nvidia driver

nvidia-ctk runtime configure --runtime=docker
systemctl restart docker

3.启动容器

1) docker run 启动

只使用 CPU

docker run -d -v ollama:/root/.ollama -p 11434:11434 --name ollama_1 ollama/ollama:0.5.13-rc6

若使用 GPU

docker run -d --gpus=all -v ollama:/root/.ollama -p 11434:11434 --name ollama_1 ollama/ollama:0.5.13-rc6

2) docker compose 启动

docker-compose.yml

version: "3"

services:
  ollama1:
    image: ollama/ollama:0.5.13-rc6
    container_name: ollama_1
    restart: no
    ports:
      - 11434:11434
    volumes:
      - "./.ollama:/root/.ollama"
    deploy:
      resources:
        reservations:
          devices:
            - driver: nvidia
              count: all
              capabilities: [gpu]

二、安装 deepseek-r1

1.安装 deepseek-r1:7b

ollama run deepseek-r1:7b

2.安装 nomic-embed-text

nomic-embed-text 模型是一个强大的嵌入式文本处理工具

ollama pull nomic-embed-text

3.查看模型

root@509d39be4053:/# ollama list
NAME                       ID              SIZE      MODIFIED     
nomic-embed-text:latest    0a109f422b47    274 MB    26 hours ago    
deepseek-r1:7b             0a8c26691023    4.7 GB    26 hours ago    
deepseek-r1:1.5b           a42b25d8c10a    1.1 GB    26 hours ago
root@509d39be4053:/# ollama ps
NAME              ID              SIZE      PROCESSOR          UNTIL              
deepseek-r1:7b    0a8c26691023    6.1 GB    58%/42% CPU/GPU    4 minutes from now

4.构建本地知识库

初期接触LLM即大语言模型,觉得虽然很强大,但是有时候AI会一本正经的胡说八道,这种大模型的幻觉对于日常使用来说具有很大的误导性,特别是如果我们要用在生成环境下,由于缺少精确性而无法使用。 为什么会造成这种结果那,简单来说就是模型是为了通用性设计的,缺少相关知识,所以导致回复的结果存在胡说八道的情况,根据香农理论,减少信息熵,就需要引入更多信息。

从这个角度来说,就有两个途径,一是重新利用相关专业知识再次训练加强模型,或进行模型微调; 模型训练的成本是巨大的,微调也需要重新标记数据和大量的计算资源,对于个人来说基本不太现实; 二是在问LLM问题的时候,增加些知识背景,让模型可以根据这些知识背景来回复问题;后者即是知识库的构建原理了。

有个专门的概念叫RAG(Retrieval-Augmented Generation),即检索增强生成,是一种结合检索技术和生成模型的技术框架,旨在提升模型生成内容的准确性和相关性。其核心思想是:在生成答案前,先从外部知识库中检索相关信息,再将检索结果与用户输入结合,指导生成模型输出更可靠的回答。

简单概述,利用已有的文档、内部知识生成向量知识库,在提问的时候结合库的内容一起给大模型,让其回答的更准确,它结合了信息检索和大模型技术。

这样做有什么好处那?

  1. 由于日常的业务知识是保存到本地的,所以减少信息泄露的风险;
  2. 由于提问结合了业务知识,所以减少了模型的幻觉,即减少了模型的胡说八道;
  3. 模型的回复结合了业务知识和实时知识,所以实时性可以更好;
  4. 不用重新训练模型,微调模型降低了成本;

三、ollama 可视化

1.page-assist

可安装 google 浏览器插件,下载地质 https://github.com/n4ze3m/page-assist/releases

Ollama 设置:
Ollama

RAG 设置:
RAG

使用:
使用

四、GPU 使用情况

使用 nvidia-smi 查看 GPU 使用

zxm@zxm-pc:~$ nvidia-smi
Tue Mar  4 23:29:00 2025       
+---------------------------------------------------------------------------------------+
| NVIDIA-SMI 535.183.01             Driver Version: 535.183.01   CUDA Version: 12.2     |
|-----------------------------------------+----------------------+----------------------+
| GPU  Name                 Persistence-M | Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp   Perf          Pwr:Usage/Cap |         Memory-Usage | GPU-Util  Compute M. |
|                                         |                      |               MIG M. |
|=========================================+======================+======================|
|   0  NVIDIA GeForce GTX 1060 3GB    Off | 00000000:01:00.0  On |                  N/A |
| 35%   35C    P0              29W / 120W |    266MiB /  3072MiB |      1%      Default |
|                                         |                      |                  N/A |
+-----------------------------------------+----------------------+----------------------+

+---------------------------------------------------------------------------------------+
| Processes:                                                                            |
|  GPU   GI   CI        PID   Type   Process name                            GPU Memory |
|        ID   ID                                                             Usage      |
|=======================================================================================|
|    0   N/A  N/A      1781      G   /usr/lib/xorg/Xorg                          149MiB |
|    0   N/A  N/A      1927      G   /usr/bin/gnome-shell                         30MiB |
|    0   N/A  N/A     73461      G   ...seed-version=20250228-151446.092000       82MiB |
+---------------------------------------------------------------------------------------+

ollama 使用 GPU

zxm@zxm-pc:~$ nvidia-smi
Tue Mar  4 23:31:21 2025       
+---------------------------------------------------------------------------------------+
| NVIDIA-SMI 535.183.01             Driver Version: 535.183.01   CUDA Version: 12.2     |
|-----------------------------------------+----------------------+----------------------+
| GPU  Name                 Persistence-M | Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp   Perf          Pwr:Usage/Cap |         Memory-Usage | GPU-Util  Compute M. |
|                                         |                      |               MIG M. |
|=========================================+======================+======================|
|   0  NVIDIA GeForce GTX 1060 3GB    Off | 00000000:01:00.0  On |                  N/A |
| 35%   43C    P2              78W / 120W |   2339MiB /  3072MiB |     18%      Default |
|                                         |                      |                  N/A |
+-----------------------------------------+----------------------+----------------------+

+---------------------------------------------------------------------------------------+
| Processes:                                                                            |
|  GPU   GI   CI        PID   Type   Process name                            GPU Memory |
|        ID   ID                                                             Usage      |
|=======================================================================================|
|    0   N/A  N/A      1781      G   /usr/lib/xorg/Xorg                          149MiB |
|    0   N/A  N/A      1927      G   /usr/bin/gnome-shell                         31MiB |
|    0   N/A  N/A     73461      G   ...seed-version=20250228-151446.092000       78MiB |
|    0   N/A  N/A     75704      C   /usr/bin/ollama                            2074MiB |
+---------------------------------------------------------------------------------------+