NLP实践-中文预训练模型泛化能力挑战赛Task01
Docker的使用
Docker用于打包应用以及依赖包到一个轻量级、可移植的容器中。实现了类似虚拟化的功能
Docker容器通过Docker镜像来创建。
两者的关系类似于面向对象编程的对象与类。
Docker | 面向对象 |
---|---|
容器 | 对象 |
镜像 | 类 |
docker pull registry.cn-shanghai.aliyuncs.com/tcc-public/python:3
作用:下载基础镜像,可在此基础镜像的基础上构建新的镜像。
参考: Docker完全自学手册
docker 使用流程
-
构建新的镜像
1、新建文件夹(例如tianchi_submit_demo)用于存放构建此次镜像所需的文件
2、Dockerfile :配置文件 用于构建镜像。文件中包含一组命令,来告诉 Docker 如何构建我们的镜像。每一个指令都会在镜像上创建一个新的层,每一个指令的前缀都必须是大写的。
# Base Images ## 从天池基础镜像构建 FROM registry.cn-shanghai.aliyuncs.com/tcc-public/python:3 ## 把当前文件夹里的文件构建到镜像的根目录下 ADD . / ## 指定默认工作目录为根目录(需要把run.sh和生成的结果文件都放在该文件夹下,提交后才能运行) WORKDIR / ## 镜像启动后统一执行 sh run.sh CMD ["sh", "run.sh"]
第一条FROM,指定使用哪个镜像源(即指定为刚才pull下来的基础源)
3、构建镜像
docker build -t registry.cnshenzhen.aliyuncs.com/test_for_tianchi/test_for_tianchi_submit:1.0 .
-t 用于指定要创建的目标镜像名
:1.0 为自己指定的版本号,用于区分每次build的镜像。
. Dockerfile 文件所在目录
-
构建完之后检验是否能正常运行
CPU镜像:docker run your_image sh run.sh
GPU镜像:nvidia-docker run your_image sh run.sh
命令各参数解析:
docker:Docker的二进制可执行文件
run :与前面的docker组合来运行容器
Your_image: 指定要运行的镜像。docker首先会在主机上查找镜像,若没有则会在仓库Docker hub下载公共镜像。
sh run.sh:在启动的容器里执行的命令
-
将镜像推送是阿里镜像仓库
#登陆 sudo docker login --username=xxxx registry.cn-shanghai.aliyuncs.com #为镜像添加一个新标签 添加标签这一步其实在build的时候添加过了 sudo docker tag [ImageId] registry.~~~:[镜像版本号] #将镜像推送到仓库 sudo docker push registry.~~~~:[镜像版本号]
其中,xxxx是自己的阿里云账号的用户名 ,密码为开通服务时设置的密码
registry.~~~ 用自己的仓库地址替换
[ImageId]是你之前创建的镜像的id
[镜像版本号]用于指定要推送的镜像版本
注:使用sudo时,一开始输入的是你主机密码
模型准备与训练
按照baseline中的提示一步一步进行就行。
遇到的坑:下载bert预训练模型的vocab.txt文件时,点击下载按钮,会进入预览而不是下载。
解决方法:使用wget下载 , 教程可参见:wget的使用方法详解
结果的提交
-
模型训练完成后,运行inference.py,会在submission文件夹中得到三个任务的预测结果,将这三个.json文件压缩,并命名成result.zip。
-
在submisson中构建镜像并上传到阿里云镜像仓库中,具体步骤见 <docker使用流程>
-
在比赛页面中提交镜像,提交页面如下
用户名和密码为阿里云账户的用户名密码
提交后成绩如下