在无sudo权限Linux上安装 Ollama 并使用 DeepSeek-R1 模型

本教程将指导你如何在 Linux 系统上安装 Ollama(一个本地运行大型语言模型的工具),并加载 DeepSeek-R1 模型。DeepSeek-R1 是一个高性能的开源语言模型,适用于多种自然语言处理任务。


DeepSeek-R1 简介

DeepSeek-R1 是 DeepSeek 开发的第一代推理模型,在数学、代码和推理任务上表现出色,性能媲美 OpenAI 的 GPT-3.5。DeepSeek 团队还通过蒸馏技术,将大模型的推理能力迁移到更小的模型中,显著提升了小模型在推理任务上的表现。


1. 准备工作

1.1 系统要求

  • 操作系统: Linux(推荐 Ubuntu 20.04 或更高版本)
  • 硬件:
    • CPU: 至少 4 核
    • 内存: 至少 16GB
    • 存储: 至少 20GB 可用空间
    • GPU(可选): 支持 CUDA 的 NVIDIA GPU(推荐显存 8GB 或更高)

1.2 依赖工具

确保以下工具已安装:

  • curl
  • tar
  • git(可选,用于克隆代码库)

如果没有安装,可以通过以下命令安装:

sudo apt update
sudo apt install curl tar git

2. 安装 Ollama

方法一:通过 Ollama 的压缩包下载

2.1.1 下载 Ollama

首先,使用 wgetcurl 分段下载 Ollama 的压缩包:

wget -c -O ollama-linux-amd64.tgz "https://gh-proxy.com/github.com/ollama/ollama/releases/download/v0.5.7/ollama-linux-amd64.tgz"
2.1.2 解压缩下载的文件

下载完成后,解压缩文件到您的主目录中的一个子目录(例如 ~/local/ollama):

mkdir -p $HOME/local/ollama
tar -xzf ollama-linux-amd64.tgz -C $HOME/local/ollama
2.1.3 设置环境变量

将解压缩后的可执行文件添加到您的 PATH 环境变量中,以便可以从命令行直接运行 ollama。将以下行添加到您的 ~/.bashrc~/.zshrc 文件中(取决于您使用的 shell):

export PATH="$HOME/local/ollama/bin:$PATH"

然后,重新加载 shell 配置文件:

source ~/.bashrc  # 或 source ~/.zshrc
2.1.4 验证安装

验证 ollama 是否已正确安装并可以运行:

ollama --version

如果一切正常,您应该会看到 ollama 的版本信息。

2.1.5 启动 Ollama 服务

在终端中运行以下命令以启动 Ollama 服务:

ollama serve

这将启动 Ollama 服务,并使其在后台运行。

在这里插入图片描述

方法二:通过安装脚本下载

以下脚本会将 Ollama 安装到用户目录(~/.local/bin),无需 sudo 权限。

