【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…

安全测试|用例设计基本步骤和指南

前言 安全测试用例设计是确保软件应用程序的安全性的一个重要环节。这涉及到识别潜在的安全漏洞和弱点&#xff0c;并设计相应的测试用例来验证这些漏洞是否存在。 以下是一些关于如何设计安全测试用例的基本步骤和指南&#xff1a; 一、需求分析&#xff1a; 1)首先&#x…

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

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

13.1 深入理解 LangChain Chat Model 与 Prompt Template:重构智能翻译助手的核心

深入理解 LangChain Chat Model 与 Prompt Template:重构智能翻译助手的核心 关键词:LangChain Chat Model, Chat Prompt Template, 翻译系统架构设计, 大模型抽象层, 提示工程优化 1. 为什么需要 Chat Model 抽象层? 在传统翻译系统开发中,对接不同大模型面临三大痛点:…

《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; 【关…

MySQL开窗函数种类和使用总结

在 MySQL 中&#xff0c;开窗函数&#xff08;Window Functions&#xff09; 是一种强大的功能&#xff0c;能够在数据分析和聚合时提供灵活的方式。开窗函数在 MySQL 8.0 及以上版本 中引入&#xff0c;可以基于数据的某个分组&#xff08;窗口&#xff09;来执行计算&#xf…

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

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

21.命令模式(Command Pattern)

定义 命令模式&#xff08;Command Pattern&#xff09; 是一种行为型设计模式&#xff0c;它将请求封装成一个对象&#xff0c;从而使您可以使用不同的请求、队列、日志请求以及支持撤销操作等功能。命令模式通过将请求&#xff08;命令&#xff09;封装成对象&#xff0c;使…

【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.…

一条sql 在MySQL中是如何执行的

在 MySQL 中&#xff0c;SQL 查询的执行涉及多个内存区域和处理步骤&#xff0c;以确保查询能够高效地执行和返回结果。以下是 SQL 查询在 MySQL 中执行时通常会经过的内存路径&#xff1a; 1. 客户端内存 - SQL 文本发送 &#xff1a;SQL 查询首先从客户端发送到 MySQL 服务…

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.…

Day30-【AI思考】-错题分类进阶体系——12维错误定位模型

文章目录 错题分类进阶体系——12维错误定位模型**一、认知层错误&#xff08;根源性缺陷&#xff09;****二、操作层错误&#xff08;执行过程偏差&#xff09;****三、心理层错误&#xff08;元认知障碍&#xff09;****四、进阶错误&#xff08;专业级陷阱&#xff09;** 错…

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

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

openAI官方prompt技巧(一)

1. 使用最新的模型 2. 将指令放在提示词的开头&#xff0c;并使用 ### 或 """ 来分隔指令和上下文&#xff0c;例如 错误示范❌ 将下面的文本总结为一个要点列表&#xff0c;列出最重要的内容。 Summarize the text below as a bullet point list of the most…

通过制作docker镜像的方式在阿里云部署前端后台服务

前端Dockerfile文件的内容&#xff1a; FROM nginx:版本&#xff0c;如果不指定&#xff0c;默认是latest COPY dist/ /usr/share/nginx/html/dist COPY nginx.conf /etc/nginx/nginx.conf EXPOSE 端口 前端sh脚本文件内容&#xff1a; appName项目名 tar -xvf dist.tar …