Skip to content

sunhongmin225/dgx-a100-server-allocation

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

6 Commits
ย 
ย 

Repository files navigation

NVIDIA Docker Container ๊ธฐ๋ฐ˜ DGX-A100 ์ž์› ๊ด€๋ฆฌ ๋งค๋‰ด์–ผ

  • ๋งค๋‰ด์–ผ ์ž‘์„ฑ์ž: ์ปดํ“จํ„ฐ๊ณตํ•™๋ถ€ ์ด์žฌ์šฑ ๊ต์ˆ˜๋‹˜ ์—ฐ๊ตฌ์‹ค ์„์‚ฌ ๊ณผ์ • ๋ฏผ์„ ํ™(sunhongmin@snu.ac.kr), ์ธํ„ด ๋ฐฑ์šฐํ˜„(baneling100@snu.ac.kr)
  • ๋งˆ์ง€๋ง‰ ์ˆ˜์ •์ผ: 2022๋…„ 5์›” 18์ผ

๊ธฐ๋ณธ ๊ฐ€์ •

  • ๋ณธ ๋งค๋‰ด์–ผ์€ ์ปดํ“จํ„ฐ๊ณตํ•™๋ถ€์˜ DGX-A100 ๋จธ์‹ ์„ ๊ธฐ์ค€์œผ๋กœ ์ž‘์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • ํ•ด๋‹น ๋จธ์‹ ์€ x86_64 ์•„ํ‚คํ…์ฒ˜๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์œผ๋ฉฐ ๊ทธ ์œ„์— Ubuntu 20.04.4 LTS ์šด์˜์ฒด์ œ๊ฐ€ ์„ค์น˜๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.
  • ํ•ด๋‹น ๋จธ์‹ ์—๋Š” GPU ์‚ฌ์šฉ์„ ์œ„ํ•œ NVIDIA Cuda Toolkit์ด ์„ค์น˜๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ์•„๋ž˜์™€ ๊ฐ™์ด nvidia-smi ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด NVIDIA Cuda Toolkit ์„ค์น˜ ์—ฌ๋ถ€๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋งŒ์•ฝ ์„ค์น˜๊ฐ€ ๋˜์–ด์žˆ์ง€ ์•Š์œผ๋ฉด NVIDIA Cuda Toolkit 11.6 Update 2 Downloads๋ฅผ ํ†ตํ•ด ์„ค์น˜ํ•ด์ฃผ์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค.
  • CUDA๋Š” ํฌ๊ฒŒ driver ๋‹จ์—์„œ์˜ ๋ฒ„์ „๊ณผ toolkit์˜ ๋ฒ„์ „์œผ๋กœ ๋‚˜๋‰ฉ๋‹ˆ๋‹ค. ์ „์ž๋Š” nvidia-smi๋ฅผ ์‹คํ–‰ํ•ด์„œ ํ™•์ธํ•  ์ˆ˜ ์žˆ๊ณ , ํ›„์ž๋Š” nvcc --version์œผ๋กœ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Toolkit์˜ ๋ฒ„์ „์ด driver์˜ ๋ฒ„์ „๋ณด๋‹ค ๋‚ฎ๊ฑฐ๋‚˜ ๊ฐ™์„ ๋•Œ์—๋Š” ๋ฌธ์ œ๊ฐ€ ์—†์ง€๋งŒ, ๋” ํฐ ๊ฒฝ์šฐ์—๋Š” ํ˜ธํ™˜์ด ๋˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ˜„์žฌ CUDA toolkit์ด 11.7๊นŒ์ง€ ๋‚˜์™”์Šต๋‹ˆ๋‹ค๋งŒ, driver ๋ฒ„์ „๊ณผ์˜ ํ˜ธํ™˜์„ ์œ„ํ•ด ์ตœ์‹ ์œผ๋กœ ์—…๋ฐ์ดํŠธํ•˜๋Š” ๊ฑด ์ง€์–‘ํ•˜์‹œ๊ธธ ๋ฐ”๋ž๋‹ˆ๋‹ค.
nvadmin@dgx-a100:~$ nvidia-smi
Mon May 16 11:16:19 2022
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 510.47.03    Driver Version: 510.47.03    CUDA Version: 11.6     |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|                               |                      |               MIG M. |
|===============================+======================+======================|
|   0  NVIDIA A100-SXM...  On   | 00000000:07:00.0 Off |                    0 |
| N/A   28C    P0    54W / 400W |      0MiB / 40960MiB |      0%      Default |
|                               |                      |             Disabled |
+-------------------------------+----------------------+----------------------+
|   1  NVIDIA A100-SXM...  On   | 00000000:0F:00.0 Off |                    0 |
| N/A   28C    P0    52W / 400W |      0MiB / 40960MiB |      0%      Default |
|                               |                      |             Disabled |
+-------------------------------+----------------------+----------------------+
...
+-------------------------------+----------------------+----------------------+
|   7  NVIDIA A100-SXM...  On   | 00000000:BD:00.0 Off |                    0 |
| N/A   30C    P0    58W / 400W |      0MiB / 40960MiB |      0%      Default |
|                               |                      |             Disabled |
+-------------------------------+----------------------+----------------------+

