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

news2025/2/3 20:25:54

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


DeepSeek-R1 简介

DeepSeek-R1 是 DeepSeek 开发的第一代推理模型,在数学、代码和推理任务上表现出色,性能媲美 OpenAI o1。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 -eu

red="$( (/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 EXIT

available() { command -v $1 >/dev/null; }
require() {
    local MISSING=''
    for TOOL in $*; do
        if ! available $TOOL; then
            MISSING="$MISSING $TOOL"
        fi
    done

    echo $MISSING
}

[ "$(uname -s)" = "Linux" ] || error 'This script is intended to run on Linux only.'

ARCH=$(uname -m)
case "$ARCH" in
    x86_64) ARCH="amd64" ;;
    aarch64|arm64) ARCH="arm64" ;;
    *) error "Unsupported architecture: $ARCH" ;;
esac

IS_WSL2=false

KERN=$(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'" ;;
    *) ;;
esac

VER_PARAM="${OLLAMA_VERSION:+?version=$OLLAMA_VERSION}"

NEEDS=$(require curl awk grep sed tee xargs)
if [ -n "$NEEDS" ]; then
    status "ERROR: The following tools are required but missing:"
    for NEED in $NEEDS; do
        echo "  - $NEED"
    done
    exit 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" ] ; then
    status "Cleaning up old version at $OLLAMA_INSTALL_DIR/lib/ollama"
    rm -rf "$OLLAMA_INSTALL_DIR/lib/ollama"
fi

status "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" ] ; then
    status "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 ] ; then
    if grep R36 /etc/nv_tegra_release > /dev/null ; then
        status "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 ; then
        status "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"
    else
        warning "Unsupported JetPack version detected. GPU may not be supported."
    fi
fi

install_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 ]; then
    if available nvidia-smi && [ -n "$(nvidia-smi | grep -o "CUDA Version: [0-9]*\.[0-9]*")" ]; then
        status "Nvidia GPU detected."
    fi
    install_success
    exit 0
fi

# Don't attempt to install drivers on Jetson systems
if [ -f /etc/nv_tegra_release ] ; then
    status "NVIDIA JetPack ready."
    install_success
    exit 0
fi

# Install GPU dependencies on Linux
if ! available lspci && ! available lshw; then
    warning "Unable to detect NVIDIA/AMD GPU. Install lspci or lshw to automatically detect and install GPU dependencies."
    exit 0
fi

check_gpu() {
    # Look for devices based on vendor ID for NVIDIA and AMD
    case $1 in
        lspci)
            case $2 in
                nvidia) 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 in
                nvidia) 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; then
    status "NVIDIA GPU installed."
    exit 0
fi

if ! check_gpu lspci nvidia && ! check_gpu lshw nvidia && ! check_gpu lspci amdgpu && ! check_gpu lshw amdgpu; then
    install_success
    warning "No NVIDIA/AMD GPU detected. Ollama will run in CPU-only mode."
    exit 0
fi

if check_gpu lspci amdgpu || check_gpu lshw amdgpu; then
    status "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_success
    status "AMD GPU ready."
    exit 0
fi

status "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 requests

url = "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 的默认模型路径指向你的自定义目录:

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

即加入,开启你的高效开发之旅吧!

ollama-ui

项目地址: https://gitcode.com/gh_mirrors/oll/ollama-ui

git clone https://github.com/ollama-ui/ollama-ui
cd ollama-ui
make

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

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

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

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

相关文章

蓝桥杯思维训练营(一)

文章目录 题目总览题目详解翻之一起做很甜的梦 蓝桥杯的前几题用到的算法较少&#xff0c;大部分考察的都是思维能力&#xff0c;方法比较巧妙&#xff0c;所以我们要积累对应的题目&#xff0c;多训练 题目总览 翻之 一起做很甜的梦 题目详解 翻之 思维分析&#xff1a;一开…

纯后训练做出benchmark超过DeepseekV3的模型?

