当前位置: 首页 > article >正文

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

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" ]; then
    mv "$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.kler.cn/a/522602.html

相关文章:

  • 【llm对话系统】大模型 RAG 之回答生成:融合检索信息,生成精准答案
  • 多协议网关BL110钡铼6路RS485转MQTT协议云网关
  • 图漾相机——C++语言属性设置
  • java基础-容器
  • Fullcalendar @fullcalendar/react 样式错乱丢失问题和导致页面卡顿崩溃问题
  • MySQL(单表访问)
  • MongoDB的读写分离技术方案
  • php:代码中怎么搭建一个类似linux系统的crontab服务
  • CICD集合(五):Jenkins+Git+Allure实战(自动化测试)
  • 【elasticsearch】tasks 查看任务
  • hadoop==docker desktop搭建hadoop
  • 【Pytest】生成html报告中,中文乱码问题解决方案
  • 利用现有模型处理面部视频获取特征向量(3)
  • 【论文笔记】Fast3R:前向并行muti-view重建方法
  • 自动化、信息化后面是智能化,智能化后面是?
  • 观察者模式和订阅发布模式
  • PaddleSeg 从配置文件和模型 URL 自动化运行预测任务
  • 判断一个字符串能否被另外一个字符串中的元素构成
  • 字母与音标
  • c++贪心
  • 【1】阿里面试题整理
  • Linux网络 应用层协议 HTTP
  • 选择困难?直接生成pynput快捷键字符串
  • 代码随想录算法训练营day29(0123)
  • vue页面,绘制项目的计划进度和实际进度;展示不同阶段示意图
  • 07JavaWeb——Mysql02