

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Konfigurasi sumber daya lanjutan
<a name="advanced-resource-configuration"></a>

Dengan direk **omicsResourceFallbackOrder** tif Anda dapat mendeklarasikan daftar sumber daya yang diurutkan (misalnya, akselerator dan CPU) profil untuk tugas dalam alur kerja Anda. Anda menentukan arahan ini di tingkat tugas. HealthOmics mencari setiap profil dalam urutan yang Anda tentukan untuk ketersediaan untuk memesan. Jika kapasitas tidak tersedia dalam batas waktu tunggu, HealthOmics pindah ke profil sumber daya berikutnya dalam daftar.

Ini berguna ketika kapasitas akselerator pilihan Anda (misalnya, G6e dengan`nvidia-l40s`) tidak tersedia dan Anda lebih suka kembali ke jenis akselerator yang berbeda atau ke CPU daripada gagal menjalankan.

## Cara kerjanya
<a name="advanced-resource-configuration-how-it-works"></a>

1. Anda menentukan daftar profil sumber daya yang diurutkan dalam direk **omicsResourceFallbackOrder** tif.

1. Pada waktu berjalan, HealthOmics mencoba untuk mencadangkan kapasitas untuk profil pertama dalam daftar.

1. Jika kapasitas tidak tersedia dalam periode waktu tunggu, HealthOmics pindah ke profil berikutnya.

1. Tugas berjalan pada profil mana pun yang berhasil terlebih dahulu.

1. Jika semua profil dalam daftar gagal, tugas gagal dengan alasan`ALL_PROFILES_INSTANCE_RESERVATION_FAILED`. Tidak ada percobaan ulang mesin yang akan diterapkan ketika semua profil tidak tersedia.

**catatan**  
**omicsResourceFallbackOrder**menggantikan **omicsResourceWaitTimeoutInMin** bidang tugas biasa **acceleratorType****acceleratorCount**,**cpu**,**memory**, dan. Ini tidak boleh ditetapkan di tingkat atas ketika arahan hadir.

## Kasus penggunaan
<a name="advanced-resource-configuration-use-cases"></a>


| Skenario | Deskripsi | 
| --- | --- | 
| Fallback GPU ke GPU  | Daftar jenis akselerator (atau GPU) dalam urutan prioritas. Misalnya, coba nvidia-l40s dulu, lalu kembali kenvidia-l4. Tidak ada perubahan perintah yang diperlukan jika beban kerja sama di seluruh jenis akselerator. | 
| Fallback GPU ke CPU  | Tambahkan profil akhir yang menghilangkan CPU-only fall acceleratorType back. Gunakan variabel AWS\_HEALTHOMICS\_RESOURCE\_TYPE lingkungan untuk mengcabang perintah berdasarkan jenis sumber daya. | 

## Task-level bidang runtime
<a name="advanced-resource-configuration-runtime-fields"></a>

Saat menggunakan**omicsResourceFallbackOrder**, bidang runtime tingkat tugas dibagi menjadi dua set:
+ **Per-profile fields ** (**acceleratorType**,**acceleratorCount**,, **cpu****memory**,**omicsResourceWaitTimeoutInMin**) — dapat dikonfigurasi secara independen untuk setiap profil dalam daftar.
+ **Bidang bersama ** (semua bidang runtime lainnya, seperti**docker**,**maxRetries**) — atur sekali di tingkat atas dan terapkan cara yang sama ke setiap profil.

## Contoh WDL
<a name="advanced-resource-configuration-wdl-example"></a>

Tugas WDL berikut mencari terlebih `nvidia-l40s` dahulu (menunggu hingga 45 menit untuk kapasitas), kemudian `nvidia-l4` (jendela tunggu default), lalu kembali ke CPU-only profil (32 vCPU, 128 GiB) jika tidak ada jenis akselerator yang tersedia.

```
task align {
  command <<<
    # Branch based on which resource type was allocated
    if [ "$AWS_HEALTHOMICS_RESOURCE_TYPE" = "cpu" ]; then
      sentieon bwa mem -t 32 ~{reference} ~{fastq}
    else
      pbrun fq2bam --ref ~{reference} --in-fq ~{fastq}
    fi
  >>>

  runtime {
    docker: "my-registry/align-multi-arch:latest"
    maxRetries: 2

    omicsResourceFallbackOrder: [
      {"acceleratorType": "nvidia-l40s", "acceleratorCount": 1,
       "cpu": 8, "memory": "32 GiB",
       "omicsResourceWaitTimeoutInMin": 45},

      {"acceleratorType": "nvidia-l4", "acceleratorCount": 1,
       "cpu": 8, "memory": "32 GiB"},

      {"cpu": 32, "memory": "128 GiB"}
    ]
  }
}
```

Dalam contoh ini, **AWS\_HEALTHOMICS\_RESOURCE\_TYPE** memberitahu perintah jalur sumber daya mana yang dipilih (misalnya, `"nvidia-l40s"` atau`"cpu"`).

