searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

jupyterlab, pytorch镜像分层

2024-07-03 09:52:35
0
0

背景

pytorch镜像从pytorch docker hub(开发版本,大小大概17G)拉取,在该镜像的基础上开发会持续增大镜像大小,导致的结果就是大小可能到20G。在实际生产中发现拉取镜像的时间可能会超过10分钟,原因是pod分配的节点未有镜像缓存,从最底层开始拉取。

kubelet清理docker镜像的机制。在磁盘使用率超出设定上限后,首先,通过 CRI 容器运行时接口读取节点上的所有镜像以及 Pod 容器;然后,根据现有容器列表过滤出那些已经不被任何容器所使用的镜像;接着,按照镜像最近被使用时间排序,越久被用到的镜像越会被排在前面,优先清理;最后,就按照排好的顺序逐个清理镜像,直到磁盘使用率降到设定下限(或者已经没有空闲镜像可以清理)。

根据kubelet的清理策略以及当前镜像的大小,在数据盘使用率超过一定的限额,kubelet会清理最近最久未使用的镜像。后续再拉取该镜像,并且没有共用层,就会重新拉取。

镜像分层

cuda, 框架以及ide多种组合关系,造成镜像种类太多。

 

规则:最小的镜像应该满足大部分人的需求。不经常改变的放置底层,不常用功能放置高层。在实际使用conda环境下的cudatoolkit已经能满足大部分的要求。

  • next layer + ide : 安装 在线ide
  • conda: cuda toolkit : 安装anaconda,创建base基础环境,包括基本的python包和cuda toolkit
  • next layer + conda: torch :   安装 ai框架
  • next layer + plugin : 安装 插件
  • next layer + cuda runtime: 安装 cuda 运行时包在系统环境
  • next layer + cuda complier: 安装 cuda  编译工具在系统环境, 可以从源代码编译出cuda应用程序

 

0条评论
0 / 1000
f****n
3文章数
0粉丝数
f****n
3 文章 | 0 粉丝