《2核2G阿里云神操作!Ubuntu+Ollama低成本部署Deepseek模型实战》

简介:
“本文为AI开发者揭秘如何在阿里云2核2G轻量级ECS服务器上,通过Ubuntu系统与Ollama框架实现Deepseek模型的高效部署。无需昂贵硬件,手把手教程涵盖环境配置、资源优化及避坑指南,助力初学者用极低成本在云端跑通行业领先的大语言模型,解锁轻量化服务器运行AI任务的无限可能!”

一、环境准备清单

服务器

服务器:Ubuntu 24.04 64位

CPU&内存:2核(CPU) & 2 GiB

ESSD Entry云盘:40GB

SSH软件

MobaXterm_Personal_21.4

Deepseek版本

本教程选择:DeepSeek-R1-Distill-Qwen-1.5B

官方推荐配置

DeepSeek R1 模型参数和显存需求:

模型名称参数量显存需求推荐显卡型号(最低)
DeepSeek-R1-Distill-Qwen-1.5B1.5B4-6 GBGTX 1660 Ti、RTX 2060
DeepSeek-R1-Distill-Qwen-7B7B12-16 GBRTX 3060、RTX 3080
DeepSeek-R1-Distill-Llama-8B8B16-20 GBRTX 3080 Ti、RTX 3090
DeepSeek-R1-Distill-Qwen-14B14B24-32 GBRTX 3090、RTX 4090
DeepSeek-R1-Distill-Qwen-32B32B48-64 GBA100、H100
DeepSeek-R1-Distill-Llama-70B70B80-128 GBA100、H100、MI250X

二、Shell工具连接云服务器

  1. 点击右上角的:Session
  2. 点击SSH
  3. 输入host和username点击OK
  4. 输入密码即可

三、安装Ollama

简介:

Ollama 是一款专注于本地化AI模型运行与管理的开源工具,其核心功能在于实现模型的轻量化部署与全生命周期维护,通过容器化封装与资源调度优化,显著降低开发者在本地环境构建私有AI服务的技术门槛。

github地址:https://github.com/ollama/ollama

Linux版安装
# Linxu安装
curl -fsSL https://ollama.com/install.sh | sh

本地解压版

由于网速的原因,很难将Linux版本的ollama下载下载,所以本文提供了tgz文件,从而实现解压安装。

网盘地址:https://pan.baidu.com/s/1mx_3R4NVjOSC9D8BaGdYHg?pwd=9eg7

  1. 步骤一:在服务器上建立一个空的文件夹,用来存放ollama文件
mkdir ollama

  1. 适用工具将压缩包上传到服务器上

工具:WinSCP-5.21.5-Setup

地址:https://pan.baidu.com/s/1mx_3R4NVjOSC9D8BaGdYHg?pwd=9eg7

打开软件后,输入服务器的ip、用户名、密码

上传完成

# 解压命令
# tar -zxvf 
sudo  -zxvf ollama-linux-amd64.tgz
# 将解压后ollama文件夹的bin目录中的ollama复制到 /usr/bin中
cp bin/ollama /usr/bin

# 测试是否安装成功,出现命令帮助表示为ollama安装成功
ollama

使用魔塔社区安装(建议使用)

官网安装教程:https://www.modelscope.cn/models/modelscope/ollama-linux

  1. 首先要安装支持大模型支持的环境:ModelScope Notebook

官网安装教程:https://modelscope.cn/notebook/share/ipynb/4a85790f/ollama-installation.ipynb

注意点:安装该平台需要服务器上有python和pip的环境

  1. 安装python和pip
sudo apt install python3
sudo apt install pip
  1. 安装ModelScope Notebook
# 本教程在使用此命令时,会发生错误
pip install modelscope -U

解决方案:

# 强制安装,无视风险pip install modelscope -U --break-system-package                                                                                                                              s.
# 以下为安装成功的截图

  1. 从ModelScope上下载Ollama安装包
modelscope download --model=modelscope/ollama-linux --local_dir ./ollama-linux --revision v0.6.2

  1. 安装ollama
cd ollama-linux && sudo chmod +x ./ollama-modelscope-install.sh && ./ollama-modelscope-install.sh
# 查看版本号
ollama --version

  1. 启动ollama
systemctl start ollama.service
# 查看服务活动状态
systemtcl status ollama.servicesystemctl is-active ollama.servie

