Spesifikasi definisi alur kerja CWL - AWS HealthOmics

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

Spesifikasi definisi alur kerja CWL

Alur kerja yang ditulis dalam Bahasa Alur Kerja Umum, atau CWL, menawarkan fungsionalitas serupa dengan alur kerja yang ditulis dalam WDL dan Alur Berikutnya. Anda dapat menggunakan Amazon S3 atau HealthOmics penyimpanan URIs sebagai parameter input.

Jika Anda menentukan input dalam SecondaryFile dalam sub alur kerja, tambahkan definisi yang sama dalam alur kerja utama.

HealthOmics alur kerja tidak mendukung proses operasi. Untuk mempelajari lebih lanjut tentang proses operasi dalam alur kerja CWL, lihat dokumentasi CWL.

Praktik terbaik adalah menentukan alur kerja CWL terpisah untuk setiap wadah yang Anda gunakan. Kami menyarankan Anda untuk tidak melakukan hardcode entri DockerPull dengan URI ECR Amazon tetap.

Mengkonversi alur kerja CWL untuk digunakan HealthOmics

Untuk mengonversi definisi alur kerja CWL yang ada untuk digunakan HealthOmics, buat perubahan berikut:

  • Ganti semua wadah Docker URIs dengan Amazon URIs ECR.

  • Pastikan bahwa semua file alur kerja dideklarasikan dalam alur kerja utama sebagai input, dan semua variabel didefinisikan secara eksplisit.

  • Pastikan bahwa semua JavaScript kode adalah keluhan mode ketat.

Menyisih dari tugas coba lagi menggunakan omicsRetryOn5xx

HealthOmics mendukung percobaan ulang tugas jika tugas gagal karena kesalahan layanan (kode status HTTP 5XX). Secara default, HealthOmics mencoba hingga dua percobaan ulang dari tugas yang gagal. Untuk informasi selengkapnya tentang coba lagi tugas HealthOmics, lihatTugas Mencoba Ulang.

Untuk memilih keluar dari tugas coba lagi untuk kesalahan layanan, konfigurasikan omicsRetryOn5xx arahan dalam definisi alur kerja. Anda dapat menentukan arahan ini di bawah persyaratan atau petunjuk. Kami merekomendasikan menambahkan arahan sebagai petunjuk untuk portabilitas.

requirements: ResourceRequirement: omicsRetryOn5xx: false hints: ResourceRequirement: omicsRetryOn5xx: false

Persyaratan mengesampingkan petunjuk. Jika implementasi tugas menyediakan persyaratan sumber daya dalam petunjuk yang juga disediakan oleh persyaratan dalam alur kerja terlampir, persyaratan terlampir akan diutamakan.

Jika persyaratan tugas yang sama muncul pada tingkat alur kerja yang berbeda, HealthOmics gunakan entri paling spesifik dari requirements (atauhints, jika tidak ada entri direquirements). Daftar berikut menunjukkan urutan prioritas yang HealthOmics digunakan untuk menerapkan pengaturan konfigurasi, dari prioritas terendah hingga tertinggi:

  • Tingkat alur kerja

  • Tingkat langkah

  • Bagian tugas dari definisi alur kerja

Contoh berikut menunjukkan cara mengkonfigurasi omicsRetryOn5xx direktif di berbagai tingkat alur kerja. Dalam contoh ini, persyaratan tingkat alur kerja mengesampingkan petunjuk tingkat alur kerja. Konfigurasi persyaratan pada tingkat tugas dan langkah mengesampingkan konfigurasi petunjuk.

class: Workflow # Workflow-level requirement and hint requirements: ResourceRequirement: omicsRetryOn5xx: false hints: ResourceRequirement: omicsRetryOn5xx: false # The value in requirements overrides this value steps: task_step: # Step-level requirement requirements: ResourceRequirement: omicsRetryOn5xx: false # Step-level hint hints: ResourceRequirement: omicsRetryOn5xx: false run: class: CommandLineTool # Task-level requirement requirements: ResourceRequirement: omicsRetryOn5xx: false # Task-level hint hints: ResourceRequirement: omicsRetryOn5xx: false

Lingkarkan langkah alur kerja

HealthOmics mendukung perulangan langkah alur kerja. Anda dapat menggunakan loop untuk menjalankan langkah alur kerja berulang kali hingga kondisi tertentu terpenuhi. Ini berguna untuk proses berulang di mana Anda perlu mengulangi tugas beberapa kali atau sampai hasil tertentu tercapai.

