【AI+智造】在阿里云Ubuntu 24.04上部署DeepSeek R1 14B的完整方案
作者:Odoo技术开发/资深信息化负责人
日期:2025年2月28日
一、部署背景与目标
DeepSeek R1作为国产大语言模型的代表,凭借其强化学习驱动的推理能力,在复杂任务(如数学问题、编程逻辑)中表现优异。本地化部署可满足企业对数据隐私、定制化需求及离线场景的支持。本文基于Ubuntu 24.04 LTS,提供两种主流部署方案(Ollama与vLLM),涵盖硬件选型、环境配置、模型优化及问题排查,适用于中大规模企业级应用场景。
二、技术选型与架构设计
2.1 核心组件说明
- Ollama框架:开源模型运行环境,支持GPU加速与参数调优,提供REST API接口
- DeepSeek R1 14B:国产MoE混合专家模型,上下文窗口4096 tokens,支持中文场景优化
- 阿里云ECS配置:推荐g7规格,8核 + 64GB内存 + 200GB SSD
2.2 架构拓扑图
用户终端 → 阿里云安全组 → Ollama服务(11434端口) → CUDA加速层 → DeepSeek R1 14B模型│└─ Open WebUI(3000端口) → 可视化交互界面
三、部署实施流程
3.1 基础环境准备
# 更新系统并安装依赖
sudo apt update && sudo apt upgrade -y
sudo apt install -y curl wget git nvidia-driver-535 nvidia-utils-535# 验证GPU状态
nvidia-smi # 应显示显卡型号及CUDA版本≥12.2# 配置Docker国内源
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<EOF
{"registry-mirrors": ["https://registry.cn-hangzhou.aliyuncs.com"]
}
EOF
3.2 Ollama定制化安装
# 通过镜像源加速安装
curl -fsSL https://ollama.com/install.sh | sed 's|https://ollama.com/download/|https://ghproxy.com/https://github.com/ollama/ollama/releases/download/v0.5.7/|g' | sh# 配置系统服务
sudo systemctl enable ollama
sudo systemctl start ollama# 环境验证
ollama --version # 应显示v0.5.7+
curl http://localhost:11434 # 返回"Ollama is running"
3.3 模型部署与优化
# 拉取14B量化版模型(国内镜像加速)
export OLLAMA_MODELS=https://mirror.deepseek.com/ollama
ollama pull deepseek-r1:14b # 下载约9GB,耗时依赖带宽# 创建自定义配置
cat > Modelfile <<EOF
FROM deepseek-r1:14b
PARAMETER temperature 0.7
PARAMETER top_p 0.9
PARAMETER num_ctx 4096
SYSTEM "你是一个专业的ERP顾问,请用简洁的技术语言回答Odoo相关问题"
EOF# 构建定制化模型
ollama create erp-ai -f Modelfile
四、高阶配置与优化
4.1 GPU资源分配策略
# 监控GPU使用
watch -n 1 nvidia-smi# 启动参数优化示例
ollama run erp-ai \--memory-limit 48GB \--context-length 4096 \--batch-size 512
显存分配建议:14B模型需至少24GB显存,剩余显存留给上下文缓存
4.2 安全加固方案
# 配置防火墙规则
sudo ufw allow 11434/tcp from 192.168.1.0/24 # 仅内网访问
sudo ufw allow 3000/tcp # Open WebUI端口# 修改Ollama服务配置
sudo sed -i '/\[Service\]/a Environment="OLLAMA_ORIGINS=https://erp.yourdomain.com"' /etc/systemd/system/ollama.service
sudo systemctl daemon-reload && systemctl restart ollama
4.3 可视化界面部署
# 启动Open WebUI容器
docker run -d \-p 3000:8080 \-e OLLAMA_BASE_URL=http://localhost:11434 \-v open-webui:/app/backend/data \--name erp-ai-webui \ghcr.io/open-webui/open-webui:main
访问地址:http://<公网IP>:3000,首次登录需创建管理员账户
五、运维监控体系
5.1 健康检查脚本
#!/bin/bash
# model_healthcheck.sh
API_STATUS=$(curl -s -o /dev/null -w "%{http_code}" http://localhost:11434/api/generate)
GPU_UTIL=$(nvidia-smi --query-gpu=utilization.gpu --format=csv,noheader,nounits)if [ $API_STATUS -ne 200 ] || [ $GPU_UTIL -gt 90 ]; thensystemctl restart ollamaecho "$(date) - Service restarted" >> /var/log/ollama_monitor.log
fi
配置cron定时任务:
*/5 * * * * /opt/scripts/model_healthcheck.sh
5.2 日志管理方案
# 查看实时日志
journalctl -u ollama -f -n 100# 日志切割配置(/etc/logrotate.d/ollama)
/var/log/ollama/*.log {dailyrotate 30compressmissingoknotifempty
}
六、典型问题解决方案
6.1 内存溢出处理
# 调整交换空间(临时方案)
sudo fallocate -l 32G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile# 永久生效
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
6.2 模型响应优化
# 修改Modelfile参数
PARAMETER repeat_penalty 1.2 # 减少重复生成
PARAMETER mirostat 2 # 启用动态温度调节# 分批处理长文本
ollama run erp-ai --prompt "请分段落总结以下文档:" --stream
七、企业级应用场景
7.1 Odoo集成方案
# odoo_custom_module/controllers/ai_api.py
import requestsdef ask_ai(question):payload = {"model": "erp-ai","prompt": f"作为Odoo专家回答:{question}","stream": False}response = requests.post("http://localhost:11434/api/generate",json=payload,timeout=30)return response.json()['response']
应用场景:销售订单预测、工单智能分派、财务异常检测等
7.2 知识库增强方案
# 构建领域知识库
ollama create erp-knowledge -f <<EOF
FROM erp-ai
SYSTEM "你精通Odoo 18版本,熟悉制造业MRP模块配置"
ADAPTER ./odoo_docs.bin # 微调适配器
EOF
八、成本控制建议
- 弹性扩缩容:通过阿里云弹性伸缩组,在非高峰时段降配实例规格
- 模型量化:采用GGUF 4-bit量化可将显存需求降低40%
- 请求合并:使用批处理API减少交互次数,提升GPU利用率
九、风险评估与应对
风险类型 | 应对措施 |
---|---|
数据泄露 | 启用阿里云SSL证书 + 请求内容加密 |
服务不可用 | 配置多可用区部署 + 健康检查自动恢复 |
模型幻觉 | 启用logprobs参数验证 + 输出结果二次校验 |
合规性风险 | 部署内容过滤模块 + 对话日志保留180天 |
本方案通过深度整合Ollama框架与阿里云基础设施,实现了企业级AI能力的低成本、高可用部署。建议定期执行ollama update
保持模型版本最新,并关注DeepSeek官方发布的优化方案。如需完整运维手册或定制化开发支持,可参考提供的扩展资料。
相关文章:
【AI+智造】在阿里云Ubuntu 24.04上部署DeepSeek R1 14B的完整方案
作者:Odoo技术开发/资深信息化负责人 日期:2025年2月28日 一、部署背景与目标 DeepSeek R1作为国产大语言模型的代表,凭借其强化学习驱动的推理能力,在复杂任务(如数学问题、编程逻辑)中表现优异。本地化部…...
蓝桥真题讲解
温馨提示:本系列文章非所有题都对对b组适用,b组的小伙伴请挑题看! 目录 第一题 题目链接 题目解析 代码原理 代码编写 本题总结 第二题 题目链接 题目解析 代码原理 代码编写 本题总结 第三题 题目链接 题目解析 代码原理 …...
javaweb将上传的图片保存在项目文件webapp下的upload文件夹下
前端HTML表单 (upload.html) 首先,创建一个HTML页面,允许用户选择并上传图片。 <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><title>图片上传</title> </head> <…...
北京大学DeepSeek与AIGC应用(PDF无套路下载)
近年来,人工智能技术飞速发展,尤其是大模型和生成式AI(AIGC)的突破,正在重塑各行各业的生产方式与创新路径。 北京大学联合DeepSeek团队推出的内部研讨教程《DeepSeek与AIGC应用》,以通俗易懂的方式系统解…...
测量海拔以及两点间路程(十六)
一、DigitalEarthView.cpp void CDigitalEarthView::OnCheckCheliang() {isTestJu = !isTestJu;mOSG->isTestJu(isTestJu); } 二、OSGObject.cpp void COSGObject::isTestJu(bool isTest) {theApp.bNeedModify = TRUE;while(!theApp.bCanModify)Sleep(1);if(isTest){eh-&…...
Flutter状态管理框架GetX最新版详解与实践指南
一、GetX框架概述 GetX是Flutter生态中轻量级、高性能的全能开发框架,集成了状态管理、路由导航、依赖注入等核心功能,同时提供国际化、主题切换等实用工具。其优势在于代码简洁性(减少模板代码约70%)和高性能(基于观…...
8. 示例:对32位数据总线实现位宽和值域覆盖
文章目录 前言示例一:示例二:示例三:仿真与覆盖率分析覆盖点详细说明覆盖率提升技巧常见错误排查 示例四:仿真步骤 前言 针对32位数据总线实现位宽和值域的覆盖,并且能够用xrun运行,查看日志和波形。cover…...
第6篇:面向对象编程重构系统
一、OOP重构目标 数据封装:隐藏实现细节接口抽象:规范操作入口资源自治:实现自管理生命周期扩展基础:预留多态支持接口二、完全面向对象实现(完整代码) #include <iostream> #include <Windows.h> #include <li...
CTF-web: Rust 的过程宏
Rust 的过程宏(Procedural Macros)是一种强大的元编程工具,允许你在编译时对代码进行操作和生成。与属性宏和派生宏不同,过程宏可以接收并处理任意 Rust 代码,生成新的代码片段。这里有一个简单的例子来说明 Rust 的过…...
【Kubernetes】API server 限流 之 maxinflight.go
这个文件实现了一个基于信号量(Channel)的简单限流器。 基础知识 总共有四种channel 带缓冲的channel nonMutatingChan、mutatingChan 都是带缓冲的channel ,这类channel 的特点是: 这允许最多 mutatingLimit /nonMutatingLimit 个请求同时获取令牌并执…...
phpstudy安装教程dvwa靶场搭建教程
GitHub - digininja/DVWA: Damn Vulnerable Web Application (DVWA) Dvwa下载地址 Windows版phpstudy下载 - 小皮面板(phpstudy) 小皮下载地址 1选择windows 版本,点击立即下载 下载完成,进行解压,注意不要有中文路径 点击.exe文件进行安装…...
React核心知识及使用场景
React是一个用于构建用户界面的JavaScript库,尤其适合构建单页面应用(SPA)。它基于组件化的开发思想,主要特点是通过虚拟DOM来提高渲染效率。以下是React的核心知识和使用场景: 一. 核心知识 组件化: 类组件和函数组件:React的组件分为类组件和函数组件。类组件通过继承…...
杰发科技AC7801——滴答定时器获取时间戳
1. 滴答定时器 杰发科技7801内部有一个滴答定时器,该定时器是M0核自带的,因此可以直接用该定时器来获取时间戳。 同样,7803也可以使用该方式获取时间戳。 2. 滴答定时器原理 SysTick是一个24位的递减计数器,它从预设的重装载值…...
「爬虫实战分享:如何高效爬取某汽车官方销售排行榜」
本文目录 💖前言一、💫代理IP的作用二、💫爬虫中的挑战1.代理IP的质量和稳定性2.IP封禁问题3. 反爬虫技术的升级 三、💫亮数据动态代理:数据采集的可靠伙伴1、真实体验 四、💫爬虫实战:使用亮数…...
AI数据分析:用DeepSeek做数据清洗
在当今数据驱动的时代,数据分析已成为企业和个人决策的重要工具。随着人工智能技术的快速发展,AI 驱动的数据分析工具正在改变我们处理和分析数据的方式。本文将着重介绍如何使用 DeepSeek 进行数据清洗。 数据清洗是数据分析的基础,其目的是…...
使用串口工具实现tcp与udp收发
1、使用串口工具实现tcp收发 2、使用串口工具实现udp收发...
onlyoffice 服务搭建及配置 - 前端 office 文件预览解决方案
文章目录 1. 安装1.1 环境要求1.2 安装步骤1.3 常用配置1.3.1 安装目录/config/default.json1.3.2 安装目录/config/local.json1.3.3 安装目录/nginx/conf1.3.4 配置生效 2. 网站嵌入2.1 代码示例2.2 最终效果 3. 常见问题3.1 数据库配置错误导致加载不出来 1. 安装 写文章时使…...
PostgreSQL的基本使用
参考视频:零基础入门PostgreSQL教程 文章目录 一、PostgreSQL是什么?二、基本使用1.下载2.操作 一、PostgreSQL是什么? PostgreSQL 是一个免费的对象-关系数据库服务器,在灵活的BSD许可证下发行。 二、基本使用 1.下载 2.操作 …...
【AI深度学习基础】NumPy完全指南入门篇:核心功能与工程实践(含完整代码)
NumPy系列文章 入门篇进阶篇终极篇 一、NumPy简介 NumPy(Numerical Python)是Python中科学计算的核心库,提供了高性能的多维数组对象和各种用于数组操作的函数。它是Python数据分析和科学计算的基础,被广泛应用于机器学习、数据…...
武汉大学生命科学学院与谱度众合(武汉)生命科技有限公司举行校企联培座谈会
2025年2月21日下午,武汉大学生命科学学院与谱度众合(武汉)生命科技有限公司(以下简称“谱度众合”)在学院学术厅举行校企联培专业学位研究生合作交流会。武汉大学生命科学学院副院长刘星教授、生命科学学院周宇教授、产…...
小程序画带圆角的圆形进度条
老的API <canvas id"{{canvasId}}" canvas-id"{{canvasId}}" style"opacity: 0;" class"canvas"/> startDraw() {const { canvasId } this.dataconst query this.createSelectorQuery()query.select(#${canvasId}).bounding…...
MR-图解
1、不是所有的MR都适合combine 1.1、map端统计出了不同班级的每个学生的年龄 如:(class1, 14)表示class1班的一个学生的年龄是14岁。 第一个map任务: class1 14 class1 15 class1 16 class2 10第二个map任务: class1 16 class2 10 class…...
[深度学习] 大模型学习2-提示词工程指北
在文章大语言模型基础知识里,提示词工程(Prompt Engineering)作为大语言模型(Large Language Model,LLM)应用构建的一种方式被简要提及,本文将着重对该技术进行介绍。 提示词工程就是在和LLM聊…...
VSCode离线安装插件
最近在其他电脑设备上部署vscode环境出现问题,在vscode里直接安装插件失败,软件提示如下:(此前已经用此方法安装过中文插件) 这里我们选择手动下载,会自动在浏览器中跳转到该插件的下载链接并自动下载插件&…...
python-leetcode-删除并获得点数
740. 删除并获得点数 - 力扣(LeetCode) 解法 1:动态规划(O(n) 时间,O(n) 空间) class Solution:def deleteAndEarn(self, nums: List[int]) -> int:if not nums:return 0# 统计每个数的贡献points Cou…...
Spring Boot 流式响应豆包大模型对话能力
当Spring Boot遇见豆包大模型:一场流式响应的"魔法吟唱"仪式 一、前言:关于流式响应的奇妙比喻 想象一下你正在火锅店点单,如果服务员必须等所有菜品都备齐才一次性端上来,你可能会饿得把菜单都啃了。而流式响应就像贴…...
STM32G431RBT6——(1)芯片命名规则
相信很多新手入门STM学的芯片,是STM32F103C8T6,假如刷到个项目换个芯片类型,就会感到好难啊,看不懂,就无从下手,不知所云。其实没什么难的,对于一个个不同的芯片的区别,就像是学习包…...
React进阶之前端业务Hooks库(三)
前端业务Hooks库 hooks 方法localStorage和sessionStorager区别packages/hooks/src/useLocalStorageStatepackages/hooks/src/useSessionStorageStatepackages/hooks/src/createUseStorageState模块Hooks在不同场景下的应用Hooks陷阱前提例子useLatest和useMemoizedFn其他功能的…...
卷积神经网络梯度下降方向与参数更新方向的一致性论述
梯度下降是一种常用的优化算法,用于最小化损失函数,在机器学习和深度学习领域有着广泛的应用。分别对梯度下降、梯度方向以及参数更新采用负梯度方向的原因进行论述。 1.梯度下降 它的基本思想是通过迭代的方式来更新模型的参数,使得损失函数…...
python 视频网站爬虫教程,爬虫入门教程(付安装包)
文章目录 前言1. 环境准备Python安装选择Python开发环境安装必要库 2. 了解目标网站3. 发送请求获取页面内容4. 解析页面内容,提取视频链接5. 下载视频6. 处理反爬机制7. 完整代码示例注意事项 前言 以下为你生成一份 Python 视频网站爬虫教程,以爬取简…...
Is Noise Conditioning Necessary for Denoising Generative Models?论文阅读笔记
很吸引人的一个标题,很吸引人的一个作者,来读一读明神的新作,讲的是怎么把去噪领域的一些有意思的思想,特别是blind denoising和noise-level estimation的思想,应用到denoising diffusion模型中,从而去掉de…...
BIO、NIO、AIO、Netty从简单理解到使用
Java编程中BIO、NIO、AIO是三种不同的I/O(输入/输出)模型,它们代表了不同的I/O处理方式。 Netty就是基于Java的NIO(New Input/Output)类库编写的一个高性能、异步事件驱动的网络应用程序框架,用于快速开发可…...
最新版 (持续更新)docker 加速源 linux yum 源
收藏两个网站,配置docker 加速源与yum 源。 docker 加速源链接 Docker/DockerHub 国内镜像源/加速列表(2月25日更新-长期维护)-腾讯云开发者社区-腾讯云https://cloud.tencent.com/developer/article/2485043 yum 源 CentOS7停服后yum源配置…...
MapReduce编程模型
MapReduce编程模型 理解MapReduce编程模型独立完成一个MapReduce程序并运行成功了解MapReduce工程流程掌握并描述出shuffle全过程(面试)独立编写课堂及作业中的MR程序理解并解决数据倾斜 1. MapReduce编程模型 Hadoop架构图 Hadoop由HDFS分布式存储、M…...
开源|Documind协同文档(接入deepseek-r1、支持实时聊天)
Documind 🚀 项目介绍 Documind 一个支持实时聊天和接入deepseek-r1模型AI助手的协同文档编辑项目 前端:NextJS React TailwindCSS ShadcnUl Tiptap Zustand后端:NextJS Convex Liveblocks Clerk项目预览:Documind 预览…...
【问题记录】Go项目Docker中的consul访问主机8080端口被拒绝
【问题记录】Go项目Docker中的consul访问主机8080端口被拒绝 问题展示解决办法 问题展示 在使用docker中的consul服务的时候,通过命令行注册相应的服务(比如cloudwego项目的demo_proto以及user服务)失败。 解决办法 经过分析,是…...
`maturin`是什么:matu rus in python
maturin是什么 maturin 是一个用于构建和发布 Rust 编写的 Python 绑定库的工具。它简化了将 Rust 代码集成到 Python 项目中的过程,支持创建不同类型的 Python 包,如纯 Python 包、包含 **Rust (系统编程语言)**扩展模块的包等。以下为你详细介绍 maturin 的相关信息并举例…...
Ubuntu 下 nginx-1.24.0 源码分析 - ngx_file_t
ngx_file_t 定义在 src/core/ngx_core.h typedef struct ngx_file_s ngx_file_t;ngx_file_s 定义 在 src/core/ngx_file.h struct ngx_file_s {ngx_fd_t fd;ngx_str_t name;ngx_file_info_t info;off_t …...
【HarmonyOS Next】鸿蒙应用公钥和证书MD5指纹的获取
【HarmonyOS Next】鸿蒙应用公钥和证书MD5指纹的获取 一、问题背景 政府的icp备案时,或者某些三方SDK以来的管理后台,都需要配置鸿蒙应用的公钥和证书MD5指纹 二、解决方案 专有名词解释: 华为AppGallery Connect简称 AGC平台࿰…...
登录次数限制
文章目录 一、应用场景与设计目的1. 应用场景2. 设计目的 二、功能设计1. 登录限制规则2. 解锁机制3. 适用维度 三、技术实现1. 数据存储2. 逻辑流程3. 实现代码示例4. 动态锁定时间 四、安全增强与扩展1. 防止用户名枚举2. 加入验证码3. 监控与报警4. 分布式支持 五、设计思考…...
两台互通的服务器使用Docker部署一主两从MySQL8.0.35
文章目录 1. 使用Docker Overlay网络(需Swarm模式)在服务器1(172.25.0.19)上:在服务器2(172.25.0.20)上:创建 overlay 网络(172.25.0.19): 2. 部署…...
使用Semantic Kernel:对DeepSeek添加自定义插件
SemanticKernel介绍 Semantic Kernel是一个SDK,它将OpenAI、Azure OpenAI等大型语言模型与C#、Python和Java等传统编程语言集成在一起。Semantic Kernel通过允许您定义插件来实现这一点。 为什么需要添加插件? 大语言模型虽然具有强大的自然语言理解和…...
DeepSeek + 自由职业 发现新大陆,从 0 到 1 全流程跑通商业 IP
DeepSeek 自由职业 发现新大陆,从 0 到 1 全流程跑通商业 IP 商业定位1. 商业定位分析提示词2. 私域引流策略提示词3. 变现模型计算器提示词4. 对标账号分析提示词5. 商业IP人设打造提示词6. 内容选题策略提示词7. 用户人群链分析提示词8. 内容布局与转化路径设计提…...
mysql数据迁移到SQLserver: 构建数据迁移脚本
文章目录 引言转换方法将 MySQL 脚本转换为 SQL Server 脚本主要修改点I 迁移案例菜单数据迁移迁移脚本1迁移脚本2I MySQL中将INT类型转换为字符串的方法CAST函数(标准SQL)CONVERT函数(MySQL特有)隐式转换(上下文触发)修改表结构(永久转换)保留前导零用…...
【Python在校课堂笔记】Python第1节课 【课下总结】
2025 - 02 - 28 - 第 63 篇 Author: 郑龙浩 / 仟濹 【Python在校课堂笔记】 Python第1节课 【课下总结】 2025-02-27上课 写这篇笔记不仅仅为了写作业,也是想总结一下本节课的内容加深印象,同时发布博客方便复习。 一 print() 的多种使用 1 直接打印…...
3分钟idea接入deepseek
DeepSeek简介 DeepSeek 是杭州深度求索人工智能基础技术研究有限公司开发的一系列大语言模型,背后是知名量化资管巨头幻方量化3。它专注于开发先进的大语言模型和相关技术,拥有多个版本的模型,如 DeepSeek-LLM、DeepSeek-V2、DeepSeek-V3 等&…...
【论文学习】DeepSeek-R1 总结
文章目录 Abstract1. Introduction2. Approach2.1. Overview2.2. DeepSeek-R1-Zero: Reinforcement Learning on the Base Model2.3. DeepSeek-R1: Reinforcement Learning with Cold Start2.4. Distillation: Empower Small Models with Reasoning Capability 3. Experiment3.…...
《Python实战进阶》No 7: 一个AI大模型聊天室的构建-基于WebSocket 实时通信开发实战
第7集: 一个AI大模型聊天室的构建-基于WebSocket 实时通信开发实战 在现代 Web 开发中,实时通信已经成为许多应用的核心需求。无论是聊天应用、股票行情推送,还是多人协作工具,WebSocket 都是实现高效实时通信的最佳选择之一。本…...
五、数据库索引详解:作用、原理与使用指南
数据库索引详解:作用、原理与使用指南 一、索引的作用(为什么需要索引?) 1. 生活中的类比 想象你要在一本 500 页的书中快速找到「数据库索引」相关内容: 没有目录:需要逐页翻找 → 全表扫描有目录&…...
如果使用MODBUS通用类进行通信
1. 初始化串口 在使用 ModbusRTU 类之前,需要先初始化串口。以下是一个示例代码: cpp复制 // 初始化 ModbusRTU 对象 ModbusRTU modbus;// 配置串口参数 modbus.initializePort("COM5", 115200); // 使用 COM5 和波特率 115200 modbus.setD…...