启动Ollama(魔塔安装或直接安装可忽略此步骤)

# 检测是否启动   active 为启动;inactive为未启动systemctl is-active ollama.serviesystemctl status ollama.service
# 启动systemctl start ollama.service

# 启动命令:
systemctl start ollama.service
# 结果:发现并不存在ollama.service

创建ollama.service文件(魔塔安装或直接安装可忽略此步骤)

  1. 建一个新的服务文件 /etc/systemd/system/ollama.service

切换到/etc/systemd/system

创建ollama.service

cd /etc/systemd/system
vim ollama.service

  1. 文件内容格式

Description 是服务的简单描述。

After 指定了在哪个服务启动后启动此服务。

Type 定义了服务进程的启动类型,simple 表示启动主进程。

User 指定运行服务的用户,本文用的是root ,你也可以用其他账户。

WorkingDirectory 设置服务的工作目录,本文用的/root,你也可以切换成其他用户目录。

ExecStart 指定启动服务的命令。命令位置为:/usr/bin/ollama 中的serve

Restart 指定服务崩溃时的重启策略。

RestartSec 设置重启服务前等待的时间。

WantedBy 指定了服务所在的 target,multi-user.target 表示多用户系统。

[Unit]
Description=Ollama Service
After=network.target[Service]
Type=simple
User=root
WorkingDirectory=/root
ExecStart=/usr/bin/ollama serve
Restart=on-failure
RestartSec=30[Install]
WantedBy=multi-user.target
# 修改完后,切换到vim的命令格式输入:qw保存
# 步骤1: 按Esc
# 步骤2::wq
  1. 重新加载服务单元文件

命令解释:

在修改了某个服务单元文件后,想要让更改生效,所以需要执行这个命令。需要明确的是,当用户修改的是/etc/systemd/system/下的服务文件时,应该使用daemon-reload。但如果修改的是systemd本身的配置文件比如system.conf,则需要用daemon-reexec,

sudo systemctl daemon-reload

再次启动ollama(此步骤为离线包安装步骤)

# 查看服务状态
systemctl status ollama.service
systemctl is-active ollama.service
# 启动
systemctl start ollama.service
# 设置服务开机自启动
systemctl enable ollama.service

当前的服务状态图:(已启动)

开机自启动

四、Deepseek内存需求对比表(推理模式)

模型规模数据类型理论参数内存实际显存估算(含激活值)推荐显存配置
1.5BFP163 GiB3.6-4.5 GiB6-8 GB
Int81.5 GiB1.95-2.4 GiB4 GB+
7BFP1614 GiB16.8-21 GiB24 GB
Int87 GiB8.4-10.5 GiB12 GB+
13BFP1626 GiB31.2-39 GiB40 GB+
Int813 GiB15.6-19.5 GiB24 GB+
33BFP1666 GiB79.2-99 GiB多卡并行
Int833 GiB39.6-49.5 GiB48 GB+
70BFP16140 GiB168-210 GiB多卡并行
Int870 GiB84-105 GiB多卡并行

五、内存不足解决方案-虚拟内存

因为我们的云服务器只有2G的内存,所以将虚拟内存作为解决方案

▶ 技术定义

虚拟内存(Swap)是通过将磁盘空间模拟为内存使用的技术,当物理内存不足时,系统会将非活跃内存页暂存至磁盘交换区。

▶ 核心运行机制
物理内存(2GB) ←→ 交换分区/文件(如12GB)│└─ 内核通过分页算法自动管理热数据

虚拟内存的优劣对比
优势劣势
内存扩展:突破物理内存限制性能损失:磁盘I/O速度比内存慢100-1000倍
防OOM:避免程序崩溃硬件损耗:SSD频繁写入降低寿命
成本低:无需硬件升级安全风险:交换文件可能泄漏敏感数据
弹性配置:按需调整大小响应延迟:交换抖动(Thrashing)导致卡顿

▶ 搭建模型使用虚拟内存优劣对比分析表
优势劣势
** 突破硬件限制**:总可用内存达14GB(2+12)** 性能断崖下降**:推理速度可能从3.2 tokens/s降至0.3-0.8 tokens/s
** 防OOM崩溃**:可支撑约512 tokens上下文** SSD寿命风险**:模型运行时可能产生15-30GB/日的写入量(SSD寿命约300TBW)
** 零硬件成本**:仅需磁盘空间** 响应不可靠**:P99延迟可能超过5秒
** 快速部署**:30分钟内完成配置** 功能阉割**:需关闭attention优化等特性