论文地址 https://arxiv.org/pdf/2411.15124 模型是AI2的&#xff0c;他们家也是玩开源的 先看benchmark&#xff0c;几乎是纯用llama3 405B后训练去硬刚出一个gpt4o等级的LLamA405 我们先看之前的机遇Lllama3.1 405B进行全量微调的模型 Hermes 3&#xff0c;看着还没缘模型…

OpenAI深夜反击:o3-mini免费上线,能否撼动DeepSeek的地位?

还在为寻找合适的 AI 模型而烦恼吗&#xff1f;chatTools 平台为您精选 o1、GPT4o、Claude、Gemini 等顶尖 AI 模型&#xff0c;满足您不同的 AI 应用需求。立即体验强大的 AI 能力&#xff01; 深夜反击&#xff0c;OpenAI祭出o3-mini 在DeepSeek异军突起&#xff0c;搅动AI行…

【Linux-网络】初识计算机网络 Socket套接字 TCP/UDP协议(包含Socket编程实战)

&#x1f3ac; 个人主页&#xff1a;谁在夜里看海. &#x1f4d6; 个人专栏&#xff1a;《C系列》《Linux系列》《算法系列》 ⛰️ 道阻且长&#xff0c;行则将至 目录 &#x1f4da;一、初识计算机网络 &#x1f4d6; 背景 &#x1f4d6; 网络协议 &#x1f516;OSI七层…

使用ollama在本地部署一个deepseek大模型

文章目录 为什么选择本地化部署需要用到什么作者使用的什么环境如何根据自己的电脑或服务器配置选择自己能部署的大模型 一、Ollama1、下载Ollama2、安装Ollama 二、DeepSeek R11、下载DeepSeek R12、安装DeepSeek R1 三、ChatBox AI1、下载ChatBox AI2、安装ChatBox AI3、连接…

10 Flink CDC

10 Flink CDC 1. CDC是什么2. CDC 的种类3. 传统CDC与Flink CDC对比4. Flink-CDC 案例5. Flink SQL 方式的案例 1. CDC是什么 CDC 是 Change Data Capture&#xff08;变更数据获取&#xff09;的简称。核心思想是&#xff0c;监测并捕获数据库的变动&#xff08;包括数据或数…

【含文档+PPT+源码】基于微信小程序连锁药店商城

项目介绍 本课程演示的是一款基于微信小程序连锁药店商城&#xff0c;主要针对计算机相关专业的正在做毕设的学生与需要项目实战练习的 Java 学习者。 1.包含&#xff1a;项目源码、项目文档、数据库脚本、软件工具等所有资料 2.带你从零开始部署运行本套系统 3.该项目附带的…

[免费]微信小程序智能商城系统(uniapp+Springboot后端+vue管理端)【论文+源码+SQL脚本】

大家好&#xff0c;我是java1234_小锋老师&#xff0c;看到一个不错的微信小程序智能商城系统(uniappSpringboot后端vue管理端)&#xff0c;分享下哈。 项目视频演示 【免费】微信小程序智能商城系统(uniappSpringboot后端vue管理端) Java毕业设计_哔哩哔哩_bilibili 项目介绍…

2025年02月02日Github流行趋势

项目名称&#xff1a;oumi 项目地址url&#xff1a;https://github.com/oumi-ai/oumi 项目语言&#xff1a;Python 历史star数&#xff1a;1416 今日star数&#xff1a;205 项目维护者&#xff1a;xrdaukar, oelachqar, taenin, wizeng23, kaisopos 项目简介&#xff1a;构建最…

vue入门到实战 三

目录 3.1 v-bind 3.1.1 v-bind指令用法 ​编辑3.1.2 使用v-bind绑定class 3.1.3 使用v-bind绑定style 3.2.1 v-if指令 3.2.1 v-if指令 3.2.2 v-show指令 ​3.3 列表渲染指令v-for 3.3.1 基本用法 3.3.2 数组更新 3.3.3 过滤与排序 3.4 事件处理 3.4.1 使用v-on指令…

实验六 项目二 简易信号发生器的设计与实现 (HEU)

