Masalah umum

Halaman ini menjelaskan masalah umum yang mungkin Anda alami saat menggunakan Batch.

Jika memerlukan bantuan lebih lanjut dalam menggunakan Batch, lihat dokumentasi Pemecahan masalah atau Dapatkan dukungan.

Log waktu tunggu tidak menunjukkan apakah waktu tunggu tugas atau runnable telah terlampaui

Jika tugas gagal karena melampaui waktu tunggu, log yang terkait dengan tugas tidak menunjukkan apakah kegagalan disebabkan oleh waktu tunggu tugas yang relevan atau waktu tunggu runnable yang relevan.

Untuk mengatasi masalah ini, tetapkan nilai waktu tunggu yang berbeda untuk tugas dan runnable. Kemudian, Anda dapat mengidentifikasi apakah kegagalan disebabkan oleh melebihi waktu tunggu tugas yang relevan atau dapat dijalankan dengan menggunakan prosedur berikut:

  1. Identifikasi tugas, dapat dijalankan, dan waktu kegagalan waktu tunggu terlampaui.

    1. Melihat log untuk tugas.

    2. Temukan log yang menyebutkan kode keluar waktu tunggu terlampaui, 50005. Log ini memiliki textPayload yang mirip dengan pesan berikut:

      Task task/JOB_UID-group0-TASK_INDEX/0/0 runnable RUNNABLE_INDEX...exitCode 50005
      

      Dari log tersebut, catat TASK_INDEX sebagai tugas gagal, RUNNABLE_INDEX sebagai gagal dijalankan, dan nilai timestamp log sebagai waktu kegagalan waktu tunggu terlampaui.

  2. Identifikasi waktu mulai tugas yang gagal.

    1. Lihat peristiwa status tugas yang gagal.

    2. Temukan peristiwa status yang menyebutkan pesan berikut:

      Task state is updated from ASSIGNED to RUNNING
      

      Dari peristiwa status tersebut, catat kolom eventTime sebagai waktu mulai tugas yang gagal.

  3. Hitung total waktu proses tugas yang gagal, \({failedTaskRunTime}\), dengan menggunakan rumus berikut:

    \[{failedTaskRunTime}={failureTime}-{failedTaskStartTime}\]

    Ganti nilai berikut:

    • \({failureTime}\): waktu kegagalan waktu tunggu terlampaui.
    • \({failedTaskStartTime}\): waktu mulai tugas yang gagal.
  4. Identifikasi waktu tunggu terlampaui:

    • Jika \({failedTaskRunTime}\) cocok dengan waktu tunggu yang dikonfigurasikan untuk tugas yang gagal, waktu tunggu tugas yang gagal itu akan terlampaui dan menyebabkan kegagalan.

    • Jika tidak, waktu tunggu yang Anda konfigurasikan untuk runnable yang gagal akan terlampaui dan menyebabkan kegagalan.

Pekerjaan yang memerlukan reservasi mungkin tertunda atau dicegah

Saat Anda mencoba membuat dan menjalankan tugas yang menggunakan reservasi Compute Engine, Batch mungkin salah menunda atau mencegah tugas berjalan. Secara khusus, Batch mengharuskan project memiliki kuota resource Compute Engine yang memadai bahkan saat kuota resource tersebut digunakan oleh reservasi yang tidak terpakai.

Solusi untuk masalah

Untuk mengatasi masalah ini pada tugas, tambahkan label dengan nama goog-batch-skip-quota-check dan nilai true ke kolom labels tingkat pekerjaan. Label ini menyebabkan Batch melewati verifikasi kuota resource project Anda sebelum mencoba membuat tugas.

Misalnya, untuk mencegah atau menyelesaikan masalah ini pada tugas skrip dasar yang dapat menggunakan reservasi, buat dan jalankan tugas dengan konfigurasi JSON berikut:

{
  "taskGroups": [
    {
      "taskSpec": {
        "runnables": [
          {
            "script": {
              "text": "echo Hello world from task ${BATCH_TASK_INDEX}"
            }
          }
        ]
      },
      "taskCount": 3
    }
  ],
  "allocationPolicy": {
    "instances": [
      {
        VM_RESOURCES
      }
    ],
  },
  "labels": {
    "goog-batch-skip-quota-check": "true"
  },
  "logsPolicy": {
    "destination": "CLOUD_LOGGING"
  }
}

Ganti VM_RESOURCES dengan resource VM yang cocok dengan reservasi yang ingin Anda gunakan untuk tugas.

Untuk mengetahui petunjuk selengkapnya, baca bagian Membuat dan menjalankan tugas yang dapat menggunakan VM yang dicadangkan dan Menentukan label kustom untuk tugas.

Mengidentifikasi masalah

