手把手部署 DeepSeek-Coder-V2-Lite-Instruct 代码助手 Web 界面

手把手部署 DeepSeek-Coder-V2-Lite-Instruct 代码助手 Web 界面

【免费下载链接】DeepSeek-Coder-V2-Lite-Instruct 开源代码智能利器——DeepSeek-Coder-V2,性能比肩GPT4-Turbo,全面支持338种编程语言,128K超长上下文,助您编程如虎添翼。 【免费下载链接】DeepSeek-Coder-V2-Lite-Instruct 项目地址: https://ai.gitcode.com/hf_mirrors/deepseek-ai/DeepSeek-Coder-V2-Lite-Instruct

开发环境搭建指南

本次部署实践基于以下技术栈环境,建议开发者提前确认本地配置是否匹配:

----------------
ubuntu 22.04
python 3.12
cuda 12.1
pytorch 2.3.0
----------------

特别说明:本文假设读者已完成 PyTorch 的 CUDA 版本安装,若尚未配置,请优先参考官方文档完成基础环境部署。 接下来将分步骤完成依赖安装、模型获取和交互界面搭建。首先通过 pip 工具配置国内镜像源以加速依赖包下载:

# 配置清华大学 PyPI 镜像源
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
# 升级 pip 至最新版本
python -m pip install --upgrade pip
# 安装核心依赖库
pip install modelscope==1.16.1
pip install langchain==0.2.3
pip install streamlit==1.37.0
pip install transformers==4.43.2
pip install accelerate==0.32.1

环境配置常见问题解决方案:为简化部署流程,我们在 AutoDL 平台预置了完整环境镜像。访问下方链接即可直接创建包含所有依赖的开发实例: https://www.codewithgpu.com/i/datawhalechina/self-llm/Deepseek-coder-v2

大模型文件获取

采用 ModelScope 提供的 snapshot_download 工具进行模型拉取,该方法支持指定模型名称、存储路径和版本分支。参数说明:model_id 为模型唯一标识,cache_dir 指定本地存储路径,revision 用于选择模型版本(master 表示最新主分支)。

在工作目录 /root/autodl-tmp 下创建下载脚本 download.py,复制以下代码并保存:

import torch
from modelscope import snapshot_download, AutoModel, AutoTokenizer
import os
# 下载 DeepSeek-Coder-V2-Lite-Instruct 模型
model_dir = snapshot_download(
    'deepseek-ai/DeepSeek-Coder-V2-Lite-Instruct',
    cache_dir='/root/autodl-tmp',
    revision='master'
)

执行命令 python /root/autodl-tmp/download.py 启动下载,模型总大小约 40GB,在 100Mbps 网络环境下通常需要 20-30 分钟。下载完成后终端会显示模型文件的本地存储路径,如下图所示:

终端下载成功结果图 如上图所示,终端显示 "Successfully downloaded" 提示并列出模型文件路径,表示 40GB 模型文件已完整下载。这一步确保了后续部署有完整的模型权重文件支持,是实现代码生成功能的基础。

交互界面开发实现

/root/autodl-tmp 目录下创建 chatBot.py 文件,编写基于 Streamlit 的 Web 交互界面代码。该脚本包含模型加载、会话管理和前端渲染等核心功能,完整代码如下(建议配合注释理解各模块作用):

chatBot.py文件创建截图 上图展示了在代码编辑器中创建 chatBot.py 文件的界面,红框标注区域为文件保存按钮位置。正确保存文件是确保代码能够正常执行的关键步骤,建议使用 Ctrl+S 快捷键或编辑器保存功能确认代码已写入磁盘。

# 导入界面开发与模型交互所需库
from transformers import AutoTokenizer, AutoModelForCausalLM, GenerationConfig
import torch
import streamlit as st

# 侧边栏配置
with st.sidebar:
    st.markdown("## DeepSeek-Coder-V2-Lite-Instruct")
    "[开源大模型部署教程](https://github.com/datawhalechina/self-llm.git)"
    # 最大生成长度控制滑块
    max_length = st.slider("响应长度控制", 128, 2048, 512, step=64)

# 主界面标题设置
st.title("💻 DeepSeek 代码助手 V2")
st.caption("🚀 基于 Streamlit 构建的本地代码生成平台")

