Halaman ini menunjukkan cara menyelesaikan masalah terkait TPU di Google Kubernetes Engine (GKE).
Jika Anda memerlukan bantuan lainnya, hubungi Cloud Customer Care.Kuota tidak cukup untuk memenuhi permintaan TPU
Error yang mirip dengan Insufficient quota to satisfy the request
menunjukkan bahwa project Google Cloud Anda tidak memiliki kuota yang tersedia tidak cukup untuk memenuhi permintaan.
Untuk mengatasi masalah ini, periksa batas kuota project Anda dan penggunaan saat ini. Jika perlu, minta penambahan kuota TPU Anda.
Memeriksa batas kuota dan penggunaan saat ini
Untuk memeriksa batas dan penggunaan kuota Compute Engine API Anda saat ini untuk TPU, ikuti langkah-langkah berikut:
Buka halaman Kuota di Konsol Google Cloud:
Di kotak Filter
, lakukan hal berikut:Pilih properti Layanan, masukkan Compute Engine API, lalu tekan Enter.
Pilih properti Jenis, lalu pilih Kuota.
Pilih properti Dimension (e.g. locations) dan masukkan
region:
diikuti dengan nama region tempat Anda berencana membuat TPU di GKE. Misalnya, masukkanregion:us-west4
jika Anda berencana untuk membuat node TPU di zonaus-west4-a
. Kuota TPU bersifat regional, sehingga semua zona dalam region yang sama menggunakan kuota TPU yang sama.
Jika tidak ada kuota yang cocok dengan filter yang Anda masukkan, berarti project belum diberi kuota yang ditentukan untuk region yang diinginkan, dan Anda harus meminta peningkatan kuota TPU.
Terjadi error saat mengaktifkan penyediaan otomatis node di kumpulan node TPU
Error berikut terjadi saat Anda mengaktifkan penyediaan otomatis node di cluster GKE yang tidak mendukung TPU.
Pesan errornya mirip dengan yang berikut ini:
ERROR: (gcloud.container.clusters.create) ResponseError: code=400,
message=Invalid resource: tpu-v4-podslice.
Untuk mengatasi masalah ini, upgrade cluster GKE Anda ke versi 1.27.6 atau yang lebih baru.
GKE tidak menyediakan node TPU secara otomatis
Bagian berikut menjelaskan kasus saat GKE tidak menyediakan node TPU secara otomatis dan cara memperbaikinya.
Batasi kesalahan konfigurasi
GKE tidak menyediakan node TPU secara otomatis jika batas penyediaan otomatis yang Anda tetapkan untuk cluster terlalu rendah. Anda mungkin melihat error berikut dalam skenario berikut:
Jika kumpulan node TPU ada, tetapi GKE tidak dapat meningkatkan skala node karena melanggar batas resource, Anda dapat melihat pesan error berikut saat menjalankan perintah
kubectl get events
:11s Normal NotTriggerScaleUp pod/tpu-workload-65b69f6c95-ccxwz pod didn't trigger scale-up: 1 node(s) didn't match Pod's node affinity/selector, 1 max cluster cpu, memory limit reached
Selain itu, dalam skenario ini, Anda dapat melihat pesan peringatan yang mirip dengan berikut ini di Konsol Google Cloud:
"Your cluster has one or more unschedulable Pods"
Saat GKE mencoba menyediakan kumpulan node TPU yang melebihi batas resource secara otomatis, log visibilitas penskalaan otomatis cluster akan menampilkan pesan error berikut:
messageId: "no.scale.up.nap.pod.zonal.resources.exceeded"
Selain itu, dalam skenario ini, Anda dapat melihat pesan peringatan yang mirip dengan berikut ini di Konsol Google Cloud:
"Can't scale up because node auto-provisioning can't provision a node pool for the Pod if it would exceed resource limits"
Untuk mengatasi masalah ini, tingkatkan jumlah maksimum chip TPU, inti CPU, dan memori dalam cluster.
Untuk menyelesaikan langkah-langkah ini:
- Menghitung kebutuhan resource untuk jenis dan jumlah mesin TPU tertentu. Perhatikan bahwa Anda perlu menambahkan resource untuk kumpulan node non-TPU, seperti beban kerja sistem.
Dapatkan deskripsi TPU, CPU, dan memori yang tersedia untuk jenis dan zona mesin tertentu. Gunakan gcloud CLI:
gcloud compute machine-types describe MACHINE_TYPE \ --zone COMPUTE_ZONE
Ganti kode berikut:
MACHINE_TYPE
: Jenis mesin yang akan ditelusuri.COMPUTE_ZONE
: Nama zona komputasi.
Outputnya mencakup baris deskripsi yang mirip dengan berikut ini:
description: 240 vCPUs, 407 GB RAM, 4 Google TPUs ```
Hitung jumlah total CPU dan memori dengan mengalikan jumlah ini dengan jumlah node yang diperlukan. Misalnya, jenis mesin
ct4p-hightpu-4t
menggunakan 240 core CPU dan RAM 407 GB dengan 4 chip TPU. Dengan asumsi bahwa Anda memerlukan 20 chip TPU, yang sesuai dengan lima node, Anda harus menentukan nilai berikut:--max-accelerator=type=tpu-v4-podslice,count=20
.CPU = 1200
(240 kali 5)memory = 2035
(407 kali 5)
Anda harus menentukan batas dengan beberapa margin untuk mengakomodasi node non-TPU seperti workload sistem.
Perbarui batas cluster:
gcloud container clusters update CLUSTER_NAME \ --max-accelerator type=TPU_ACCELERATOR \ count=MAXIMUM_ACCELERATOR \ --max-cpu=MAXIMUM_CPU \ --max-memory=MAXIMUM_MEMORY
Ganti kode berikut:
CLUSTER_NAME
: Nama cluster.TPU_ACCELERATOR
: Nama akselerator TPU.MAXIMUM_ACCELERATOR
: Jumlah maksimum chip TPU dalam cluster.MAXIMUM_CPU
: Jumlah maksimum core dalam cluster.MAXIMUM_MEMORY
: Jumlah maksimum gigabyte memori di cluster.
Kesalahan konfigurasi workload
Error ini terjadi karena kesalahan konfigurasi beban kerja. Berikut adalah beberapa penyebab error yang paling umum:
- Label
cloud.google.com/gke-tpu-accelerator
dancloud.google.com/gke-tpu-topology
salah atau tidak ada dalam spesifikasi Pod. GKE tidak akan menyediakan kumpulan TPU node, dan penyediaan otomatis node tidak akan dapat meningkatkan skala cluster. - Spesifikasi Pod tidak menentukan
google.com/tpu
dalam persyaratan resource-nya.
Untuk mengatasi masalah ini, lakukan salah satu langkah berikut:
- Pastikan tidak ada label yang tidak didukung di pemilih node beban kerja Anda.
Misalnya, pemilih node untuk label
cloud.google.com/gke-nodepool
akan mencegah GKE membuat kumpulan node tambahan untuk Pod Anda. - Pastikan spesifikasi template Pod, tempat workload TPU Anda berjalan, menyertakan
nilai berikut:
- Label
cloud.google.com/gke-tpu-accelerator
dancloud.google.com/gke-tpu-topology
dinodeSelector
-nya. google.com/tpu
dalam permintaannya.
- Label
Untuk mempelajari cara men-deploy workload TPU di GKE, lihat Menjalankan beban kerja yang menampilkan jumlah chip TPU yang tersedia di kumpulan node TPU.
Menjadwalkan error saat men-deploy Pod yang menggunakan TPU di GKE
Masalah berikut terjadi ketika GKE tidak dapat menjadwalkan Pod yang meminta TPU pada node TPU. Misalnya, hal ini dapat terjadi jika beberapa Pod non-TPU sudah dijadwalkan pada node TPU.
Pesan error yang dimunculkan sebagai peristiwa FailedScheduling
di Pod mirip dengan pesan berikut:
Cannot schedule pods: Preemption is not helpful for scheduling.
Error message: 0/2 nodes are available: 2 node(s) had untolerated taint
{google.com/tpu: present}. preemption: 0/2 nodes are available: 2 Preemption is
not helpful for scheduling
Untuk mengatasi masalah ini, lakukan langkah berikut:
Pastikan Anda memiliki setidaknya satu node pool CPU di cluster sehingga Pod penting sistem dapat berjalan di node non-TPU. Untuk mempelajari lebih lanjut, lihat Men-deploy Pod ke node pool tertentu.
Inisialisasi TPU gagal
Masalah berikut terjadi ketika GKE tidak dapat menyediakan workload TPU baru karena kurangnya izin untuk mengakses perangkat TPU.
Pesan errornya mirip dengan yang berikut ini:
TPU platform initialization failed: FAILED_PRECONDITION: Couldn't mmap: Resource
temporarily unavailable.; Unable to create Node RegisterInterface for node 0,
config: device_path: "/dev/accel0" mode: KERNEL debug_data_directory: ""
dump_anomalies_only: true crash_in_debug_dump: false allow_core_dump: true;
could not create driver instance
Untuk mengatasi masalah ini, pastikan Anda menjalankan container TPU dalam mode dilindungi atau meningkatkan ulimit
di dalam container.
Deadlock penjadwalan
Dua atau beberapa penjadwalan Tugas mungkin gagal dalam deadlock. Misalnya, dalam skenario saat semua hal berikut terjadi:
- Anda memiliki dua Tugas (Tugas A dan Tugas B) dengan aturan afinitas Pod.
GKE menjadwalkan slice TPU untuk kedua Tugas dengan topologi TPU
v4-32
. - Anda memiliki dua slice TPU
v4-32
di cluster. - Cluster Anda memiliki kapasitas yang cukup untuk menjadwalkan Tugas dan, secara teori, setiap Tugas dapat dijadwalkan dengan cepat di setiap slice TPU.
- Scheduler Kubernetes menjadwalkan satu Pod dari Tugas A pada satu slice, lalu menjadwalkan satu Pod dari Tugas B di slice yang sama.
Dalam hal ini, dengan mempertimbangkan aturan afinitas Pod untuk Tugas A, scheduler akan mencoba menjadwalkan semua Pod yang tersisa untuk Tugas A dan Tugas B, pada tiap slice TPU. Akibatnya, GKE tidak akan dapat sepenuhnya menjadwalkan Tugas A atau Tugas B. Oleh karena itu, status kedua Tugas akan tetap Tertunda.
Untuk mengatasi masalah ini, gunakan anti-afinitas Pod
dengan cloud.google.com/gke-nodepool
sebagai topologyKey
, seperti ditunjukkan dalam contoh berikut:
apiVersion: batch/v1
kind: Job
metadata:
name: pi
spec:
parallelism: 2
template:
metadata:
labels:
job: pi
spec:
affinity:
podAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
- labelSelector:
matchExpressions:
- key: job
operator: In
values:
- pi
topologyKey: cloud.google.com/gke-nodepool
podAntiAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
- labelSelector:
matchExpressions:
- key: job
operator: NotIn
values:
- pi
topologyKey: cloud.google.com/gke-nodepool
namespaceSelector:
matchExpressions:
- key: kubernetes.io/metadata.name
operator: NotIn
values:
- kube-system
containers:
- name: pi
image: perl:5.34.0
command: ["sleep", "60"]
restartPolicy: Never
backoffLimit: 4
Izin ditolak selama pembuatan cluster di us-central2
Jika Anda mencoba membuat cluster di us-central2
(satu-satunya region tempat TPU v4 tersedia), Anda mungkin akan melihat pesan error yang mirip dengan berikut ini:
ERROR: (gcloud.container.clusters.create) ResponseError: code=403,
message=Permission denied on 'locations/us-central2' (or it may not exist).
Error ini terjadi karena wilayah us-central2
adalah wilayah pribadi.
Untuk mengatasi masalah ini, ajukan kasus dukungan atau hubungi
tim akun Anda untuk meminta us-central2
ditampilkan dalam
project Google Cloud.
Kuota tidak mencukupi selama pembuatan kumpulan node TPU di us-central2
Jika Anda mencoba membuat kumpulan node TPU di us-central2
(satu-satunya wilayah tempat TPU v4 tersedia), Anda mungkin perlu meningkatkan kuota terkait GKE berikut saat pertama kali membuat node pool TPU v4:
- Kuota Persistent Disk SSD (GB) di us-central2: Boot disk setiap node Kubernetes memerlukan ukuran 100 GB secara default. Oleh karena itu, kuota ini harus ditetapkan setidaknya setinggi hasil dari jumlah maksimum node GKE yang Anda perkirakan akan dibuat di
us-central2
dan 100 GB (maximum_nodes
X100 GB
). - Kuota alamat IP yang sedang digunakan di us-central2: Setiap node Kubernetes menggunakan
satu alamat IP. Oleh karena itu, kuota ini harus ditetapkan setidaknya setinggi
jumlah maksimum node GKE yang diperkirakan akan dibuat di
us-central2
.
Subnet tidak ada selama pembuatan cluster GKE
Jika Anda mencoba membuat cluster di us-central2
(satu-satunya region tempat TPU v4 tersedia), Anda mungkin akan melihat pesan error yang mirip dengan berikut ini:
ERROR: (gcloud.container.clusters.create) ResponseError: code=404,
message=Not found: project <PROJECT> does not have an auto-mode subnetwork
for network "default" in region <REGION>.
Jaringan VPC diperlukan untuk menyediakan konektivitas ke node GKE Anda. Namun, di region tertentu seperti us-central2
, subnet default mungkin tidak dibuat, bahkan saat Anda menggunakan jaringan VPC default dalam mode otomatis (untuk pembuatan subnet).
Untuk mengatasi masalah ini, pastikan Anda telah membuat subnet kustom di region tersebut sebelum membuat cluster GKE. Subnet ini tidak boleh tumpang tindih dengan subnet lain yang dibuat di region lain pada jaringan VPC yang sama.