▶ 详细构建步骤(Ubuntu系统)
1. 创建12GB Swap文件
# 使用快速分配(需fallocate支持)
sudo fallocate -l 12G /swapfile
# 传统方式(若无fallocate):
# sudo dd if=/dev/zero of=/swapfile bs=1G count=12 status=progress# 设置权限
sudo chmod 600 /swapfile# 格式化为Swap
sudo mkswap /swapfile# 立即启用
sudo swapon /swapfile

2. 查询内存分配
free -h
swapon --show

3. 云服务器持久化配置
  • 永久生效:通过修改 /etc/fstab,系统每次启动时会自动挂载 /swapfile作为 Swap 空间。
  • 避免手动重复配:解决临时 Swap 配置(如 swapon /swapfile)在重启后失效的问题。
  • 安全性:追加写入(-a)确保不破坏原有配置,但仍建议提前备份 /etc/fstab
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab

六、下载Deepseek模型

官网地址:https://ollama.com/library/deepseek-r1:1.5b

# 下载模型并直接运行模型:
ollama run deepseek-r1:1.5b

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

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

相关文章

【bug解决】NameError: name ‘fused_act_ext‘ is not defined

问题 使用basicsr库做超分的时候发现NameError: name fused_act_ext is not defined这个问题,一直不断重复的使用pip uninstall basicsr 和 BASICSR_EXTTrue pip install basicsr 发现一直没有执行编译过程,导致一直推理失败 原因 之前已经安装过basi…

Anaconda开始菜单里添加JupyterLab快捷方式

Anaconda开始菜单里添加JupyterLab快捷方式 在 Windows 系统安装 Anaconda 后,发现开始菜单只有 Jupyter Notebook,却找不到Jupyter Lab入口。其实这是因为最新版 Anaconda 默认未预装 Lab 组件,本篇介绍一种添加 Jupyter Lab入口到开始菜单…

【Qt】modbus客户端笔记

Qt 中基于 Modbus 协议的通用客户端学习笔记 一、概述 本客户端利用 Qt 的 QModbusTcpClient 实现与 Modbus 服务器的通信,具备连接、读写寄存器、心跳检测、自动重连等功能,旨在提供一个可靠且易用的 Modbus 客户端框架,方便在不同项目中集…

解决Vmware 运行虚拟机Ubuntu22.04卡顿、终端打字延迟问题

亲测可用 打开虚拟机设置,关闭加速3D图形 (应该是显卡驱动的问题,不知道那个版本的驱动不会出现这个问题,所以干脆把加速关了)

【网络】Socket套接字

目录 一、端口号 二、初识TCP/UDP协议 三、网络字节序 3.1 概念 3.2 常用API 四、Socket套接字 4.1 概念 4.2 常用API (1)socket (2)bind sockaddr结构 (3)listen (4)a…

内联函数/函数重载/函数参数缺省

一、内联函数 为了减少函数调用的开销 在函数定义前加“inline”关键字,即可定义内联函数 二、函数重载 1.名字相同 2.参数个数或者参数类型不同 编译器根据调用语句实参的个数和类型判断应该调用哪个函数 三、函数的缺省参数 定义函数的时候可以让最右边的连…

基于神经网络的文本分类的设计与实现

标题:基于神经网络的文本分类的设计与实现 内容:1.摘要 在信息爆炸的时代,大量文本数据的分类处理变得至关重要。本文旨在设计并实现一种基于神经网络的文本分类系统。通过构建合适的神经网络模型,采用公开的文本数据集进行训练和测试。在实验中&#x…

Baklib内容中台的核心定位是什么?

构建企业级知识中枢 在数字化转型趋势下,Baklib内容中台通过构建企业级知识中枢,实现了从碎片化信息到体系化资产的跃迁。其核心能力体现为对多源内容的智能聚合与结构化存储,支持从文档、图片到视频的全格式整合,并通过语义标签…

蓝耘平台API深度剖析:如何高效实现AI应用联动

