scnet购买并使用gpu资源

网页1是普通说明。

网页2是最佳实践。

网页3是收费说明。

网页4是保存镜像。

🤔 Notebook 实例是什么?

你可以把 Notebook 实例 理解为一个为你量身定制的、即开即用的云端开发电脑。

  • 它不是一台真实的物理服务器,而是基于云计算技术,从超算中心庞大的资源池中,为你动态划分出的一块独立计算环境。
  • 它预装了操作系统、CUDA、Python 以及 PyTorch 等深度学习框架,让你能跳过复杂的环境配置,直接开始开发。
  • 它的核心特点是按需使用、按量计费。当你创建并启动一个实例,就相当于“开机”;当你关闭它,这块计算资源就会被释放,你也停止付费。
  • 因此,你之前看到的 bash 命令和 root 提示符,正是你进入了这个容器内部操作系统的证明。

🗂️ 为什么普通用户会有 /root/private_data/ 目录?

这正是 SCNet 平台为了让你使用更便利而做的特殊设计。理解这一点,需要从两个层面来看:

  1. 容器内的“root” ≠ 物理机的“root” 虽然你在容器里看到的是 root 用户,但这只是一个虚拟的、隔离的环境,权限被严格限制在容器内部,并不能对物理宿主机产生任何影响。所以,即使显示为 root,也无需担心安全问题。

  2. /root/private_data/ 是你的专属“云盘” 这个目录是平台为你专门挂载的一个持久化存储空间。它的作用就像一个“云盘”:

    • 持久保存:存放在这里的代码、数据集、模型,不会因为 Notebook 实例的关闭或重启而丢失。
    • 个人专属:这是你的私有空间,其他用户无法访问。
    • 平台推荐:SCNet 的官方文档和教程都明确建议,将所有个人数据都放在这个目录下。

💎 总结

总而言之,你在 SCNet 上启动的 Notebook 实例,是一个运行在云端的、临时的、专属的开发容器。而你看到的 /root/private_data/ 目录,正是连接这个临时容器与你永久个人存储空间的桥梁,确保你的工作成果和宝贵数据不会因为实例的关闭而消失。

所以,请放心地将你的代码和数据放在 /root/private_data/ 目录下,这是平台设计的最佳实践。

数据放哪?

Notebook 容器内几个目录性质不一样:

路径 性质 开关机后还在吗
/(系统盘) 装依赖、小代码,随「保存镜像」走 不存镜像就丢
/root/private_data(挂 /public/home/<user>) 个人数据、数据集、模型权重、训练结果 ✅ 不受开关机/存镜像影响
/root/group_data 团队共享 ✅ 持久
/root/public_data 平台公开只读 别写

实操里进 Terminal 先 cd private_data && mkdir -p my/train && cd my/train,把数据集、ipynb、ckpt 都往这塞。系统盘默认 50GB,private_data 走的是你家目录配额,存大模型权重优先放这;/tmp、~/scratch 是临时区会清理,别放成果。

关 Notebook 后数据还在吗:分「数据」和「环境」两层

只要把文件放在正确的目录,关机后数据就不会丢失,可以随时恢复。

  • 数据持久化:存放在 /root/private_data/ 目录下的所有文件(代码、数据集、模型等),在Notebook实例关闭后都会被持久化保存。当你再次启动同一个Notebook实例时,这些文件会自动恢复,继续使用。
  • 环境与配置的保存(进阶):除了数据,如果你还想保留安装的软件包、系统配置等整个开发环境,可以使用平台的 “保存镜像” 功能。这会将当前整个环境打包成一个镜像。下次创建Notebook时,直接选择这个自定义镜像,就能得到一个完全一致的环境。
    • 注意:保存镜像时,单层镜像数据量不得超过15 GiB。因此,大文件(如数据集)应始终放在 /root/private_data/ 中,而不是打包进镜像。

环境装在哪?

💻 环境装在哪?—— 推荐装在 /root/private_data 里