2.2.1 安装脚本
#!/bin/sh
# This script installs Ollama on Linux without requiring sudo privileges.
# It installs Ollama to the user's local directory (~/.local/bin).set -eured="$( (/usr/bin/tput bold || :; /usr/bin/tput setaf 1 || :) 2>&-)"
plain="$( (/usr/bin/tput sgr0 || :) 2>&-)"status() { echo ">>> $*" >&2; }
error() { echo "${red}ERROR:${plain} $*"; exit 1; }
warning() { echo "${red}WARNING:${plain} $*"; }TEMP_DIR=$(mktemp -d)
cleanup() { rm -rf $TEMP_DIR; }
trap cleanup EXITavailable() { command -v $1 >/dev/null; }
require() {local MISSING=''for TOOL in $*; doif ! available $TOOL; thenMISSING="$MISSING $TOOL"fidoneecho $MISSING
}[ "$(uname -s)" = "Linux" ] || error 'This script is intended to run on Linux only.'ARCH=$(uname -m)
case "$ARCH" inx86_64) ARCH="amd64" ;;aarch64|arm64) ARCH="arm64" ;;*) error "Unsupported architecture: $ARCH" ;;
esacIS_WSL2=falseKERN=$(uname -r)
case "$KERN" in*icrosoft*WSL2 | *icrosoft*wsl2) IS_WSL2=true;;*icrosoft) error "Microsoft WSL1 is not currently supported. Please use WSL2 with 'wsl --set-version <distro> 2'" ;;*) ;;
esacVER_PARAM="${OLLAMA_VERSION:+?version=$OLLAMA_VERSION}"NEEDS=$(require curl awk grep sed tee xargs)
if [ -n "$NEEDS" ]; thenstatus "ERROR: The following tools are required but missing:"for NEED in $NEEDS; doecho "  - $NEED"doneexit 1
fi# Install Ollama to ~/.local/bin
OLLAMA_INSTALL_DIR="$HOME/.local/bin"
mkdir -p "$OLLAMA_INSTALL_DIR"
export PATH="$OLLAMA_INSTALL_DIR:$PATH"if [ -d "$OLLAMA_INSTALL_DIR/lib/ollama" ] ; thenstatus "Cleaning up old version at $OLLAMA_INSTALL_DIR/lib/ollama"rm -rf "$OLLAMA_INSTALL_DIR/lib/ollama"
fistatus "Installing ollama to $OLLAMA_INSTALL_DIR"
status "Downloading Linux ${ARCH} bundle"
curl --fail --show-error --location --progress-bar \"https://gh-proxy.com/github.com/ollama/ollama/releases/download/v0.5.7/ollama-linux-${ARCH}.tgz" | \tar -xzf - -C "$OLLAMA_INSTALL_DIR"if [ "$OLLAMA_INSTALL_DIR/bin/ollama" != "$OLLAMA_INSTALL_DIR/ollama" ] ; thenstatus "Making ollama accessible in the PATH in $OLLAMA_INSTALL_DIR"ln -sf "$OLLAMA_INSTALL_DIR/bin/ollama" "$OLLAMA_INSTALL_DIR/ollama"
fi# Check for NVIDIA JetPack systems with additional downloads
if [ -f /etc/nv_tegra_release ] ; thenif grep R36 /etc/nv_tegra_release > /dev/null ; thenstatus "Downloading JetPack 6 components"curl --fail --show-error --location --progress-bar \"https://gh-proxy.com/github.com/ollama/ollama/releases/download/v0.5.7/ollama-linux-${ARCH}-jetpack6.tgz" | \tar -xzf - -C "$OLLAMA_INSTALL_DIR"elif grep R35 /etc/nv_tegra_release > /dev/null ; thenstatus "Downloading JetPack 5 components"curl --fail --show-error --location --progress-bar \"https://gh-proxy.com/github.com/ollama/ollama/releases/download/v0.5.7/ollama-linux-${ARCH}-jetpack5.tgz" | \tar -xzf - -C "$OLLAMA_INSTALL_DIR"elsewarning "Unsupported JetPack version detected. GPU may not be supported."fi
fiinstall_success() {status 'The Ollama API is now available at 127.0.0.1:11434.'status 'Install complete. Run "ollama" from the command line.'status 'Make sure ~/.local/bin is in your PATH:'status '    export PATH="$HOME/.local/bin:$PATH"'
}
trap install_success EXIT# Everything from this point onwards is optional.# WSL2 only supports GPUs via nvidia passthrough
# so check for nvidia-smi to determine if GPU is available
if [ "$IS_WSL2" = true ]; thenif available nvidia-smi && [ -n "$(nvidia-smi | grep -o "CUDA Version: [0-9]*\.[0-9]*")" ]; thenstatus "Nvidia GPU detected."fiinstall_successexit 0
fi# Don't attempt to install drivers on Jetson systems
if [ -f /etc/nv_tegra_release ] ; thenstatus "NVIDIA JetPack ready."install_successexit 0
fi# Install GPU dependencies on Linux
if ! available lspci && ! available lshw; thenwarning "Unable to detect NVIDIA/AMD GPU. Install lspci or lshw to automatically detect and install GPU dependencies."exit 0
ficheck_gpu() {# Look for devices based on vendor ID for NVIDIA and AMDcase $1 inlspci)case $2 innvidia) available lspci && lspci -d '10de:' | grep -q 'NVIDIA' || return 1 ;;amdgpu) available lspci && lspci -d '1002:' | grep -q 'AMD' || return 1 ;;esac ;;lshw)case $2 innvidia) available lshw && lshw -c display -numeric -disable network | grep -q 'vendor: .* \[10DE\]' || return 1 ;;amdgpu) available lshw && lshw -c display -numeric -disable network | grep -q 'vendor: .* \[1002\]' || return 1 ;;esac ;;nvidia-smi) available nvidia-smi || return 1 ;;esac
}if check_gpu nvidia-smi; thenstatus "NVIDIA GPU installed."exit 0
fiif ! check_gpu lspci nvidia && ! check_gpu lshw nvidia && ! check_gpu lspci amdgpu && ! check_gpu lshw amdgpu; theninstall_successwarning "No NVIDIA/AMD GPU detected. Ollama will run in CPU-only mode."exit 0
fiif check_gpu lspci amdgpu || check_gpu lshw amdgpu; thenstatus "Downloading Linux ROCm ${ARCH} bundle"curl --fail --show-error --location --progress-bar \"https://gh-proxy.com/github.com/ollama/ollama/releases/download/v0.5.7/ollama-linux-${ARCH}-rocm.tgz" | \tar -xzf - -C "$OLLAMA_INSTALL_DIR"install_successstatus "AMD GPU ready."exit 0
fistatus "NVIDIA GPU detected. Note: CUDA driver installation requires sudo privileges."
install_success
2.2.2 运行脚本
  1. 将上述脚本保存为 install_ollama.sh
  2. 赋予执行权限:
    chmod +x install_ollama.sh
    
  3. 运行脚本:
    ./install_ollama.sh
    
