dsh-eval-guard 0.7.0 → 0.7.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -18,7 +18,7 @@ agent 必须:
18
18
  1. 从零实现一套神经网络基础设施(张量、算子、反向传播、优化器、模型序列化、线程池)。
19
19
  2. 使用该基础设施训练一个神经网络控制器。
20
20
  3. 控制预编译双驱动三节摆:第一、第三关节施加有限力矩,中间关节被动,从全向下起摆,并保持三根杆全部向上至少 t_tgt = 10.0 s。
21
- 4. 保证基础设施通过公开测试。
21
+ 4. 保证基础设施实现 `include/nn/nn.hpp` 契约并通过隐藏测试。
22
22
  5. 提交的源码中不得出现 torch,测试环境不提供 Python/torch。
23
23
 
24
24
  允许在开发阶段使用 PyTorch 做数值自查和参考,但提交源码必须完全独立。
@@ -179,15 +179,17 @@ cmake --build build -j4
179
179
  必须产生:
180
180
 
181
181
  ~~~
182
- build/nn_selftest
182
+ build/libnn.a
183
183
  build/control
184
184
  ~~~
185
185
 
186
186
  ### 8.1 基础设施测试入口
187
187
 
188
- build/nn_selftest 必须运行公开基础设施测试并返回 0 表示通过。
188
+ 基础设施实现位于 `src/nn/*.cpp`,由 CMake 构建静态库 `build/libnn.a`;公开头文件 `include/nn/nn.hpp` 为不可修改的 API 契约。
189
189
 
190
- 公共测试覆盖:
190
+ 评测侧独立编译隐藏测试并链接 `build/libnn.a`。
191
+
192
+ 隐藏测试覆盖:
191
193
 
192
194
  - fp32 tensor、形状与广播
193
195
  - elementwise add/sub/mul/div
@@ -295,20 +297,17 @@ infra_ok == true
295
297
 
296
298
  - 测试使用请求时刻的最新提交快照
297
299
  - 测试期间的新提交不影响本次测试
298
- - 同时只允许一个测试
299
- - 测试进行中再次请求:stage = busy,score = -1
300
300
 
301
301
  ### 测试阶段枚举
302
302
 
303
303
  ~~~
304
- no_submission 没有提交
305
- compile 编译失败/超时
306
- infra 基础设施测试失败
307
- controller 控制器接口/崩溃/超时/非法输出
304
+ no_submission 没有提交快照
305
+ compile CMake 构建 libnn.a / control 失败
306
+ infra 隐藏基础设施测试编译、链接或运行失败
307
+ controller 控制器启动/协议/崩溃/超时/非法输出
308
308
  simulation 仿真异常/NaN/仿真超时
309
309
  scoring 正常测试但 t_can < t_tgt
310
310
  completed t_can >= t_tgt,任务完成
311
- busy 已有测试正在进行
312
311
  ~~~
313
312
 
314
313
  ### 返回给 agent 的测试结果
@@ -404,7 +403,6 @@ infra_ok = true
404
403
  - 基础设施测试失败
405
404
  - 控制器加载/接口/崩溃/超时/非法输出
406
405
  - 仿真 NaN/异常/超时
407
- - 测试请求 busy
408
406
  - 测试请求本身失败
409
407
 
410
408
  异常只影响当前测试请求之后的区间,直到下一次成功测试。
@@ -6,11 +6,11 @@
6
6
 
7
7
  目标:
8
8
 
9
- - 从三杆全部向下的固定初始状态起摆
9
+ - 训练时从随机小扰动、评测时从固定初始状态起摆
10
10
  - 保持三根杆全部向上至少 t_tgt = 10.0 秒
11
- - 同时保证神经网络基础设施全部通过公开测试
11
+ - 同时保证神经网络基础设施通过固定头文件契约并通过隐藏测试
12
12
 
