目录
- Docker环境配置
- 1.租用极客云服务器
- 2.Windows安装docker
- 3.创建阿里云镜像仓库
- Baseline训练
- 提交结果
Docker环境配置
1.租用极客云服务器
极客云 根据首页信息租用云主机后进入图形界面,打开命令行
sudo apt install docker.io
验证安装
docker info
出现问题
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
百度gg了好久解决不了换成了矩池云还是不行,所以干脆先跳过这一步,先训练模型。
看同时期的同学的博客发现不用再训练环境中安装docker,docker只用包含结果就好了。在云服务器浪费好多钱T T。
反思:动手前一定要理解做这件事的原因和其中的原理。在这里十分感谢这位提前发表博客的同学。
2.Windows安装docker
win10中docker的安装与使用(docker for windows)
3.创建阿里云镜像仓库
打开阿里云容器镜像服务->命名空间(创建)->镜像仓库(创建)
获取公网地址
Baseline训练
环境:python3.7 pytorch1.7.0
根据教程的步骤一步步进行就可以开始训练了。夸奖一下极客云的JupyterLab,不管是上传文件还是命令行都十分方便好用。
到此就开始训练了。因为打卡的ddl在今晚凌晨,但是模型还在缓慢地训练中,中间出现过GPU过载的bug所以调小了batchsize。
因为是体验比赛过程,所以训练一个epoch就结束,将训练完成的模型保存为saved_best.pt文件。
创建submission文件夹,运行inference.py文件获得三个数据集的预测结果
打包结果
zip -r ./result.zip ./*.json
提交结果
在submission文件夹中手动创建Dockerfile文件和run.sh文件。
其中Dockfile文件内容如下:
# Base Images
## 从天池基础镜像构建
FROM registry.cn-shanghai.aliyuncs.com/tcc-public/python:3
## 把当前文件夹里的文件构建到镜像的根目录下
ADD . /
## 指定默认工作目录为根目录(需要把run.sh和生成的结果文件都放在该文件夹下,提交后才能运行)
WORKDIR /
## 镜像启动后统一执行 sh run.sh
CMD ["sh", "run.sh"]
打开cmd命令行,进入
run.sh文件可以为空。
打开cmd命令行进入submission文件夹,执行以下命令,在镜像仓库中生成image,命令中要改成自己镜像空间的公网地址。
# 用于登录的用户名为阿里云账号全名,密码为开通服务时设置的密码。
sudo docker login --username=xxx@mail.com registry.cn-hangzhou.aliyuncs.com
# 使用本地Dockefile进行构建,使用创建仓库的【公网地址】
# 如 docker build -t registry.cn-shenzhen.aliyuncs.com/test_for_tianchi/test_for_tianchi_submit:1.0 .
docker build -t registry.cn-shenzhen.aliyuncs.com/test_for_tianchi/test_for_tianchi_submit:1.0 .
其中1.0是版本好,可自己设置
docker images
可以查看image列表,记下当前镜像的image的ID:2a7d4*******
C:\Users\Jing>docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
registry.cn-hangzhou.aliyuncs.com/*******/tianchi_nlp 1.0 2a7d4****** 21 hours ago 929MB
hello-world
运行
# ed0c4b0e545f 为镜像id,上面构建过程最后一行
sudo docker tag ed0c4b0e545f registry.cn-shenzhen.aliyuncs.com/test_for_tianchi/test_for_tianchi_submit:1.0
# 提交镜像到云端
docker push registry.cn-shenzhen.aliyuncs.com/test_for_tianchi/test_for_tianchi_submit:1.0
进入比赛提交页面,填写镜像路径+版本号,以及用户名和密码则可以完成提交。(密码填错了会出现错误一直waitingQAQ)