# 模型与分词器加载函数
@st.cache_resource
def load_model_resources():
    """加载预训练模型和分词器,使用缓存避免重复加载"""
    model_path = '/root/autodl-tmp/deepseek-ai/DeepSeek-Coder-V2-Lite-Instruct'
    tokenizer = AutoTokenizer.from_pretrained(
        model_path, 
        use_fast=False, 
        trust_remote_code=True
    )
    model = AutoModelForCausalLM.from_pretrained(
        model_path, 
        torch_dtype=torch.bfloat16, 
        device_map="auto", 
        trust_remote_code=True
    )
    return tokenizer, model

# 加载模型资源
tokenizer, model = load_model_resources()

# 初始化会话状态
if "chat_history" not in st.session_state:
    st.session_state.chat_history = [
        {"role": "assistant", "content": "我是 DeepSeek 代码助手,请问有什么可以帮您?"}
    ]

# 渲染聊天历史
for message in st.session_state.chat_history:
    with st.chat_message(message["role"]):
        st.write(message["content"])

# 处理用户输入
if user_input := st.chat_input("请输入您的问题或代码需求..."):
    # 添加用户消息到历史记录
    st.session_state.chat_history.append({
        "role": "user", 
        "content": user_input
    })
    with st.chat_message("user"):
        st.write(user_input)
    
    # 构建对话输入
    conversation = tokenizer.apply_chat_template(
        st.session_state.chat_history,
        tokenize=False,
        add_generation_prompt=True
    )
    inputs = tokenizer([conversation], return_tensors="pt").to('cuda')
    
    # 模型推理过程
    with st.spinner("正在生成代码..."):
        generated_ids = model.generate(
            inputs.input_ids,
            max_new_tokens=max_length,
            temperature=0.7,
            top_p=0.95
        )
        # 提取生成内容(排除输入部分)
        response_ids = [
            output[len(input_ids):] 
            for input_ids, output in zip(inputs.input_ids, generated_ids)
        ]
        response = tokenizer.batch_decode(
            response_ids, 
            skip_special_tokens=True
        )[0]
    
    # 添加模型响应到历史记录
    st.session_state.chat_history.append({
        "role": "assistant", 
        "content": response
    })
    with st.chat_message("assistant"):
        st.write(response)

Web 服务启动与访问

完成代码编写后,在终端执行以下命令启动 Streamlit 服务,注意配置正确的网络参数以允许远程访问:

streamlit run /root/autodl-tmp/chatBot.py \
  --server.address 127.0.0.1 \
  --server.port 6006 \
  --server.enableCORS false

服务启动成功后,在 AutoDL 控制台找到"自定义服务"选项卡: 自定义服务点击示意图 该截图显示了 AutoDL 实例控制台的服务配置区域,红框标记处为"自定义服务"按钮位置。点击该按钮可打开端口映射配置界面,这是实现远程访问本地服务的关键步骤。

在弹出的服务配置窗口中,点击"访问"按钮获取临时访问链接: 访问链接示意图 图中展示了获取访问链接的操作流程,点击生成的 URL 即可在浏览器中打开代码助手界面。系统会自动处理端口转发和临时域名映射,无需手动配置防火墙规则。

成功访问后将看到如下交互界面,左侧为功能控制区,右侧为代码对话窗口: 聊天界面运行效果图 此界面展示了代码助手的实际运行效果,用户可通过底部输入框提交代码需求,模型会实时生成响应并展示在对话区域。界面支持代码高亮显示和多轮对话记忆,完整复现了云端代码助手的核心功能。

通过以上四个步骤,我们完成了从环境配置到界面交互的全流程部署。该方案的优势在于:本地化部署保障数据安全、硬件资源可控性强、可根据需求定制功能。后续可进一步优化方向包括:添加代码执行沙箱、实现模型量化推理以降低显存占用、开发 API 服务接口供其他应用调用等。对于需要频繁进行代码开发的团队或个人,这一本地化代码助手能够显著提升开发效率并保护知识产权。

【免费下载链接】DeepSeek-Coder-V2-Lite-Instruct 开源代码智能利器——DeepSeek-Coder-V2,性能比肩GPT4-Turbo,全面支持338种编程语言,128K超长上下文,助您编程如虎添翼。 【免费下载链接】DeepSeek-Coder-V2-Lite-Instruct 项目地址: https://ai.gitcode.com/hf_mirrors/deepseek-ai/DeepSeek-Coder-V2-Lite-Instruct

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

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

抵扣说明:

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

余额充值