DeepSeek部署实战——WSL部署到Docker版

学习目标:

  • 掌握docker部署深度学习环境的内容,并在其上面运行DeepSeek

学习内容:

  1. 搭建WSL的GPU运行环境
  2. 搭建一个深度学习的docker镜像

学习时间:

今天13:00——17:00


学习报告:

现在我已经在Windows上安装好了docker这些软件
在这里插入图片描述
所以接下来我要讲的是这个部署环境的一些内容,主要是记录本次的学习经验,防止下一次又搜索这么多东西。

安装到WSL上的情况,我们需要看多个文档,对于系统需要非常多的理解,不过本篇博客仅用于记录操作,下一次版本不知道还能不能用的上。

理清我们需要做的内容

docker容器技术
linux系统了解(WSL)
DeepSeek的环境需求

首先要想部署DeepSeek,需要一个Python环境,这个Python环境需要的是GPU版本的pytorch
这比较涉及到底层硬件如何被docker使用的问题
需要解决的问题主要是

  • Docker与Nvidia之间的有什么技术上需要解决的问题
  • WSL与Nvidia有什么技术上需要解决的问题,这样就能把显卡给予Docker中的容器使用
  • 以此部署好DeepSeek的源代码进行开放API,并以此为基准来思考数据的融合需求

环境部署

删除很多cuda原先环境的方法
Nvidia官方的说法
公钥缺失解决办法
WSL下载与安装Nvidia的Cuda
安装CUDA的指引
在这里插入图片描述
环境变量设置

vim ~/.bashrc
export PATH=/usr/local/cuda-12.8/bin::$P

安装查看显卡信息的工具

apt install nvidia-utils-550-server

在这里插入图片描述
后续一点点内容,有关容器的使用

docker run --gpus all -it --rm nvcr.io/nvidia/pytorch:23.07-py3 /bin/bash

在这里插入图片描述

部署DeepSeek

其实我之前想去部署一下的,结果要Linux环境,现在我已经在docker这部署了这个环境了,所以现在开始部署,估计要明天2月6号才能完成部署的任务,如果还要给它加网页端的话,估计就是一个大项目了,这样的话,如果有人想做这种,我到时候可以和我的团队成员一起商量着做一个简单的出来。

第一个python环境的安装,docker-compose的编写

首先编写这玩意要去看些文档以及技术路线,在我看来就是,拉一个nvidia的pytorch镜像,加下面deepseek需要的库

torch==2.4.1
triton==3.0.0
transformers==4.46.3
safetensors==0.4.5

由此要确定安装的内容,conda,juptyper等,先放一个比较简单的docker-compose在这

我建议先做这一步
这一步是我用wsl的原因,做完上面的内容就没啥事了

docker pull nvcr.io/nvidia/pytorch:24.10-py3

OK,现在我已经部署好环境了,现在把docker-compose的命令放出来

services:
  pytorch:
    build: .  # 使用当前目录的 Dockerfile 构建镜像
    container_name: pytorch
    ports:
      - "18888:8888"  # 映射 Jupyter Notebook 端口
      - "16006:6006"  # 映射 TensorBoard 端口
      - "10022:22"    # ssh映射
      - "16708:6708"  # api服务映射
    volumes:
      - ../data:/data  # 映射数据目录
    environment:
      - NVIDIA_VISIBLE_DEVICES=all  # 使用所有 GPU
    runtime: nvidia  # 启用 GPU 支持
    command: /bin/bash -c "/usr/sbin/sshd && jupyter lab --no-browser --port=8888 --ip=0.0.0.0"

下面的docker-compose的build的Dockerfile是这个

FROM nvcr.io/nvidia/pytorch:24.10-py3

#WORKDIR /opt/pytorch
#
RUN apt-get update && apt-get install -y openssh-server \
    && mkdir /var/run/sshd
COPY ./authorized_keys /root/.ssh/authorized_keys
#
#
RUN pip install --upgrade pip \
    && pip install jupyterlab tqdm \
    && pip install --upgrade ipywidgets widgetsnbextension \
    && pip install transformers safetensors django
#
#
#CMD ["/bin/bash", "-c", "/usr/sbin/sshd && jupyter lab --no-browser --port=8888 --ip=0.0.0.0"]

还要把自己的ssh公钥给上去,这样可以用pycharm专业版进行编程
在这里插入图片描述
这个公钥在哪里呢,一般装了git的都有,在C盘用户目录下面的.ssh里,而且这玩意我重命名了,重命名为

authorized_keys

在这里插入图片描述
然后就可以用ssh连接里面的编译器了
并且可以进行编代码

from fastapi import FastAPI
from transformers import AutoTokenizer, AutoModel
from fastapi.middleware.cors import CORSMiddleware
from transformers import AutoTokenizer, AutoModelForCausalLM
tokenizer = AutoTokenizer.from_pretrained("deepseek-ai/DeepSeek-R1-Distill-Qwen-7B", trust_remote_code=True)
model = AutoModelForCausalLM.from_pretrained("deepseek-ai/DeepSeek-R1-Distill-Qwen-7B",trust_remote_code=True, device='cuda')
model = model.to('cuda')
model = model.eval()
app = FastAPI()
app.add_middleware(
    CORSMiddleware,
    allow_origins=["*"],  # 允许所有来源
    allow_credentials=True,
    allow_methods=["*"],  # 允许所有请求方法
    allow_headers=["*"],  # 允许所有请求头
)
@app.get("/")
def read_root():
    return {"message": "Welcome to the ChatGLM3-6B API!"}

@app.post("/chat")
async def chat(user_input: str,history:list = None):
    if history==None:
        history = []
    try:
        # 调用模型进行对话
        response, history = model.chat(tokenizer, user_input, history=history)
        return {
            "response": response
        }
    except Exception as e:
        return {
            "error": f"Failed to generate response: {str(e)}"
        }

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

这样就可以在自己的16708端口进行访问这个接口了,接口文档在
访问这个接口的原因是,之前的docker-compose把容器里的6708映射在本地的16708上了

http://127.0.0.1:16708/docs

最后就是可以进行简单的本地部署这个API了,用的模型是Deepseek的最简单的蒸馏模型,下载的专家模型就两个,也挺大的了,不过也适合16GB以下的GPU进行部署,如果说接入chatbox或者变成和OpenAI一样的token就可以用到很多地方了,用自己的,和用别人的,本质上还是不同的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

嘘嘘出差

给个1分钱都行,主要看不到活人

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值