TPU VM에 내구성이 우수한 블록 스토리지 연결

TPU VM에는 100GiB 부팅 디스크가 포함됩니다. 일부 시나리오에서는 학습 또는 전처리를 위해 추가 스토리지가 필요할 수 있습니다. 이 경우 Google Cloud Hyperdisk 또는 Persistent Disk 볼륨을 추가해 로컬 디스크 용량을 확장할 수 있습니다.

최고의 성능과 고급 기능을 원한다면, TPU에서 Hyperdisk를 사용할 수 있는 경우 이를 사용하는 것이 좋습니다. 사용할 수 없다면 Persistent Disk를 사용하세요. Compute Engine에서 제공하는 블록 스토리지 옵션에 대한 자세한 내용은 디스크 유형 선택을 참조하세요.

Hyperdisk 및 Persistent Disk에 대한 TPU 지원

다음 표는 TPU 버전별로 지원되는 디스크 유형을 보여줍니다.

TPU 버전 지원되는 디스크 유형
v6e Hyperdisk Balanced
Hyperdisk ML
v5p Balanced Persistent Disk
v5e Balanced Persistent Disk
v4 Balanced Persistent Disk
v3 Balanced Persistent Disk
v2 Balanced Persistent Disk

액세스 모드

다음 표와 같이, TPU에 연결된 디스크를 단일 작성자 모드 또는 읽기 전용 모드로 구성할 수 있습니다.

액세스 모드 설명 Compute Engine API Cloud TPU API 지원되는 디스크 유형
단일 작성자 모드 기본 액세스 모드입니다. 한 번에 하나의 인스턴스에만 디스크를 연결할 수 있습니다. 디스크에 대한 읽기/쓰기 액세스 권한이 인스턴스에 포함됩니다. READ_WRITE_SINGLE read-write
  • Hyperdisk Balanced
  • Hyperdisk ML
  • Balanced Persistent Disk
읽기 전용 모드 여러 인스턴스에 동시에 읽기 전용 모드로 연결할 수 있습니다. 이 모드에서는 디스크에 쓰기 권한이 인스턴스에 포함되지 않습니다. 읽기 전용 공유에 필요합니다. READ_ONLY_MANY read-only
  • Hyperdisk Balanced
  • Balanced Persistent Disk

v6e-8, v5p-8, v5litepod-8과 같은 단일 호스트 TPU에 연결된 디스크를 단일 작성자 모드 또는 읽기 전용 모드로 구성할 수 있습니다.

멀티 호스트 TPU에 디스크를 연결하면, 디스크가 TPU의 각 VM에 연결됩니다. 둘 이상의 TPU VM이 동시에 디스크에 쓰지 못하게 하려면 멀티 호스트 TPU에 연결된 모든 디스크를 읽기 전용으로 구성해야 합니다. 읽기 전용 디스크는 TPU 슬라이스에서 처리할 데이터 세트를 저장하는 데 유용합니다.

기본 요건

다음 절차를 사용하려면 먼저 Google Cloud 계정 및 프로젝트를 설정해야 합니다. 자세한 내용은 Cloud TPU 환경 설정을 참조하세요.

디스크 만들기

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

$ gcloud compute disks create DISK_NAME \
    --size DISK_SIZE  \
    --zone ZONE \
    --type DISK_TYPE

명령어 플래그 설명

DISK_NAME
새 디스크의 이름입니다.
DISK_SIZE
새 디스크의 크기입니다. 값은 정수에 단위(기비바이트는 GB, 테비바이트는 TB)를 붙인 형식이어야 합니다. 크기 단위를 지정하지 않으면 GB로 가정됩니다.
ZONE
새 디스크를 만들 영역의 이름입니다. TPU를 만드는 데 사용한 것과 동일한 영역이어야 합니다.
DISK_TYPE
디스크 유형입니다. hyperdisk-balanced, hyperdisk-ml, pd-balanced 값 중 하나를 사용합니다.

Hyperdisk의 경우 선택적으로 다음 값 중 하나를 사용해서 --access-mode 플래그를 지정할 수 있습니다.

  • READ_WRITE_SINGLE: 한 인스턴스에서 읽기/쓰기 액세스를 허용합니다. 기본값입니다.
  • READ_ONLY_MANY: (Hyperdisk ML에서만 지원됨) 여러 인스턴스에서 동시에 읽기 전용 액세스를 허용합니다.

