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.
- package/assets/neural-pendulum/SPEC.md +10 -12
- package/assets/neural-pendulum/TASK.md +22 -11
- package/assets/neural-pendulum/hidden/test_infra.cpp +631 -0
- package/assets/neural-pendulum/include/nn/nn.hpp +88 -0
- package/assets/neural-pendulum/sim.cpp +4 -2
- package/assets/neural-pendulum/sim_eval +0 -0
- package/assets/neural-pendulum/workspace.zip +0 -0
- package/lib/client/index.js +17 -17
- package/lib/client/index.js.map +1 -1
- package/lib/index.js +19 -7
- package/neural-pendulum-eval/run_eval.py +19 -6
- package/neural-pendulum-eval/sim_eval +0 -0
- package/package.json +1 -1
|
@@ -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/
|
|
182
|
+
build/libnn.a
|
|
183
183
|
build/control
|
|
184
184
|
~~~
|
|
185
185
|
|
|
186
186
|
### 8.1 基础设施测试入口
|
|
187
187
|
|
|
188
|
-
build/
|
|
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
|
-
|
|
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/
|
|
155
|
+
build/libnn.a
|
|
156
156
|
build/control
|
|
157
157
|
~~~
|
|
158
158
|
|
|
159
159
|
### 1. 基础设施入口
|
|
160
160
|
|
|
161
|
-
build/
|
|
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.
|
|
364
|
+
1. 阅读 `include/nn/nn.hpp` 契约与 tools/sim 协议
|
|
354
365
|
2. 先实现最小可用的 tensor/算子/反向/优化器
|
|
355
|
-
3.
|
|
366
|
+
3. 用自测和 `include/nn/nn.hpp` 契约检查基础设施
|
|
356
367
|
4. 用 tools/sim 采集数据并训练控制器
|
|
357
368
|
5. 反复提交和测试,优先把 t_can 提升到 10 秒
|
|
358
369
|
6. 完成后立即总结
|