虽然可以把 Miniconda 这类环境装在用户家目录(~/)下,但更推荐的做法是把整个开发环境(包括 Miniconda、Python 包等)都安装在 /root/private_data 目录下。

原因如下:

  • 持久化存储:/root/private_data 是平台为每个用户分配的持久化个人存储空间。Notebook 实例关机后,该目录下的所有文件(包括你安装的 Conda、Python 环境)都会被保留,下次开机可以直接使用,无需重新配置。
  • 环境备份与复用:将环境安装在 /root/private_data 后,你可以使用平台的 “保存镜像” 功能,将整个环境(包括系统配置和已安装的包)打包成一个镜像。这样不仅能方便地恢复环境,还能用于团队协作或在其他节点上复现。

注意:保存镜像时,单层镜像数据量不得超过 15 GiB。因此,像数据集这样的大文件应始终放在 /root/private_data 中,不要打包进镜像。

具体操作步骤如下:

  1. 启动 Notebook 实例,进入 JupyterLab 界面。
  2. 打开一个 Terminal(终端)。
  3. 在终端中,切换到持久化目录:
    1
    cd /root/private_data
  4. 在此目录下,下载并安装 Miniconda:
    1
    2
    3
    4
    5
    6
    # 下载 Miniconda 安装脚本(请确保版本与你的系统兼容)
    wget https://repo.anaconda.com/miniconda/Miniconda3-py37_4.9.2-Linux-x86_64.sh
    # 运行安装,指定安装路径为当前目录下的 miniconda3 文件夹
    bash Miniconda3-py37_4.9.2-Linux-x86_64.sh -b -p /root/private_data/miniconda3
    # 删除安装脚本(可选)
    rm Miniconda3-py37_4.9.2-Linux-x86_64.sh
  5. 初始化 Conda,以便在新终端中直接使用 conda 命令:
    1
    2
    /root/private_data/miniconda3/bin/conda init
    source ~/.bashrc
  6. 之后,你创建的所有虚拟环境和安装的 Python 包,都会默认存放在 /root/private_data/miniconda3 下,实现持久化。

📂 数据怎么移到 /root/private_data?—— 使用 mv 或 cp 命令

如果你已经把数据上传到了家目录(~/),可以轻松地将其移动到 /root/private_data 目录。

  1. 在 JupyterLab 中打开 Terminal。

  2. 使用 mv(移动)或 cp(复制)命令。

    例如,假设你的数据文件夹叫 my_data,位于家目录,想移动到 /root/private_data:

    1
    mv ~/my_data /root/private_data/
    > 注意:mv 命令会直接移动文件,原路径将不再有该文件。

  3. (重要)修改文件权限:移动后,文件的所有者可能变为 root,导致后续操作权限不足。你需要将文件所有者修改为自己的计算用户名:

    1
    2
    # 将 user_name 替换为你的实际计算用户名
    chown -R user_name:user_name /root/private_data/my_data
    > 如果不确定自己的用户名,可以在终端输入 whoami 命令查看。

💎 总结与建议

  • 环境安装:务必安装在 /root/private_data 目录下,以实现持久化。这样关机重启后,你的 Conda 环境和所有已安装的包都还在。
  • 数据存放:所有代码、数据集、模型文件等都应放在 /root/private_data 下。
  • 数据迁移:使用 mv 或 cp 命令将数据从家目录移动到 /root/private_data,完成后记得用 chown 命令修改文件所有者。
  • 环境固化:环境配置完成后,建议使用平台的 “保存镜像” 功能进行备份,方便日后快速恢复或迁移。

📁 家目录与 /root/private_data 的关系

它们的关系可以这样理解:

  • 家目录 (/public/home/你的账号):这是你的永久个人存储空间,可以理解为你的“个人云盘”。你在登录SCNet平台时,默认就在这个目录下。

  • /root/private_data:这是Notebook实例内部的一个挂载点。它不是一个独立的存储空间,而是平台将你的家目录(/public/home/你的账号)映射(或称为“挂载”) 到了Notebook容器的这个路径下。

