Python本地部署DeepSeek

写在前面

前阵子DeepSeek开源了r1的一套模型,想偷个懒,抄个作业,结果一搜,全都是抱着Ollama跑到黑的,就hin头大,思来想去还是自己上吧。

1 下载

以前huggingface没被停的时候用着还挺舒服,现在想下载模型原文件,就只能去镜像站了,比较慢,这个就不提供网盘了,能查到这篇文章的也不会不知道怎么下文件,这里提供一下镜像站的下载地址,大家根据自己的需求来。 DeepSeek-R1模型下载

大家可以根据自己的设备需要来下载,我的建议是向下兼容:如果你的设备能跑7B,把1.5B也一并下了吧,反正固态也不贵,后面还能用到。在这里我只提供显存与参数量的大概参考:

显存 模型大小
4GB+ 1.5B
8GB+ 8B
16GB+ 14B
24GB+ 32B
$$ 70B
$$$$$$$$ 671B
2 环境

环境配置困难的环节其实是cuda和cudnn的配置,这里我只提供windows的配置,linux别问,我不会。

2.1 cuda安装

下载位置:

CUDA 专区 | NVIDIA Developer 点击下载后选择自己的配置(根据自己的设备配置来)。

下载后进行安装,推荐在C盘预留出足够空间,推荐使用默认位置安装。

在进行选项安装的时候,如果有vs编译需求的可以在此处勾选,无相关需求时取消此处勾选后继续默认安装即可。

完成后点击开始按钮,输入cmd打开编辑框 输入: nvcc --version 返回类似如下输出即安装完成。

2.2 cudnn安装

下载地址:

CUDA 深度神经网络库 (cuDNN) | NVIDIA 开发者](developer.nvidia.com/cuda-toolki...)

点击下载后会,需要进行登录和问卷调查,正常填写即可。 完成问卷后,进入下载页面,选择自己设备对应的cudnn版本,点击文件进行下载。

将文件解压。

来到cuda的安装路径下(以个人安装路径为准)。

将cudnn解压的文件夹打开,复制其中三个文件夹,到cuda安装路径下。

完成后,点击开始菜单,搜索"高级系统设置",点击查看高级系统设置,并点击"环境变量",并在系统变量中找到"Path",选择编辑。

在系统变量中添加如下对象,路径参考如下:

C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.1\bin

C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.1\include

C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.1\lib

C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.1\libnvvp 好了。

2.3 pytorch下载

线上直接安装torch的方式我一直没成功过,所以我一直都离线安装,就是下载了文件,然后切换环境通过pip命令进行安装:pip install xxxxxxx,这里提供两个地址,国内支持GPU版本torch的站点不多:

官方离线站点: Links for torch

阿里云离线站点: index of pytorch-wheels

部署

写个脚本,我命名成QA.py【划重点,这个脚本在后面被引用了】,自己开发的时候想叫什么都行。

python 复制代码
# -*- coding: utf-8 -*-


import torch
from transformers import AutoModelForCausalLM, AutoTokenizer


# 生成文本
def generate_text(prompt, max_length=300):
    inputs = tokenizer(prompt, return_tensors="pt").to(device)
    outputs = model.generate(**inputs, max_length=max_length)
    generated_text = tokenizer.decode(outputs[0], skip_special_tokens=True)
    return generated_text


# 加载模型和分词器
qa_model_path = "./model/base_model/1.5b"
tokenizer = AutoTokenizer.from_pretrained(qa_model_path)
model = AutoModelForCausalLM.from_pretrained(qa_model_path, torch_dtype=torch.float16, device_map="auto")

# 将模型移动到GPU
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
model.to(device)


if __name__ == "__main__":
    # 示例输入
    prompt = """每天喝多少水最合适?[100字内简短回答]"""
    generated_text = generate_text(prompt)
    print("Generated Text:", generated_text)

如果想要回溯历史对话,记得使用历史对话结构,这个可以参考chatglm、baichuan等的入参方式,输入大致上是这个样子:

json 复制代码
{
    "xxx": "......",
    "text": [
        {"question": "你好!", "answer": "您好,请问有什么可以帮到您?"}, 
        {"question": "没事,退下吧。", "answer": "好的,期待随时为您服务。"}
    ]
}
调用

写个api喽,连续请求喽。

python 复制代码
# -*- coding: utf-8 -*-


from fastapi import FastAPI
from pydantic import BaseModel
import uvicorn

import LoRA
import QA


app = FastAPI()

class QA_Data(BaseModel):
    prompt: str

@app.post("/qa")
async def generate(input_data: QA_Data):
    generated_text = QA.generate_text(input_data.prompt)
    return {"generated_text": generated_text}


if __name__ == "__main__":
    uvicorn.run(app, host="0.0.0.0", port=8000)

过两天更DeepSeek+Lora。

相关推荐
LUCIAZZZ1 分钟前
通过logback日志简单实现链路追踪
java·spring boot·后端·计算机网络·spring·logback
油泼辣子多加20 分钟前
【华为OD机考】华为OD笔试真题解析(20)--投篮大赛
数据结构·算法·华为od
坐吃山猪29 分钟前
跨域-告别CORS烦恼
前端·后端·跨域·cors
钢板兽33 分钟前
Java后端高频面经——Mysql
java·后端·sql·mysql·面试
修己xj39 分钟前
算法系列之数据结构-Huffman树
算法
CodeJourney.1 小时前
Deepseek助力思维导图与流程图制作:高效出图新选择
数据库·人工智能·算法
Liudef061 小时前
Stable Diffusion模型高清算法模型类详解
人工智能·算法·ai作画·stable diffusion
计算机-秋大田1 小时前
基于Spring Boot的企业车辆管理系统设计与实现(LW+源码+讲解)
java·vue.js·spring boot·后端·spring·课程设计
掘金一周2 小时前
你问我答,为什么class在前端开发中不常用? | 掘金一周 3.6
前端·后端
柠石榴2 小时前
【练习】【二叉树】力扣热题100 102. 二叉树的层序遍历
c++·算法·leetcode·二叉树