准备

安装Det CLI

  1. pip install determined # 安装或者更新都是这个指令
  2. # 最新版如果有报错,可以尝试下面版本
  3. pip install determined==0.15.6

安装完成后,你可以在命令行使用det指令。
注意python3.9在安装时如果频繁报错无法解决,请切换到更低版本,推荐使用≤python3.8

要连接到det平台,必须指定其ip和端口号。
Linux端可以配置环境变量来实现:

  1. echo 'export DET_MASTER=10.102.32.200:30000' >> ~/.bashrc
  2. source ~/.bashrc

Windows端只能在命令行里添加-m <ip:port>

  1. det -m 10.102.32.200:30000 ...

登录

向管理员申请账号后,可以通过命令行登录:

  1. # 登录
  2. det -m 10.102.32.200:30000 user login 你的用户名
  3. # 修改密码
  4. det -m 10.102.32.200:30000 user change-password

登录会生成持久session,持续30天。

存储

使用持久存储

在使用determined时,代码应存储在本机,数据集应存储在服务器的分布式持久存储上。每次运行实验,determined将你的代码copy到容器中,然后将持久存储挂载到容器上,运行完毕后删除容器内的一切东西,保留持久存储、你的实验结果、checkpoints。

所需软件:WinSCP(专注文件传输)或MobaXterm(可以传文件的命令行工具)。
IP:10.102.32.200
用户名/密码:data

~/data目录下,创建你自己的专属文件夹。不要直接在此目录下操作。(这个目录是个快捷方式,其本体在/mnt/data
~/data/default目录下存放了一些常用的公共数据集,这样你就不用重复上传了。如果你认为某个数据集值得存入,请联系管理员将其加入。

使用

你有3种方式运行自己的代码:

  • Notebook:在网页中创建一个notebook容器,你可以在线编辑代码、运行命令行或notebook。这个容器相当于一个小型操作系统,可以运行linux的大多数指令。容器会一直占有cpu和gpu资源。直到你删除这个容器,其中的资源才会被释放,所有内容都会被删除(包括你的代码,不包括持久存储里的东西)。如果要保存代码,可以使用git备份你的代码,也可以将代码复制到持久存储中。
  • Experiment:像hello world的示例代码一样,增加一点学习成本,但功能强大。代码保存在本地,使用命令行提交任务。提交的任务将会依次排队执行,可以使用集群里的所有空闲gpu分布式运行,可以自动调参。训练完成后可以查看训练曲线、Tensorboard、下载checkpoint。更多示例代码可参考这里
  • Shell:通过ssh连接容器内部,利用Pycharm或VS Code进行调试。

    Notebook

    创建一个Notebook

    你可以在网页端手动创建一个Notebook,自带一块GPU或纯CPU,可以运行notebook或命令行。如果要多块GPU或使用持久存储(存数据集之类的),则要手动创建配置文件,然后通过命令行创建: ```bash

    这是linux创建文件的方法,windows请手动创建

    cat > config.yaml << EOL description: test-notebook resources: slots: 2 bind_mounts:
    • host_path: /mnt/data/ container_path: /home/data EOL

创建notebook

det -m 10.102.32.200:30000 notebook start —config-file ./config.yaml

  1. 以上参数不是必须设置的,如果不写会自动配置为默认值。其中各参数的含义:
  2. - `description`: 你的notebook名字。
  3. - `resources`
  4. - `slots`: 为你的容器配置的GPU数量(可以为0)。独占显卡,别人将无法申请该显卡,所以请不用时尽快释放。
  5. - `bind_mounts`
  6. - `host_path`: 服务器上持久存储位置,不会随容器删除而删除。这里改成自己的名字(如/mnt/data/fuj),每个人请在自己目录下操作。
  7. - `container_path`: host_path会映射到容器里的目录,可以自定义。容器内会在该位置挂载持久存储。代码里读数据时写这个。
  8. 也可以通过命令行参数的方式创建:
  9. ```bash
  10. det -m 10.102.32.200:30000 notebook start --config resources.slots=0

创建之后,虽然你的命令行在持续输出,但可以随时中断,notebook会一直在网页中运行,直到你在网页端手动Kill掉它。

Experiment

Hello World

可以根据快速启动指南的教程,运行一个mnist的训练程序。这个程序不是通过notebook启动的,而是直接将实验提交、排队等待运行、运行结束后自动释放容器。

Pytorch Lightning

Lightning是一个pytorch的特别好用的框架,如果学习pytorch,强烈建议使用这个框架。
这个样例中演示了如何将lightning模型引入到det experiment中。

Shell

创建配置文件

编辑配置文件config.yaml

description: my_shell
resources:
  slots: 1
bind_mounts:
  - host_path: /mnt/data/default
    container_path: /home/data
  - host_path: /mnt/data/zhaozr  # enter your name
    container_path: /home/zhaozr

创建Shell

在配置文件目录下执行:

det -m 10.102.32.200:30000 shell start --show-ssh-command --config-file ./config.yaml

记录下黄色ssh指令。
image.png
在VS Code中安装Remote - SSH插件,并按如下步骤添加远程连接。
image.png
然后在新窗口中创建或打开任意工作文件夹目录,如/root,此过程可能重新加载一次窗口。
注意!Shell中的代码在容器删除后全部都会消失。所以请及时通过git等方式备份,或者直接存在持久存储里(推荐,比如在上面例子中,我可以将代码放在容器中的/home/zhaozr里,对应服务器的/mnt/data/zhaozr)。

Pycharm教程详见