/runpod-docker

runpod专用基础及应用镜像

Primary LanguageDockerfileMIT LicenseMIT

runpod-docker

简介

这是一个为方便在runpod上进行训练而创建的一组基础docker镜像,全部包含jupyter和ssh,符合runpod标准的镜像结构

目前包含以下镜像

basaran应用镜像不推荐使用

使用方法

依赖项

首先安装 docker-volume-loopback 这个容器容量管理工具,可以参照这个教程

本地验证

这里以kohya_ss为例,其他镜像完全相同 首先在子目录中添加.env文件,格式如下

PUBLIC_KEY=ssh-rsa xxxxxxxxxxxxxxxxxxxxxxxxxxx xxx@xxx.xx
JUPYTER_PASSWORD=aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

然后在本地执行run-local-rm.shrun-local-bind.sh,直接在本地启动镜像 推荐在vscode中执行

接下来

  • 打开目标IP的8888端口,使用JUPYTER_PASSWORD可以直接登录jupyterlab
  • 使用ssh配置好pubkey,使用PUBLIC_KEY可以直接登录ssh

最后在jupyterlab的控制台中打开一个终端

  • 运行activate_venv,一键进入venv环境
  • 运行activate_app,一键启动kohya_ss应用

然后可以在对应的7860端口访问kohya_ss的webui,预留了7861端口用于tensorboard的webui

备注

  • 为适应runpod分为挂载系统卷和数据卷的特点,本镜像设计了一套在数据卷中的venv,在容器首次启动后,venv自动拷贝到数据卷,方便随时关闭镜像,且无损保留所有数据
  • 为解决下载巨大模型时系统卷空间不够的问题,本镜像在容器启动后自动将TMP目录映射到了数据卷
  • jupyterlab中的venv kernel是使用virtualenv创建的,在jupyter运行时可以保证环境变量完全跟随venv的shell环境,方便使用
  • 推荐使用vscode的工作流,使用ssh+PUBKEY连接到容器,获得接近本地的使用体验

runpod运行

在runpod上,需要创建一个自定义模板,

  • 将镜像的地址填入
  • 推荐系统卷容量10GB
  • 推荐数据卷容量60GB
  • 数据卷挂载位置选择/workspace

在环境变量处,填入JUPYTER_PASSWORD的键值,方便启动时直接使用预设的密码.PUBKEY无需填写,在runpod内预设的PUBKEY会自动注入.

镜像自定义

在Dockerfile中,如果有关于python的构建工作,请放到我Start add cmd in venv注释和End add cmd in venv,中间的部分,以保证在venv中可以正常使用