简单来说,/root/private_data 就是你个人家目录在Notebook实例里的“快捷方式”或“入口”。你在这个目录下看到的、操作的所有文件,实际上都存储在你的家目录里。

🗂️ 为什么提前准备的数据看不到?

因为家目录被“挂载”到了 /root/private_data,所以你在家目录里放东西,相当于在 /root/private_data 里放东西。关键在于“时机”:

  • 挂载发生在实例启动时。当你的Notebook实例启动,系统会执行“挂载”操作,将你当时的家目录内容映射到 /root/private_data。

  • 挂载是“一次性”的。这个映射在你启动实例的那一刻就确定了。实例启动后,你在家目录里新下载的数据或新安装的软件,不会自动同步到已经运行着的Notebook实例的 /root/private_data 中。

✅ 正确的操作流程

所以,为了实现你“提前准备,开箱即用”的想法,正确的流程应该是:

  1. 先启动Notebook实例。
  2. 进入实例后,在终端里直接通过 /root/private_data 路径来下载数据、安装Conda环境。
  3. 所有操作都在 /root/private_data 下完成。这样,这些文件就都保存在了你的家目录里,并且会持久化保存,不会因为实例关闭而丢失。

💎 总结

  • 二者关系:/root/private_data 是你家目录在Notebook实例里的映射,指向同一个存储空间。
  • 数据可见性:提前在家目录准备的数据,不会自动出现在已运行的Notebook实例中。挂载操作只在实例启动时进行一次。
  • 正确做法:养成好习惯,所有与Notebook项目相关的数据和环境配置,都在实例内部的 /root/private_data 路径下完成。

保存镜像

网页4

可以在关机时保存开发环境或者使用“保存镜像”功能对开发环境进行备份,保证机器具有一致的环境和配置,满足再次启动环境、团队开发环境搭建、在其他平台复现环境等需求,容器实例开关机条件下皆可保存镜像。

注意: 为保证镜像正常运行,保存环境镜像时单层镜像数据量不得超过15 GiB,系统会对镜像大小进行校验,若镜像大小超过限额限制,您需要手动将容器环境下文件转移到文件存储中。

我测试了一下,必须得在开机时候保存镜像,这样才能在下面找到这个镜像。关机保存不行。

控制台 - 人工智能 - 容器服务/镜像管理 - 我的镜像

但是,重新开机还是在下面的地方开机

控制台 - 人工智能 - notebook (开机)

SSH 登录

命令行登录

使用 windows 自带的 Powershell/CMD登录。

(1)实例开机后,找到SSH登录指令,并点击复制:

(2)打开您的本地终端,首先输入SSH登录指令,输入 yes,再输入登录密码进行登录。(注意:密码不会明文显示,正确输入后回车即可)

vscode 远程链接

首先,本地VSCode配置Remote-SSH,按照下面方式点击

然后点击 ”+ 添加新的 SSH 主机 “

获取并复制您实例的登录信息,回车键继续操作,注意,如果这个ssh命令的最后有空格,请删除空格,否则可能无法登录

回车后会弹出以下自定义SSH config 文件的弹窗,不需要选择直接回车即可。马上可能会弹出选择远程服务器是Windows、Linux和Mac系统的选项,请选择Linux

输入密码,等待SSH登录完成。

不行,不知道是不是平台原因还是网络原因,没有几秒时间就会自动断开连接。现在好了。

收费说明

网页3

一、计费模式

(1)notebook采用“后付费“的计费模式,即先充值再使用,根据实际使用时长进行扣费; (2)充值的金额都会到现金账户中,充值后所有k8s资源均可使用,扣费从现金账户中扣除。

二、计费规则

(1)容器运行开始计费,关机结束计费;(注:notebook启动时间不计费,容器真正运行起来才会开始计费)