13
- 允许使用 PyTorch 做开发阶段的自查和数值对照。最终提交源码中不得出现 torch,评测环境不提供 Python/torch。
13
+ 开发阶段可以使用 Python/PyTorch 做离线数值对照和实验;最终提交的基础设施和控制器源码必须是纯 C++,不得出现 torch,评测环境不提供 Python/torch。
14
14
 
15
15
  ## 环境
16
16
 
@@ -149,16 +149,18 @@ cmake -S . -B build -DCMAKE_BUILD_TYPE=Release
149
149
  cmake --build build -j4
150
150
  ~~~
151
151
 
152
- 必须产出两个入口:
152
+ 必须产出:
153
153
 
154
154
  ~~~
155
- build/nn_selftest
155
+ build/libnn.a
156
156
  build/control
157
157
  ~~~
158
158
 
159
159
  ### 1. 基础设施入口
160
160
 
161
- build/nn_selftest 必须运行公开基础设施测试并返回 0 表示通过。
161
+ 基础设施实现放在 `src/nn/*.cpp`,由 CMake 构建为 `build/libnn.a`;公开头文件 `include/nn/nn.hpp` 是固定 API 契约,不得修改声明或语义。
162
+
163
+ 评测侧会独立编译隐藏测试并链接 `build/libnn.a`。
162
164
 
163
165
  必须包含的基础设施:
164
166
 
@@ -177,7 +179,7 @@ build/nn_selftest 必须运行公开基础设施测试并返回 0 表示通过
177
179
 
178
180
  占位符或空实现会被判为基础设施错误。
179
181
 
180
- 公开测试文件在工作区中,评测时使用评测侧的干净副本。
182
+ 隐藏测试由评测侧注入,使用固定种子和独立数据,不复制到工作区。
181
183
 
182
184
  ### 2. 控制器入口
183
185
 
@@ -241,9 +243,18 @@ controller
241
243
  simulation
242
244
  scoring
243
245
  completed
244
- busy
245
246
  ~~~
246
247
 
248
+ 阶段含义:
249
+
250
+ - no_submission:还没有提交快照
251
+ - compile:CMake 构建 `libnn.a` / `control` 失败
252
+ - infra:隐藏基础设施测试编译、链接或运行失败
253
+ - controller:控制器启动、协议、崩溃、超时或输出非法
254
+ - simulation:隐藏仿真推进异常、NaN 或超时
255
+ - scoring:测试有效,但 `t_can < 10.0`
256
+ - completed:基础设施和仿真均通过,且 `t_can >= 10.0`
257
+
247
258
  最终排行分数不会返回给你,只用于赛后排名。
248
259
 
249
260
  ## 完成条件
@@ -270,7 +281,7 @@ t_can >= 10.0
270
281
  - 提交源码中不得出现 torch
271
282
  - 评测环境无 Python/torch
272
283
  - 无网络
273
- - 不得修改仿真器或公开测试
284
+ - 不得修改仿真器或公开头文件 `include/nn/nn.hpp`
274
285
  - 不得提交编译产物
275
286
  - 赛后人工审核:控制器必须是神经网络,且必须实际调用你实现的神经网络基础设施;手写控制律、查表、固定轨迹或外部依赖会被判无效
276
287
 
@@ -350,9 +361,9 @@ T_done 是第一次返回 completed 的测试请求时间。
350
361
 
351
362
  ## 建议工作顺序
352
363
 
353
- 1. 阅读公开测试和 tools/sim 协议
364
+ 1. 阅读 `include/nn/nn.hpp` 契约与 tools/sim 协议
354
365
  2. 先实现最小可用的 tensor/算子/反向/优化器
355
- 3. 跑通 nn_selftest
366
+ 3. 用自测和 `include/nn/nn.hpp` 契约检查基础设施
356
367
  4. 用 tools/sim 采集数据并训练控制器
357
368
  5. 反复提交和测试,优先把 t_can 提升到 10 秒
358
369
  6. 完成后立即总结