天池上的比赛,一般复赛阶段会让参赛选手使用docker封装好容器后,提交到线上得到结果,推理或者训练过程放在赛方提供的硬件环境下,选手一般是接触不到测试集的,更加保证了比赛的公平性。 笔者接触docker和使用已经有几次了经历了,但是都只是用于比赛,所以平时并不常使用,导致每次用的时候都要在查查资料回顾下,现在记录一下主要的提交步骤,以遍日后复习使用。

一、机制

天池平台提供了基于GPU计算资源的提交镜像的方式,将本地代码打包成镜像提交,推送至阿里云容器镜像仓库后,在天池提交页面中输入镜像地址、用户名和仓库密码。由比赛平台拉取镜像运行,运行结束即可在成绩页面查询评测结果和日志。

现在笔者自己对以上机制做一个更通俗的解释。我们可以把docker的镜像容器看成一个微型的虚拟机,这个虚拟机通过我们的搭建封装后,可以放到阿里的远程仓库里。赛方通过这个仓库,拿到你的镜像容器,然后在里面放入比赛的数据集,通过你在容器里面的模型代码,跑出预测的结果,并算出你的成绩。

二、镜像容器的制作

1、docker安装这里就不多讲了,非常容易可以自行参考官方的安装教程。
2、开通阿里云容器镜像服务,同样参考步骤1的教程。(注意仓库的地区选比赛要求的地区)
3、搭建自己的镜像容器:
这里通过Dockerfile文件来搭建自己的镜像容器。我们在自己本地先创建一个Dockerfile文件。

~:vim Dockerfile

在该文件中写入以下代码:

# Base Images
## 从天池基础镜像构建(from的base img 根据自己的需要更换,建议使用天池open list镜像链接:https://tianchi.aliyun.com/forum/postDetail?postId=67720)
FROM registry.cn-shanghai.aliyuncs.com/tcc-public/pytorch:1.1.0-cuda10.0-py3
##安装python依赖包
RUN pip install numpy -i https://pypi.tuna.tsinghua.edu.cn/simple
## 把当前文件夹里的文件构建到镜像的根目录下,并设置为默认工作目录
ADD . /
WORKDIR /
## 镜像启动后统一执行 sh run.sh
CMD ["sh", "run.sh"]

现在一行行解释命令的意思:

  • FROM registry.cn-shanghai.aliyuncs.com/tcc-public/pytorch:1.1.0-cuda10.0-py3是拉取一个镜像环境和直接使用docker pull命令一样的作用,后面的镜像环境可以根据自己的需求选取,这里提供了多种模型的训练环境,比如你的深度框架用的是tensorflow-gpu==2.4.1 ,那么拉取registry.cn-shanghai.aliyuncs.com/tcc-public/tensorflow:2.4.1-cuda10.1-py3这个环境后,该环境就提供了与之相应的cuda本版等一系列的环境。(这里建议读者直接拉取阿里提供的一些镜像环境,在此基础上可以安装自己额外需要的pip包,如果自己重新搭建镜像环境比较麻烦且繁琐)。

  • RUN pip install numpy -i https://pypi.tuna.tsinghua.edu.cn/simple 通过pip 安装你需要的py包,确保你需要的py包都安装到镜像容器中,也可以通过requirement.txt 全部安装了

  • ADD . / 将你当前所处的文件夹,添加到镜像容器中。(ADD后面的路径可以根据自己的需要修改)

  • WORKDIR / 设定容器的工作路径为容器的根目录 。(工作路径也可以根据自己的需求修改)

  • CMD ["sh", "run.sh"] 当拉取你这个容器时,自动执行bash命令,运行run,sh。

一般来说,Dockerfile只需要前四条语句,最关键的是第一句命令。

完成Dockerfile文件后,我们就可以在本地搭建自己的镜像容器了,但再次之前我们最好先登陆下我们的远程仓库。

sudo docker login --username=xxx registry.cn-shenzhen.aliyuncs.com

xxx是你阿里云用户名,这条命令在你自己的阿里云仓库的操作指导里可以找到。
输入你的阿里云仓库密码,登陆成功。

