2.14.0,独立运行时。它是平台上唯一的 supervised 方法:带标签的样本
对从初始化开始训,spec 里任何地方都没有底座模型。
数据长什么样
目录名就是类名。没有标签文件,没有 CSV:torchvision.datasets.ImageFolder 的约定。把类别数写进 config.yaml 的 num_classes,
代码一行都不用改。
val/ 是必需的,而且不能与 train/ 重叠。平台上报的 accuracy 是在它上面测的,混进训练图片就让
那个数字失去意义。
创建
train.py 和 config.yaml,两个都是你的。train.py 里只有 build_model 和
build_datasets 是打算让你改的。其余是平台契约:参数怎么进来、从 rank 0 上报、产物写到哪。
配置
config.yaml 是平的,没有继承。每个键都由 recipe 声明过,所以拼错或超范围的值在 tp validate
就失败,而不是排完队才失败:
--set 覆盖同样这些键,走同一份声明:
把图片送到集群
- 用数据集
- 用 volume
有版本、不可变。需要说清某次运行用的是哪个版本时用它。
input_pipeline: imagefolder 会读工作目录下的 data/{train,val},那是给本地调试
用的。mnist 和 cifar10 会尝试下载 —— 本地没问题,集群节点通常没有出网路径。真跑一次就声明
其中一种。见数据集和 Volume。
扩上去
torchrun。多卡时 batch_size 是每进程的。两台机器以上会组成一个
带 rendezvous 的进程组,每台机器一个 launcher —— 你的实验从不去读卡数,因为 train.py 启动时
RANK、LOCAL_RANK 和 WORLD_SIZE 已经设好了。
多节点需要一个 node、kubernetes 或 slurm Fleet,和这里每个进程组框架一样。
确认成功
Charts 标签页会显示train/loss、validation/loss、validation/accuracy 和 train/lr。
accuracy 是 val/ 上的 correct / total。Artifacts 里有 checkpoints/best.pt,以及每个被评估过
的 epoch 的快照。
这个方法没有 tp export 也没有 tp eval,而且这是明说而不是遗漏:一个分类器没有有意义的
HuggingFace 导出,这里也没有评测 harness 能给它打分。tp submit --then export 在编译期就会被拒绝。
换成你自己的模型
train.py 里的两个函数:
为什么不用 custom/custom
一个 shell 脚本同样能调torchrun,所以差别值得说清:
你的训练器确实不是这个形状时,再去看自带训练器。
发布镜像(管理员做一次)
发布镜像(管理员做一次)
catalog 里没有为 然后去 Settings → Runtime → Images → Default PyTorch image。一个标签就够,不用重启就生效。
pytorch-2.14.0 内嵌任何地址。构建它,然后指定它:TUNEPLANE_IMAGE_PYTORCH 设的是同一个字段,是保存值覆盖之前的基线。没有它,提交会失败并报 runtime_id='pytorch-2.14.0' has no built-in OCI source。