使用Ollama本地部署deepseek模型

766 阅读5分钟

写在前面

Ollama 是一个开源工具,支持在本地运行和部署大型语言模型(包括现在很火的 DeepSeek-R1 )。以下是使用 Ollama 本地部署DeepSeek的详细步骤:

安装 Ollama

  • macOS/Linux

    • 直接运行安装脚本:

      curl -fsSL https://ollama.com/install.sh | sh
      
    • 安装后,Ollama 会作为后台服务自动启动。

  • Windows

    注意:window默认安装在C盘,下载的模型文件也在,注意c盘的容量限制

  • Docker

    从docker仓库拉取镜像: Ollama Docker image

下载并运行模型

Ollama 支持多种模型,以下是支持的一些常用模型。详见支持模型列表:Ollama Library

ModelParametersSizeDownload
DeepSeek-R17B4.7GBollama run deepseek-r1
DeepSeek-R1671B404GBollama run deepseek-r1:671b
Llama 3.370B43GBollama run llama3.3
Llama 3.23B2.0GBollama run llama3.2
Llama 3.21B1.3GBollama run llama3.2:1b
Llama 3.2 Vision11B7.9GBollama run llama3.2-vision
Llama 3.2 Vision90B55GBollama run llama3.2-vision:90b
Llama 3.18B4.7GBollama run llama3.1
Llama 3.1405B231GBollama run llama3.1:405b
Phi 414B9.1GBollama run phi4
Phi 3 Mini3.8B2.3GBollama run phi3
Gemma 22B1.6GBollama run gemma2:2b
Gemma 29B5.5GBollama run gemma2
Gemma 227B16GBollama run gemma2:27b
Mistral7B4.1GBollama run mistral
Moondream 21.4B829MBollama run moondream
Neural Chat7B4.1GBollama run neural-chat
Starling7B4.1GBollama run starling-lm
Code Llama7B3.8GBollama run codellama
Llama 2 Uncensored7B3.8GBollama run llama2-uncensored
LLaVA7B4.5GBollama run llava
Solar10.7B6.1GBollama run solar

注意:如下是ollama官方建议

1.你应该至少有8GB的可用RAM来运行7B模型,16GB来运行13B模型,以及32GB来运行33B模型。

  1. 默认模型存储路径

    • Linux: ~/.ollama/models/
    • macOS: ~/.ollama/models/
    • Windows: C:\Users<用户名>.ollama\models
  • 运行模型

    ollama run deepseek-r1    # 运行 deepseek-r1,这个默认参数大小是7B
    ollama run deepseek-r1:671b  # 运行参数大小为671b的 deepseek-r1
    

    首次运行时会自动下载模型(需网络连接)。

    • 查看已安装模型

      ollama list
      

与模型交互

  • 命令行对话: 运行模型后,直接在终端输入内容与模型交互。例如:

    >>> 你好,用中文写一首关于春天的诗
    
  • 单次指令执行: 通过 ollama run 直接执行单条指令:

    ollama run deepseek-r1 "用中文解释人工智能"
    

如果要使用多行输入模式:在交互界面输入 """ 进入多行输入,以 //end 结束:

"""
这是第一行,
这是第二行...
//end

高级用法

  • 调整模型参数: 在运行模型时,可指定参数(如温度值、重复惩罚等):

    ollama run deepseek-r1 --temperature 0.7 --repeat_penalty 1.2
    

    参数说明

    参数名作用推荐范围
    temperature控制生成随机性(0=确定,1=随机)0.1~1.0
    num_ctx模型上下文长度(影响记忆能力)1024~8192
    repeat_penalty减少重复内容(>1 时生效)1.0~2.0
    top_k限制候选词数量20~100
    top_p动态截断候选词(与 top_k 二选一)0.5~0.95
    seed固定随机种子(确保结果可复现)任意整数
  • 自定义模型配置: 创建自定义配置文件(如 Modelfile),定义基础模型、参数或系统提示词:

    FROM deepseek-r1
    SYSTEM "你是一个专业的中文助手,回答简洁且准确。"
    PARAMETER temperature 0.8
    

    构建自定义模型:

    ollama create my-model -f Modelfile
    ollama run my-model
    

    作为 API 服务

    Ollama 提供 REST API,可通过 HTTP 请求调用deepseek-r1模型:

    • 启动 API 服务

      ollama serve
      

      默认端口为 11434

    • 发送请求示例

      curl http://localhost:11434/api/generate -d '{
        "model": "deepseek-r1",
        "prompt": "用中文写一个关于环保的故事",
        "stream": false
      }'
      

    Ollama常用命令和api

    ollama常用命令

    命令说明
    ollama run <模型名>运行指定模型(自动下载缺失模型)
    ollama pull <模型名>下载模型但不运行
    ollama list查看本地已下载的模型列表
    ollama rm <模型名>删除本地模型
    ollama help查看所有命令帮助
    ollama create <自定义模型名> -f Modelfile创建自定义模型
    ollama push <自定义模型名> 发布模型到本地库
    ollama update 更新 Ollama
    ollama serve 启动 Ollama 服务(默认端口 11434
    systemctl start ollamaLinux 系统通过 systemctl 启动服务

    ollama常用api

    Ollama 提供了一系列的API端点,让开发者能够通过编程方式与模型进行交互。以下是一些常用的API及其功能概述:

    1. 生成文本(Generate Text)

      • 端点: POST /api/generate

      • 功能: 向模型发送提示词(prompt),并获取生成的文本。

      • 请求格式:

        {
          "model": "<model-name>", // 模型名称
          "prompt": "<input-text>", // 输入的提示词
          "stream": false, // 是否启用流式响应(默认 false)
          "options": { // 可选参数
            "temperature": 0.7, // 温度参数
            "max_tokens": 100 // 最大 token 数
          }
        }
        
      • 响应格式:

        {
          "response": "<generated-text>", // 生成的文本
          "done": true // 是否完成
        }
        
    2. 聊天(Chat)

      • 端点: POST /api/chat

      • 功能: 支持多轮对话,模型会记住上下文。

      • 请求格式:

        {
          "model": "<model-name>", // 模型名称
          "messages": [ // 消息列表
            {
              "role": "user", // 用户角色
              "content": "<input-text>" // 用户输入
            }
          ],
          "stream": false, // 是否启用流式响应
          "options": { // 可选参数
            "temperature": 0.7,
            "max_tokens": 100
          }
        }
        
      • 响应格式:

        {
          "message": {
            "role": "assistant", // 助手角色
            "content": "<generated-text>" // 生成的文本
          },
          "done": true
        }
        
    3. 列出本地模型(List Models)

      • 端点: GET /api/tags

      • 功能: 列出本地已下载的模型。

      • 响应格式:

        {
          "models": [
            {
              "name": "<model-name>", // 模型名称
              "size": "<model-size>", // 模型大小
              "modified_at": "<timestamp>" // 修改时间
            }
          ]
        }
        
    4. 拉取模型(Pull Model)

      • 端点: POST /api/pull

      • 功能: 从模型库中拉取模型。

      • 请求格式:

        {
          "name": "<model-name>" // 模型名称
        }
        
      • 响应格式:

        {
          "status": "downloading", // 下载状态
          "digest": "<model-digest>" // 模型摘要
        }
        

    资源