+-----------------------------------------------------------------------------+
| Processes:                                                                  |
|  GPU   GI   CI        PID   Type   Process name                  GPU Memory |
|        ID   ID                                                   Usage      |
|=============================================================================|
|  No running processes found                                                 |
+-----------------------------------------------------------------------------+

์‚ฌ์ „ ์ž‘์—…

I. Docker Engine ์„ค์น˜

  1. ์•„๋ž˜ ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด Docker(>= 19.03)๊ฐ€ ์ด๋ฏธ ์„ค์น˜๋˜์–ด ์žˆ๋Š” ๊ฒƒ์„ ํ™•์ธํ•˜์…จ๋‹ค๋ฉด 5. Docker Engine ์„ค์น˜ ํ™•์ธํ•˜๊ธฐ๋กœ ๋„˜์–ด๊ฐ€์ฃผ์„ธ์š”.
nvadmin@dgx-a100:~$ docker version --format '{{.Server.Version}}'
20.10.15
nvadmin@dgx-a100:~$ docker version --format '{{.Client.Version}}'
20.10.15
  1. Repository ์„ค์ •ํ•˜๊ธฐ
$ sudo apt-get update
$ sudo apt-get install -y ca-certificates curl gnupg lsb-release
  1. Docker์˜ official GPG key ์ถ”๊ฐ€ํ•˜๊ธฐ
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
  1. Stable version repository ์„ค์ •ํ•˜๊ธฐ
$ echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
  1. Docker Engine ์„ค์น˜ํ•˜๊ธฐ
$ sudo apt-get update
$ sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin
  1. Docker Engine ์„ค์น˜ ํ™•์ธํ•˜๊ธฐ
nvadmin@dgx-a100:~$ sudo docker run hello-world

Hello from Docker!
This message shows that your installation appears to be working correctly.
...

II. NVIDIA Container Toolkit ์„ค์น˜

  1. ์•„๋ž˜ ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด NVIDIA Docker(>= 2.8.0)๊ฐ€ ์ด๋ฏธ ์„ค์น˜๋˜์–ด ์žˆ๋Š” ๊ฒƒ์„ ํ™•์ธํ•˜์…จ๋‹ค๋ฉด 5. Base CUDA Container ์‹คํ–‰์„ ํ†ตํ•œ ์„ค์น˜ ํ™•์ธํ•˜๊ธฐ๋กœ ๋„˜์–ด๊ฐ€์ฃผ์„ธ์š”.
nvadmin@dgx-a100:~$ nvidia-docker version | grep "NVIDIA Docker"
NVIDIA Docker: 2.10.0
  1. Docker ์„ค์ •ํ•˜๊ธฐ
$ curl https://get.docker.com | sh && sudo systemctl --now enable docker

Warning: the "docker" command appears to already exist on this system.์ด ๋‚˜์˜ค๋ฉด Ctrl+C๋ฅผ ๋ˆŒ๋Ÿฌ ํ•ด๋‹น ์‹คํ–‰์„ ๋ฉˆ์ถฅ๋‹ˆ๋‹ค.

nvadmin@dgx-a100:~$ curl https://get.docker.com | sh && sudo systemctl --now enable docker
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 19305  100 19305    0     0   204k      0 --:--:-- --:--:-- --:--:--  204k
# Executing docker install script, commit: 614d05e0e669a0577500d055677bb6f71e822356
Warning: the "docker" command appears to already exist on this system.

If you already have Docker installed, this script can cause trouble, which is
why we're displaying this warning and provide the opportunity to cancel the
installation.

If you installed the current Docker package using this script and are using it
again to update Docker, you can safely ignore this message.

You may press Ctrl+C now to abort this script.
+ sleep 20
^C
  1. ํŒจํ‚ค์ง€ repository์™€ GPG key ์„ค์ •ํ•˜๊ธฐ
$ distribution=$(. /etc/os-release;echo $ID$VERSION_ID) \
      && curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg \
      && curl -s -L https://nvidia.github.io/libnvidia-container/$distribution/libnvidia-container.list | \
            sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | \
            sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list
  1. NVIDIA Docker ์„ค์น˜ํ•˜๊ธฐ
$ sudo apt-get update
$ sudo apt-get install -y nvidia-docker2
  1. Docker daemon ์žฌ์‹œ์ž‘ํ•˜๊ธฐ
$ sudo systemctl restart docker
  1. Base CUDA Container ์‹คํ–‰์„ ํ†ตํ•œ ์„ค์น˜ ํ™•์ธํ•˜๊ธฐ

์•„๋ž˜์™€ ๊ฐ™์ด --gpus all ์˜ต์…˜์„ ์ฃผ๊ณ  ์‹คํ–‰ํ–ˆ์„ ๋•Œ ๋ชจ๋“  GPU๊ฐ€ ๋ณด์ด๋ฉด ์ œ๋Œ€๋กœ ์„ค์น˜๊ฐ€ ๋œ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