**catatan**  
Gambar Docker harus mendukung jalur kode akselerator dan CPU jika urutan fallback Anda berisi profil CPU. Pastikan wadah Anda menyertakan perkakas yang diperlukan untuk semua profil sumber daya dalam daftar.

## Per-profile referensi bidang
<a name="advanced-resource-configuration-field-reference"></a>

Setiap entri dalam **omicsResourceFallbackOrder** daftar adalah peta yang menggambarkan satu profil sumber daya. Semua bidang bersifat opsional; profil dapat berupa spesifikasi parSIAL. Setiap profil harus menggunakan kunci yang dikutip (string).


| Bidang | Tipe | Default saat dihilangkan | Catatan | 
| --- | --- | --- | --- | 
| acceleratorType | String | Ketika tidak ditentukan, profil dianggap sebagai CPU | Harus salah satu dari 7 jenis akselerator yang didukung. Lihat [Akselerator tugas dalam definisi al HealthOmics ur kerja](task-accelerators.md). Hilangkan bidang ini untuk menentukan CPU-only profil. Untuk profil CPU, jangan atur ke"". | 
| acceleratorCount | Bilangan Bulat | Bidang tidak acceleratorType ada saat juga tidak ada | Harus ditentukan bersama denganacceleratorType. Profil tidak dapat memiliki satu tanpa yang lain. | 
| cpu | Integer atau Float | 1 vCPU, atau default tipe instance GPU jika profil GPU menghilangkannya | Dibulatkan ke seluruh vCPU terdekat (minimal 1). Dukungan fraksional yang sama dengan arahan tingkat atasruntime.cpu. | 
| memory | String (misalnya,"32 GiB") | 1 GiB, atau default tipe instance GPU jika profil GPU menghilangkannya | Format yang sama dengan direktif tingkat atasruntime.memory. | 
| omicsResourceWaitTimeoutInMin | Bilangan Bulat | 20 menit untuk bundel akselerator GPU Tunggal dan 30 menit untuk bundel akselerator multi-GPU. Ini juga merupakan nilai minimum yang direkomendasikan. | Tidak ada batas atas. Mengontrol berapa lama HealthOmics pencarian untuk satu profil sebelum pindah ke profil berikutnya. Lihat [Perilaku waktu habis](#advanced-resource-configuration-timeout-behavior). | 

**catatan**  
Bidang yang dihilangkan mengambil nilai default, bukan nilai yang diwarisi dari profil sebelumnya dalam daftar. Bidang yang ditinggalkan dari profil mengambil default terdokumentasi (seperti yang diberikan dalam tabel di atas), bukan nilai yang disalin dari profil sebelumnya dalam daftar.

## Perilaku waktu habis
<a name="advanced-resource-configuration-timeout-behavior"></a>

**omicsResourceWaitTimeoutInMin**mengontrol berapa lama HealthOmics menunggu kapasitas akselerator pada profil tertentu sebelum maju ke yang berikutnya.
+ **Per-profileBukan global. ** Setiap profil akselerator dapat menentukan batas waktunya sendiri. Konfigurasikan penantian yang lebih lama untuk akselerator kelas atas yang disukai dan tunggu yang lebih pendek untuk jenis fallback.
+ **Minimum 20 menit yang disarankan. ** Nilai di bawah 20 menit (30 untuk bundel multi-GPU) diterima tetapi menghasilkan peringatan validasi.
+ **Waktu tunggu maju, bukan gagal. ** Ketika batas waktu berlalu, HealthOmics pindah ke profil berikutnya - tugas tidak gagal. Kegagalan hanya terjadi setelah semua profil habis.
+ **Tidak berlaku untuk CPU-only profil. ** Profil CPU tidak memiliki batasan kapasitas. Hilangkan **omicsResourceWaitTimeoutInMin** pada profil CPU akhir.
+ **Percobaan ulang menerima jendela batas waktu baru. ** Setiap percobaan ulang OOM atau kesalahan layanan memulai **omicsResourceWaitTimeoutInMin** jendela lengkapnya sendiri pada profil yang sama, daripada mewarisi waktu yang sudah dihabiskan oleh upaya sebelumnya.

## Variabel lingkungan
<a name="advanced-resource-configuration-environment-variables"></a>

HealthOmics menetapkan variabel lingkungan berikut dalam wadah tugas sehingga perintah Anda dapat bercabang berdasarkan profil sumber daya yang dialokasikan:


| Variabel | Nilai | Contoh nilai | 
| --- | --- | --- | 
| AWS\_HEALTHOMICS\_RESOURCE\_TYPE | Profil aktif, atau "cpu" untuk CPU-only profil. acceleratorType | "nvidia-l40s", "nvidia-l4", "cpu" | 

## Kriteria validasi
<a name="advanced-resource-configuration-validation"></a>

HealthOmics memvalidasi yang berikut pada waktu pembuatan alur kerja dan memeriksa ulang pada runtime tugas. Semua aturan menolak alur kerja atau tugas kecuali dinyatakan sebaliknya.

1. **Tidak dapat mencampur dengan arahan sumber daya individual. ** Jika **omicsResourceFallbackOrder** ditentukan, tingkat atas**acceleratorType**,,**acceleratorCount**, **cpu****memory**, dan tidak **omicsResourceWaitTimeoutInMin** boleh ditentukan dalam tugas yang sama.

1. **Harus ada daftar. ****omicsResourceFallbackOrder**harus ditulis sebagai array profil.

1. **Tidak bisa kosong. ** Daftar harus berisi setidaknya satu profil.

1. **Diperlukan kunci yang dikutip. ** Setiap nama bidang harus berupa string yang dikutip, misalnya`{"acceleratorType": "nvidia-l4", "acceleratorCount": 1}`. Tombol bareword gagal divalidasi.

1. **Non-empty profil. ** Profil kosong (`{}`) tidak diperbolehkan.

1. ****acceleratorType**dan **acceleratorCount** pergi bersama. ** Profil yang menetapkan satu harus mengatur yang lain. Profil CPU harus menghilangkan keduanya.

1. **Hanya jenis akselerator yang didukung. ****acceleratorType**harus tipe akselerator yang didukung atau dihilangkan (profil CPU). String `""` kosong tidak diterima.

1. **Batas waktu tunggu minimum. ****omicsResourceWaitTimeoutInMin**nilai yang disarankan adalah ≥ 20 menit (≥ 30 untuk bundel multi-GPU).

1. **Profil duplikat (hanya peringatan). ** Profil duplikat diperbolehkan tetapi menghasilkan peringatan. Pertimbangkan untuk meningkatkan **omicsResourceWaitTimeoutInMin** profil sebelumnya sebagai gantinya.

1. **Bidang yang tidak dikenali ditolak. ** Hanya lima bidang per profil yang tercantum di atas yang diizinkan.

1. **Jenis yang benar. ** Misalnya, **cpu** harus angka, bukan string.

1. **Paling banyak satu profil CPU. ** Hanya satu profil yang dihilangkan **acceleratorType** diizinkan.

1. **Maksimal 10 profil per tugas. **

## Interaksi dengan percobaan ulang
<a name="advanced-resource-configuration-retries"></a>

Untuk kesalahan Out-of-Memory (OOM) dan layanan (tidak termasuk 5xx`ALL_PROFILES_INSTANCE_RESERVATION_FAILED`), coba HealthOmics lagi tugas sebagai berikut:
+ Percobaan ulang terjadi dalam profil aktif saat ini yang sebelumnya berhasil dipesan.
+ Percobaan ulang tidak pernah maju ke profil berikutnya dalam urutan fallback.
+ Percobaan ulang yang melelahkan **maxRetries** gagal tugas.

Untuk informasi selengkapnya tentang percobaan ulang tugas di HealthOmics, lihat[Tugas Mencoba Ulang](monitoring-runs.md#run-status-task-retries).

**catatan**  
Jika semua profil habis pada upaya mesin pertama tanpa reservasi instance, mesin gagal dalam tugas dan kemudian dijalankan dengan status`ALL_PROFILES_INSTANCE_RESERVATION_FAILED`. Bahkan jika Anda telah mengonfigurasi percobaan ulang, HealthOmics tidak mencoba lagi untuk kode kesalahan ini. Sebaiknya sesuaikan dengan **omicsResourceWaitTimeoutInMin** tepat.

## Praktik terbaik
<a name="advanced-resource-configuration-best-practices"></a>
+ **Hindari jenis bundel multi-GPU dalam urutan fallback. ** Jenis akselerator yang menjangkau beberapa keluarga instance (misalnya,`nvidia-t4-a10g-l4`) tidak disarankan di dalamnya**omicsResourceFallbackOrder**. Gunakan tipe keluarga tunggal sebagai gantinya. Untuk detail tentang jenis akselerator yang tersedia, lihat[Akselerator tugas dalam definisi al HealthOmics ur kerja](task-accelerators.md).
+ **Tetapkan batas waktu tunggu yang sesuai. ** Untuk profil akselerator prioritas tinggi, tingkatkan **omicsResourceWaitTimeoutInMin** untuk memberikan HealthOmics lebih banyak waktu untuk menemukan kapasitas.
+ **Tempatkan profil CPU terakhir. ** Jika Anda menyertakan CPU-only fallback, itu harus menjadi entri terakhir sehingga akselerator lebih disukai jika tersedia.
+ **Gunakan gambar kontainer multi-arsitektur. ** Saat menggunakan fallback GPU ke CPU, pastikan image Docker Anda mendukung keduanya GPU-accelerated dan jalur CPU-only kode.

## Batasan
<a name="advanced-resource-configuration-limitations"></a>
+ **omicsResourceFallbackOrder**tidak didukung dalam **scatter** blok. Ini hanya tersedia di tingkat tugas.
+ Hanya WDL yang didukung pada tanggal peluncuran GA. Dukungan Nextflow dan CWL direncanakan.
+ Instance-type nama (misalnya,`omics.g6e.4xlarge`) tidak diterima sebagai nilai sumber daya. Anda harus menggunakan sintaks bidang per profil yang dijelaskan di halaman ini.