(2)整点扣费一次和关机时扣费一次,扣费金额=计费时长×加速卡单价×加速卡数量。(举例:容器运行时长为:14:30-16:15,加速卡单价2元/卡×时,加速卡数量2张;在15:00会进行一次扣费,扣费金额=0.5×2×2=2元,在16:00会进行一次扣费,扣费金额=1×2×2=4元,在16:15关机后进行一次扣费,扣费金额=0.25×2×2=1元,最终本次容器运行整体扣费金额=7元。)

所以没跑任务但容器没停 = 空烧卡时,训练脚本跑完就该去控制台点停止。

三、消费查看

(1)旧版Notebook、容器实例、模型训练产生的费用请在“费用>消费明细>共享机时费”中查看。创建容器实例后,会生成一笔容器实例的后付费订单,可在“费用>消费明细>共享机时费”中查看,容器关机后,点击“查看详情”可以查看容器的运行时长、加速卡单价、数量和整体

(2)新版Notebook、模型部署产生消费明细信息请在“费用>消费明细>容器实例费”中查看。

实际做法

查看 torch 和 显卡

进入notebooke后,进入终端,查看 torch 版本和有无显卡

1
2
# which python
/usr/local/bin/python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
In [1]: import torch

In [2]: torch.__version__
Out[2]: '2.9.0'

In [3]: device = torch.device(torch.accelerator.current_accelerator().type if torch.accelerator.is_available() else 'cpu')
...:

In [4]: print(device)
cuda

In [5]: print(torch.cuda.get_device_name(0))
K500SM_AI

In [6]: # 查看当前默认显卡(通常是编号为 0 的显卡)的名称
...: print(torch.cuda.get_device_name(0))
...:
...: # 或者,如果你想查看系统中所有显卡的信息
...: for i in range(torch.cuda.device_count()):
...: print(f"GPU {i}: {torch.cuda.get_device_name(i)}")
...:
K500SM_AI
GPU 0: K500SM_AI

这里版本需要注意一下,torch.__version__ 显示的版本只是单纯的 torch 版本,使用 pip show torch 或 pip list 可以显示完整版本如下

这里的完整版本就是 2.9.0+das.opt1.dtk2604 ,这里的 das 啥的应该就是对应国产显卡。对于国产显卡,没有这些后缀就是不对的。

1
2
3
4
5
6
7
8
9
10
11
# pip show torch
Name: torch
Version: 2.9.0+das.opt1.dtk2604
Summary: Tensors and Dynamic neural networks in Python with strong GPU acceleration
Home-page: https://pytorch.org
Author:
Author-email: PyTorch Team <packages@pytorch.org>
License: BSD-3-Clause
Location: /usr/local/lib/python3.11/site-packages
Requires: cloudpickle, filelock, fsspec, jinja2, networkx, sympy, typing-extensions
Required-by: monai, torchdata, torchvision

加入 home 的 conda

在 Notebook 实例的终端中,直接运行以下命令,将 conda 添加到 PATH:

1
export PATH="/root/private_data/miniconda3/bin:$PATH"

此时,你可以立即测试:

1
conda --version

永久生效

1
vim ~/.bashrc

加入(第二行确保自带的 python 优先级最高)

1
2
export PATH="/root/private_data/miniconda3/bin:$PATH"
export PATH=/usr/local/bin:$PATH

然后 source 一下

1
source ~/.bashrc

最后还有channel 和 求解器,都要重新设置,这里没有 .condarc

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# 清空现有频道列表
# 如果第一次运行会报错,采用第二行命令
# conda config --remove-key channels
# conda config --set channels ""

# 1. 添加 conda-forge 并设为最高优先级(必须最先添加,因为越后添加优先级越高)
conda config --add channels bioconda # 中间
conda config --add channels conda-forge # 最前面(最高优先级)

# 2. 开启严格优先级(Strict)——这是关键,能彻底避免此类冲突
conda config --set channel_priority strict

