史上最全面!WINDOWS下ollama+docker+dify搭建本地Deepseek-r1:70b模型用于企业知识助手

一、硬件分析

硬件配置:6530*2/512G/960 NVME SSD*2+8T*3/L40*4/2700W*2

GPU分析:由于是企业应用,需要考虑多用户并发,网络上那些硬件分析对于企业来说都过于激进了。L40每块GPU有48G显存,4块加起来有192G,非常适合运行大模型。理论上最大可运行70b的FP16精度模型,模型精度对显存要求如下表:

注意:ollama pull deepseek-r1:70b-llama-distill-fp16 这个对应的是70b的fp16精度模型,下载下来的模型文件约141G;ollama pull deepseek-r1:70b默认是int4的版本,下载下来的模型文件约42G。

大模型量化技术是一种通过‌降低模型参数的数值精度‌,将高精度浮点运算(如FP32)转换为低精度整数或定点数(如INT8、INT4)的模型压缩方法‌。其本质是通过牺牲微小精度损失,换取模型‌存储空间‌、‌计算速度‌和‌能耗效率‌的显著提升‌。量化技术的劣势也比较明显,会带来‌精度损失与鲁棒性挑战,可能导致关键特征丢失,模型精度下降5-15%‌。

只有FP32下的deepseek模型才是满血版,70b的满血版需要约300G显存,以上硬件配置不够。

但尝试vllm+cuda+Ubuntu+dify部署70b的fp16精度模型,发现回答乱七八糟,不确定是部署有问题还是硬件不够。反正企业应用需要多用户并发,决定舍弃fp16精度模型,先用最基础的int4版本部署,试试看效果后再决定要不要升级到int8。

二、软件安装

软件配置:Winserver2022+ollama0.7+deepseek-r1:70b+docker4.41+dify1.4+CUDA12.8

由于大模型及向量数据库的容量需要,将960G的NVME SSD全部划分为C盘。

为什么是ollama+docker+dify?开源生态第一!如果说VLLM,n8n,anythingLLM短期内在某些方面可能有一定优势,但开源生态一旦建立起来,其后发优势将很快弥补。笔者在部署期间,ollama就进行了两次重大更新,让一两个月前进行对比的文章瞬间失效。

Windows Server 2022默认支持WSL 2(Linux 子系統),到服务器管理器中,添加角色和功能,勾上Hyper-V并安装,以后docker需要它,随便把它下面那个IIS去掉,不然后面80端口冲突:

CUDA安装:

先装英伟达L40的驱动,下载 NVIDIA 官方驱动 | NVIDIA,根据GPU型号下载安装,我是L40

装完以后,在命令行中输入"nvidia-smi",查看右上角显示的 CUDA 版本,如下图,显示为12.8

然后去下载12.8版本对应的CUDA,点击右下角download下载,可以选择网络(network)下载,也可以本地(local)下载:

安装需要等待一段时间,当安装完成后,重启电脑。输入"cmd"唤出命令行,输入"nvcc -V",如下图所示则表示安装成功:

ollama安装及大模型安装:

下载适用于Windows的安装包并安装,网址Download Ollama on Windows,一直点下一步完成。

安装完成后任务栏出现ollama,任务栏输入命令可看见版本:

命令行运行:ollama pull deepseek-r1:70b,等待模型下载成功,然后ollama run deepseek-r1:70b运行模型:

为了使ollama能使用上CUDA,几块GPU并行计算,需要配置环境变量,找到编辑系统环境变量:

保证环境变量如下:

变量名:OLLAMA_MODELS,
变量值:ollama的模型下载路径,WINDOWS2022是图上路径
变量名:OLLAMA_HOST
变量值:0.0.0.0(表示允许其他电脑访问 Ollama)
变量名:OLLAMA_NUM_GPU
变量值:4(4块GPU就填4,2块就填2)

变量名:OLLAMA_VISIBLE_DEVICES
变量值:0,1,2,3(4块GPU就这样填,2块就填0,1)
环境变量添加完成后重启电脑,当发现问大模型时出现四块GPU都有使用率时即正常:

向量模型安装:

企业知识库需要对word、excel、PDF进行向量化,当然最佳是Markdown格式,这样需要一个向量模型,一般推荐bge-m3,在终端输入ollama pull bge-m3回车安装,等待完成后再输入 ollama list 查看到 bge-m3:latest 已安装成功

docker安装:

由于docker经常被封,官网打开缓慢,我们可以在国内网站上直接下载一个Docker Desktop,不要到官网去下或者用命令下,比如Docker电脑版下载-Docker Desktop for Windows官方版下载 v4.37.1 - 3322软件站

