TPU VM에 영구 디스크 추가

TPU VM에는 100GB 부팅 디스크가 포함됩니다. 경우에 따라 학습 또는 사전 처리를 위해 TPU VM에 추가 스토리지가 필요할 수 있습니다. 영구 디스크를 추가하여 로컬 디스크 용량을 확장할 수 있습니다.

개요

단일 기기 TPU에 연결된 영구 디스크(v2-8, v3-8, v4-8 등)는 read-write 또는 read-only로 구성할 수 있습니다. TPU Pod의 일부인 TPU에 영구 디스크를 연결하면 디스크가 해당 포드의 각 TPU VM에 연결됩니다. 포드에서 두 개 이상의 TPU VM을 동시에 영구 디스크에 쓰지 못하게 하려면 포드의 TPU VM에 연결된 모든 영구 디스크를 read-only로 구성해야 합니다. read-only 디스크는 TPU Pod에서 처리할 데이터 세트를 저장하는 데 유용합니다.

영구 디스크를 만들어 TPU VM에 연결한 후 영구 디스크를 마운트하여 파일 시스템에서 영구 디스크에 액세스할 수 있는 위치를 지정해야 합니다. 자세한 내용은 디스크 마운트를 참조하세요.

기본 요건

다음 절차를 사용하려면 먼저 Google Cloud 계정 및 프로젝트를 설정해야 합니다. Cloud TPU 프로젝트를 아직 설정하지 않았으면 계속하기 전에 계정 및 Cloud TPU 프로젝트 설정 절차를 따르세요.

대략적인 단계

영구 디스크를 설정하는 대략적인 단계는 다음과 같습니다.

  1. Persistent Disk 만들기
  2. TPU VM에 영구 디스크 연결
  3. 영구 디스크 마운트
  4. TPU VM 및 영구 디스크 리소스 삭제

TPU VM 및 영구 디스크 설정

TPU VM을 만들 때 영구 디스크를 TPU VM에 연결할 수 있습니다. 영구 디스크를 기존 TPU VM에 연결할 수도 있습니다.

Persistent Disk 만들기

다음 명령어를 사용하여 영구 디스크를 만듭니다.

  $ gcloud compute disks create disk-name \
    --size disk-size  \
    --zone zone \
    --type pd-balanced

명령어 플래그 설명

disk-name
영구 디스크를 위해 선택한 이름입니다.
disk-size
영구 디스크의 크기(GB 단위)입니다.
zone
영구 디스크를 만들 영역입니다. TPU를 만드는 데 사용한 영역과 같아야 합니다.
type
추가할 디스크 유형입니다. 지원되는 유형은 pd-standard, pd-ssd, pd-balanced입니다.

영구 디스크 연결

TPU VM을 만들 때 또는 TPU VM이 생성된 후에 TPU VM에 영구 디스크를 연결할 수 있습니다.

TPU VM 생성 시 영구 디스크 연결

TPU VM을 만들 때 --data-disk 플래그를 사용하여 영구 디스크를 연결합니다. TPU Pod를 만드는 경우에는 mode=read-only를 지정해야 합니다. 단일 TPU 기기를 만드는 경우 mode=read-only 또는 mode=read-write를 지정할 수 있습니다. 다음 명령어는 단일 TPU를 만들고 영구 디스크 모드를 read-write로 설정합니다.

  $ gcloud compute tpus tpu-vm create tpu-name \
    --project project-id \
    --zone=zone \
    --accelerator-type=v3-8 \
    --version=Cloud TPU software version \
    --data-disk source=projects/project-id/zones/zone/disks/disk-name,mode=read-write

명령어 플래그 설명

tpu-name
TPU 리소스에 선택한 이름입니다.
project
프로젝트 ID입니다.
zone
Cloud TPU를 만들 영역입니다.
accelerator-type
가속기 유형은 만들려는 Cloud TPU의 버전과 크기를 지정합니다. 각 TPU 버전에서 지원되는 가속기 유형에 대한 자세한 내용은 TPU 버전을 참조하세요.
version
프레임워크용 Cloud TPU 소프트웨어 버전입니다.
data-disk
TPU VM에 연결할 영구 디스크의 이름 및 읽기/쓰기 모드입니다.

기존 TPU VM에 영구 디스크 연결

gcloud alpha compute tpus tpu-vm attach-disk 명령어를 사용하여 영구 디스크를 기존 TPU VM에 연결합니다. 자세한 내용과 예시는 gcloud 문서를 참조하세요.

  $ gcloud alpha compute tpus tpu-vm attach-disk tpu-name \
    --zone=zone \
    --disk=disk-name \
    --mode=disk-mode

명령어 플래그 설명

tpu-name
TPU 리소스의 이름입니다.
zone
Cloud TPU가 위치한 영역입니다.
disk-name
TPU VM에 연결할 영구 디스크의 이름입니다.
mode
디스크의 모드입니다. 모드는 read-only 또는 read-write 중 하나여야 합니다.

TPU VM을 삭제할 때 영구 디스크를 삭제하려면 다음 명령어를 사용하여 영구 디스크의 자동 삭제 상태를 설정해야 합니다.

$ gcloud compute instances set-disk-auto-delete vm-instance \
  --zone=zone \
  --auto-delete \
  --disk=disk-name

명령어 플래그 설명

vm-instance
TPU VM에 SSH를 통해 연결하면 셸 프롬프트가 사용자 ID 뒤에 생성된 VM 인스턴스 이름을 포함하도록 변경됩니다(예: pjohnston@t1v-n-...$). vm-instance를 생성된 VM 인스턴스 이름으로 바꿉니다.
zone
영구 디스크가 있는 영역입니다.
auto-delete
TPU 리소스가 삭제되면 영구 디스크를 자동으로 삭제합니다.
disk-name
영구 디스크의 이름입니다.