nvadmin@dgx-a100:~$ sudo docker run --rm --gpus all nvidia/cuda:11.0.3-base-ubuntu20.04 nvidia-smi
Unable to find image 'nvidia/cuda:11.0.3-base-ubuntu20.04' locally
11.0.3-base-ubuntu20.04: Pulling from nvidia/cuda
d5fd17ec1767: Already exists
136ed510ad77: Pull complete
c7f8ead1f79b: Pull complete
be868dff62ae: Pull complete
61470f7d15cf: Pull complete
Digest: sha256:96422d2730adcb0cfcb260d2b1e96186ba5f05cb295b265631d98ea03d423a17
Status: Downloaded newer image for nvidia/cuda:11.0.3-base-ubuntu20.04
Mon May 16 03:18:49 2022
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 510.47.03    Driver Version: 510.47.03    CUDA Version: 11.6     |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|                               |                      |               MIG M. |
|===============================+======================+======================|
|   0  NVIDIA A100-SXM...  On   | 00000000:07:00.0 Off |                    0 |
| N/A   34C    P0    55W / 400W |      0MiB / 40960MiB |      0%      Default |
|                               |                      |             Disabled |
+-------------------------------+----------------------+----------------------+
|   1  NVIDIA A100-SXM...  On   | 00000000:0F:00.0 Off |                    0 |
| N/A   34C    P0    53W / 400W |      0MiB / 40960MiB |      0%      Default |
|                               |                      |             Disabled |
+-------------------------------+----------------------+----------------------+
...
+-------------------------------+----------------------+----------------------+
|   7  NVIDIA A100-SXM...  On   | 00000000:BD:00.0 Off |                    0 |
| N/A   36C    P0    61W / 400W |      0MiB / 40960MiB |      0%      Default |
|                               |                      |             Disabled |
+-------------------------------+----------------------+----------------------+

+-----------------------------------------------------------------------------+
| Processes:                                                                  |
|  GPU   GI   CI        PID   Type   Process name                  GPU Memory |
|        ID   ID                                                   Usage      |
|=============================================================================|
|  No running processes found                                                 |
+-----------------------------------------------------------------------------+

III. DGX-A100์— Docker Disk allocation์ด ์ง€์› ๊ฐ€๋Šฅํ•œ File system ๊ตฌ์ถ•ํ•˜๊ธฐ

๊ธฐ๋ณธ์ ์œผ๋กœ DGX-A100 ๋จธ์‹ ์˜ ๋””์Šคํฌ๋Š” ext4 file system์œผ๋กœ ์„ค์ •๋˜์–ด ์žˆ๊ณ , Docker๋Š” overlay2 storage driver๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ overlay2 storage driver์˜ ๊ฒฝ์šฐ ํ˜ธ์ŠคํŠธ์˜ backing file system์ด ext4๊ฐ€ ์•„๋‹Œ xfs(with ftype=1, pquota mount option)๋กœ ๋˜์–ด ์žˆ์–ด์•ผ disk allocation์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์‚ฌ์ „ ์ž‘์—…์œผ๋กœ DGX-A100 ๋จธ์‹  ๋‚ด์— raid0์œผ๋กœ ๋ฌถ์—ฌ์žˆ๋Š” /dev/md1 ๋””์Šคํฌ๋ฅผ xfs file system์œผ๋กœ ์ดˆ๊ธฐํ™”ํ•ฉ๋‹ˆ๋‹ค. ํ•ด๋‹น ์ž‘์—…์„ ์ง„ํ–‰ํ•˜๋ฉด /dev/md1 ๋””์Šคํฌ์˜ ๋‚ด์šฉ์ด ์ „๋ถ€ ์ดˆ๊ธฐํ™”๋˜๋ฏ€๋กœ mount point๋ฅผ ํ™•์ธํ•˜๊ณ  ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๊ฐ€ ์žˆ๋‹ค๋ฉด ๋ฐ˜๋“œ์‹œ ๋ฐฑ์—…ํ•ด๋‘์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค.

  1. ์•„๋ž˜ ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด DGX-A100 ๋จธ์‹ ์— 4๊ฐœ์˜ 3.5TiB์งœ๋ฆฌ SSD๊ฐ€ raid0 ์˜ต์…˜์œผ๋กœ ๋ฌถ์—ฌ์„œ 14TiB์˜ ๊ณต๊ฐ„์„ ํ˜•์„ฑํ•˜๊ณ  ์žˆ์Œ์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
nvadmin@dgx-a100:~$ lsblk
NAME        MAJ:MIN RM  SIZE RO TYPE  MOUNTPOINT
...
nvme0n1     259:6    0  3.5T  0 disk
โ””โ”€md1         9:1    0   14T  0 raid0 /raid
nvme4n1     259:7    0  3.5T  0 disk
โ””โ”€md1         9:1    0   14T  0 raid0 /raid
nvme5n1     259:8    0  3.5T  0 disk
โ””โ”€md1         9:1    0   14T  0 raid0 /raid
nvme3n1     259:9    0  3.5T  0 disk
โ””โ”€md1         9:1    0   14T  0 raid0 /raid

๋˜ํ•œ, ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด /dev/md1 ๋””์Šคํฌ๊ฐ€ ext4 file system์œผ๋กœ ๋˜์–ด ์žˆ์Œ์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์„ xfs (with ftype=1) ๋กœ ๋ณ€๊ฒฝํ•˜๋Š” ์ž‘์—…์„ ์ง„ํ–‰ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

nvadmin@dgx-a100:~$ sudo parted -l
...
Model: Linux Software RAID Array (md)
Disk /dev/md1: 15.4TB
Sector size (logical/physical): 512B/4096B
Partition Table: loop
Disk Flags:

Number  Start  End     Size    File system  Flags
 1      0.00B  15.4TB  15.4TB  ext4
  1. ์šฐ์„  lsblk๋กœ ํ™•์ธํ•œ MOUNTPOINT์ธ /raid์˜ mount๋ฅผ ํ•ด์ œํ•ฉ๋‹ˆ๋‹ค.
nvadmin@dgx-a100:~$ sudo umount /raid
  1. /dev/md1 ๋””์Šคํฌ๋ฅผ xfs๋กœ ํฌ๋งทํ•ฉ๋‹ˆ๋‹ค. ์ด ๋•Œ -n ftype=1 ์˜ต์…˜์„ ๋ฐ˜๋“œ์‹œ ์ฃผ๋„๋ก ํ•ฉ๋‹ˆ๋‹ค. -f ์˜ต์…˜์€ ๋””์Šคํฌ ๋‚ด์— ๋‚ด์šฉ๋ฌผ์ด ์žˆ์–ด๋„ ๊ฐ•์ œ๋กœ overwriteํ•˜๋Š” ์˜ต์…˜์ž…๋‹ˆ๋‹ค.
nvadmin@dgx-a100:~$ sudo mkfs.xfs -f -n ftype=1 /dev/md1

์ด ์‹œ์ ์— ๋‹ค์‹œ sudo parted -l์„ ์‹คํ–‰ํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์ด file system์ด ๋ณ€๊ฒฝ๋˜์—ˆ์Œ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

nvadmin@dgx-a100:~$ sudo parted -l
...
Model: Linux Software RAID Array (md)
Disk /dev/md1: 15.4TB
Sector size (logical/physical): 512B/4096B
Partition Table: loop
Disk Flags:

Number  Start  End     Size    File system  Flags
 1      0.00B  15.4TB  15.4TB  xfs
  1. ๋‹ค์Œ ๋ช…๋ น์–ด๋กœ /dev/md1์„ /raid ๋””๋ ‰ํ† ๋ฆฌ๋กœ mount ์‹œํ‚ต๋‹ˆ๋‹ค. -o pquota ์˜ต์…˜์„ ๋ฐ˜๋“œ์‹œ ํฌํ•จํ•ด์ฃผ์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค. df ๋ช…๋ น์–ด๋กœ ์ œ๋Œ€๋กœ mount๊ฐ€ ๋๋Š”์ง€ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
nvadmin@dgx-a100:~$ sudo mount -o pquota /dev/md1 /raid
nvadmin@dgx-a100:~$ df -h /raid/
Filesystem      Size  Used Avail Use% Mounted on
/dev/md1         14T  100G   14T   1% /raid
  1. ๋ชจ๋“  Docker container์™€ image๋ฅผ ์‚ญ์ œํ•ฉ๋‹ˆ๋‹ค.
$ sudo docker rm -f $(docker ps -aq); docker rmi -f $(docker images -q)
  1. Docker service๋ฅผ ์ค‘์ง€ํ•ฉ๋‹ˆ๋‹ค.
$ sudo systemctl stop docker
  1. Docker storage ๋””๋ ‰ํ† ๋ฆฌ ๋‚ด๋ถ€๋ฅผ ๋น„์›๋‹ˆ๋‹ค.
$ sudo rm -rf /var/lib/docker
$ sudo mkdir /var/lib/docker
  1. /raid ๋‚ด์— ์ƒˆ๋กœ์šด ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ๋งŒ๋“ค์–ด์„œ bind mount ํ•ฉ๋‹ˆ๋‹ค.
$ sudo mkdir /raid/docker
$ sudo mount --rbind /raid/docker /var/lib/docker
  1. Docker service๋ฅผ ๋‹ค์‹œ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค.
$ sudo systemctl start docker
  1. (Opt.) Reboot์„ ํ•  ๊ฒฝ์šฐ์— mount ํ–ˆ๋˜ ๊ฒƒ์ด ํ•ด์ œ๋˜๋ฉด์„œ ์œ„์˜ ์ž‘์—…์„ ๋‹ค์‹œ ํ•ด์ค˜์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด crontab -e๋ฅผ ํ†ตํ•ด reboot ์‹œ์— ์ž๋™์œผ๋กœ ์‹คํ–‰๋  script๋ฅผ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์šฐ์„  executable shell script๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

nvadmin@dgx-a100:~$ touch raid_fs.sh
nvadmin@dgx-a100:~$ chmod +x raid_fs.sh

ํ•ด๋‹น ํŒŒ์ผ ์•ˆ์— ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋‚ด์šฉ์„ ์ž‘์„ฑํ•ด์„œ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.

nvadmin@dgx-a100:~$ cat raid_fs.sh
#!/bin/sh
sudo mount -o pquota /dev/md1 /raid
sudo docker rm -f $(docker ps -aq); docker rmi -f $(docker images -q)
sudo systemctl stop docker
sudo rm -rf /var/lib/docker
sudo mkdir /var/lib/docker
sudo mount --rbind /raid/docker /var/lib/docker
sudo systemctl start docker

crontab -e๋ฅผ ์‹คํ–‰ํ•˜๊ณ  ์ œ์ผ ๋ ์ค„์— ๋‹ค์Œ ๋ฌธ์žฅ์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

@reboot /home/nvadmin/raid_fs.sh

๋ณธ ์ž‘์—…

