1、ollama run deepseek-r1:671b但是只有开始下载的前几分钟快,后续速度变慢,ollama又支持断点下载,所以,直接写个脚本下60s停止再继续。400G的模型半个晚上就下完了。

#!/bin/bash

# 无限循环,直到模型下载完成
while true; do
    # 检查模型是否已下载完成
    if ollama list | grep -q "deepseek-r1:1.5b"; then
        echo "模型已下载完成!"
        break
    fi

    # 启动 ollama 进程并记录进程ID
    echo "开始下载模型..."
    ollama run deepseek-r1:1.5b &

    # 获取 ollama 进程的 PID
    pid=$!

    # 等待60秒
    sleep 60

    # 终止正在运行的进程
    if ps -p $pid > /dev/null; then
        kill -9 $pid
        echo "已中断本次下载,准备重新尝试..."
    else
        echo "进程已结束,无需中断。"
    fi
done

2、我的配置是4090*6*24G+700G内存,ollama run deepseek-r1:671b加载模型过程中会报错,内容为:

Error: llama runner process has terminated: error loading model: unable to allocate CUDA1 buffer llama_load_model_from_file: failed to load model使用ollama run
搜了教程支持在 GPU 已满时在 CPU 上加载并发模型 ·问题 #6950 ·OLLAMA/OLLAMA

总结来说方案如下

添加环境变量

export OLLAMA_GPU_OVERHEAD=536870912  # 为 GPU 分配额外的内存缓冲区(例如,512MB)
export OLLAMA_FLASH_ATTENTION=1      # 启用闪存注意力机制,可能减少内存占用
export GGML_CUDA_ENABLE_UNIFIED_MEMORY=1  # 启用统一内存,允许 GPU 使用系统内存

还是不行,继续,提取现有模型配置,

ollama show --modelfile deepseek-r1:671b | sed -e 's/^FROM.*/FROM deepseek-r1:671b/' > Modelfile

修改num_gpu:加载至 GPU 的模型层数。DeepSeek R1 模型共有 61 层,我的经验是:

        对于 DeepSeek-R1-Q4_K_M,每卡仅可加载 2 层,六卡共 12 层。

所以编辑 Modelfile 文件,添加一行

PARAMETER num_gpu 12

保存后运行ollama create deepseek.r1:12gpu,创建了一个新的模型名称,可以通过ollama list查看,run deepseek.r1:12gpu就能成功了。!!

Logo

欢迎加入DeepSeek 技术社区。在这里,你可以找到志同道合的朋友,共同探索AI技术的奥秘。

更多推荐