手把手部署 DeepSeek-Coder-V2-Lite-Instruct 代码助手 Web 界面
开发环境搭建指南
本次部署实践基于以下技术栈环境,建议开发者提前确认本地配置是否匹配:
----------------
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 文件的界面,红框标注区域为文件保存按钮位置。正确保存文件是确保代码能够正常执行的关键步骤,建议使用 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 服务接口供其他应用调用等。对于需要频繁进行代码开发的团队或个人,这一本地化代码助手能够显著提升开发效率并保护知识产权。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