2.2.3 验证安装

安装完成后,运行以下命令验证 Ollama 是否安装成功:

ollama --version

如果显示版本号,说明安装成功。

2.2.4 启动 Ollama 服务

在终端中运行以下命令以启动 Ollama 服务:

ollama serve

这将启动 Ollama 服务,并使其在后台运行。
在这里插入图片描述

3. 下载并加载 DeepSeek-R1 模型

3.1 模型地址

DeepSeek-R1 模型可以从以下地址下载,使用 Ollama 则不用下载:

  • Hugging Face: deepseek-ai/DeepSeek-R1
  • ModelScope: deepseek-ai/DeepSeek-R1

3.2 使用 Ollama 加载模型

Ollama 模型库

3.2.1 DeepSeek-R1
  • 模型大小: 671B 参数
  • 运行命令:
    ollama run deepseek-r1:671b
    
3.2.2 蒸馏模型

以下是通过蒸馏技术生成的小模型,适用于不同规模的硬件环境:

  • DeepSeek-R1-Distill-Qwen-1.5B

    ollama run deepseek-r1:1.5b
    
  • DeepSeek-R1-Distill-Qwen-7B

    ollama run deepseek-r1:7b
    
  • DeepSeek-R1-Distill-Llama-8B

    ollama run deepseek-r1:8b
    
  • DeepSeek-R1-Distill-Qwen-14B

    ollama run deepseek-r1:14b
    
  • DeepSeek-R1-Distill-Qwen-32B

    ollama run deepseek-r1:32b
    
  • DeepSeek-R1-Distill-Llama-70B

    ollama run deepseek-r1:70b
    

DeepSeek-R1 模型

3.3 通过 API 调用

Ollama 提供了一个简单的 API,可以通过 curl 调用:

curl -X POST http://127.0.0.1:11434/api/generate \-H "Content-Type: application/json" \-d '{"model": "deepseek-r1","prompt": "你好,世界!","max_tokens": 50}'

3.4 通过 Python 调用

安装 requests 库:

pip install requests

使用以下 Python 代码调用模型:

import requestsurl = "http://127.0.0.1:11434/api/generate"
payload = {"model": "deepseek-r1","prompt": "你好,世界!","max_tokens": 50
}response = requests.post(url, json=payload)
print(response.json())

4. 参考资源

  • 论文地址: DeepSeek-R1 论文
  • 开源地址: Hugging Face | ModelScope

5.常见问题

Windows 风格的行尾(CRLF),而不是 Unix 风格的行尾(LF)