어떤 이유로든 VM이 종료되면 영구 디스크 연결이 해제될 수 있습니다. VM이 다시 시작될 때 영구 디스크가 자동으로 마운트되도록 시스템 다시 시작 시 자동 마운트 구성을 참조하세요.

영구 디스크 자동 삭제에 대한 자세한 내용은 영구 디스크 수정을 참조하세요.

영구 디스크 마운트

TPU VM에서 영구 디스크에 액세스하려면 디스크를 마운트해야 합니다. 이렇게 하면 TPU VM 파일 시스템에서 영구 디스크에 액세스할 수 있는 위치를 지정합니다.

  1. SSH를 사용하여 TPU VM에 연결합니다.

    $ gcloud compute tpus tpu-vm ssh tpu-name --zone zone
    

    TPU Pod를 사용할 때는 포드의 각 TPU에 대해 하나의 TPU VM이 있습니다. 위의 명령어는 TPU 기기와 TPU Pod에 모두 작동합니다. TPU Pod를 사용하는 경우 이 명령어는 포드의 첫 번째 TPU(작업자 0이라고도 함)에 연결합니다.

  2. TPU VM에서 TPU VM에 연결된 디스크를 나열합니다.

    (vm)$ sudo lsblk
    

    lsblk 명령어의 출력은 다음과 같이 표시됩니다.

    NAME    MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
    loop0     7:0    0  55.5M  1 loop /snap/core18/1997
    loop1     7:1    0  67.6M  1 loop /snap/lxd/20326
    loop2     7:2    0  32.3M  1 loop /snap/snapd/11588
    loop3     7:3    0  32.1M  1 loop /snap/snapd/11841
    loop4     7:4    0  55.4M  1 loop /snap/core18/2066
    sda       8:0    0   300G  0 disk
    ├─sda1    8:1    0 299.9G  0 part /
    ├─sda14   8:14   0     4M  0 part
    └─sda15   8:15   0   106M  0 part /boot/efi
    sdb       8:16   0    10G  0 disk    <== Persistent Disk
    

    이 예시에서 sda는 부팅 디스크이고 sdb는 새로 연결된 영구 디스크의 이름입니다. 연결된 영구 디스크의 이름은 VM에 연결된 영구 디스크 수에 따라 다릅니다.

    TPU Pod를 사용할 때는 포드의 모든 TPU VM에 영구 디스크를 마운트해야 합니다. 영구 디스크의 이름은 모든 TPU VM에 대해 동일해야 하지만 보장되지는 않습니다. 예를 들어 영구 디스크를 분리했다가 다시 연결하면 기기 이름이 증분되어 sdb에서 sdc 등으로 변경됩니다.

  3. 디스크가 포맷되지 않은 경우 지금 연결된 영구 디스크를 포맷합니다.

    (vm)$ sudo mkfs.ext4 -m 0 -E lazy_itable_init=0,lazy_journal_init=0,discard /dev/sdb
    
  4. 영구 디스크를 마운트할 디렉터리를 만듭니다.

    TPU 기기를 사용하는 경우 다음 명령어를 실행하여 영구 디스크를 마운트할 디렉터리를 만듭니다.

    (vm)$ sudo mkdir -p /mnt/disks/persist
    

    TPU Pod를 사용하는 경우에는 TPU VM 외부에서 다음 명령어를 실행합니다. 그러면 포드의 모든 TPU VM에 디렉터리가 생성됩니다.

    (vm)$ gcloud compute tpus tpu-vm ssh $TPU_NAME --worker=all --command="sudo mkdir -p /mnt/disks/persist"
    
  5. 영구 디스크를 마운트합니다.

    TPU 기기를 사용하는 경우 다음 명령어를 실행하여 TPU VM에 영구 디스크를 마운트합니다.

    (vm)$ sudo mount -o discard,defaults /dev/sdb /mnt/disks/persist

    TPU Pod를 사용하는 경우에는 TPU VM 외부에서 다음 명령어를 실행합니다. 포드의 모든 TPU VM에 영구 디스크를 마운트합니다.

    (vm)$ gcloud compute tpus tpu-vm ssh $TPU_NAME --worker=all --command="sudo mount -o discard,defaults /dev/sdb /mnt/disks/persist"

삭제

TPU 리소스 작업을 마치면 해당 리소스를 삭제합니다.

  1. Compute Engine 인스턴스에서 연결을 해제합니다.

    (vm)$ exit
    

    프롬프트가 username@projectname으로 바뀌면 Cloud Shell에 있는 것입니다.

  2. Cloud TPU 및 Compute Engine 리소스를 삭제합니다.

    $ gcloud compute tpus tpu-vm delete tpu-name \
     --zone=zone
    
  3. gcloud list를 실행하여 리소스가 삭제되었는지 확인합니다. 삭제하는 데 몇 분 정도 걸릴 수 있습니다. 이 절차에서 만든 TPU VM 리소스는 gcloud list의 출력에 표시되지 않아야 합니다.

    TPU VM

    $ gcloud compute tpus tpu-vm list --zone=zone
    

    TPU 노드

    $ gcloud compute tpus execution-groups list --zone zone
    
  4. 영구 디스크를 만든 영역의 모든 디스크를 나열하여 TPU VM이 삭제될 때 영구 디스크가 자동으로 삭제되었는지 확인합니다.

    $ gcloud compute disks list --filter="zone:( us-central1-b )"
    

    TPU VM이 삭제될 때 영구 디스크가 삭제되지 않았으면 다음 명령어를 사용하여 영구 디스크를 삭제합니다.

    $ gcloud compute disks delete disk-name \
    --zone zone