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 프로젝트 설정 절차를 따르세요.
대략적인 단계
영구 디스크를 설정하는 대략적인 단계는 다음과 같습니다.
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 파일 시스템에서 영구 디스크에 액세스할 수 있는 위치를 지정합니다.
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이라고도 함)에 연결합니다.
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
등으로 변경됩니다.디스크가 포맷되지 않은 경우 지금 연결된 영구 디스크를 포맷합니다.
(vm)$ sudo mkfs.ext4 -m 0 -E lazy_itable_init=0,lazy_journal_init=0,discard /dev/sdb
영구 디스크를 마운트할 디렉터리를 만듭니다.
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"
영구 디스크를 마운트합니다.
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 리소스 작업을 마치면 해당 리소스를 삭제합니다.
Compute Engine 인스턴스에서 연결을 해제합니다.
(vm)$ exit
프롬프트가
username@projectname
으로 바뀌면 Cloud Shell에 있는 것입니다.Cloud TPU 및 Compute Engine 리소스를 삭제합니다.
$ gcloud compute tpus tpu-vm delete tpu-name \ --zone=zone
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
영구 디스크를 만든 영역의 모든 디스크를 나열하여 TPU VM이 삭제될 때 영구 디스크가 자동으로 삭제되었는지 확인합니다.
$ gcloud compute disks list --filter="zone:( us-central1-b )"
TPU VM이 삭제될 때 영구 디스크가 삭제되지 않았으면 다음 명령어를 사용하여 영구 디스크를 삭제합니다.
$ gcloud compute disks delete disk-name \ --zone zone