Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.

203 строки
5.5 KiB

2 месяцев назад
2 месяцев назад
2 месяцев назад
  1. ## 1资源准备
  2. 根据模型规模,合理安排每个容器使用的资源额度,计算所需要的总资源数目
  3. 如100个学生,每个容器需要1C,4G
  4. 那么总资源需要100C,400G
  5. 在K8S系统中添加工作节点,满足资源总需求*115%,其中15%为余量,可以多一点。
  6. 考试的节点手动添加标签cal_type:cpu/gpu ntype:exam
  7. 对于exam的镜像会全部调度到这些节点中,普通教学的镜像只会被调度在ntype:study的节点上,以此实现考试和教学的分离,保障考试稳定性
  8. 对于gpu的镜像只会被调度到cal_type:gpu的节点上,cpu的镜像同理。
  9. ## 2环境准备
  10. 根据考试实际需要,build一个镜像
  11. 打包过程:
  12. 文件在jupyter-image-mladder文件夹中
  13. 其中base是基镜像,先本地build该镜像
  14. ​ cd base
  15. ​ sudo docker build -t mld:v1 .
  16. 其它几个镜像中的FROM字段内容要修改为刚刚build的mld:v1
  17. 安装包只需要仿照下面代码,用conda或者pip3安装即可,推荐使用一些镜像源,速度较快
  18. cudnn等一些包不能用pip安装,可以用conda,自行google搜索
  19. ```
  20. FROM mld:v1 #这个要对应自己build的镜像
  21. ARG NB_USER="jupyter"
  22. ARG NB_UID="1000"
  23. ARG NB_GID="100"
  24. ARG NB_PORT=8888
  25. USER root
  26. ###### 以下是装包:
  27. RUN conda install pytorch torchvision torchaudio cpuonly -c pytorch \
  28. && conda install tensorflow
  29. RUN pip3 install numpy seaborn sklearn h5py matplotlib pandas future imageio -i https://pypi.mirrors.ustc.edu.cn/simple/
  30. RUN pip3 install lightgbm xgboost imblearn mindspore -i https://pypi.mirrors.ustc.edu.cn/simple/
  31. RUN pip3 install keras -i https://pypi.mirrors.ustc.edu.cn/simple/
  32. ######
  33. ENV HOME="/home/${NB_USER}"
  34. USER ${NB_UID}
  35. ENTRYPOINT [ "/enterpoint.sh" ]
  36. ```
  37. 不同环境,只需要修改######之间的内容即可,别的代码一般不需要修改
  38. 打包好镜像后,需要上传到dockerhub
  39. dasetalent账户密码查阅 dassetalent_host.md文件
  40. docker push 到dockerhub后,进入考试专用的节点(可以直接ssh,也可以在阿里云k8s管理模块workbench远程连接功能),手动ctr images pull docker.io/dasetalent/xxxxxx,其中xxxxxx为上传的镜像,要带版本号
  41. 之后在服务器nfs上添加节点ip
  42. 在服务器/etc/exports文件下添加节点ip
  43. 随后重启nfs服务,重启命令:
  44. ```
  45. service nfs-kernel-server restart
  46. ```
  47. 重启完后可使用**service nfs-kernel-server status**命令查看nfs是否正常运行
  48. 下面步骤为暂时性:
  49. 进入天梯服务器
  50. 目录/home/lwttest
  51. 修改/home/lwttest/config.json文件
  52. ```
  53. {"version": "v1.2.1", "images": {
  54. "old": {"image": "bnc1010/old_notebook:v1", "use_gpu": false, "workdir": "/home/public/", "node_select":{"ntype":"study"}},
  55. "torch-gpu": {"image": "bnc1010/mladder_notebook_torchgpu:v0.3", "use_gpu": true, "workdir": "/home/jupyter/", "node_select":{"ntype":"study"}},
  56. "tensorflow-gpu": {"image": "bnc1010/mladder_notebook_tensorflowgpu:v0.2", "use_gpu": true, "workdir": "/home/jupyter/", "node_select":{"ntype":"study"}},
  57. "tensorflow-pytorch-cpu(exam)": {"image": "bnc1010/mladder_notebook_torch_tf_sk:v1.6", "use_gpu": false, "workdir": "/home/jupyter/", "node_select":{"ntype":"exam"}}
  58. },
  59. "node_ips": ["47.100.69.138", "139.224.216.129"],
  60. "gpu_maxn": 0,
  61. "gpu_notebook": {}}
  62. ```
  63. 这里以tensorflow-pytorch-cpu(exam)为例,这是一个考试专用镜像,它有四个参数:
  64. ```
  65. {
  66. "image": "bnc1010/mladder_notebook_torch_tf_sk:v1.6",
  67. "use_gpu": false,
  68. "workdir": "/home/jupyter/",
  69. "node_select":{"ntype":"exam"}
  70. }
  71. ```
  72. image: dockerhub中能直接pull的镜像名
  73. use_gpu: 是否是需要GPU的
  74. workdir: notebook的工作地址
  75. node_select: 节点标签选择
  76. 这里node_select中有一个ntype:exam,表明该镜像起的容器只会在考试专用节点上
  77. 其它几个镜像起的容器只会在带有ntype:study标签的节点上
  78. **在该配置文件添加好新镜像后,重启脚本/home/lwttest/workServer.py**
  79. 目前是使用screen挂载 screen -x notebook即可进入, ctrl c 终端,然后python3 /home/lwttest/workServer.py即可重启
  80. ## 3比赛准备
  81. 准备好考试需要的比赛
  82. 详见天梯助教手册
  83. **设置考试的环境为上述准备好的考试专用环境**
  84. 暂时不要publish,测试作业可以使用私密链接,账号可以让测试人员直接从水杉账号,从水杉跳转过来
  85. ## 4考试过程
  86. #### 4.1 快开始时
  87. 清空k8s考试节点中已打开的容器
  88. 配置资源容器资源额度:
  89. ```
  90. resources:
  91. requests:
  92. memory: 2Gi
  93. cpu: 800m
  94. limits:
  95. memory: 4Gi
  96. cpu: 2000m
  97. ```
  98. #### 4.2 开始
  99. 将比赛正式publish
  100. #### 4.3 考试中
  101. 检测k8s集群,掌握资源实时状态,如果不足,则需要临时加入新节点
  102. 如果有其它节点可用时,一个简单有效的补救:手动修改没有成功开启的deployment的yml,修改其ntype调度到非考试节点上去。
  103. 考试内容相关:
  104. 如果有文件错误、说明有误等需要修改、增加文件的情况时,手动上传至对应比赛的input文件中。
  105. #### 4.4 考试结束
  106. 应该向考生说明保存notebook,避免关闭容器后,代码没有保存而丢失。
  107. 在天梯中,点击code按钮下载考生代码、leaderboader排名CSV文件。
  108. 保存完毕后,删除考试节点所有的deployment。
  109. 设置比赛的环境为空,让考生无法从比赛页面再次进入notebook。
  110. 数据盘创建快照。
  111. 删除临时work节点。