错误信息表明您的 install.sh 脚本中存在 Windows 风格的行尾(CRLF),而不是 Unix 风格的行尾(LF)。这会导致 shell 脚本在 Unix 系统上运行时出现问题。

要解决此问题,您可以将脚本文件的行尾转换为 Unix 风格。以下是几种方法:

方法 1:使用 dos2unix 工具
如果您的系统上安装了 dos2unix 工具,可以使用它将文件转换为 Unix 格式:

dos2unix install.sh

方法 2:使用 tr 命令
您还可以使用 tr 命令来删除 Windows 行尾:

tr -d '\r' < install.sh > install_unix.sh
mv install_unix.sh install.sh

方法 3:使用文本编辑器
如果您使用的是文本编辑器(如 VSCode、Sublime Text 或 Notepad++),可以在保存文件时选择 Unix 格式的行尾。

方法 4:使用 sed 命令
您还可以使用 sed 命令来删除 Windows 行尾:

sed -i 's/\r$//' install.sh

方法 5:使用 Python 脚本
如果您有 Python 环境,可以使用以下 Python 脚本将文件转换为 Unix 格式:

with open('install.sh', 'rb') as file:content = file.read()with open('install.sh', 'wb') as file:file.write(content.replace(b'\r\n', b'\n'))

改Ollama 的模型存储路径

好的!你可以通过以下步骤将 Ollama 的模型存储路径设置为 $HOME/local/ollama/mod,并使用符号链接来实现自定义路径。


步骤 1:创建自定义目录
首先,创建你希望存储模型的目录:

mkdir -p $HOME/local/ollama/mod

步骤 2:移动默认模型目录(如果已存在)
如果 Ollama 已经下载过模型,默认模型目录会位于 ~/.ollama/models。你可以将其移动到自定义目录:

mv ~/.ollama/models $HOME/local/ollama/mod

步骤 3:创建符号链接
创建一个符号链接,将 Ollama 的默认模型路径指向你的自定义目录:

ln -s $HOME/local/ollama/mod ~/.ollama/models

步骤 4:验证路径
运行以下命令,检查符号链接是否创建成功:

ls -l ~/.ollama/models

如果输出类似以下内容,说明符号链接已正确设置:

lrwxrwxrwx 1 user user 25 Oct 10 12:00 /home/user/.ollama/models -> /home/user/local/ollama/mod

步骤 5:运行 Ollama
现在,当你运行 ollama run deepseek-r1:70b 时,模型会被下载到 $HOME/local/ollama/mod 目录中。


完整脚本

如果你希望自动化上述步骤,可以使用以下脚本:

#!/bin/bash# 自定义模型存储路径
CUSTOM_MODEL_DIR="$HOME/local/ollama/mod"# 创建自定义目录
mkdir -p "$CUSTOM_MODEL_DIR"# 移动默认模型目录(如果存在)
if [ -d "$HOME/.ollama/models" ]; thenmv "$HOME/.ollama/models" "$CUSTOM_MODEL_DIR"
fi# 创建符号链接
ln -s "$CUSTOM_MODEL_DIR" "$HOME/.ollama/models"# 验证符号链接
echo "验证符号链接:"
ls -l "$HOME/.ollama/models"# 提示信息
echo "Ollama 模型存储路径已设置为:$CUSTOM_MODEL_DIR"

将上述脚本保存为 setup_ollama_path.sh,然后运行:

chmod +x setup_ollama_path.sh
./setup_ollama_path.sh

注意事项

  1. 权限问题:确保你有权限在 $HOME/local/ollama/mod 目录中读写文件。
  2. Ollama 版本:确保你使用的是最新版本的 Ollama,以避免兼容性问题。
  3. 符号链接生效:符号链接创建后,Ollama 会自动将模型下载到自定义路径。

通过以上步骤,你可以成功将 Ollama 的模型存储路径设置为 $HOME/local/ollama/mod,并开始使用自定义路径下载和运行模型!


通过本教程,你可以在 Linux 系统上安装 Ollama 并加载 DeepSeek-R1 模型,轻松运行高性能的自然语言处理任务。如果有任何问题,欢迎在评论区留言!

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

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

相关文章

Ubuntu 安装 QGIS LTR 3.34