I. Google Form์„ ํ†ตํ•œ ์ˆ˜์š” ์กฐ์‚ฌ ์ง„ํ–‰

  • ๊ธฐ๋ณธ ์ธ์  ์‚ฌํ•ญ ์™ธ์— ์›ํ•˜๋Š” 1) GPU ๊ฐœ์ˆ˜, 2) Disk ์šฉ๋Ÿ‰, 3) ์šด์˜์ฒด์ œ, 4) CUDA Toolkit ๋ฒ„์ „, 5) cuDNN ๋ฒ„์ „(์„ ํƒ ์‚ฌํ•ญ)์„ ์กฐ์‚ฌํ•  ํ•„์š”๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

  • CPU ์ฝ”์–ด ๊ฐœ์ˆ˜์™€ Memory ์šฉ๋Ÿ‰์€ ๊ธฐ๋ณธ์ ์œผ๋กœ GPU 1๊ฐœ๋‹น ๊ฐ๊ฐ 32๊ฐœ์™€ 128GB๋ฅผ ๋ฐฐ๋ถ„ํ•˜๋Š” ๊ฒƒ์„ ์ถ”์ฒœ๋“œ๋ฆฝ๋‹ˆ๋‹ค. CPU ์ฝ”์–ด์™€ Memory๋ฅผ ๋ฐฐ๋ถ„ํ•  ๋•Œ GPU NUMA Affinity๋ฅผ ๊ณ ๋ คํ•ด์•ผํ•˜๋ฏ€๋กœ ์ด ๋‘˜์€ ์ˆ˜์š” ์กฐ์‚ฌ๋ฅผ ํ†ตํ•ด ์ •ํ•˜๊ธฐ๋ณด๋‹ค๋Š” ์ด๋Ÿฐ ์‹์œผ๋กœ ๊ฐœ์ˆ˜์™€ ์šฉ๋Ÿ‰์„ ์ •ํ•ด๋‘๋Š” ๊ฒƒ์ด ์ข‹์„ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. GPU NUMA Affinity์— ๋Œ€ํ•œ ๊ณ ๋ ค๋Š” III. ๊ฐ ์‚ฌ์šฉ์ž์—๊ฒŒ ๋‚˜๋ˆ ์ค„ container ๋งŒ๋“ค๊ธฐ์—์„œ ์˜ˆ์‹œ๋ฅผ ํ†ตํ•ด ์ž์„ธํžˆ ๋‹ค๋ฃน๋‹ˆ๋‹ค.

  • II. Dockerfile์„ ํ†ตํ•œ image ๋นŒ๋“œํ•˜๊ธฐ์—์„œ ์‚ฌ์šฉํ•˜๊ฒŒ ๋  Dockerfile์˜ ๋ช…๋ น์–ด๊ฐ€ ํ˜„์žฌ๋กœ์„œ๋Š” Ubuntu ์šด์˜์ฒด์ œ๋ฅผ ๊ฐ€์ •ํ•˜๊ณ  ์ž‘์„ฑ๋˜์—ˆ์œผ๋ฏ€๋กœ ์šด์˜์ฒด์ œ๋กœ๋Š” Ubuntu ๊ณ„์—ด๋งŒ์„ ๋ณด๊ธฐ๋กœ ๋„ฃ์„ ๊ฒƒ์„ ์ถ”์ฒœ๋“œ๋ฆฝ๋‹ˆ๋‹ค.

  • ์ˆ˜์š” ์กฐ์‚ฌ ์˜ˆ์‹œ: https://forms.gle/gyPDd95oU1aySiTs9

II. Dockerfile์„ ํ†ตํ•œ image ๋นŒ๋“œํ•˜๊ธฐ

  • ์˜ˆ์‹œ: ์‚ฌ์šฉ์ž๊ฐ€ Ubuntu 18.04, CUDA 11.4.0, cuDNN 8 Developer์„ ์„ ํƒํ•œ ๊ฒฝ์šฐ
  1. ๋นˆ ๋””๋ ‰ํ† ๋ฆฌ(cd ~ ๋“ฑ)์—์„œ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋‚ด์šฉ์˜ Dockerfile ํŒŒ์ผ์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. (๋นˆ ๋””๋ ‰ํ† ๋ฆฌ๊ฐ€ ์•„๋‹ˆ๋ผ๋ฉด .dockerignore ํŒŒ์ผ์„ ์ƒ์„ฑํ•ด์„œ ๋‹ค๋ฅธ ํด๋” ๋ฐ ํŒŒ์ผ์„ ๋ฌด์‹œํ•˜๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.) Dockerfile์˜ ๋‚ด์šฉ์€ nvidia/cuda:11.4.0-cudnn8-devel-ubuntu18.04๋ผ๋Š” base image์— ํฌํŠธ๋ฅผ ํ†ตํ•œ SSH ์ ‘์†์ด ๊ฐ€๋Šฅ์ผ€ํ•œ ์ƒˆ๋กœ์šด image๋ฅผ ๋นŒ๋“œํ•˜๊ธฐ ์œ„ํ•ด ์ž‘์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. Base image ์ด๋ฆ„ ๋ฐ ํƒœ๊ทธ๋ฅผ ๊ฒ€์ƒ‰ํ•˜๋ ค๋ฉด ์ด ๊ณณ์„ ์ด์šฉํ•ด์ฃผ์„ธ์š”.
