【AI时代】使用ollama私有化部署deepseek的过程及问题记录

文章目录

  • 说明
  • 下载模型
    • 通过ollama下载
    • 通过modelscope下载
  • 部署open-webui
  • 问题记录
    • 临时目录空间不足
    • 单机多卡部署
    • 后台启动

说明

对于DeepSeek的私有化部署,现在网上已经有很全面的资料了,本文主要记录部署以及部署过程中遇到的问题。目前对于这些问题,网上的资料比较少,我也会持续更新在此过程中遇到的各种问题。
这篇文章对DeepSeek的部署说的很全面,包括ollama、open-webui、dify的安装:
https://www.cnblogs.com/shook/p/18700561

下载模型

通过ollama下载

适合部署小参数的模型,下载速度比较慢,而且不稳定。

ollama模型地址:https://ollama.com/library/deepseek-r1

下载并运行deepseek-r1-7b:

ollama run deepseek-r1:7b

该命令会自动下载并运行,如果只需要下载,使用命令:ollama pull deepseek-r1:7b

image.png

退出:Use Ctrl + d or /bye to exit.

下载完成后,可以使用以下命令查看模型信息:

image.png

通过modelscope下载

这种方式主要可以解决直接从ollama仓库下载慢、网络不稳定的问题

ollama支持两种格式的模型文件导入:gguf和safetensors,步骤都差不多,下面以gguf为例。

较大参数的模型,可以使用离线下载模型后,导入至ollama运行。

以70B-Q5_K_M为例:

下载地址:https://modelscope.cn/models/unsloth/DeepSeek-R1-Distill-Llama-70B-GGUF

下载好之后上传至服务器并创建ModelFile文件:

image.png

ModelFile中指定模型文件路径:

FROM ./DeepSeek-R1-Distill-Llama-70B-Q5_K_M.gguf

关于ModelFile更多内容见:https://github.com/ollama/ollama/blob/main/docs/modelfile.md

准备好之后,执行命令:ollama create deepseek-r1-70b -f ./ModelFile

执行完成之后,通过ollama list命令可以看到模型已导入成功。
在这里插入图片描述

这个过程的耗时和模型大小有关。

参考:https://github.com/ollama/ollama/blob/main/docs/import.md

部署open-webui

git地址:https://github.com/open-webui/open-webui

使用docker部署:

docker run -d -p 8080:8080 --add-host=host.docker.internal:host-gateway -v open-webui:/app/backend/data --name open-webui --restart always ghcr.io/open-webui/open-webui:main

第一次进来需要设置账号,我这个已经设置过了
在这里插入图片描述
进去之后,左上角会展示所有已经拉取过的模型
在这里插入图片描述

问题记录

临时目录空间不足

使用ollama create导入外部模型时,报错:临时文件夹空间不足,这个很坑,大部分人都说是通过环境变量OLLAMA_TMPDIR指定,其实并不是!
image.png
指定临时文件夹执行:TMPDIR=/mnt/largeroom/ollama/ollama/.ollama/tmp ollama create deepseek-r1-70b -f ModelFile

或者修改systemd文件,添加:Environment=“TMPDIR=/mnt/largeroom/ollama/ollama/.ollama/tmp”

参考:https://github.com/ollama/ollama/issues/8086

可以看到已经生效了:
image.png

单机多卡部署

这个也花了很多时间才解决,最新的官方文档没有对num_gpu参数的解释,我一直以为是GPU数量。

修改ModelFile,增加参数:num_gpu

FROM ./DeepSeek-R1-Distill-Llama-70B-Q5_K_M.gguf
PARAMETER num_gpu 80

验证过程中发现,当参数num_gpu设置越小,VRAM占用越小,猜想该参数可以控制GPU的负载情况,通过查阅资料和验证,发现:num_gpu参数表示加载至 GPU 的模型层数,根据机器配置,增大该参数的值,当单个GPU无法完全加载所配置的层数时,将分布在所有可用的GPU上。
可以看到显存的使用已经平均分配到每张卡上了
在这里插入图片描述
每个模型的层数不一样,猜测该值只要超过单卡的负载就会使用多卡,显存资源足够的情况下,不需要调优该参数。

参考:

https://github.com/ollama/ollama/blob/main/docs/faq.md#how-does-ollama-load-models-on-multiple-gpus

https://snowkylin.github.io/blogs/a-note-on-deepseek-r1.html

后台启动