目录 一、蓝耘平台简介 1.1 蓝耘通义大模型 1.2 蓝耘云计算资源 1.3 蓝耘API与微服务 二、 蓝耘平台应用联动场景 2.1 数据采集与预处理联动 2.2 模型推理与后端服务联动 2.3 跨平台联动 三、蓝耘平台注册体验功能 3.1 注册 3.2 体验蓝耘MaaS平台如何使用海螺AI生成视频…

《大语言模型赋能证券业开发安全:海云安技术方案在上交所专刊发表》

近日,海云安《大语言模型在证券业开发安全领域的探索与实践》技术方案经过上海证券交易所(以下简称”上交所“)行业专家评审后正式收录于《交易技术前沿——网络安全专刊(2025年第1期 总第61期)》。 证券信息技术研究…

第三课:Stable Diffusion图生图入门及应用

文章目录 Part01 图生图原理Part02 图生图基本流程Part03 随机种子作用解析Part04 图生图的拓展应用 Part01 图生图原理 当提示词不能足够表达用户需求的时候,加入图片能让AI更好的理解你的想法图片上的像素信息会在加噪和去噪的过程中,作为一种特征反映…

将网络安全和第三方风险管理与业务目标相结合

在网络安全风险领域,我们经常遇到与企业语言不通的问题。这可能导致网络安全风险管理计划得不到支持。当发现网络安全风险时,困难在于以符合组织语言和目标的方式来表达它。 第三方风险属于另一个灰色地带。在组织内部,许多利益相关者&#…

使用Github项目nghttp3的样例学习HTTP/3

文章目录 前言一、HTTP3测试 in Ubuntu1.1. 基本软件1.2. gcc/g1.2.1. Ubuntu221.2.2. Ubuntu201.2.2.1. 必备库1.2.2.1.1. gmp1.2.2.1.2. mpfr1.2.2.1.3. mpc 1.2.2.2. 安装 1.3. libev > 4.11(备用)1.3.1. 安装1.3.2. 测试 1.4. nghttp31.5. ngtcp2…

uniapp 在app上 字体如何不跟着系统字体大小变

在UniApp开发中,默认情况下App的字体可能会跟随系统字体设置而变化。如果你希望保持固定的字体样式,不随系统字体设置改变,可以采用以下几种方法: 方法一:全局CSS设置 在App.vue的样式中添加以下CSS: /*…

跨域问题的解决方案

一、跨域问题的本质 1.1 同源策略的三要素 浏览器的同源策略(Same-Origin Policy)要求请求的 协议、域名、端口 完全一致,否则视为跨域: 协议不同:http 与 https域名不同:a.com 与 b.com端口不同&#x…

Linux 上使用 Docker 部署 Kafka 集群

在 Linux 上使用 Docker 部署 Kafka 集群的步骤如下 1. 准备工作 确保已安装: Docker Docker Compose 2. 创建 Docker Compose 文件 (docker-compose.yml) version: 3.8services:zookeeper:image: wurstmeister/zookeepercontainer_name: zookeeperports:- &quo…

【性能优化点滴】odygrd/quill 中一个简单的标记位作用--降低 IO 次数

在 StreamSink 类中,成员变量 _write_occurred 的作用是 跟踪自上次刷新(Flush)以来是否有写入操作发生,其核心目的是 优化 I/O 性能。以下是详细解析: _write_occurred 的作用 1. 避免不必要的刷新(Flush…

Ubuntu Linux安装PyQt5并配置Qt Designer

一 安装 PyQt5 借助 apt 包管理器来安装 PyQt5 及其相关的开发工具: sudo apt install python3-pyqt5 pyqt5-dev-tools 假如报错, You might want to run apt --fix-broken install to correct these. 直接执行: sudo apt --fix-…

2025清华大学:DeepSeek教程全集(PDF+视频精讲,共10份).zip

一、资料列表 第一课:Deepseek基础入门 第二课:DeepSeek赋能职场 第三课:普通人如何抓住DeepSeek红利 第四课:让科研像聊天一样简单 第五课:DeepSeek与AI幻觉 第六课:基于DeepSeek的AI音乐词曲的创造法 第…

容器C++

string容器 string构造函数 #include<iostream> using namespace std; #include<string.h> void test01() {string s1;//默认构造const char* str "hello world";string s2(str);//传入char*cout << "s2" << s2 << endl;s…