디스크 만들기에 관한 자세한 내용은 새 Hyperdisk 볼륨 만들기새 Persistent Disk 볼륨 만들기를 참조하세요.

디스크 연결

TPU VM을 만들 때 TPU VM에 디스크 볼륨을 연결하거나 TPU VM을 만든 후에 연결할 수도 있습니다.

TPU VM을 만들 때 디스크 연결

TPU VM을 만들 때 디스크 볼륨을 연결하려면 --data-disk 플래그를 사용합니다.

멀티 호스트 TPU를 만드는 경우 mode=read-only(Hyperdisk ML 및 Balanced Persistent Disk만 해당)를 지정해야 합니다. 단일 호스트 TPU를 만드는 경우 mode=read-only(Hyperdisk ML 및 Balanced Persistent Disk만 해당) 또는 mode=read-write를 지정할 수 있습니다. 자세한 내용은 액세스 모드를 참조하세요.

다음 예시에서는 큐에 추가된 리소스를 사용하여 TPU VM을 만들 때 디스크 볼륨을 연결하는 방법을 보여줍니다.

$ gcloud compute tpus queued-resources create QR_NAME \
    --node-id=TPU_NAME
    --project PROJECT_ID \
    --zone=ZONE \
    --accelerator-type=ACCELERATOR_TYPE \
    --runtime-version=TPU_SOFTWARE_VERSION \
    --data-disk source=projects/PROJECT_ID/zones/ZONE/disks/DISK_NAME,mode=MODE

명령어 플래그 설명

QR_NAME
큐에 추가된 리소스 요청의 이름입니다.
TPU_NAME
새 TPU의 이름입니다.
PROJECT_ID
TPU를 만들 Google Cloud 프로젝트의 ID입니다.
ZONE
Cloud TPU를 만들 영역의 이름입니다.
ACCELERATOR_TYPE
가속기 유형은 만들려는 Cloud TPU의 버전과 크기를 지정합니다. 각 TPU 버전에서 지원되는 가속기 유형에 대한 자세한 내용은 TPU 버전을 참조하세요.
TPU_SOFTWARE_VERSION
TPU 소프트웨어 버전입니다.
DISK_NAME
TPU VM에 연결할 디스크의 이름입니다.
MODE
디스크의 모드입니다. 모드는 read-only 또는 read-write 중 하나여야 합니다. 지정되지 않은 경우 기본 모드는 read-write입니다. 자세한 내용은 액세스 모드를 참조하세요.

gcloud compute tpus tpu-vm create 명령어를 사용하여 TPU VM을 만들 때 디스크를 연결할 수도 있습니다.

$ gcloud compute tpus tpu-vm create TPU_NAME \
    --project PROJECT_ID \
    --zone=ZONE \
    --accelerator-type=ACCELERATOR_TYPE \
    --version=TPU_SOFTWARE_VERSION \
    --data-disk source=projects/PROJECT_ID/zones/ZONE/disks/DISK_NAME,mode=MODE

명령어 플래그 설명

TPU_NAME
새 TPU의 이름입니다.
PROJECT_ID
TPU를 만들 Google Cloud 프로젝트의 ID입니다.
ZONE
Cloud TPU를 만들 영역의 이름입니다.
ACCELERATOR_TYPE
가속기 유형은 만들려는 Cloud TPU의 버전과 크기를 지정합니다. 각 TPU 버전에서 지원되는 가속기 유형에 대한 자세한 내용은 TPU 버전을 참조하세요.
TPU_SOFTWARE_VERSION
TPU 소프트웨어 버전입니다.
DISK_NAME
TPU VM에 연결할 디스크의 이름입니다.
MODE
디스크의 모드입니다. 모드는 read-only 또는 read-write 중 하나여야 합니다. 지정되지 않은 경우 기본 모드는 read-write입니다. 자세한 내용은 액세스 모드를 참조하세요.

기존 TPU VM에 디스크 연결

gcloud alpha compute tpus tpu-vm attach-disk 명령어를 사용하여 기존 TPU VM에 디스크를 연결합니다.

$ gcloud alpha compute tpus tpu-vm attach-disk TPU_NAME \
    --zone=ZONE \
    --disk=DISK_NAME \
    --mode=MODE

명령어 플래그 설명