安装完配置好国内镜像再升级到最新版本。

安装时注意把use wsl2这个√去掉,不然可能会启动不了容器:

一路安装,点击close and log out,推荐配置,不登录,完成:

完后后是这样的:

配置一下国内镜像,然后点击apply and restart:

以下可供参考:

{
  "builder": {
    "gc": {
      "defaultKeepStorage": "20GB",
      "enabled": true
    }
  },
  "experimental": false,
  "registry-mirrors": [
    "https://registry.cn-hangzhou.aliyuncs.com",
    "https://kqdukn27.mirror.aliyuncs.com",
    "https://docker.imgdb.de",
    "https://docker.1ms.run",
    "https://docker.mirrors.ustc.edu.cn",
    "https://reg-mirror.qiniu.com"
  ]
}

dify安装:

注意:如果当初没有把服务器的IIS端口关闭,安装DIFY时可能会报端口被占用的错误,这时要把IIS关闭,或者给DIFY换一个端口。

访问Dify国内的GitHub加速页面,下载最新版本的ZIP文件并解压。

进入项目根目录下的docker文件夹,将.env.example复制并重命名为.env

在powershell中 到dify的docker目录下运行 docker compose up -d

注意这里又是一个卡点,经常中断、经常出错,中断可以找国内的镜像加速,错误的话,看下错误代码一一排除,有点复杂。

如果遇到错误是postgres-data的,还需要改docker-compose.yaml文件的最后部分为下图所示:

volumes:
  oradata:
  dify_es01_data:
  postgres-data:

找到services下的db,修改volumes,将./volumes/db/data改为postgres-data。

如果docker出现dify为绿色就证明启动了:

这里一定要注意上面的那个container memory usage,不能太小,20G以上,到下图地方修改:

直接访问http://localhost/,即可进入dify配置,设置好账号密码:

到模型设置这里去进行模型管理:

模型供应商搜索ollama并安装插件:

进行LLM模型配置,注意模型名称不能乱取,一定是你ollama拉取的那个模型名称:

向量模型也配置好,模型类型选text enbedding:

配置好后:

下一步就是配置知识库,并发布到企业内部系统中了。

知识库配置:

点击知识库——创建知识库,导入已有文本,上传文本文件,下一步

默认可以不用更改,设置为通用,高质量,检索为向量检索,embedding模型选择bge-m3:

一次可以上传多个文件,点击保存并处理,等待嵌入处理完成

嵌入完成后,点击知识库,可以看到我们新建的二十五项反措的知识库,我们也可以点击修改名称,并进行召回测试,看看知识库的搜索效果:

创建知识问答:

到工作室页面下点击创建空白应用

如下图所示应用类型选聊天助手,应用名称填规章制度助手,图标也可以更改,然后点击创建

然后右上角模型选刚才设置的本地70b,左边知识库选择我们刚才的创建的知识库,

输入问题,点击调试与预览即可进行测试:

发布到企业WEB应用:

知识库及应用什么的配置好,可以点击发布更新。在局域网内直接点击运行,出来的网址复制下来(如http://10.1.111.128/chat/GupdkZB16VPKreUV),即可在直接内网访问该网址,前提是服务器打开了80端口,没有打开的到这里去把入站规则80端口加上:

外网访问:

在局域网内部访问的DIFY页面,权限不好控制,外网也没法访问,一般需要嵌入到其他WEB框架中,可以更好控制账户登陆,以及企业微信等访问。

dify友善的提供的嵌入网站的方式,点击上图嵌入网站,出现下图,可参照三个模式修改你的web页面代码以实现嵌入:

当然前提是你的外网防火墙映射NAT后可以访问dify,最简单的一个html示例如下:

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <title>规章制度AI助手</title>
    <meta charset="utf-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0" />

    <link rel="stylesheet" href="../assets/css/bootstrap.css" />
    <link rel="stylesheet" href="../assets/css/ace.css" class="ace-main-stylesheet" id="main-ace-style" />

</head>
<body>
    <iframe src="http://www.*****.com:8888/chatbot/******"
            style="width: 100%; height: 100%; min-height: 700px"
            frameborder="0"
            allow="microphone"></iframe>
</body>
</html>

在上面这个页面可以控制访问权限,比如没有登陆跳转之类,或者获取企业微信权限,不在权限范围不予访问等等。

最基本的一个企业知识库到此就完成了,下一步可以进行RAG优化,也可以将模型除了静态文件之外,接入动态数据。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值