deepseek-r1 671B满血版离线部署

在这里插入图片描述

可以在腾讯云上先按小时收费的方式,租一个小机器部署70b的练手

有偿部署可联系VX digo0924

部署671B可以用GT4型号
在这里插入图片描述
部署70B可以用GN10XP型号(推荐)
[图片]

模型权重文件联网下载(windows)

  1. 安装ollama(OllamaSetup.exe)
  2. 文件默认存储在(C:\Users\用户名.ollama\models)目录下,如果C盘可用空间小于400GB,更换ollama默认存储位置
  3. 通过powershell运行以下脚本(.ps1),拉取模型权重。(定时中断稳定下载网速)
while ($true) {
    $modelExists = ollama list | Select-String "deepseek-r1:671b"
    if ($modelExists) {
        Write-Host "model is ready"
        break
    }

    Write-Host "download..."
    $process = Start-Process -FilePath "ollama" -ArgumentList "run", "deepseek-r1:671b" -PassThru -NoNewWindow

    Start-Sleep -Seconds 60

    try {
        Stop-Process -Id $process.Id -Force -ErrorAction Stop
        Write-Host "kill and restart..."
    }
    catch {
        Write-Host "error"
    }
}

基础环境

OS: CentOS 7.6
GCC版本:GCC 9+
Anaconda: 24.7.1
PYTHON:3.11.7
CUDA: 11.7
OLLAMA: 0.5.11

离线安装软件包

在这里插入图片描述

OLLAMA安装(sudo权限)

https://ollama.readthedocs.io/gpu/#linux
OLLAMA安装包(ollama-linux-amd64.tgz)拷贝到用户根目录

# 安装anaconda新环境, 一直yes,等待安装完成
chmod 777 Anaconda3-2024.02-1-Linux-x86_64.sh
./Anaconda3-2024.02-1-Linux-x86_64.sh

**!!!重启一个终端**

# 安装ollama包
# curl -L https://ollama.com/download/ollama-linux-amd64.tgz -o ollama-linux-amd64.tgz
sudo tar -C /usr -xzf ollama-linux-amd64.tgz

# 开始 Ollama:
ollama serve

# 设置启动目录
# OLLAMA_MODELS=/home/ollama/models ollama serve

# 在另一个终端中,验证 Ollama 是否正在运行:
ollama -v

添加 Ollama 为开机启动服务(推荐,暂时先不设置)

创建 Ollama 的用户和组:

sudo useradd -r -s /bin/false -U -m -d /usr/share/ollama ollama
sudo usermod -a -G ollama $(whoami)

在 /etc/systemd/system/ 目录下创建一个服务文件 ollama.service:

[Unit]
Description=Ollama Service
After=network-online.target
[Service]
ExecStart=/usr/bin/ollama serve
User=ollama
Group=ollama
Restart=always
RestartSec=3
Environment="PATH=$PATH"
# Environment="OLLAMA_HOST=0.0.0.0"
# Environment="OLLAMA_ORIGINS=*"
[Install]
WantedBy=default.target

然后启动服务:

sudo systemctl daemon-reload
sudo systemctl enable ollama

deepseek-r1 671B模型安装

模型导入(权重文件迁移)

# 将模型保存到/usr/share/ollama/.ollama目录下
unzip deepseek-r1-70b.zip -d /usr/share/ollama/.ollama/models/blobs

# /home/ollama/models/ 树结构如下
(base) /usr/share/ollama/.ollama$ tree /usr/share/ollama/.ollama/models/
/usr/share/ollama/.ollama/models/
├── blobs
│   ├── sha256-369ca498f347f710d068cbb38bf0b8692dd3fa30f30ca2ff755e211c94768150
│   ├── sha256-4cd576d9aa16961244012223abf01445567b061f1814b57dfef699e4cf8df339
│   ├── sha256-5e9a45d7d8b98eb61a65815d36008bfef6fd6ebad6f0be432fb61d83b70550f8
│   ├── sha256-6e4c38e1172f42fdbff13edf9a7a017679fb82b0fde415a3e8b3c31c6ed4a4e4
│   └── sha256-f4d24e9138dd4603380add165d2b0d970bef471fac194b436ebd50e6147c6588
└── manifests
    └── registry.ollama.ai
        └── library
            └── deepseek-r1
                └── 70b