Catatan: Fungsionalitas loop membutuhkan CWL versi 1.2 atau yang lebih baru. Alur kerja yang menggunakan versi CWL lebih awal dari 1.2 tidak mendukung operasi loop.

Untuk menggunakan loop dalam alur kerja CWL Anda, tentukan persyaratan Loop. Contoh berikut menunjukkan konfigurasi persyaratan loop:

requirements: - class: "http://commonwl.org/cwltool#Loop" loopWhen: $(inputs.counter < inputs.max) loop: counter: loopSource: result valueFrom: $(self) outputMethod: last

loopWhenBidang mengontrol saat loop berakhir. Dalam contoh ini, loop berlanjut selama penghitung kurang dari nilai maksimum. loopBidang mendefinisikan bagaimana parameter input diperbarui antara iterasi. loopSourceMenentukan output dari umpan iterasi sebelumnya ke iterasi berikutnya. outputMethodBidang diatur untuk last mengembalikan hanya output iterasi akhir ini.

Coba lagi tugas dengan peningkatan memori

HealthOmics mendukung percobaan ulang otomatis kegagalan out-of-memory tugas. Ketika tugas keluar dengan kode 137 (out-of-memory), HealthOmics membuat tugas baru dengan peningkatan alokasi memori berdasarkan pengganda yang ditentukan.

catatan

HealthOmics mencoba kembali out-of-memory kegagalan hingga 3 kali atau sampai alokasi memori mencapai 1536 GiB, batas mana pun yang tercapai terlebih dahulu.

Contoh berikut menunjukkan cara mengkonfigurasi out-of-memory coba lagi:

hints: ResourceRequirement: ramMin: 4096 http://arvados.org/cwl#OutOfMemoryRetry: memoryRetryMultiplier: 2.5

Ketika tugas gagal karena out-of-memory, HealthOmics menghitung alokasi memori coba lagi menggunakan rumus:. previous_run_memory × memoryRetryMultiplier Pada contoh di atas, jika tugas dengan memori 4096 MB gagal, upaya coba lagi menggunakan memori 4096 × 2,5 = 10.240 MB.

memoryRetryMultiplierParameter mengontrol berapa banyak memori tambahan yang dialokasikan untuk upaya coba lagi:

  • Nilai default: Jika Anda tidak menentukan nilai, nilai defaultnya 2 (menggandakan memori)

  • Rentang yang valid: Harus angka positif lebih besar dari1. Nilai yang tidak valid menghasilkan kesalahan validasi 4XX

  • Nilai efektif minimum: Nilai antara 1 dan 1.5 secara otomatis ditingkatkan 1.5 untuk memastikan peningkatan memori yang berarti dan mencegah upaya coba lagi yang berlebihan

Contoh

Berikut ini adalah contoh alur kerja yang ditulis dalam CWL.

cwlVersion: v1.2 class: Workflow inputs: in_file: type: File secondaryFiles: [.fai] out_filename: string docker_image: string outputs: copied_file: type: File outputSource: copy_step/copied_file steps: copy_step: in: in_file: in_file out_filename: out_filename docker_image: docker_image out: [copied_file] run: copy.cwl

File berikut mendefinisikan copy.cwl tugas.

cwlVersion: v1.2 class: CommandLineTool baseCommand: cp inputs: in_file: type: File secondaryFiles: [.fai] inputBinding: position: 1 out_filename: type: string inputBinding: position: 2 docker_image: type: string outputs: copied_file: type: File outputBinding: glob: $(inputs.out_filename) requirements: InlineJavascriptRequirement: {} DockerRequirement: dockerPull: "$(inputs.docker_image)"

Berikut ini adalah contoh alur kerja yang ditulis dalam CWL dengan persyaratan GPU.

cwlVersion: v1.2 class: CommandLineTool baseCommand: ["/bin/bash", "docm_haplotypeCaller.sh"] $namespaces: cwltool: http://commonwl.org/cwltool# requirements: cwltool:CUDARequirement: cudaDeviceCountMin: 1 cudaComputeCapability: "nvidia-tesla-t4" cudaVersionMin: "1.0" InlineJavascriptRequirement: {} InitialWorkDirRequirement: listing: - entryname: 'docm_haplotypeCaller.sh' entry: | nvidia-smi --query-gpu=gpu_name,gpu_bus_id,vbios_version --format=csv inputs: [] outputs: []