Masalah ini tidak ditunjukkan oleh pesan error tertentu. Sebaliknya, masalah ini dapat terjadi dalam situasi berikut:

  • Jika project Anda mencadangkan semua resource yang memiliki kuotanya, masalah ini akan mencegah tugas apa pun yang menentukan resource tersebut.

    Misalnya, anggaplah project Anda memiliki hal berikut:

    • Kuota maksimum untuk GPU H100 sebanyak 16.
    • Reservasi project tunggal yang tidak digunakan untuk 2 VM a3-highgpu-8g, yang mencadangkan total 16 H100 GPU.

    Dalam skenario ini, masalah ini mencegah project Anda menjadwalkan dan menjalankan tugas apa pun yang dikonfigurasi dengan benar untuk menggunakan GPU H100 yang dicadangkan.

  • Jika project Anda mencadangkan beberapa resource yang kuotanya dimiliki, masalah ini dapat mencegah atau menunda tugas yang menentukan resource tersebut.

    Misalnya, anggaplah project Anda memiliki hal berikut:

    • Kuota maksimum untuk GPU H100 sebanyak 16.
    • Reservasi project tunggal yang belum digunakan untuk 1 VM a3-highgpu-8g, yang memperoleh total 8 GPU H100.
    • VM a3-highgpu-8g yang dikonfigurasi agar tidak menggunakan reservasi apa pun dan terkadang dihapus lalu dibuat ulang. (VM ini menggunakan 8 GPU H100 yang tidak dicadangkan jika ada.)

    Dalam skenario ini, masalah ini hanya memungkinkan project Anda menjadwalkan dan mulai menjalankan tugas apa pun yang dikonfigurasi dengan benar untuk menggunakan GPU H100 yang dicadangkan saat VM a3-highgpu-8g tidak ada.

Tugas mungkin gagal saat menentukan image OS VM Compute Engine (atau kustom) dengan kernel yang sudah tidak update

Tugas mungkin akan gagal jika menentukan OS image VM Compute Engine yang tidak memiliki versi kernel terbaru. Masalah ini juga memengaruhi image kustom apa pun berdasarkan image OS VM Compute Engine. Image publik Compute Engine yang menyebabkan masalah ini tidak mudah diidentifikasi dan dapat berubah kapan saja.

Masalah ini tidak ditunjukkan oleh pesan error tertentu. Sebagai gantinya, pertimbangkan masalah ini jika Anda memiliki tugas yang gagal secara tidak terduga dan menentukan image OS VM Compute Engine atau image kustom serupa.

Untuk mencegah atau mengatasi masalah ini, Anda dapat melakukan hal berikut:

  1. Jika memungkinkan, gunakan Gambar batch atau gambar kustom berdasarkan Gambar batch, yang tidak terpengaruh oleh masalah ini.
  2. Jika Anda tidak dapat menggunakan image Batch, coba image Compute Engine versi terbaru pilihan Anda. Umumnya, image Compute Engine versi yang lebih baru cenderung memiliki versi kernel terbaru daripada versi lama.
  3. Jika versi terbaru image tertentu tidak berfungsi, Anda mungkin perlu mencoba OS lain atau membuat image kustom. Misalnya, jika versi terbaru Debian 11 tidak berfungsi, Anda dapat mencoba membuat image kustom dari VM Compute Engine yang menjalankan Debian 11, dan yang telah Anda update untuk menggunakan versi kernel terbaru.

Masalah ini disebabkan oleh versi kernel yang sudah tidak berlaku di image OS VM yang menyebabkan VM di-reboot. Saat tugas menentukan image OS VM apa pun yang bukan dari Batch atau berdasarkan image Batch, Batch akan menginstal paket yang diperlukan pada VM tugas setelah tugas tersebut dimulai. Paket yang diperlukan dapat bervariasi untuk berbagai tugas dan berubah dari waktu ke waktu, serta mungkin memerlukan image OS VM Anda untuk memiliki versi kernel terbaru. Masalah ini muncul saat mengupdate versi kernel mengharuskan VM untuk dimulai ulang, yang menyebabkan penginstalan paket dan tugas gagal.

Untuk mengetahui informasi selengkapnya tentang image OS VM, lihat Ringkasan lingkungan OS untuk VM tugas.

Tugas yang menggunakan GPU dan image OS VM dengan kernel yang sudah usang mungkin gagal hanya jika menginstal driver secara otomatis

Masalah ini terkait erat dengan Tugas mungkin gagal saat menentukan image OS VM Compute Engine (atau kustom) dengan kernel yang sudah tidak berlaku. Secara khusus, tugas yang menentukan image OS VM Compute Engine (atau kustom) tanpa kernel terbaru dan penggunaan GPU mungkin akan gagal hanya jika Anda mencoba menginstal driver GPU secara otomatis. Untuk tugas ini, Anda juga dapat mengatasi kegagalan hanya dengan menginstal driver GPU secara manual.

Untuk informasi selengkapnya tentang GPU, lihat Membuat dan menjalankan tugas yang menggunakan GPU.