【2025深度学习环境搭建-2】pytorch+Docker+VS Code+DevContainer搭建本地深度学习环境
上一篇文章:【2025深度学习环境搭建-1】在Win11上用WSL2和Docker解锁GPU加速
- 先启动Docker!
- 对文件内容有疑问,就去问AI
一、用Docker拉取pytorch镜像,启动容器,测试GPU
docker pull pytorch/pytorch:2.5.0-cuda12.4-cudnn9-devel

docker run -it --rm --gpus all pytorch/pytorch:2.5.0-cuda12.4-cudnn9-devel nvidia-smi
别忘了用
--gpus all启用GPU

能出现显卡信息,说明基于该镜像的容器,是可以用gpu的。之后要把这个镜像应用到到我们的开发环境之中(使用VS Code插件Dev Container)
二、安装VS Code插件




三、创建项目文件(测试pytorch和GPU的python程序)
创建文件夹pytorch-test,并在其目录下创建如下文件夹和文件(主要创建app.py和.devcontainer就行,其他的随意):

需要创建的文件,内容如下:
requirements.txt
这个文件内容为空
app.py
import torch
a=[1,23,4,5,.4]
def print_gpu_info():# 检查CUDA是否可用cuda_available = torch.cuda.is_available()print(f"CUDA 是否可用: {cuda_available}")if not cuda_available:return# 获取GPU数量device_count = torch.cuda.device_count()print(f"\n可用的GPU数量: {device_count}")# 打印每个GPU的详细信息for i in range(device_count):print(f"\n=== GPU {i} ===")print(f"名称: {torch.cuda.get_device_name(i)}")prop = torch.cuda.get_device_properties(i)print(f"总内存: {prop.total_memory / 1024**3:.2f} GB")print(f"多处理器数量: {prop.multi_processor_count}")print(f"计算能力: {prop.major}.{prop.minor}")def test_gpu_operation():# 尝试在GPU上执行操作if torch.cuda.is_available():try:# 创建测试张量x = torch.randn(3, 3).cuda()y = torch.randn(3, 3).cuda()z = x + y # 执行GPU计算# 验证设备类型print("\n=== GPU 操作测试 ===")print(f"张量所在设备: {x.device}")print("GPU 计算成功!")return Trueexcept Exception as e:print(f"\nGPU 操作失败: {str(e)}")return Falseelse:print("没有可用的GPU进行测试")return Falseif __name__ == "__main__":print("===== PyTorch GPU 信息 =====")print_gpu_info()print("\n===== GPU 功能测试 =====")test_result = test_gpu_operation()print("\n===== 最终状态 =====")print(f"GPU 是否可用: {torch.cuda.is_available()}")print(f"GPU 是否可用: {test_result}")print(f"PyTorch 版本: {torch.__version__}")
.devcontainer/devcontainer.json
// For format details, see https://aka.ms/devcontainer.json. For config options, see the
// README at: https://github.com/devcontainers/templates/tree/main/src/docker-existing-dockerfile
{"name": "GPU Development,torch2.5+cu124+cudnn9,Py3.11.10","runArgs": ["--gpus=all" // 添加 GPU 支持],"build": {// Sets the run context to one level up instead of the .devcontainer folder."context": "..",// Update the 'dockerFile' property if you aren't using the standard 'Dockerfile' filename."dockerfile": "Dockerfile"},"customizations": {"vscode": {"extensions": ["ms-python.python","ms-toolsai.jupyter","ms-python.autopep8","ms-python.vscode-pylance","mechatroner.rainbow-csv","ms-azuretools.vscode-docker","ms-toolsai.datawrangler"]}}// Features to add to the dev container. More info: https://containers.dev/features.// "features": {},// Use 'forwardPorts' to make a list of ports inside the container available locally.// "forwardPorts": [],// Uncomment the next line to run commands after the container is created.// "postCreateCommand": "cat /etc/os-release",// Configure tool-specific properties.// "customizations": {},// Uncomment to connect as an existing user other than the container default. More info: https://aka.ms/dev-containers-non-root.// "remoteUser": "devcontainer"
}
.devcontainer/Dockerfile
# 使用 PyTorch 官方镜像作为基础镜像
FROM pytorch/pytorch:2.5.0-cuda12.4-cudnn9-devel# 设置工作目录(容器中的)
WORKDIR /workspace# 将本地代码复制到容器中
COPY . /workspace# 安装额外的依赖(如果有)
RUN pip install --no-cache-dir -r requirements.txt# 暴露端口(如果有需要)
# EXPOSE 8000# 定义容器启动时运行的命令
# CMD ["python", "app.py"]
README.md
## pip环境导入导出
从requirements.txt导入环境:
`pip install --no-cache-dir -r requirements.txt`
导出环境到文件requirements.txt:
`pip freeze | grep -v '@ file://' > requirements.txt`
四、打开项目文件,并使用容器环境
在VS Code中打开项目文件

按下【F1】在上方选择【Dev Containers:Reopen in Container】

此时查看vscode左下角,蓝底白字,显示Dev Container: GPU Development,torch2.5+..,就说明我们现在的项目torch-test已经在使用刚才拉取的pytorch容器了!

在左边找到app.py,运行他,若显示可用gpu大于0,表示项目torch-test中的python程序可以使用gpu。之后我们需要运行深度学习程序时,使用这里的步骤即可,不需要安装额外的python环境了,若需要安装其他包,那就修改requirements.txt文件即可。

五、需要安装其他python包怎么办?
若我们需要其他python包,那就在终端直接安装,测试能用之后,用pip freeze | grep -v '@ file://' > requirements.txt将当前python环境中的包导出到文件requirements.txt中。
之后再启动项目时,Dev Container会自动帮我们根据文件requirements.txt安装环境。
清空文件
requirements.txt中的内容,之后重新构建容器,即可得到一个原始镜像中的python环境
补充:如何重新构建容器
按【F1】,搜索【Dev Containers:Rebuild Container】

补充:在镜像中添加VS Code插件
可以在镜像中添加VS Code插件,之后每次构建,镜像都会自动安装插件,不用自己手动安装了
方法:右键单击插件,点击【Add to devcontainer.json】

参考
教程:使用 Visual Studio Code 创建 Docker 应用
借助 Visual Studio Code 将 Docker 容器用作开发环境
相关文章:
【2025深度学习环境搭建-2】pytorch+Docker+VS Code+DevContainer搭建本地深度学习环境
上一篇文章:【2025深度学习环境搭建-1】在Win11上用WSL2和Docker解锁GPU加速 先启动Docker!对文件内容有疑问,就去问AI 一、用Docker拉取pytorch镜像,启动容器,测试GPU docker pull pytorch/pytorch:2.5.0-cuda12.4…...
在CentOS 7上安装和使用Spleeter音频分离工具的详细步骤
在音频处理领域,Spleeter是一款优秀的开源工具,能够帮助用户轻松实现音频文件中人声和背景音的分离。本文将详细介绍在CentOS 7系统上安装和配置Spleeter的步骤,以及如何使用Spleeter进行音频分离。 准备环境: 在开始安装Spleeter之前&…...
【1】VS Code 新建上位机项目---C#基础语法
VS Code 新建上位机项目---C#基础语法 1 基本概念1.1 准备工具1.2 新建项目2 C#编程基础2.1 命名空间和类2.2 数据类型2.3 控制台输入输出2.3.1 输入输出: write 与 read2.3.2 格式化 : string.Foramt() 与 $2.3.3 赋值与运算2.4 类型转换2.4.1 数值类型之间的转换:(int)2.4…...
电脑经常绿屏(蓝屏)怎么办(解决方法)?
一、排查系统与驱动问题 进入安全模式修复系统 强制重启电脑 3 次触发恢复环境,选择 疑难解答 > 高级选项 > 启动设置 > 重启,按 F5 或 5 进入带网络连接的安全模式3。 在安全模式下,尝试卸载最近安装的软件或更新,尤其…...
clickhouse--本地表和分布式表,副本机制,分片集群
1、本地表和分布式表 ck的表分为两种: 分布式表 一个逻辑上的表,可以理解为数据库中的视图,一般查询都查询分布式表。分布式表引擎会将我们的查询请求路由本地表进行查询,然后进行汇总最终返回给用户。本地表 实际存储数据的表。 …...
react hook useReducer
useReducer useReducer 是 React 中用于状态管理的 Hook,与 useState 不同,它更适合处理复杂的状态逻辑. const [state, dispatch] useReducer(reducer, initialArg, init?) reducer 是一个处理函数,用于更新状态, reducer 里面包含了两个…...
告别阻塞,迎接高效:掌握 AsyncIOScheduler 实现异步任务调度
前言 时间在编程中是宝贵的,直接关联到效率与灵活性,尤其在异步编程里,如何优雅地管理定时任务简直是一门“艺术”。如果你还在用 time.sleep() 来控制延时任务,恐怕你早已体会过它的“痛苦”:程序卡住、线程阻塞、性能急剧下滑。想象一下,你的程序如同一个永远无法按时…...
【基于SprintBoot+Mybatis+Mysql】电脑商城项目之加入购物车和显示购物车列表
🧸安清h:个人主页 🎥个人专栏:【Spring篇】【计算机网络】【Mybatis篇】 🚦作者简介:一个有趣爱睡觉的intp,期待和更多人分享自己所学知识的真诚大学生。 目录 🚀1.加入购物车-数…...
再谈影刀RPA成长学习路线
近期,我将使用影刀RPA开发各电商平台移动端商品信息爬取,实战流程会在QQ群里分享,欢迎大家进群,一起探讨交流! 1. 影刀RPA学习路线概述 1.1 学习目标与意义 学习影刀RPA的目标在于掌握一种高效的工作自动化工具,以提…...
PHP-综合4
[题目信息]: 题目名称题目难度PHP-综合42 [题目考点]: PHP综合训练[Flag格式]: SangFor{Ouk3i63BuShgxqdRcn_9kMNqKFDe5j4f}[环境部署]: docker-compose.yml文件或者docker tar原始文件。 http://分配ip:2087[题目writeup]:…...
学习笔记-沁恒第五讲-米醋
一,设置音量 上次 这次 #include "uart.h" #include "debug.h" void audio_init() { Usart3_Init(); } void audio_play(u8 num) { u8 string[]{0x7e,0x05,0x41,0x00,num,0x05^0x41^0x00^num,0xef}; u8 i; for(i0;i<7;i) { USART_Se…...
【JavaScript】JavaScript 常见概念 - 变量与数据类型 - 运算符 - 条件语句 - 循环 - 函数 - 数组操作 - 对象
1. 变量与数据类型 变量声明 JavaScript 提供了三种方式来声明变量: var(全局或函数作用域,不推荐)let(块级作用域,推荐)const(常量,块级作用域,推荐&…...
Web自动化之Selenium添加网站Cookies实现免登录
在使用Selenium进行Web自动化时,添加网站Cookies是实现免登录的一种高效方法。通过模拟浏览器行为,我们可以将已登录状态的Cookies存储起来,并在下次自动化测试或爬虫任务中直接加载这些Cookies,从而跳过登录步骤。 Cookies简介 …...
AI手机的技术细节
前序:先说各个功能涉及到的技术,再说宏观系统架构。AI手机有这样几个做法,给手机侧边增加一个按键;把手机的语音助手做的很好,能够快速稳定的进行唤醒;通过特殊形式的触摸手机的曲面屏位置等来进行唤醒AI …...
10. 九转金丹炼矩阵 - 矩阵置零(标记优化)
哪吒在数据修仙界中继续他的修炼之旅。这一次,他来到了一片神秘的金丹谷,谷中有一座巨大的九转金丹炉,炉身闪烁着神秘的光芒。金丹炉的入口处有一块巨大的石碑,上面刻着一行文字:“欲破此炉,需以九转金丹之力,炼矩阵之零,标记优化定乾坤。” 哪吒定睛一看,石碑上还有…...
[实现Rpc] 客户端 | Requestor | RpcCaller的设计实现
目录 Requestor类的实现 框架 完善 onResponse处理回复 完整代码 RpcCaller类的实现 1. 同步调用 call 2. 异步调用 call 3. 回调调用 call Requestor类的实现 (1)主要功能: 客户端发送请求的功能,进行请求描述对服务器…...
Java 大视界 -- 深度洞察 Java 大数据安全多方计算的前沿趋势与应用革新(52)
💖💖💖亲爱的朋友们,热烈欢迎你们来到 青云交的博客!能与你们在此邂逅,我满心欢喜,深感无比荣幸。在这个瞬息万变的时代,我们每个人都在苦苦追寻一处能让心灵安然栖息的港湾。而 我的…...
山东大学软件学院nosql实验三
实验题目: 用Java做简单查询(2学时) 实验内容 用API方式,做简单查询。 实验要求 在以下要求中选择至少2个,使用Java语言实现数据查询,最终把数据输出到前端界面。 (1)找出年龄小于20岁的所有学生 &…...
正态分布的奇妙性质:为什么奇数阶中心矩(odd central moments)为零?
正态分布的奇妙性质:为什么奇数阶矩为零? 正态分布(Normal Distribution)是统计学中最常见的分布之一,它的钟形曲线几乎无处不在,从身高体重到测量误差,都能看到它的影子。除了均值和方差这两个…...
【入门音视频】音视频基础知识
🌈前言🌈 这个系列在我学习过程中,对音视频知识归纳总结的笔记。因为音视频相关讲解非常稀少,所以我希望通过这个音视频系列,跟大家一起学习音视频,希望减少初学者在学习上的压力。同时希望也欢迎指出文章的…...
Youtu-Parsing入门必看:从零配置WebUI(7860端口)快速上手
Youtu-Parsing入门必看:从零配置WebUI(7860端口)快速上手 你是不是经常遇到这样的烦恼?拿到一份扫描的PDF合同,想把里面的文字和表格提取出来,结果发现文字识别得乱七八糟,表格更是变成了一团乱…...
别再重启了!Surface Pro蓝牙失灵,试试这个PowerShell命令(Win10/Win11通用)
Surface Pro蓝牙失灵急救指南:5条PowerShell命令快速恢复连接 每次打开Surface Pro发现蓝牙图标神秘消失时,那种焦躁感我深有体会。作为常年携带Surface Pro出差的设计师,我经历过太多次演示前鼠标突然断连的尴尬。经过两年反复试验ÿ…...
SITS2026 AGI原型系统性能数据全曝光,98.7%任务自闭环率,为什么传统评估基准已失效?
第一章:SITS2026 AGI原型系统性能数据全曝光 2026奇点智能技术大会(https://ml-summit.org) SITS2026 AGI原型系统于2026年3月在ML Summit实验室完成全栈基准测试,覆盖推理延迟、多模态对齐精度、长程记忆检索吞吐及能源效率四大核心维度。所有测试均在…...
【代码质量守门员升级计划】:为什么91%的团队在第3周就弃用Copilot审查插件?这4个未公开的规则引擎配置才是关键
第一章:智能代码生成与代码审查自动化的演进脉络 2026奇点智能技术大会(https://ml-summit.org) 智能代码生成与代码审查自动化并非一蹴而就的技术跃迁,而是伴随编译器理论、静态分析、程序合成与大语言模型三重范式演进的协同产物。早期以Lint工具和C…...
主流AI培训机构技术栈与教学模式横向评测:面向开发者的选型参考
引言:从技术焦虑到能力构建的十字路口随着生成式AI技术的爆炸式发展,从底层模型架构(如Transformer)到上层应用开发(如智能体、多模态生成),技术栈迭代速度前所未有。广大开发者与技术人员正面临…...
▲D2D通信中基于Qlearning强化学习算法的联合资源分配与功率控制算法matlab仿真
目录 📶1.引言 🧠2.系统模型 2.1 网络拓扑 2.2 信号与干扰模型 2.3 容量与吞吐量 2.4 优化目标 ✅3.基于Q学习的联合资源分配与功率控制算法原理 3.1 状态空间定义 3.2 动作空间定义 3.3 奖励函数设计 3.4 Q值更新规则 📚4.MATLA…...
失物招领|基于java + vue失物招领系统(源码+数据库+文档)
失物招领系统 目录 基于springboot vue失物招领系统 一、前言 二、系统功能演示 详细视频演示 三、技术选型 四、其他项目参考 五、代码参考 六、测试参考 七、最新计算机毕设选题推荐 八、源码获取: 基于springboot vue失物招领系统 一、前言 博主介绍…...
用Python爬虫+AI翻译,我自动化复习完了《新概念英语3》的L11-L15
用Python爬虫AI翻译构建自动化英语学习系统 每次翻开《新概念英语》的泛黄书页,总能看到当年用荧光笔标记的密密麻麻的笔记。这种传统学习方式虽然有效,但在数字时代显得效率低下。最近我尝试用Python技术栈重构学习流程,意外发现爬虫抓取AI翻…...
终极京东抢购神器:JDspyder自动化脚本完整使用指南
终极京东抢购神器:JDspyder自动化脚本完整使用指南 【免费下载链接】JDspyder 京东预约&抢购脚本,可以自定义商品链接 项目地址: https://gitcode.com/gh_mirrors/jd/JDspyder 还在为抢不到心仪商品而烦恼吗?JDspyder是一款专业的…...
如何快速掌握DIY Layout Creator:电子爱好者的终极电路设计指南
如何快速掌握DIY Layout Creator:电子爱好者的终极电路设计指南 【免费下载链接】diy-layout-creator multi platform circuit layout and schematic drawing tool 项目地址: https://gitcode.com/gh_mirrors/di/diy-layout-creator 你是否曾为复杂的电路设计…...