声明&#xff1a;代码部分使用了AI工具 实验六 综合考核 Quartus 18.0 FPGA 5CSXFC6D6F31C6N 1. 实验项目 要求利用硬件描述语言Verilog&#xff08;或VHDL&#xff09;、图形描述方式、IP核&#xff0c;结合数字系统设计方法&#xff0c;在Quartus开发环境下&#xff…

java SSM框架 商城系统源码(含数据库脚本)

商城购物功能&#xff0c;项目代码&#xff0c;mysql脚本&#xff0c;html等静态资源在压缩包里面 注册界面 登陆界面 商城首页 文件列表 shop/.classpath , 1768 shop/.project , 1440 shop/.settings/.jsdtscope , 639 shop/.settings/org.eclipse.core.resources.prefs , …

Unet 改进:在encoder和decoder间加入TransformerBlock

目录 1. TransformerBlock 2. Unet 改进 3. 完整代码 Tips:融入模块后的网络经过测试,可以直接使用,设置好输入和输出的图片维度即可 1. TransformerBlock TransformerBlock是Transformer模型架构的基本组件,广泛应用于机器翻译、文本摘要和情感分析等自然语言处理任务…

【Linux系统】信号:认识信号 与 信号的产生

信号快速认识 1、生活角度的信号 异步&#xff1a;你是老师正在上课&#xff0c;突然有个电话过来资料到了&#xff0c;你安排小明过去取资料&#xff0c;然后继续上课&#xff0c;则小明取资料这个过程就是异步的 同步&#xff1a;小明取快递&#xff0c;你停下等待小明回来再…

一、html笔记

(一)前端概述 1、定义 前端是Web应用程序的前台部分,运行在PC端、移动端等浏览器上,展现给用户浏览的网页。通过HTML、CSS、JavaScript等技术实现,是用户能够直接看到和操作的界面部分。上网就是下载html文档,浏览器是一个解释器,运行从服务器下载的html文件,解析html、…

PyQt5超详细教程终篇

PyQt5超详细教程 前言 接&#xff1a; [【Python篇】PyQt5 超详细教程——由入门到精通&#xff08;序篇&#xff09;](【Python篇】PyQt5 超详细教程——由入门到精通&#xff08;序篇&#xff09;-CSDN博客) 建议把代码复制到pycahrm等IDE上面看实际效果&#xff0c;方便理…

洛谷 P8724 [蓝桥杯 2020 省 AB3] 限高杆

洛谷题目传送门 题目描述 某市有 n 个路口&#xff0c;有 m 段道路连接这些路口&#xff0c;组成了该市的公路系统。其中一段道路两端一定连接两个不同的路口。道路中间不会穿过路口。 由于各种原因&#xff0c;在一部分道路的中间设置了一些限高杆&#xff0c;有限高杆的路…

虚幻UE5手机安卓Android Studio开发设置2025

一、下载Android Studio历史版本 步骤1&#xff1a;虚幻4.27、5.0、5.1、5.2官方要求Andrd Studio 4.0版本&#xff1b; 5.3、5.4、5.5官方要求的版本为Android Studio Flamingo | 2022.2.1 Patch 2 May 24, 2023 虚幻官网查看对应Andrd Studiob下载版本&#xff1a; https:/…

JavaWeb入门-请求响应(Day3)

(一)请求响应概述 请求(HttpServletRequest):获取请求数据 响应(HttpServletResponse):设置响应数据 BS架构:Browser/Server,浏览器/服务器架构模式。客户端只需要浏览器就可访问,应用程序的逻辑和数据都存储在服务端(维护方便,响应速度一般) CS架构:Client/ser…

【Rust】18.2. 可辩驳性:模式是否会无法匹配

喜欢的话别忘了点赞、收藏加关注哦&#xff08;加关注即可阅读全文&#xff09;&#xff0c;对接下来的教程有兴趣的可以关注专栏。谢谢喵&#xff01;(&#xff65;ω&#xff65;) 18.2.1. 模式的两种形式 模式有两种形式&#xff1a; 可辩驳的&#xff08;可失败的&…