在本地建立你自己的镜像容器。

sudo docker build  -t registry.cn-shenzhen.aliyuncs.com/pred_dd/sad:1.0 .

上面代码registry.cn-shenzhen.aliyuncs.com/pred_dd/sad是你仓库的公网地址,同样在你创建的仓库里能找到。
冒号:后面的1.0表示版本号,这个你可以随便写,只是用于区分不同的镜像容器而已,只是个tag。 注意后面的.,目的是把你当前的所有文件放入虚拟容器里面,你也可以指定你代码所处的文件夹,这里我默认代码所需文件和模型都在当前文件夹下。

4、进入“虚拟机”(非提交必须的操作)
你的镜像容器搭建好后,就可以进入你的"虚拟机"里面了,这步不是必须的,但是可以加深我之前说的"微型虚拟机"概念的理解。输入如下命令:

sudo nvidia-docker run -it registry.cn-shenzhen.aliyuncs.com/pred_dd/sad:1.0

读者应该也注意到了,-it 后面是你刚刚创建的镜像容器的名字和版本号,由于我需要Gpu训练,所以用的是nvidia-docker,如果是cpu 就用docker。

此时就处在虚拟机里面了,可以看到之前在本地的一些文件已经放入了这个容器里面。我们也可以pip list 看看该环境是否已经按照了你需要的包和版本。在docker虚拟机里,可以通过python your_code.py 来运行起来你的代码,测试下环境是否满足自己代码的环境需求。这个和官方提供的:nvidia-docker run -v /data:/tcdata your_image sh run.sh 测试命令是一样的效果,这个命令是将你本地的/data文件夹,映射到容器里/tcdata文件夹,然后bash run.sh ,我们在run.sh里面写运行代码的命令。(ctrl+d 退出镜像容器)
其实从这个官方代码,我们也能猜测出官方是如何测试我们的代码的,我们要准备一个run.sh,里面写上我们代码的运行命令,官方拉取我们的镜像容器后,就会将数据映射到我们容器的/tcdata文件夹下,然后运行run.sh 文件来产生结果。所以在提交的时候,记得要写好run.sh文件,同时放入到镜像容器里面,通过命令sudo docker build -t registry.cn-shenzhen.aliyuncs.com/pred_dd/sad:1.0 . 将文件添加到容器中。

5、将本地镜像容器推送到远程仓库

sudo docker push registry.cn-shenzhen.aliyuncs.com/pred_dd/sad:1.0

6、 提交容器
官网提交页面,输入镜像容器的名字registry.cn-shenzhen.aliyuncs.com/pred_dd/sad:1.0,用户名和密码即可提交成功。

总结

这个提交流程汇总
1、 准备Dockerfile 文件,里面写入需要拉取的基础镜像,以及相应的包,同时添加将本地文件放入镜像容器的命令。
2、准备好run.sh 以及相应的模型训练和预测代码。
3、登陆远程仓库sudo docker login --username=xxx registry.cn-shenzhen.aliyuncs.com
4、sudo docker build -t registry.cn-shenzhen.aliyuncs.com/pred_dd/sad:1.0 搭建本地的镜像容器
5、sudo docker push registry.cn-shenzhen.aliyuncs.com/pred_dd/sad:1.0 将镜像容器推送到仓库
6、官网提交