nohup ollama run deepseek-r1-70b:latest --verbose --keepalive 1200m > output.log 2>&1 < /dev/null &

默认5m就自动释放了,可以通过–keepalive指定模型保留加载的时间。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/69286.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用 SDKMAN! 在 Mac(包括 ARM 架构的 M1/M2 芯片)上安装 Java 8

文章目录 1. 安装 SDKMAN!2. 查找可用的 Java 8 版本3. 安装 Java 84. 验证安装5. 切换 Java 版本&#xff08;可选&#xff09;6. 解决 ARM 架构兼容性问题总结 可以使用 SDKMAN! 在 Mac&#xff08;包括 ARM 架构的 M1/M2 芯片&#xff09;上安装 Java 8。SDKMAN! 是一个强大…

存储异常导致的Oracle重大生产故障

&#x1f4e2;&#x1f4e2;&#x1f4e2;&#x1f4e3;&#x1f4e3;&#x1f4e3; 作者&#xff1a;IT邦德 中国DBA联盟(ACDU)成员&#xff0c;10余年DBA工作经验 Oracle、PostgreSQL ACE CSDN博客专家及B站知名UP主&#xff0c;全网粉丝10万 擅长主流Oracle、MySQL、PG、高斯…

计算机视觉-拟合

一、拟合 拟合的作用主要是给物体有一个更好的描述 根据任务选择对应的方法&#xff08;最小二乘&#xff0c;全最小二乘&#xff0c;鲁棒最小二乘&#xff0c;RANSAC&#xff09; 边缘提取只能告诉边&#xff0c;但是给不出来数学描述&#xff08;应该告诉这个点线是谁的&a…

【自开发工具介绍】SQLSERVER的ImpDp和ExpDp工具演示05

SQLSERVER的ImpDp和ExpDp工具演示 1、表部分数据导出 (-query) ※「-query」和「-include_table」必须一起使用 「-query」后面字符串是sql文的where语句&#xff0c;但要注意要使用%&#xff0c;需要写%% 验证用&#xff1a;导出的表&#xff0c;导入到新的数据库 db的数…

《qt6+Open3d网格读取》

《qt6+Open3d网格读取》 效果显示一、创建步骤1.1 创建动作及槽函数二、注意效果显示 一、创建步骤 1.1 创建动作及槽函数 按照以下步骤创建动作,并将动作拉入菜单栏文件中,创建槽函数。 在mainwindow.h添加 private:geometry

mapbox进阶,添加绘图扩展插件,绘制圆形

👨‍⚕️ 主页: gis分享者 👨‍⚕️ 感谢各位大佬 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍⚕️ 收录于专栏:mapbox 从入门到精通 文章目录 一、🍀前言1.1 ☘️mapboxgl.Map 地图对象1.2 ☘️mapboxgl.Map style属性1.3 ☘️MapboxDraw 绘图控件二、🍀添加绘图扩…

C#控件开发6—指示灯

按钮功能&#xff1a;手自动旋转&#xff0c;标签文本显示、点击二次弹框确认&#xff08;源码在最后边&#xff09;&#xff1b; 【制作方法】 找到控件的中心坐标&#xff0c;画背景外环、内圆&#xff1b;再绘制矩形开关&#xff0c;进行角度旋转即可获得&#xff1b; 【关…

电商平台的设计与实现(代码+数据库+LW)

摘 要 如今社会上各行各业&#xff0c;都喜欢用自己行业的专属软件工作&#xff0c;互联网发展到这个时候&#xff0c;人们已经发现离不开了互联网。新技术的产生&#xff0c;往往能解决一些老技术的弊端问题。因为传统商品交易信息管理难度大&#xff0c;容错率低&#xff0…

【deepseek实战】绿色好用,不断网

前言 最佳deepseek火热网络&#xff0c;我也开发一款windows的电脑端&#xff0c;接入了deepseek&#xff0c;基本是复刻了网页端&#xff0c;还加入一些特色功能。 助力国内AI&#xff0c;发出自己的热量 说一下开发过程和内容的使用吧。 目录 一、介绍 二、具体工作 1.1、引…

【OS】AUTOSAR架构下的Interrupt详解(上篇)

目录 前言 正文 1.中断概念分析 1.1 中断处理API 1.2 中断级别 1.3 中断向量表 1.4 二类中断的嵌套 1.4.1概述 1.4.2激活 1.5一类中断 1.5.1一类中断的实现 1.5.2一类中断的嵌套 1.5.3在StartOS之前的1类ISR 1.5.4使用1类中断时的注意事项 1.6中断源的初始化 1.…

