Files
CTI-Inference-Opt/代码/任务提交接口说明.md
T
Serendipity d0bbb8f3e2 chore: 初始化 CTI 推理优化项目
- baseline infer.py + requirements.txt + build_env.sh
- GRAB / HSTU 两篇核心论文
- 比赛规则和提交接口说明
- 项目 CLAUDE.md
2026-06-03 13:49:30 +08:00

115 lines
3.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 选手提交压缩包规范
本文档说明选手提交代码压缩包的格式与运行要求。不符合以下任一约束,评测将失败或总分计 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 等依赖
```