nvadmin@dgx-a100:~$ cat Dockerfile
# Instruction for Dockerfile to create a new image on top of the base image (nvidia/cuda:11.4.0-cudnn8-devel-ubuntu18.04)
FROM nvidia/cuda:11.4.0-cudnn8-devel-ubuntu18.04
ARG root_password
RUN apt-get update || echo "OK" && apt-get install -y openssh-server
RUN mkdir /var/run/sshd
RUN echo "root:${root_password}" | chpasswd
RUN sed -i 's/#PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config
RUN sed -i 's/#PasswordAuthentication yes/PasswordAuthentication yes/' /etc/ssh/sshd_config
EXPOSE 22
CMD ["/usr/sbin/sshd", "-D"]

.dockerignore ํŒŒ์ผ ์˜ˆ์‹œ

nvadmin@dgx-a100:~$ cat .dockerignore
folder_to_ignore
file_to_ignore
ignore_me*
  1. Dockerfile์„ ์ด์šฉํ•ด ์ƒˆ๋กœ์šด image๋ฅผ ๋นŒ๋“œํ•ฉ๋‹ˆ๋‹ค. ํ•ด๋‹น image๋ฅผ ์ด์šฉํ•œ container์˜ ๋น„๋ฐ€๋ฒˆํ˜ธ๋Š” password๋กœ ์ดˆ๊ธฐํ™”๋˜์–ด ์žˆ์œผ๋ฉฐ ์ดํ›„์— ๊ฐ ์‚ฌ์šฉ์ž๊ฐ€ ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
$ docker image build --build-arg root_password=password --tag nvidia/cuda:11.4.0-cudnn8-devel-ubuntu18.04-ssh .

III. ๊ฐ ์‚ฌ์šฉ์ž์—๊ฒŒ ๋‚˜๋ˆ ์ค„ container ๋งŒ๋“ค๊ธฐ

  • ์˜ˆ์‹œ: ์‚ฌ์šฉ์ž๊ฐ€ GPU 2๊ฐœ, Disk 512GB๋ฅผ ์„ ํƒํ•œ ๊ฒฝ์šฐ
  1. ์‚ฌ์šฉ์ž๊ฐ€ ์„ ํƒํ•œ ์š”๊ตฌ์‚ฌํ•ญ์— ๋งž๊ฒŒ container๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค. (์‚ฌ์šฉ์ž๋ช…์„ user1์ด๋ผ๊ณ  ๊ฐ€์ •)

์šฐ์„  GPU Numa Affinity๋ฅผ ํ™•์ธํ•˜์—ฌ Affinity rule์— ์œ„๋ฐฐ๋˜์ง€ ์•Š๋Š” GPU, CPU, Memory ์กฐํ•ฉ์ด availableํ•œ์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

nvadmin@dgx-a100:~$ lscpu
...
NUMA node0 CPU(s):               0-15,128-143
NUMA node1 CPU(s):               16-31,144-159
NUMA node2 CPU(s):               32-47,160-175
NUMA node3 CPU(s):               48-63,176-191
NUMA node4 CPU(s):               64-79,192-207
NUMA node5 CPU(s):               80-95,208-223
NUMA node6 CPU(s):               96-111,224-239
NUMA node7 CPU(s):               112-127,240-255
...

์˜ˆ๋ฅผ ๋“ค์–ด, ์œ„์™€ ๊ฐ™์€ ๊ฒฝ์šฐ์— GPU Node 1๋ฒˆ์„ ํ• ๋‹นํ•œ๋‹ค๋ฉด CPU๋Š” 16-31๋ฒˆ ํ˜น์€ 144-159๋ฒˆ ๋‚ด์—์„œ ํ• ๋‹นํ•ด์ค๋‹ˆ๋‹ค. Memory ๋…ธ๋“œ๋Š” GPU ๋…ธ๋“œ ๋ฒˆํ˜ธ์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ 1๋ฒˆ์„ ํ• ๋‹นํ•ด์ค๋‹ˆ๋‹ค. ์•„๋ž˜์™€ ๊ฐ™์€ ๋ช…๋ น์–ด๋กœ ํ• ๋‹น์„ ์™„๋ฃŒํ•ฉ๋‹ˆ๋‹ค.

$ docker container run --gpus '"device=0,1"' --cpus=64 --cpuset-cpus 0-31,128-159 --cpuset-mems 0,1 -m 256G --storage-opt size=512G -d -P --name user1 nvidia/cuda:11.4.0-cudnn8-devel-ubuntu18.04-ssh
  1. Container ํฌํŠธ๊ฐ€ ๋ช‡ ๋ฒˆ์ธ์ง€ ํ™•์ธํ•˜๊ณ  ๊ธฐ๋กํ•ด๋‘ก๋‹ˆ๋‹ค.
nvadmin@dgx-a100:~$ docker ps
CONTAINER ID   IMAGE                                             COMMAND                  CREATED          STATUS          PORTS                                     NAMES
24ad5af18c98   nvidia/cuda:11.4.0-cudnn8-devel-ubuntu18.04-ssh   "/usr/sbin/sshd -D"      12 minutes ago   Up 12 minutes   0.0.0.0:49160->22/tcp, :::49160->22/tcp   user1

