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。

相关推荐
AndrewHZ1 小时前
【图像处理基石】什么是油画感?
图像处理·人工智能·算法·图像压缩·视频处理·超分辨率·去噪算法
.格子衫.1 小时前
015枚举之滑动窗口——算法备赛
数据结构·算法
J先生x2 小时前
【IP101】图像处理进阶:从直方图均衡化到伽马变换,全面掌握图像增强技术
图像处理·人工智能·学习·算法·计算机视觉
爱coding的橙子4 小时前
每日算法刷题 Day3 5.11:leetcode数组2道题,用时1h(有点慢)
算法·leetcode
懵逼的小黑子6 小时前
Django 项目的 models 目录中,__init__.py 文件的作用
后端·python·django
小林学习编程7 小时前
SpringBoot校园失物招领信息平台
java·spring boot·后端
java1234_小锋9 小时前
Spring Bean有哪几种配置方式?
java·后端·spring
?abc!9 小时前
缓存(5):常见 缓存数据淘汰算法/缓存清空策略
java·算法·缓存
BioRunYiXue9 小时前
一文了解氨基酸的分类、代谢和应用
人工智能·深度学习·算法·机器学习·分类·数据挖掘·代谢组学
jiunian_cn10 小时前
【c++】异常详解
java·开发语言·数据结构·c++·算法·visual studio