QGIS官方提供了安装指南&#xff1a;https://qgis.org/resources/installation-guide/#linux。大多数linux发行版将QGIS拆分为几个包&#xff1a;qgis、qgis-python、qgis-grass、qgis-plugin-grass、qgis-server&#xff0c;有的包最初安装时被跳过&#xff0c;可以在需要使用…

计算树的叶子节点,使用c语言实现

//树的数据结构 typedef struct node{ ElemType data; /*数据域*/ struct node *child, *brother; /*孩子与兄弟域 */ }Tree; //计算树的叶子节点的个数 int Leaves (Tree *root){/*计算以孩子-兄弟表示法存储的森林的叶子数*/ if(root) if(root-&…

Visio2021下载与安装教程

这里写目录标题 软件下载软件介绍安装步骤 软件下载 软件名称&#xff1a;Visio2021软件语言&#xff1a;简体中文软件大小&#xff1a;4.28G系统要求&#xff1a;Windows10或更高&#xff0c;64位操作系统硬件要求&#xff1a;CPU2GHz &#xff0c;RAM4G或更高下载链接&#…

c++贪心

本篇文章&#xff0c;我将同大家一起学习c的贪心&#xff01;&#xff01;&#xff01; 目录 第一题 题目链接 题目解析 代码原理 代码编写 第二题 题目链接 题目解析 代码原理 代码编写 第三题 题目链接 题目解析 代码原理 代码编写 第四题 题目链接 题目解…

活动回顾和预告|微软开发者社区 Code Without Barriers 上海站首场活动成功举办!

Code Without Barriers 上海活动回顾 Code Without Barriers&#xff1a;AI & DATA 深入探索人工智能与数据如何变革行业 2025年1月16日&#xff0c;微软开发者社区 Code Without Barriers &#xff08;CWB&#xff09;携手 She Rewires 她原力在大中华区的首场活动“AI &…

嵌入式C语言:结构体的多态性之结构体中的void*万能指针

目录 一、void*指针在结构体中的应用 二、实现方式 2.1. 定义通用结构体 2.2. 定义具体结构体 2.3. 初始化和使用 三、应用场景 3.1. 内存管理函数 3.2. 泛型数据结构&#xff08;链表&#xff09; 3.3. 回调函数和函数指针 3.4. 跨语言调用或API接口&#xff08;模拟…

NoteGen:记录、写作与AI融合的跨端笔记应用

在信息爆炸的时代,如何高效地捕捉灵感、整理知识并进行创作成为了许多人关注的问题。为此,我们开发了 NoteGen,一款专注于记录和写作的跨端 AI 笔记应用。它基于 Tauri 开发,利用其强大的跨平台能力支持 Mac、Windows 和 Linux 系统,并计划未来扩展到 iOS 和 Android 平台…

BUUCTF 蜘蛛侠呀 1

BUUCTF:https://buuoj.cn/challenges 文章目录 题目描述&#xff1a;密文&#xff1a;解题思路&#xff1a;flag&#xff1a; 相关阅读 CTF Wiki Hello CTF NewStar CTF buuctf-蜘蛛侠呀 BUUCTF&#xff1a;蜘蛛侠呀 MISC&#xff08;时间隐写&#xff09;蜘蛛侠呀 题目描述&am…

Web3 的核心理念:去中心化如何重塑互联网

Web3 是新一代互联网的构想&#xff0c;它的核心理念是去中心化&#xff0c;旨在打破传统互联网由大型平台主导的数据垄断&#xff0c;赋予用户更多的控制权和隐私保护。通过区块链技术和去中心化应用&#xff08;DApps&#xff09;&#xff0c;Web3 正在重塑互联网的运作方式。…

pyautogui操控Acrobat DC pro万能PDF转Word,不丢任何PDF格式样式

为了将PDF转换脚本改为多进程异步处理&#xff0c;我们需要确保每个进程独立操作不同的Acrobat窗口。以下是实现步骤&#xff1a; 实现代码 import os import pyautogui import time import subprocess import pygetwindow as gw from multiprocessing import Pooldef conver…

网易前端开发面试题200道及参考答案 (下)