TPU_NAME
TPU의 이름입니다.
ZONE
Cloud TPU가 위치한 영역입니다.
DISK_NAME
TPU VM에 연결할 디스크의 이름입니다.
MODE
디스크의 모드입니다. 모드는 read-only 또는 read-write 중 하나여야 합니다. 지정되지 않은 경우 기본 모드는 read-write입니다. 디스크의 액세스 모드와 일치해야 합니다.

어떤 이유로든 VM이 종료되면 VM을 다시 시작한 후 디스크를 마운트해야 할 수 있습니다. VM을 다시 시작할 때 디스크가 자동으로 마운트되도록 하려면 시스템 다시 시작 시 자동 마운트 구성을 참조하세요.

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

디스크 포맷 및 마운트

새로운 빈 디스크를 TPU VM에 연결한 경우 이를 사용하려면 먼저 디스크를 포맷하고 마운트해야 합니다. 이미 데이터가 포함된 디스크를 연결한 경우 사용하려면 먼저 디스크를 마운트해야 합니다.

비부팅 디스크를 포맷하고 마운트하는 방법은 Linux VM에서 비부팅 디스크 포맷 및 마운트를 참조하세요.

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

    $ gcloud compute tpus tpu-vm ssh TPU_NAME --zone ZONE

    멀티 호스트 TPU를 사용할 때 이 명령어를 실행하면 TPU 슬라이스의 첫 번째 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
    

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

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

  3. 디스크가 포맷되지 않았으면 mkfs 도구를 사용하여 연결된 디스크를 포맷합니다. 디스크의 기기 이름이 다르면 sdb를 해당 이름으로 바꿉니다. 다른 파일 시스템을 사용하려면 ext4를 원하는 파일 시스템으로 바꿉니다.

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

    단일 호스트 TPU를 사용하는 경우 TPU에서 다음 명령어를 실행하여 디스크를 마운트할 디렉터리를 만듭니다.

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

    MOUNT_DIR을 디스크를 마운트할 디렉터리로 바꿉니다.

    멀티 호스트 TPU를 사용하는 경우 TPU VM 외부에서 다음 명령어를 실행합니다. 이 명령어는 TPU 슬라이스의 모든 TPU VM에 디렉터리를 만듭니다.

    (vm)$ gcloud compute tpus tpu-vm ssh TPU_NAME --worker=all --command="sudo mkdir -p /mnt/disks/MOUNT_DIR"
  5. mount 도구를 사용하여 TPU에 디스크를 마운트합니다.

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

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

    멀티 호스트 TPU를 사용하는 경우 TPU VM 외부에서 다음 명령어를 실행합니다. TPU 슬라이스의 모든 TPU VM에 디스크가 마운트됩니다.

    (vm)$ gcloud compute tpus tpu-vm ssh TPU_NAME --worker=all --command="sudo mount -o discard,defaults /dev/sdb /mnt/disks/MOUNT_DIR"
  6. 디스크에 대한 읽기 및 쓰기 권한을 구성합니다. 예를 들어 다음 명령어는 모든 사용자에게 디스크에 대한 쓰기 액세스 권한을 부여합니다.

    (vm)$ sudo chmod a+w /mnt/disks/MOUNT_DIR

디스크 마운트 해제

TPU VM에서 디스크를 마운트 해제(분리)하려면 다음 명령어를 실행합니다.

$ gcloud alpha compute tpus tpu-vm detach-disk TPU_NAME \
    --zone=ZONE \
    --disk=DISK_NAME

명령어 플래그 설명

TPU_NAME
TPU의 이름입니다.
ZONE
Cloud TPU가 위치한 영역입니다.
DISK_NAME
TPU VM에서 분리할 디스크의 이름입니다.

삭제

Cloud TPU 및 Compute Engine 리소스 작업을 마쳤으면 해당 리소스를 삭제합니다.

  1. Cloud TPU에서 아직 연결을 해제하지 않았으면 연결을 해제합니다.

    (vm)$ exit

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

  2. Cloud TPU를 삭제합니다.

    $ gcloud compute tpus tpu-vm delete TPU_NAME \
        --zone=ZONE
  3. Cloud TPU가 삭제되었는지 확인합니다. 삭제하는 데 몇 분 정도 걸릴 수 있습니다.

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

    $ gcloud compute disks list --filter="zone:( ZONE )"

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

    $ gcloud compute disks delete DISK_NAME \
        --zone ZONE