d0bbb8f3e2
- baseline infer.py + requirements.txt + build_env.sh - GRAB / HSTU 两篇核心论文 - 比赛规则和提交接口说明 - 项目 CLAUDE.md
115 lines
3.8 KiB
Markdown
115 lines
3.8 KiB
Markdown
# 选手提交压缩包规范
|
||
|
||
本文档说明选手提交代码压缩包的格式与运行要求。不符合以下任一约束,评测将失败或总分计 0。
|
||
|
||
---
|
||
|
||
## 1. 压缩包格式
|
||
|
||
- **允许的后缀**:`.zip`、`.tar.gz`、`.tar`。其他后缀评测会直接失败。
|
||
- **目录布局**:压缩包解压后,所有文件必须**直接位于根目录**,不得包含最外层包裹目录。
|
||
|
||
错误示例(解压后多一层目录):
|
||
```
|
||
submit.zip
|
||
└── my_code/
|
||
└── infer.py
|
||
```
|
||
|
||
正确示例:
|
||
```
|
||
submit.zip
|
||
├── infer.py
|
||
├── requirements.txt # 可选
|
||
└── build_env.sh # 可选
|
||
```
|
||
|
||
---
|
||
|
||
## 2. 必需文件
|
||
|
||
### 2.1 `infer.py`(必需)
|
||
|
||
根目录必须存在可被 Python 正常 `import` 的 `infer` 模块(即 `infer.py` 或 `infer/__init__.py`),并对外提供以下接口:
|
||
|
||
| 接口 | 签名 / 说明 |
|
||
|------|-------------|
|
||
| `load_sample_files` | `load_sample_files(sample_files_list: List[Path]) -> (item_dict, user_seq)` |
|
||
| `CTRTestSeqDataset` | 类;构造参数:`test_logids_ordered`, `item_dict`, `user_seq`, `max_feasign_per_slot`, `max_ctx_len`;需暴露属性 `max_slot_id` |
|
||
| `make_collate_fn` | `make_collate_fn(max_slot_id) -> Callable`,用作 `DataLoader` 的 `collate_fn` |
|
||
| `load_model` | `load_model(ckpt_path: Path) -> (model, device)` |
|
||
| `move_batch_to_device` | `move_batch_to_device(batch, device) -> batch` |
|
||
| `model(batch)` | 前向返回 `(logits, moe_loss)`;`logits.squeeze(-1)` 经 `sigmoid` 应为点击概率 |
|
||
|
||
`batch` 必须包含以下键:
|
||
- `logid`:样本 logid,需支持 `.shape[0]` 与 `[pred_mask].cpu().tolist()`
|
||
- `pred_mask`:可转 `bool` 的掩码 Tensor
|
||
|
||
### 2.2 评测端提供、选手**不得**自带的文件
|
||
|
||
评测端会统一提供下列路径,选手**不要**在压缩包中包含同名文件/目录:
|
||
|
||
- `dataset/`:测试与历史数据
|
||
- `ckpt.pt`:模型权重
|
||
|
||
---
|
||
|
||
## 3. 可选文件
|
||
|
||
| 文件 | 行为 | 失败条件 |
|
||
|------|------|----------|
|
||
| `requirements.txt` | 评测前安装依赖(使用阿里云 PyPI 镜像:`https://mirrors.aliyun.com/pypi/simple`) | 安装失败则评测失败 |
|
||
| `build_env.sh` | 在代码根目录下执行 `sh build_env.sh`,**超时 720 秒** | 超时或返回码非 0 则评测失败 |
|
||
|
||
依赖必须可通过阿里云 PyPI 镜像安装;`build_env.sh` 若需访问外部资源,请自行保证在 720 秒内完成。
|
||
|
||
---
|
||
|
||
## 4. 运行时与指标约束
|
||
|
||
### 4.1 推理延迟
|
||
|
||
- 延迟阈值:**300 秒**。
|
||
- 只统计**模型前向**时间(逐 batch 累加 `model(batch)` 耗时),数据加载、模型加载不计入。
|
||
- 延迟得分:`score_latency = (300 - latency) / 300`。
|
||
- 若 `latency ≥ 300`,`score_latency = 0`,**总分直接置 0**。
|
||
|
||
### 4.2 模型指标门槛
|
||
|
||
以下任一不满足,策略分 `score_model = 0`,**总分直接置 0**:
|
||
|
||
- `AUC ∈ [0.65, 1.0]`
|
||
- `PCOC ∈ [0.85, 1.15]`,其中 `PCOC = mean(predictions) / mean(labels)`
|
||
|
||
### 4.3 总分公式
|
||
|
||
仅当 `score_latency > 0` 且 `score_model > 0` 时:
|
||
|
||
```
|
||
score_all = score_latency * 70 + score_model * 30
|
||
```
|
||
|
||
否则 `score_all = 0`。
|
||
|
||
---
|
||
|
||
## 5. 违规清单(评测失败或 0 分)
|
||
|
||
1. 压缩包后缀非 `.zip` / `.tar.gz` / `.tar`。
|
||
2. 压缩包内含最外层包裹目录,导致根目录找不到 `infer.py`。
|
||
3. 缺失 `infer.py`,或其任一必需接口签名/返回值结构不符。
|
||
4. `requirements.txt` 安装失败。
|
||
5. `build_env.sh` 执行超过 720 秒或返回码非 0。
|
||
6. 推理总耗时 ≥ 300 秒。
|
||
7. `AUC` 不在 `[0.65, 1.0]` 或 `PCOC` 不在 `[0.85, 1.15]`。
|
||
8. 压缩包自带 `dataset/` 或 `ckpt.pt`,覆盖评测端提供的路径。
|
||
|
||
---
|
||
|
||
## 6. 最小可用提交示例
|
||
|
||
```
|
||
submit.zip
|
||
├── infer.py # 实现第 2.1 节全部接口
|
||
└── requirements.txt # 可选;列出 torch 等依赖
|
||
``` |