์ด์ œ ssh -p 49160 root@147.46.92.213์™€ ๊ฐ™์ด SSH๋ฅผ ํ†ตํ•ด ํ•ด๋‹น container์— ์ ‘์†ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

IV. ์‹ค์ œ ๋ฐฐํฌ ๋ฐ ๊ฐ ์‚ฌ์šฉ์ž์—๊ฒŒ ์ „๋‹ฌํ•  ์ž์› ์ด์šฉ ์„ค๋ช…์„œ

OOO๋‹˜, ์‹ ์ฒญํ•˜์‹  DGX-A100 ์ž์›์ด ํ• ๋‹น๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์‹ ์ฒญํ•˜์‹  ์ž์›์€ NVIDIA Docker Container๋กœ ๋งŒ๋“ค์–ด์กŒ์œผ๋ฉฐ ์•„๋ž˜์™€ ๊ฐ™์€ ๋ฐฉ๋ฒ•์œผ๋กœ ์ ‘์†ํ•˜์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ดˆ๊ธฐ ๋น„๋ฐ€๋ฒˆํ˜ธ๋Š” password์ž…๋‹ˆ๋‹ค.

ssh -p 49160 root@147.46.92.213
  • Container์— ์ ‘์†ํ•˜์‹  ํ›„ ๊ผญ passwd ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ๋ณ€๊ฒฝํ•ด์ฃผ์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค. ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š์•„์„œ ์ƒ๊ธฐ๋Š” ๋ณด์•ˆ, ๋ฐ์ดํ„ฐ ์†์ƒ ๋“ฑ์˜ ๋ฌธ์ œ๋Š” ์ €ํฌ๊ฐ€ ์ฑ…์ž„์ง€์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

  • Container๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๋‚ด๊ณ  ๋ฐ›์œผ์‹ค ๋•Œ์—๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค.

    1. Container๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๋‚ผ ๊ฒฝ์šฐ
    user@desktop:~$ scp -P 49156 -r folder_to_send root@147.46.92.213:/root
    1. Container์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๋‚ผ ๊ฒฝ์šฐ
    root@194b0519ada6:~# scp -r folder_to_send user@<IP_ADDRESS>:/home/user
  • ํ• ๋‹น๋œ ์ž์›์„ ํ™•์ธํ•˜์‹ค ๋•Œ lscpu, free ๋“ฑ์˜ ๋ช…๋ น์–ด๋ฅผ ์ด์šฉํ•˜์‹œ๋ฉด container๊ฐ€ ์•„๋‹Œ host ๋จธ์‹  ์ „์ฒด์˜ ์ž์›์ด ๋ณด์ด๊ฒŒ ๋˜๋ฏ€๋กœ ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•˜์…”์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์•„๋ž˜์™€ ๊ฐ™์ด ์•ˆ๋‚ด๋“œ๋ฆฝ๋‹ˆ๋‹ค.

  1. GPU
root@24ad5af18c98:~# nvidia-smi
Tue May 17 10:00:30 2022
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 510.47.03    Driver Version: 510.47.03    CUDA Version: 11.6     |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|                               |                      |               MIG M. |
|===============================+======================+======================|
|   0  NVIDIA A100-SXM...  On   | 00000000:07:00.0 Off |                    0 |
| N/A   31C    P0    54W / 400W |      0MiB / 40960MiB |      0%      Default |
|                               |                      |             Disabled |
+-------------------------------+----------------------+----------------------+
|   1  NVIDIA A100-SXM...  On   | 00000000:0F:00.0 Off |                    0 |
| N/A   30C    P0    52W / 400W |      0MiB / 40960MiB |      0%      Default |
|                               |                      |             Disabled |
+-------------------------------+----------------------+----------------------+

+-----------------------------------------------------------------------------+
| Processes:                                                                  |
|  GPU   GI   CI        PID   Type   Process name                  GPU Memory |
|        ID   ID                                                   Usage      |
|=============================================================================|
|  No running processes found                                                 |
+-----------------------------------------------------------------------------+
  1. CPU: ์•„๋ž˜ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•ด์„œ ๋‚˜์˜จ ๊ฒฐ๊ณผ๋ฅผ 100000๋กœ ๋‚˜๋ˆ”.
root@24ad5af18c98:~# cat /sys/fs/cgroup/cpu/cpu.cfs_quota_us
6400000
  1. Memory: ์•„๋ž˜ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•ด์„œ ๋‚˜์˜จ ๊ฒฐ๊ณผ๋ฅผ 1024 * 1024 * 1024๋กœ ๋‚˜๋ˆ” (GiB ๋‹จ์œ„).
root@24ad5af18c98:~# apt-get update && apt-get install -y cgroup-tools
root@24ad5af18c98:~# cgget -n --values-only --variable memory.limit_in_bytes /
274877906944
  1. Disk
root@24ad5af18c98:~# df -h /
Filesystem      Size  Used Avail Use% Mounted on
overlay         512G  2.7M  512G   1% /
  • ๊ธฐํƒ€ ๊ถ๊ธˆํ•˜์‹  ์‚ฌํ•ญ์ด ์žˆ์œผ๋ฉด XXX๋กœ ์—ฐ๋ฝ์ฃผ์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค.

๋งˆ๋ฌด๋ฆฌ ์ž‘์—…

I. Container ํšŒ์ˆ˜ ๋ฐ ์‚ญ์ œ

