Skip to content

Latest commit

 

History

History
75 lines (48 loc) · 3.14 KB

README.md

File metadata and controls

75 lines (48 loc) · 3.14 KB

赛题模板文档

赛题模板已给出,详情参考路径 task/task-template

样例赛题已给出,详情参考路径 task/task-0

文件说明

下方是整个评测容器的文件组织方式

Template
├── task.md                # 赛题说明文档
├── Dockerfile             # 评测容器构建文件
├── Makefile               # 自动化构建和管理项目脚本
├── app.py                 # 评测的主要 Python 脚本
├── asset/                 # 存放赛题说明文档的静态文件
├── task-dataset/          # 赛题相关训练集-有标签
├── test-dataset/          # 赛题相关测试集-无标签
├── test-labels/           # 赛题相关测试集-仅标签
└── etc
    ├── __init__.py
    ├── answer.json        # 赛题参赛者提交文件
    ├── example.json       # 赛题模板提交文件
    ├── nginx.conf         # Nginx 配置文件
    ├── rank.py            # 评分程序
    ├── requirements.txt   # Python 依赖库列表
    └── test.py            # 评测容器测试脚本

评测容器的设计与实现

Flask 服务端

评测容器的核心是基于 Flask 框架构建的服务端,负责处理来自外界(赛题平台)的请求。Flask 服务端将解析请求数据,调用评分函数 cal_score() 并返回评测结果

Flask 服务端默认占用容器的 8000 端口

当外界向容器的 127.0.0.1:8000 端口发送 json 数据,服务端会处理上下文信息,通过评分函数 cal_score() 计算本次提交的得分,并将结果返回给外界

相关代码位于 app.py

Nginx 转发

Nginx 作为反向代理服务器,用于将外部请求转发到 Flask 应用

Nginx 默认将容器的 5000 端口代理转发到 8000 端口

相关配置位于 etc/nginx.conf

出题人需要关注的

1. 赛题介绍

出题人需要在 task.md 文件中详细描述赛题的背景、目标、评测标准及相关的注意事项,确保参赛者能充分理解赛题要求

task.md 中需要的静态文件(图片、音频等)请存放在 assert/ 文件夹下

2. 数据集的组织形式

  • task-dataset/:训练集,带有标签,此文件夹里的数据会提供给参赛者
  • test-dataset/:测试集,仅带有输入数据,此文件夹里的数据会提供给参赛者,供参赛者本地生成提交文件
  • test-labels/:测试集,仅带有标签,此文件夹的数据保密,与参赛者提交的文件进行对比评分

3. 评分函数

评分函数定义在 rank.py 文件中,出题人需要实现评分函数 cal_score(),这个函数需要对 etc/example.json 格式的提交文件做评分,最终返回一个浮点数

评分函数需要考虑到可能的特殊情况(提交文件数据有误)和边界条件,若提交文件有误导致无法评分,请返回得分 -1.0

4. Python 环境准备

出题人需要在 Dockerfile 的第 2 行写定需要的 Python 版本

出题人需要在 requirements.txt 文件中列出所有必要的 Python 库,确保评测容器构建时能够安装所需依赖