llama.cpp GGUF 模型格式

llama.cpp GGUF 模型格式 1. Specification1.1. GGUF Naming Convention (命名规则)1.1.1. Validating Above Naming Convention 1.2. File Structure 2. Standardized key-value pairs2.1. General2.1.1. Required2.1.2. General metadata2.1.3. Source metadata 2.2. LLM2.2.…

Java/Kotlin双语革命性ORM框架Jimmer(一)——介绍与简单使用

概览 Jimmer是一个Java/Kotlin双语框架 包含一个革命性的ORM 以此ORM为基础打造了一套综合性方案解决方案&#xff0c;包括 DTO语言 更全面更强大的缓存机制&#xff0c;以及高度自动化的缓存一致性 更强大客户端文档和代码生成能力&#xff0c;包括Jimmer独创的远程异常 …

yolov11模型在Android设备上运行【踩坑记录】

0) 参考资料: https://github.com/Tencent/ncnn?tabreadme-ov-file https://github.com/pnnx/pnnx https://github.com/nihui/ncnn-android-yolov5 https://github.com/Tencent/ncnn?tabreadme-ov-file 1) &#xff1a;将xxx.pt模型转化成 xxx.onnx ONNX&#xff08;Ope…

快速上手——.net封装使用DeekSeek-V3 模型

📢欢迎点赞 :👍 收藏 ⭐留言 📝 如有错误敬请指正,赐人玫瑰,手留余香!📢本文作者:由webmote 原创📢作者格言:新的征程,用爱发电,去丈量人心,是否能达到人机合一?开工大吉 新的一年就这么水灵灵的开始了,在这里,祝各位读者新春快乐,万事如意! 新年伊…

【WebLogic】Oracle发布WebLogic 14c最新版本-14.1.2.0

根据Oracle官方产品经理的博客&#xff0c;Oracle于2024年12月20日正式对外发布了WebLogic 14c的第二个正式版本&#xff0c;版本号为 14.1.2.0.0 &#xff0c;目前官方已开放客户端下载。该版本除继续支持 Jakarta EE 8 版本外&#xff0c;还增加了对 Java SE 17&#xff08;J…

Spider 数据集上实现nlp2sql训练任务

NLP2SQL&#xff08;自然语言处理到 SQL 查询的转换&#xff09;是一个重要的自然语言处理&#xff08;NLP&#xff09;任务&#xff0c;其目标是将用户的自然语言问题转换为相应的 SQL 查询。这一任务在许多场景下具有广泛的应用&#xff0c;尤其是在与数据库交互的场景中&…

IDEA+DeepSeek让Java开发起飞

1.获取DeepSeek秘钥 登录DeepSeek官网 : https://www.deepseek.com/ 进入API开放平台&#xff0c;第一次需要注册一个账号 进去之后需要创建一个API KEY&#xff0c;然后把APIkey记录保存下来 接着我们获取DeepSeek的API对话接口地址&#xff0c;点击左边的&#xff1a;接口…

intra-mart实现简易登录页面笔记

一、前言 最近在学习intra-mart框架&#xff0c;在此总结下笔记。 intra-mart是一个前后端不分离的框架&#xff0c;开发时主要用的就是xml、html、js这几个文件&#xff1b; xml文件当做配置文件&#xff0c;html当做前端页面文件&#xff0c;js当做后端文件&#xff08;js里…

Linux+Docer 容器化部署之 Shell 语法入门篇 【Shell 替代】

&#x1f380;&#x1f380;Shell语法入门篇 系列篇 &#x1f380;&#x1f380; LinuxDocer 容器化部署之 Shell 语法入门篇 【准备阶段】LinuxDocer 容器化部署之 Shell 语法入门篇 【Shell变量】LinuxDocer 容器化部署之 Shell 语法入门篇 【Shell数组与函数】LinuxDocer 容…

Intellij IDEA如何查看当前文件的类

快捷键&#xff1a;CtrlF12&#xff0c;我个人感觉记快捷键很麻烦&#xff0c;知道具体的位置更简单&#xff0c;如果忘了快捷键&#xff08;KeyMap&#xff09;看一下就记起来了&#xff0c;不需要再Google or Baidu or GPT啥的&#xff0c;位置&#xff1a;Navigate > Fi…