# 3. 必须手动删掉 defaults,不然我试过了 defaults 一直在
conda config --remove channels defaults # 有就删,没有会报 not in channels 可忽略
conda config --show channels # 确认删除

# 4. (可选但强烈推荐)切换至 libmamba 求解器以提升速度
# 这就和 mamba 完全一样了,mamba 内核也是libmamba
# conda install -n base conda-libmamba-solver
conda config --set solver libmamba
conda config --show solver # 确认默认求解器

查看有没有 .condarc 以及内容

1
cat ~/.condarc

用哪个 python

系统自带的 python 是安装了指定版本的 pytorch 的,因此还得用这个自带的 python ,包括安装其他用到的 python 包。

但是,这里有一点要注意,系统自带的python不在个人目录里,因此需要记得保存镜像,并且建议记录一下所有用这个 python 安装的包(requirements.txt),方便迁移环境。

安装 torchvision 包

在SCNet这类使用国产异构加速卡(DCU)的环境中,不能直接使用 pip install torchvision 从PyPI官方源安装。因为官方版本是为NVIDIA CUDA编译的,而你的DCU卡需要依赖DTK(Deepcomputing Toolkit) 生态。

DTK 生态安装包查找路径:https://das.sourcefind.cn:55011/portal/#/home

查找 torchvision 包 ,发现对应我想的 DTK (26.04)和 pytorch 版本(2.9.0)的 torchvision 包版本为 0.24.0+das.opt1.dtk2604 。

找到对应的包的链接(注意 python 版本,我这里是3.11 ),安装方式如下

1
/usr/local/bin/pip install https://download.sourcefind.cn:65024/file/4/vision/DAS1.8/torchvision-0.24.0+das.opt1.dtk2604.torch290-cp311-cp311-manylinux_2_28_x86_64.whl

安装完成后,正常 pytorch 和 torchvision 包的版本号如下(有后缀 das)

1
2
torch                              2.9.0+das.opt1.dtk2604
torchvision 0.24.0+das.opt1.dtk2604.torch290

安装 monai

最新 MONAI 1.6 里写了 torch>=2.8.0

由于我现在用的 torch 是 2.7.1 ,所以 monai 需要安装旧一点的版本,1.5.0

先只装 MONAI 本身,不装/不改 torch:

1
pip install monai==1.5.0 --no-deps

然后再补 MONAI 需要的纯 Python 依赖(不要补 torch / torchvision):

1
pip install numpy nibabel pillow scikit-image einops tensorboard ignite

这里我用下面的命令查看哪些包没装

1
2
3
4
for pkg in numpy nibabel pillow scikit-image einops tensorboard ignite; do
printf "%-15s -> " "$pkg"
pip show "$pkg" >/dev/null 2>&1 && echo "✅ 已安装" || echo "❌ 未安装"
done
1
2
pip install tensorboard
pip install ignite

参考资料

  1. https://www.scnet.cn/help/docs/mainsite/bw-core-node/platform-application/ai/#%E4%BA%8C%E3%80%81-notebook
  2. https://www.scnet.cn/help/docs/mainsite/ai/model-training/practice/#%e4%b8%80%e3%80%81%e5%9f%ba%e4%ba%8enotebook%e5%9c%a8%e7%ba%bf%e6%9e%84%e5%bb%ba%e5%88%86%e5%b8%83%e5%bc%8f%e8%ae%ad%e7%bb%83%e9%95%9c%e5%83%8f
  3. https://www.scnet.cn/help/docs/mainsite/ai/bill/index.html
  4. https://www.scnet.cn/help/docs/mainsite/ai/notebook/function-introduction/
  • 版权声明: 本博客所有文章除特别声明外,著作权归作者所有。转载请注明出处!
  • Copyrights © 2019-2026 Vincere Zhou
  • 访问人数: | 浏览次数:

请我喝杯茶吧~

支付宝
微信