์‚ฌ์šฉ์ž๊ฐ€ container๋ฅผ ๋ฐ˜๋‚ฉํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ช…๋ น์–ด๋กœ ๊ฐ•์ œ ์‚ญ์ œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

nvadmin@dgx-a100:~$ docker ps
CONTAINER ID   IMAGE                                             COMMAND                  CREATED          STATUS          PORTS                                     NAMES
24ad5af18c98   nvidia/cuda:11.4.0-cudnn8-devel-ubuntu18.04-ssh   "/usr/sbin/sshd -D"      45 minutes ago   Up 45 minutes   0.0.0.0:49160->22/tcp, :::49160->22/tcp   user1
nvadmin@dgx-a100:~$ docker rm --force user1
user1
nvadmin@dgx-a100:~$ docker ps
CONTAINER ID   IMAGE                                             COMMAND                  CREATED          STATUS          PORTS                                     NAMES

๋งŒ๋“ค์–ด๋’€๋˜ image๋Š” ์žฌ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•˜๋ฏ€๋กœ ํŠน๋ณ„ํ•œ ๊ฒฝ์šฐ๊ฐ€ ์•„๋‹ˆ๋ฉด image๋Š” ๋ฐ”๋กœ ์‚ญ์ œํ•˜์ง€๋Š” ์•Š๋Š” ๊ฒƒ์„ ์ถ”์ฒœ๋“œ๋ฆฝ๋‹ˆ๋‹ค. ์ˆ˜์š” ์กฐ์‚ฌ ๊ฒฐ๊ณผ ์‚ฌ์šฉ์ž๋“ค์˜ ์š”๊ตฌ์‚ฌํ•ญ์ด ๋น„์Šทํ•˜๋‹ค๋ฉด ๊ฐ™์€ image๋กœ container๋งŒ ๋‹ค๋ฅด๊ฒŒ ๋งŒ๋“ค์–ด์„œ ๋ฐฐํฌํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. Image๊ฐ€ ๋„ˆ๋ฌด ๋งŽ์ด ์Œ“์—ฌ์„œ ์šฉ๋Ÿ‰์„ ๋งŽ์ด ์ฐจ์ง€ํ•˜๊ณ  ์žˆ๋‹ค๋ฉด (docker images ๋ช…๋ น์–ด๋กœ ํ™•์ธ ๊ฐ€๋Šฅ) ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ช…๋ น์–ด๋กœ image๋ฅผ ๊ฐ•์ œ ์‚ญ์ œํ•˜์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค. ๋‹จ, image๊ฐ€ ์‚ญ์ œ ๊ฐ€๋Šฅํ•˜๋ ค๋ฉด ํ•ด๋‹น image๋กœ ๋งŒ๋“  container๊ฐ€ ์—†์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ ์œ„์—์„œ์ฒ˜๋Ÿผ base image์— ํฌํŠธ๋ฅผ ํ†ตํ•œ SSH ์ ‘์†์ด ๊ฐ€๋Šฅ์ผ€ํ•œ ์ƒˆ๋กœ์šด image๋ฅผ ๋งŒ๋“  ๊ฒฝ์šฐ, ๊ทธ ์ƒˆ๋กœ์šด image๋ฅผ ๋จผ์ € ์‚ญ์ œํ•˜๊ณ , ๊ทธ ๋‹ค์Œ์— base image๋ฅผ ์‚ญ์ œํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

nvadmin@dgx-a100:~$ docker images
REPOSITORY               TAG                                   IMAGE ID       CREATED          SIZE
nvidia/cuda              11.4.0-cudnn8-devel-ubuntu18.04-ssh   29e620c892e6   50 minutes ago   9.13GB
nvidia/cuda              11.4.0-cudnn8-devel-ubuntu18.04       d94cc7c49eef   2 weeks ago      8.98GB
nvadmin@dgx-a100:~$ docker rmi 29e620c892e6
Untagged: nvidia/cuda:11.4.0-cudnn8-devel-ubuntu18.04-ssh
Deleted: sha256:29e620c892e6b7b3cd5f14772aece043ef10487ce3e9303f6d3408bedf2dce07
...
nvadmin@dgx-a100:~$ docker rmi d94cc7c49eef
Untagged: nvidia/cuda:11.4.0-cudnn8-devel-ubuntu18.04
Untagged: nvidia/cuda@sha256:867af080c04292bbab9b5971432c9f7955978f3c9e61cd613e86d95ea7926577
Deleted: sha256:d94cc7c49eef65a0c5eca81d6a88b067687baf1b4138ceebe22e5eb27a8007f3
...
nvadmin@dgx-a100:~$ docker images
REPOSITORY               TAG                         IMAGE ID       CREATED         SIZE

II. ๊ฐœ์ธ์ •๋ณด ํŒŒ๊ธฐ

I. Container ํšŒ์ˆ˜ ๋ฐ ์‚ญ์ œ ์ž‘์—…์ด ๋๋‚˜๋ฉด ํ•ด๋‹น ์‚ฌ์šฉ์ž์˜ ๊ฐœ์ธ์ •๋ณด๋ฅผ ํŒŒ๊ธฐํ•ด์ฃผ์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค.

About

No description, website, or topics provided.

Resources

Stars

3 stars

Watchers

1 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors