logo
0
1
WeChat Login
feat: 将项目升级为 PyTorch 云原生开发环境

PyTorch 云原生开发环境

基于 CNB 的自定义 PyTorch 深度学习开发环境,使用 uv 作为包管理器,支持 CPU 和 GPU 云端开发环境配置。

注意

  • 未能实现从按钮流水线的 loading 页自动跳转被激活流水线页面,需要等待几秒,在按钮流水线结束并激活自定义事件后再点击 "云原生开发" 按钮进入或在头像菜单 我的云原生开发 列表页进入。
  • 镜像不存在时需要等待构建并推送才会激活。
  • 不适用于 '"cnb:arch:arm64:v8"' 节点。
  • 安装依赖较多时需防止流水线超时检测,参考超时策略

功能特性

  • 使用 uv 创建默认的项目虚拟环境,并添加配置
  • 配置腾讯内网镜像源(apt + uv),加速下载
  • 预装 VSCode 扩展:Python、BasedPyright、中文语言包,并添加配置
  • 支持 CPU/GPU 环境自动检测和依赖安装
  • 支持自定义 CPU 核数和节点架构(amd64/arm64/GPU)

项目结构

. ├── .cnb.yml # CNB 配置入口 ├── .cnb/ │ ├── python-env # Python 基础环境 Dockerfile │ ├── pytorch-env # PyTorch 环境 Dockerfile │ ├── web_trigger.yml # 云开发按钮触发配置 │ └── scripts/ │ ├── prepare_python_env.sh # Python 基础环境准备脚本 │ ├── prepare_pytorch_env.sh # PyTorch 环境准备脚本 │ ├── check_params.sh # 参数检查脚本 │ ├── create_languagepacks.sh # 中文语言包配置脚本 │ └── add_vscode_config.sh # 插件和窗口配置脚本 ├── pyproject.toml # uv 项目配置文件(含 PyTorch 依赖) ├── main.py # PyTorch 环境测试入口 ├── .gitignore └── README.md

构建命令

镜像不存在时流水线会自动触发构建,并推送到制品库。

# 构建 Python 基础环境镜像 docker build -f .cnb/python-env -t ${CNB_DOCKER_REGISTRY}/${CNB_REPO_SLUG_LOWERCASE}/python-env:latest . # 推送 Python 基础环境镜像 docker push ${CNB_DOCKER_REGISTRY}/${CNB_REPO_SLUG_LOWERCASE}/python-env:latest # 构建 PyTorch CPU 环境镜像 docker build --build-arg USE_GPU=false \ --build-arg PYTHON_ENV_IMAGE=${CNB_DOCKER_REGISTRY}/${CNB_REPO_SLUG_LOWERCASE}/python-env:latest \ -f .cnb/pytorch-env \ -t ${CNB_DOCKER_REGISTRY}/${CNB_REPO_SLUG_LOWERCASE}/pytorch-env-amd:latest . # 构建 PyTorch GPU 环境镜像 docker build --build-arg USE_GPU=true \ --build-arg PYTHON_ENV_IMAGE=${CNB_DOCKER_REGISTRY}/${CNB_REPO_SLUG_LOWERCASE}/python-env:latest \ -f .cnb/pytorch-env \ -t ${CNB_DOCKER_REGISTRY}/${CNB_REPO_SLUG_LOWERCASE}/pytorch-env-gpu:latest . # 推送镜像 docker push ${CNB_DOCKER_REGISTRY}/${CNB_REPO_SLUG_LOWERCASE}/pytorch-env-amd:latest docker push ${CNB_DOCKER_REGISTRY}/${CNB_REPO_SLUG_LOWERCASE}/pytorch-env-gpu:latest

自定义云开发配置

在 CNB 仓库页面点击「远橙开发」按钮,可自定义:

  • CPU 数量:amd64 节点 1 ~ 64 核,arm64 节点 1 ~ 16 核
  • 节点类型:amd64 / arm64:v8 / amd64:gpu / amd64:gpu:H20 / amd64:gpu:L40

流水线会根据节点类型自动选择:

  • GPU 节点(amd64:gpu 等):构建 pytorch-env-gpu 镜像,安装 GPU 版本 PyTorch(CUDA 13.0)
  • CPU 节点(amd64/arm64:v8):构建 pytorch-env-amd 镜像,安装 CPU 版本 PyTorch

uv 包管理器说明

  • 默认 Python 解释器由 uv 管理,位于 /opt/uv-envs/venv/bin/python
  • 为新的虚拟环境安装依赖需要设置 UV_PROJECT_ENVIRONMENT 环境变量
  • 索引模式环境变量 UV_INDEX_STRATEGY="unsafe-first-match" ,优先选择第一个具有兼容版本的索引
  • 据测试使用 uv sync --extra dev-cpu 未能正确编译依赖,需使用 uv pip install 安装

PyTorch 依赖配置

pyproject.toml 中配置了可选依赖分组:

  • cpu: CPU 版本 PyTorch(torch==2.10.0)
  • cu130: GPU 版本 PyTorch(CUDA 13.0,torch==2.10.0)
  • info: 可选工具(tensorboard、setuptools)
  • dev-cpu: CPU 开发环境(包含 cpu + info)
  • dev-gpu: GPU 开发环境(包含 cu130 + info)

uv 常用命令

# 按 pyproject.toml 中的可选依赖组(根据环境选择,镜像已自动安装) uv pip install --extra dev-cpu --requirements pyproject.toml # CPU 环境 uv pip install --extra dev-gpu --requirements pyproject.toml # GPU 环境 # 安装单个包 uv pip install <package>

VSCode 配置

  • 镜像中已使用 .cnb/scripts/create_languagepacks.sh 脚本生成中文语言包配置
  • 流水线中已使用 .cnb/scripts/add_vscode_config.sh 添加插件配置到工作区 settings.json ,因为用户配置会被漫游覆盖,可自行添加到用户配置进行漫游后取消相关代码。

快速测试

运行 main.py 测试 PyTorch 环境是否正常:

python main.py

该脚本会输出:

  • PyTorch 版本
  • CUDA 是否可用(GPU 环境)
  • GPU 信息(如可用)
  • 张量计算测试

参考资源

About

pytorch环境,提供按钮选择CPU或GPU节点,并自动选择对应的pytorch镜像