训练一个模型,桌面上要摆四样东西:数据、代码、产物、日志。 Demo 在本机真建了这四个目录,真写了一个 45 字节的模型文件,真起了子进程,还量了磁盘: 剩余 247.1 GB(共 322.1 GB)。
第一章说这个岗位动的是「数据、指标、验收标准」。 这一节从最基础的那一层开始:这些东西到底放在哪。
一、四样东西,不是四种习惯
data 放原始数据与标注,code 放训练脚本,out 放模型与结果,log 放运行记录。
四个目录分开,是为了能复现。
出问题时按这四个方向查:数据是不是这一版、代码是不是这个人改的、产物落在哪、这次跑的日志在哪。
缺一样,排查就变成猜。
Demo 在本机的临时目录里真建了这四个目录,往 out 里写了一个 JSON:里面有模型名、参数量 171、
准确率 0.833,一共 45 字节。
45 字节当然不是真模型,但它演示了一件重要的事:产物的体积是可以量的。
真模型动辄几百 MB,磁盘和传输都要提前算。
二、环境和路径
这台机器的解释器是 Python 3.13.14,
装在虚拟环境里(sys.prefix 和 sys.base_prefix 不一样)。
PATH 有 27 条,sys.path 只有 11 条——两者不是一个东西:
前者管「敲命令时去哪找可执行文件」,后者管「import 时去哪找模块」。
PATH 的第一条是 'D',看起来像某个环境变量被截断了。
这种事在别人的机器上很常见,也是「在我这儿能跑」的典型原因。
所以接手项目第一件事不是看代码,是看环境:Python 版本多少、包装在哪、
PATH 里有没有奇怪的东西。这三样对不上,代码再对也跑不起来。
三、还要会起子进程
训练脚本很少单独跑:要调数据预处理、要起评估、要并行跑多组参数。这些都靠「起一个子进程」。 Demo 真起了一个子进程算 6×7,拿回 42 和返回码 0。 看着没用,但它是自动化的最小单元——所有批量跑参数的东西都建在这上面。 这一节的内容看着琐碎,但它是后面所有章节的前提:不会建目录、不会看环境、不会起进程, 后面每一个 Demo 都跑不起来。
四、动手 Demo:真建四个目录,真写一个模型文件
读本机的解释器版本、PATH 与 sys.path 的条目数、包装在哪、是不是虚拟环境;
然后在临时目录里真建四个目录、写一个 JSON、量磁盘剩余,最后起一个子进程算一道算术题。
four = [(u'data', u'原始数据与标注'), (u'code', u'训练脚本'),
(u'out', u'模型与日志'), (u'log', u'运行记录')]
for name, why in four:
os.makedirs(os.path.join(root, name), exist_ok=True)
r = subprocess.run([sys.executable, u'-c', u'print(6*7)'],
capture_output=True, text=True)
实跑输出:
--------------------------------------------------------------------
训练一个模型,桌面上要摆四样东西
--------------------------------------------------------------------
解释器 3.13.14 C:\Users\admin\.workbuddy\binaries\python\envs\default\Scripts\python.exe
平台 win32
PATH 条目数 27 条
前三条约多少字 124 字(第一条是 'D',看着像被截断的环境变量)
sys.path 条数 11 条(比 PATH 少,因为它只管模块)
装包的位置 C:\Users\admin\.workbuddy\binaries\python\envs\default\Lib\site-packages
在虚拟环境里吗 是
/data 原始数据与标注,已建,写入 0 字节
/code 训练脚本,已建,写入 0 字节
/out 模型与日志,已建,写入 45 字节
/log 运行记录,已建,写入 0 字节
四样东西之外还要什么 一个能复现的环境(Python 版本 + 包版本)
这次写出的模型文件 45 字节
磁盘剩余 247.1 GB(共 322.1 GB)
起子进程算 6×7 42(返回码 0)
这四样东西不是为了整齐,是为了「能复现」:
数据在哪、代码是哪一版、模型存哪儿、这次跑的日志在哪。缺一样,出问题就查不动。
训练师接手别人的项目,第一件事就是把这四个目录对上号。
输出里 PATH 27 条、sys.path 11 条。
差这么多是因为 PATH 里还有一堆可执行文件目录,它们跟 import 无关。
PATH 第一条是 'D'——这不是我写错,是本机环境里真的有一个这样的条目。
它说明「环境变量被谁改坏了」这种事很常见,而且不容易发现。
四个目录都建成功了,/out 写进 45 字节。磁盘剩余 247.1 GB,共 322.1 GB。
子进程那一步返回 42、返回码 0。真实训练里这个位置换成一个跑 8 小时的训练脚本,用法一模一样。
30 秒实验
- 在你自己的电脑上找出
PATH里最长的那一条,看它指向什么。 - 在项目里建这四个目录,把一次跑的结果按四类放进去。
- 想一想:为什么日志要单独一个目录,不跟模型放一起?
常见误区
- 「代码能跑就行,目录无所谓」——出问题时找不到日志,等于没有日志。
- 「我电脑上能跑」——
PATH和包版本一变就跑不了。 - 「模型文件不大,随便放」——真模型几百 MB,磁盘和传输都要提前算。
自测三问(点开对答案)
1. 训练项目要摆哪四样东西? —— 数据、代码、产物、日志,分四个目录放。 2. `PATH` 和 `sys.path` 的区别是什么? —— 前者找可执行文件,后者找 import 的模块。 3. 为什么接手项目先看环境? —— 版本、包位置、PATH 对不上,代码再对也跑不起来。环境准备好,下一步是数学——先从最常用的一步「拟合一条直线」开始。
- ☐ (本节完,下一节 2.1.2 数学基础知识:AI训练师的核心能力)