# 
OLLAMA_MODELS=/usr/share/ollama/.ollama/models/ ollama serve

# 如果设置成系统服务,则重启
sudo systemctl restart ollama

# 重新打开一个终端,查看模型
ollama list

deepseek-r1:671b模型运行

# 运行deepseek-r1:671b
ollama run deepseek-r1:671b

服务端口安全暴露(推荐)

# CentOS/RHEL
# 仅暴露11434端口,使用 firewall-cmd
sudo firewall-cmd --permanent --add-port=11434/tcp --zone=public

sudo firewall-cmd --permanent --remove-port=11434/tcp --zone=public

sudo firewall-cmd --reload

API开放-Dify部署

docker安装(如有跳过)

# 选择版本进行下载,下载成功后解压docker包。
tar -zxvf docker-26.1.3.tgz

# 给docker执行文件赋予可执行权限
sudo chmod 755 -R docker

# 将解压出来的docker文件内容拷贝或者移动到 /usr/bin/目录下
cp docker/* /usr/bin/

# 使用 docker -v 或者 docker info 命令验证是否可以输出docker信息了。
docker -v

编辑配置文件

vim /etc/systemd/system/docker.service

添加内容:

[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
After=network-online.target firewalld.service
Wants=network-online.target
  
[Service]
Type=notify
# the default is not to use systemd for cgroups because the delegate issues still
# exists and systemd currently does not support the cgroup feature set required
# for containers run by docker
ExecStart=/usr/bin/dockerd -H unix:///var/run/docker.sock --selinux-enabled=false --default-ulimit nofile=65536:65536
ExecReload=/bin/kill -s HUP $MAINPID
# Having non-zero Limit*s causes performance problems due to accounting overhead
# in the kernel. We recommend using cgroups to do container-local accounting.
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity
# Uncomment TasksMax if your systemd version supports it.
# Only systemd 226 and above support this version.
#TasksMax=infinity
TimeoutStartSec=0
# set delegate yes so that systemd does not reset the cgroups of docker containers
Delegate=yes
# kill only the docker process, not all processes in the cgroup
KillMode=process
# restart the docker process if it exits prematurely
Restart=on-failure
StartLimitBurst=3
StartLimitInterval=60s
  
[Install]
WantedBy=multi-user.target

启动 docker 服务

# 添加文件可执行权限
sudo chmod +x /etc/systemd/system/docker.service

# 配置成功后,重新加载 daemon 服务
sudo systemctl daemon-reload

# 启动 docker 服务
sudo systemctl start docker

# 将 docker 服务设置为开机自动启动
sudo systemctl enable docker

安装docker-compose

将下载后的docker-compose安装包传至需要安装docker-compose服务的服务器上。

# 复制docker-compose到/usr/local/bin/目录下 
sudo cp -f docker-compose-linux-x86_64.v2.28.1 /usr/local/bin/docker-compose

# 赋予docker-compose可执行权限
sudo chmod +x /usr/local/bin/docker-compose

# 查看docker-compose版本
sudo docker-compose -v

导入dify

  1. 将项目文件和镜像文件复制到生产服务器
  2. 加载 Docker 镜像:
# 外网服务器上
docker save -o dify-web.tar langgenius/dify-web:0.15.3
docker save -o dify-api.tar langgenius/dify-api:0.15.3
docker save -o postgres.tar postgres:15-alpine
docker save -o nginx.tar nginx:latest
docker save -o dify-sandbox.tar langgenius/dify-sandbox:0.2.10
docker save -o squid.tar ubuntu/squid:latest
docker save -o weaviate.tar semitechnologies/weaviate:1.19.0
docker save -o redis.tar redis:6-alpine 

cd docker_images
docker load -i dify-web.tar
docker load -i dify-api.tar
docker load -i postgres.tar
docker load -i nginx.tar
docker load -i dify-sandbox.tar
docker load -i redis.tar
docker load -i squid.tar
docker load -i weaviate.tar

# 到dify/docker目录
cd dify/docker/
cp .env.example .env
# 编辑 .env 文件,配置必要的环境变量
 
# 启动服务
docker compose up -d
 
# 然后打开一个新的浏览器,输入 localhost:80,或者本机 IP 地址:80,可以看到进入到了 Dify 中。

dify配置ollama api

在 Dify 主界面,点击右上角个人名字圆圈,点击设置——模型供应商——Ollama
在这里插入图片描述
在这里插入图片描述

  • 模型名称:llava
  • 基础 URL:http://<本机IP地址>:11434
    此处需填写可访问到的 Ollama 服务地址。
    若 Dify 为 docker 部署,建议填写局域网 IP 地址,如:http://192.168.1.100:11434 或 docker 宿主机 IP 地址,如:http://172.17.0.1:11434。
    若为本地源码部署,可填写 http://localhost:11434。
  • 模型类型:对话
  • 模型上下文长度:4096
    模型的最大上下文长度,若不清楚可填写默认值 4096。
  • 最大 token 上限:4096
    模型返回内容的最大 token 数量,若模型无特别说明,则可与模型上下文长度保持一致。
  • 是否支持 Vision:是
    当模型支持图片理解(多模态)勾选此项,如 llava。

OLLAMA环境变量设置

  1. OLLAMA_HOST:这个变量定义了Ollama监听的网络接口。通过设置OLLAMA_HOST=0.0.0.0,我们可以让Ollama监听所有可用的网络接口,从而允许外部网络访问。
  2. OLLAMA_MODELS:这个变量指定了模型镜像的存储路径。通过设置OLLAMA_MODELS=F:\OllamaCache,我们可以将模型镜像存储在E盘,避免C盘空间不足的问题。
  3. OLLAMA_KEEP_ALIVE:这个变量控制模型在内存中的存活时间。设置OLLAMA_KEEP_ALIVE=24h可以让模型在内存中保持24小时,提高访问速度。
  4. OLLAMA_PORT:这个变量允许我们更改Ollama的默认端口。例如,设置OLLAMA_PORT=8080可以将服务端口从默认的11434更改为8080。
  5. OLLAMA_NUM_PARALLEL:这个变量决定了Ollama可以同时处理的用户请求数量。设置OLLAMA_NUM_PARALLEL=4可以让Ollama同时处理两个并发请求。
  6. OLLAMA_MAX_LOADED_MODELS:这个变量限制了Ollama可以同时加载的模型数量。设置OLLAMA_MAX_LOADED_MODELS=4可以确保系统资源得到合理分配。
  7. OLLAMA_ORIGINS: 允许的源列表,星号*或使用逗号分隔。
  • OLLAMA_DEBUG:是否开启调试模式,默认为 false。
  • OLLAMA_FLASH_ATTENTION:是否闪烁注意力,默认为 true。
  • OLLAMA_HOST:Ollama 服务器的主机地址,默认为空。
  • OLLAMA_KEEP_ALIVE:保持连接的时间,默认为 5m。
  • OLLAMA_LLM_LIBRARY:LLM 库,默认为空。
  • OLLAMA_MAX_LOADED_MODELS:最大加载模型数,默认为 1。
  • OLLAMA_MAX_QUEUE:最大队列数,默认为空。
  • OLLAMA_MAX_VRAM:最大虚拟内存,默认为空。
  • OLLAMA_MODELS:模型目录,默认为空。
  • OLLAMA_NOHISTORY:是否保存历史记录,默认为 false。
  • OLLAMA_NOPRUNE:是否启用剪枝,默认为 false。
  • OLLAMA_NUM_PARALLEL:并行数,默认为 1。
  • OLLAMA_ORIGINS:允许的来源,默认为空。
  • OLLAMA_RUNNERS_DIR:运行器目录,默认为空。
  • OLLAMA_SCHED_SPREAD:调度分布,默认为空。
  • OLLAMA_TMPDIR:临时文件目录,默认为空。Here is the optimized list in the desired format:
  • OLLAMA_DEBUG:是否开启调试模式,默认为 false。
  • OLLAMA_FLASH_ATTENTION:是否闪烁注意力,默认为 true。
  • OLLAMA_HOST:Ollama 服务器的主机地址,默认为空。
  • OLLAMA_KEEP_ALIVE:保持连接的时间,默认为 5m。
  • OLLAMA_LLM_LIBRARY:LLM 库,默认为空。
  • OLLAMA_MAX_LOADED_MODELS:最大加载模型数,默认为 1。
  • OLLAMA_MAX_QUEUE:最大队列数,默认为空。
  • OLLAMA_MAX_VRAM:最大虚拟内存,默认为空。
  • OLLAMA_MODELS:模型目录,默认为空。
  • OLLAMA_NOHISTORY:是否保存历史记录,默认为 false。
  • OLLAMA_NOPRUNE:是否启用剪枝,默认为 false。
  • OLLAMA_NUM_PARALLEL:并行数,默认为 1。
  • OLLAMA_ORIGINS:允许的来源,默认为空。
  • OLLAMA_RUNNERS_DIR:运行器目录,默认为空。
  • OLLAMA_SCHED_SPREAD:调度分布,默认为空。
  • OLLAMA_TMPDIR:临时文件目录,默认为空。
### 如何通过 Ollama 进行 DeepSeek-R1-Distill-Qwen-1.5B 模型的离线部署 为了成功完成 DeepSeek-R1-Distill-Qwen-1.5B 的离线部署,需遵循特定流程并满足相应环境需求。此部分介绍具体操作指南。 #### 准备工作 确保目标机器具备足够的计算资源来支持模型运行。对于较小规模的蒸馏本如 Qwen-1.5B,虽然不需要像满血那样高的硬件配置,但仍建议至少配备一块高性能 GPU 和充足的 RAM 来保障流畅执行[^3]。 #### 安装依赖包 安装必要的 Python 库和其他工具链之前,先设置虚拟环境以隔离项目依赖关系: ```bash python -m venv myenv source myenv/bin/activate # Linux/MacOS 或者 `myenv\Scripts\activate` Windows下 pip install --upgrade pip setuptools wheel torch transformers accelerate bitsandbytes safetensors ``` #### 下载预训练权重文件 由于网络访问受限,在开始前应提前下载好所需的预训练参数文件,并将其放置于指定目录内以便后续加载使用。可以从官方仓库或其他可信渠道获取这些二进制数据集。 #### 加载与初始化模型实例 利用 Hugging Face Transformers 库简化加载过程,下面给出一段简单的代码片段用于创建模型对象: ```python from transformers import AutoModelForCausalLM, AutoTokenizer model_name_or_path = "path/to/local/model" tokenizer = AutoTokenizer.from_pretrained(model_name_or_path) model = AutoModelForCausalLM.from_pretrained( model_name_or_path, device_map="auto", # 自动分配到可用设备上 load_in_8bit=True # 使用 int8 推理优化 ) ``` #### 测试推理功能 最后一步是验证整个系统的正常运作情况,可以通过输入一些样本文本来观察输出效果: ```python input_text = "Once upon a time..." inputs = tokenizer(input_text, return_tensors="pt").to(&#39;cuda&#39;) outputs = model.generate(**inputs) print(tokenizer.decode(outputs[0], skip_special_tokens=True)) ``` 以上即为基于 Ollama 平台实现 DeepSeek-R1 蒸馏变体之一 Qwen-1.5B 离线部署的大致步骤概述[^1]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

滴滴滴'cv

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值