阐述如何实现 img 按照原比例最大化放置在 div 中? 要让 img 按照原比例最大化放置在 div 中,可通过以下几种方式实现: 使用 object - fit 属性 object - fit 是 CSS 中用于规定如何调整替换元素(如 <img>、<video>)的内容以适应其容器的属性。 object - fit…

TikTok 推出了一款 IDE,用于快速构建 AI 应用

字节跳动(TikTok 的母公司)刚刚推出了一款名为 Trae 的新集成开发环境(IDE)。 Trae 基于 Visual Studio Code(VS Code)构建,继承了这个熟悉的平台,并加入了 AI 工具,帮助开发者更快、更轻松地构建应用——有时甚至无需编写任何代码。 如果你之前使用过 Cursor AI,T…

C++封装红黑树实现mymap和myset和模拟实现详解

文章目录 map和set的封装map和set的底层 map和set的模拟实现insertiterator实现的思路operatoroperator- -operator[ ] map和set的封装 介绍map和set的底层实现 map和set的底层 一份模版实例化出key的rb_tree和pair<k,v>的rb_tree rb_tree的Key和Value不是我们之前传统意…

服务器虚拟化技术详解与实战:架构、部署与优化

&#x1f4dd;个人主页&#x1f339;&#xff1a;一ge科研小菜鸡-CSDN博客 &#x1f339;&#x1f339;期待您的关注 &#x1f339;&#x1f339; 引言 在现代 IT 基础架构中&#xff0c;服务器虚拟化已成为提高资源利用率、降低运维成本、提升系统灵活性的重要手段。通过服务…

Ethflow Round 1 (Codeforces Round 1001, Div. 1 + Div. 2)(前三题)

A. String 翻译&#xff1a; 给你一个长度为 n 的字符串 s&#xff0c;其中包含 0 和/或 1。在一次操作中&#xff0c;您可以从 s 中选择一个非空的子序列 t&#xff0c;使得 t 中任何两个相邻的字符都是不同的。然后&#xff0c;翻转 t 中的每个字符&#xff08;0 变为 1&…

图漾Halcon版本SDK使用教程【V1.1.0新版本】

1.下载并安装 Halcon 1.1 下载Halcon软件 在 Halcon 官网(https://www.mvtec.com/downloads) 下载 Halcon (Windows 版) 安装包&#xff0c;并根据官方文档安装 Halcon&#xff0c;下载HALCON24.11Progress-Steady。 1.2 安装Halcon 1.解压HALCON 24.11.1.0的安装包压缩文件…

在计算机上本地运行 Deepseek R1

Download Ollama on Linux Download Ollama on Windows Download Ollama on macOS Deepseek R1 是一个强大的人工智能模型&#xff0c;在科技界掀起了波澜。它是一个开源语言模型&#xff0c;可以与 GPT-4 等大玩家展开竞争。但更重要的是&#xff0c;与其他一些模型不同&…

VS C++ 配置OPENCV环境

VS C 配置OPENCV环境 1.下载opencv2.安装环境3.opencv环境4.VS配置opencv环境5.EXE执行文件路径的环境lib和dll需要根据是debug还是release环境来区分使用哪个 6.Windows环境 1.下载opencv 链接: link 2.安装环境 双击运行即可 3.opencv环境 include文件路径:opencv\build\…

kaggle-ISIC 2024 - 使用 3D-TBP 检测皮肤癌-学习笔记

问题描述&#xff1a; 通过从 3D 全身照片 (TBP) 中裁剪出单个病变来识别经组织学确诊的皮肤癌病例 数据集描述&#xff1a; 图像临床文本信息 评价指标&#xff1a; pAUC&#xff0c;用于保证敏感性高于指定阈值下的AUC 主流方法分析&#xff08;文本&#xff09; 基于CatBoo…

SpringBoot源码解析(八):Bean工厂接口体系

SpringBoot源码系列文章 SpringBoot源码解析(一)&#xff1a;SpringApplication构造方法 SpringBoot源码解析(二)&#xff1a;引导上下文DefaultBootstrapContext SpringBoot源码解析(三)&#xff1a;启动开始阶段 SpringBoot源码解析(四)&#xff1a;解析应用参数args Sp…