天池比赛如何使用docker提交相关推荐

  1. Docker提交天池比赛流程

    一.安装docker 天池大赛入门与docker实践课程: https://tianchi.aliyun.com/course/351 Ubuntu20.04安装docker: https://blo ...

  2. Docker提交天池比赛代码流程(windows10环境下)

    一.Docker环境配置(以windows10为例) Docker Desktop 下载地址:https://docs.docker.com/docker-for-windows/install/ 1 ...

  3. 天池比赛 Docker 解决无法读取测试集,提交成功

    Docker 提交 一 制作 Dockerfile 二 制作 run.sh 三 制作推送镜像 3.1 登录 build 3.2 进入容器中配置环境 3.3 本地测试 3.4 推送镜像 四 提交 五 改 ...

  4. 天池数据竞赛docker提交操作学习

    天池数据竞赛docker提交操作学习 由于最近天池的比赛都要求使用docker来提交结果,所以在此记录一下docker提交到天池的整个流程. 目前正在做的,全球人工智能技术创新大赛[热身赛二]比赛链接 ...

  5. 天池比赛——Docker基础镜像搭建,容器导出镜像

    天池Docker 文章目录 天池Docker 一. 通过基础的Dockerfile,只有python的镜像 二. 然后build构建镜像,再运行镜像进容器 三. 进入容器,安装环境 四. 退出容器, ...

  6. 阿里天池比赛——街景字符编码识别

    文章目录 前言 一.街景字符编码识别 1. 目标 2. 数据集 3. 指标 总结 前言 之前参加阿里天池比赛,好久了,一直没有时间整理,现在临近毕业,趁论文外审期间,赶紧把东西整理了,5月底学校就要让 ...

  7. 阿里天池比赛——地表建筑物识别

    阿里天池比赛--地表建筑物识别 记录一下之前参加的阿里天池比赛,方便以后查看. 策略: 1.多模型训练 2.多模型测试 3.数据增强 4.预训练/冻结训练 5.迁移学习 6.TTA 7.后处理 8.f ...

  8. 阿里天池比赛——食物声音识别

    阿里天池比赛--食物声音识别 最近写毕业论文无聊之余,再次参加阿里天池比赛,之前一直做CV,第一次尝试做语音识别,记录一下过程. 策略: 1.梅尔频谱和梅尔倒谱以及混合 2.多模型测试 想玩这个项目的 ...

  9. 天池比赛notebook

    天池比赛的链接文档说明 https://tianchi.aliyun.com/notebook/index.htm?spm=5176.9876270.5610778.14.31d1e44axRaA3f ...

最新文章

  1. 卷死了!再不学vue3就没有人要你了!速来围观vue3新特性
  2. IPSec L2L ××× 之 Router-to-ASA
  3. python35安装教程_python详细安装教程,非常值得看的一篇文章
  4. htc+one+m7+linux驱动,HTC One M7简易刷Recovery教程
  5. GROUP BY中ROLLUP/CUBE/GROUPING/GROUPING SETS使用示例
  6. python excel 饼图 简书_Matplotlib-绘制饼图
  7. 【debug】EACCES: permission denied, unlink
  8. 后缀自动机(知识整理+板子总结)
  9. 关于笔记本加固态硬盘装系统的问题的解决办法
  10. 《梦幻西游H5》L inux搭建游戏服务器!
  11. 2023年东南大学英语笔译考研上岸前辈备考经验指导
  12. CUDA----.cpp文件和.cu文件应用区别
  13. Google Dremel 理解
  14. 多元函数概念和偏导数
  15. TREC的ad hoc、routing、filtering、topic等术语的解释
  16. 计算机组成原理-算术逻辑单元ALU
  17. 偏微分方程数值解---学习总结(1)
  18. 亚马逊图书销量前五十分析
  19. 渐进算法分析(简称算法分析)详解
  20. cad图形不见了怎么办_cad里的图标不见了,各种方法都试了变成这样怎么办,怎么调回原来的图标?...

热门文章

  1. 在word中对学位论文进行页码和页眉设置的方法
  2. 计算机应用基础18春在线作业2,计算机应用基础19春在线作业2答案
  3. 如何修改QColorDialog窗口的背景颜色和上面的字体
  4. jq输出html 单引号引号转义符,jQuery.parseJSON由于JSON中的单引号转义而引发“无效JSON”错误...
  5. python display 报错_Python中的函数(三)
  6. 人类一败涂地显示启动服务器失败,人类一败涂地进不去解决方法-人类跌落梦境手游进不去方法详解...
  7. Windows快捷键大全(2020年版)
  8. Java+coolq实现QQ机器人
  9. JDK的下载、安装、环境配置教程(2021年,win10、win11都可)
  10. Python 鸡兔同笼