View a markdown version of this page

Penyimpanan sementara untuk tugas alur kerja HealthOmics - AWS HealthOmics

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

Penyimpanan sementara untuk tugas alur kerja HealthOmics

HealthOmics menyediakan penyimpanan sementara untuk tugas alur kerja menggunakan direktori/tmp. Penyimpanan ini bersifat sementara dan unik untuk setiap tugas dalam alur kerja. HealthOmics mengalokasikan 16 GiB penyimpanan sementara ke setiap instance tugas secara default. Anda dapat meningkatkan jumlah penyimpanan sementara yang dialokasikan untuk tugas individual dalam definisi alur kerja Anda, hingga maksimum 3.072 GiB per tugas. Semua data yang disimpan /tmp dienkripsi saat istirahat.

Manfaat utama

  • Eksekusi tugas yang lebih cepat: Penyimpanan sementara dapat meningkatkan kinerja berjalan dengan mengurangi sistem file bersama. I/O

  • Kinerja yang dapat diprediksi: Tugas tidak bersaing dengan tugas lain yang berjalan secara bersamaan untuk I/O bandwidth, mengurangi variabilitas dan pelambatan yang terkait dengan sistem file jaringan bersama.

  • Biaya lebih rendah: Eksekusi tugas yang lebih cepat secara langsung mengurangi waktu dan biaya komput I/O asi untuk tugas terikat yang /tmp digunakan. Untuk menjalankan menggunakan penyimpanan statis run, ini dapat mengurangi jumlah penyimpanan run yang disediakan yang Anda butuhkan. Berjalan dinamis tidak memerlukan perubahan.

Cara kerja penyimpanan fana

Saat Anda mengaktifkan penyimpanan sementara, HealthOmics pasang volume penyimpanan lokal khusus di /tmp untuk setiap instance tugas alur kerja. Penyimpanan sementara dimaksudkan untuk file sementara yang dihasilkan selama eksekusi tugas. Volume penyimpanan sementara selalu dihapus ketika tugas berakhir. Data yang ditulis tidak /tmp dipertahankan, diekspor, atau dapat diakses oleh tugas lain atau proses selanjutnya.

Dimana alur kerja menulis file sementara

Alur kerja mendapat manfaat dari penyimpanan sementara ketika proses tugas langsung ke awal. I/O /tmp Bahasa alur kerja bioinformatika menggunakan /tmp direktori (dan$TMP, variabel $TMPDIR lingkungan) untuk file perantara sementara berumur pendek selama pelaksanaan tugas. Pastikan perintah tugas Anda belum dipetakan $TMPDIR ke lokasi lain.

Proses tugas alur kerja yang menulis untuk /tmp secara otomatis menggunakan penyimpanan sementara saat diaktifkan, tanpa memerlukan perubahan alur kerja. Alur kerja yang tidak secara eksplisit mengarahkan proses scratch ke /tmp akan menulis data scratch ke direktori kerja pada sistem file bersama yang digunakan untuk menjalankan penyimpanan, meskipun alat yang digunakan mungkin memanfaatkan /tmp penyimpanan sementara.

Enkripsi saat diam

Semua penyimpanan sementara dienkripsi saat diam menggunakan kunci yang dikelola layanan. AWS KMS Instans komputasi yang dipercepat dienkripsi perangkat keras dengan kunci per volume unik yang dihancurkan saat instance dihentikan.

Izin

HealthOmics mengelola lampiran dan siklus hidup volume penyimpanan sementara atas nama Anda. Tidak ada izin IAM tambahan yang diperlukan dalam peran eksekusi tugas Anda.

Mengaktifkan penyimpanan sementara

Anda dapat mengarahkan scratch I/O ke penyimpanan lokal dengan meny scratchStorageMode etel di StartRun API. Peng scratchStorageMode aturan ini hanya berlaku untuk instans CPU dan berlaku untuk semua tugas dalam proses tersebut.

scratchStorageModemenentukan di mana alur kerja Anda menulis data awal. Kemungkinan nilai:

  • LOCAL— Penyimpanan sementara ditempatkan pada disk lokal. Scratch I/O memiliki IOPS dan throughput khusus.

  • SHARED- Sistem file bersama digunakan (default). Scratch I/O bersaing dengan direktori kerja.

Untuk informasi selengkapnya, lihat Mulailah berlari HealthOmics.

catatan

Tugas GPU selalu menggunakan penyimpanan sementara NVMe lokal untuk data awal, dan scratchStorageMode selalu LOCAL untuk tugas GPU.

Bergabunglah dengan penyimpanan sementara

Untuk mengaktifkan penyimpanan sementara untuk menjalankan, setel scratchStorageMode ke LOCAL saat Anda memulai menjalankan.

aws omics start-run \ --workflow-id workflow-id \ --role-arn arn:aws:iam::123456789012:role/OmicsServiceRole \ --output-uri s3://amzn-s3-demo-bucket/output-folder/ \ --parameters file:///path/to/parameters.json \ --scratch-storage-mode LOCAL

Untuk proses batch, scratchStorageMode masukkandefaultRunSetting. Pengaturan berlaku untuk setiap proses dalam batch.

aws omics start-run-batch \ --batch-name "my-batch" \ --default-run-setting '{ "workflowId": "workflow-id", "roleArn": "arn:aws:iam::123456789012:role/OmicsServiceRole", "outputUri": "s3://amzn-s3-demo-bucket/output-folder/", "storageType": "DYNAMIC", "parameters": {"referenceUri": "s3://amzn-s3-demo-bucket/reference.fasta"}, "scratchStorageMode": "LOCAL" }' \ --batch-run-settings '{ "inlineSettings": [ { "runSettingId": "sample-A", "parameters": {"inputUri": "s3://amzn-s3-demo-bucket/sampleA.fastq"} }, { "runSettingId": "sample-B", "parameters": {"inputUri": "s3://amzn-s3-demo-bucket/sampleB.fastq"} } ] }'

Memilih keluar dari penyimpanan sementara

Untuk menonaktifkan penyimpanan sementara untuk proses tertentu (misalnya, untuk mengisolasi kegagalan), set scratchStorageMode el ke. SHARED

aws omics start-run \ --workflow-id workflow-id \ --role-arn arn:aws:iam::123456789012:role/OmicsServiceRole \ --output-uri s3://amzn-s3-demo-bucket/output-folder/ \ --scratch-storage-mode SHARED

Bila scratchStorageMode yaSHARED, semua disk dan arahan setara dalam definisi alur kerja diabaikan dan /tmp didukung oleh sistem file bersama. Pengaturan ini hanya berlaku untuk instans CPU. Tugas GPU selalu menggunakan penyimpanan sementara NVMe lokal dan tidak dapat dipilih keluar.

Periksa mode efektif

Penyimpanan sementara dinonaktifkan secara default. Ketika scratchStorageMode dihilangkan dari StartRun permintaan, scratchStorageMode disetel ke SHARED (default).

scratchStorageModehanya dikembalikan dalam GetRun respons jika secara eksplisit diteruskan dalam StartRun permintaan. SHAREDadalah nilai default jika dihilangkan. Panggil GetRun untuk mengonfirmasi mode penyimpanan yang efektif untuk menjalankan.

aws omics get-run --id run-id

Alokasi penyimpanan default

Alokasi penyimpanan sementara default adalah 16 GiB per tugas untuk semua tipe Standar, Komputasi, dan instans. Memory-optimized Anda tidak perlu menentukan direktif disk untuk menerima default ini. Untuk mengkonfigurasi penyimpanan tambahan, gunakan direk disk tif. Anda dapat meningkatkan jumlah penyimpanan sementara yang dialokasikan untuk tugas individual dalam definisi alur kerja Anda, hingga maksimum 3.072 GiB per tugas. Anda ditagih untuk penyimpanan di atas standar 16 GiB.

Penyimpanan sementara dapat dikonfigurasi dengan penambahan 16 GiB. Untuk informasi selengkapnya, lihat Ukuran yang didukung.

Penyimpanan sementara untuk instans komputasi yang dipercepat

Kapasitas penyimpanan instans GPU ditetapkan per jenis instans dan disediakan tanpa biaya tambahan.

Tugas GPU selalu menggunakan penyimpanan sementara NVMe lokal. Peng scratchStorageMode aturan aktif StartRun tidak berlaku untuk tugas GPU dan menyetel nilai ini ke tidak SHARED akan berpengaruh pada instans GPU. Kapasitas tetap per jenis instans dan tidak dapat disesuaikan menggunakan direk disk tif. Kapasitas NVMe ditentukan sebelumnya oleh jenis instance yang dipilih untuk tugascpu,memory, dan acceleratorType persyaratan.

Size GPU vCPU Memori (GiB) G4dn NVMe (T4) G5 NVMe (A10G) G6 NVMe (L4) G6e NVMe (L40S)
xlarge1416125 GiB250 GiB250 GiB250 GiB
2xlarge1832225 GiB450 GiB450 GiB450 GiB
4xlarge11664225 GiB600 GiB600 GiB600 GiB
8xlarge132128900 GiB900 GiB900 GiB900 GiB
12xlarge448192900 GiB3.800 GiB3.760 GiB3.800 GiB
16xlarge164256900 GiB1.900 GiB1.880 GiB1.900 GiB
24xlarge496384—3.800 GiB3.760 GiB3.800 GiB

Mengkonfigurasi ukuran penyimpanan sementara

Bila scratchStorageMode disetel keLOCAL, Anda dapat meminta peningkatan penyimpanan sementara per tugas menggunakan arahan (atau setara) dalam definisi alur kerja Anda. disk HealthOmics memperlakukan disk arahan sebagai petunjuk dan menyediakan volume yang dibulatkan ke 16 GiB berikutnya. Penggunaan direktif disk tidak mempengaruhi pemilihan tipe instance. Jenis instance dipilih hanya berdasarkancpu,memory, danacceleratorType. Untuk informasi selengkapnya, lihat Sumber daya tugas dalam definisi HealthOmics alur kerja.

Jika tidak disk ada direktif, tugas menerima default 16 GiB. Tugas tidak boleh memiliki kurang dari penyimpanan sementara default.

Anda tidak perlu mengukur penyimpanan sementara Anda untuk gambar wadah yang ditarik, yang diperhitungkan secara terpisah. Untuk informasi selengkapnya, lihat Gambar kontainer untuk alur kerja pribadi.

Kapan menggunakan direktif disk

Gunakan direk disk tif dalam definisi tugas Anda jika penyimpanan sementara default untuk jenis instans yang Anda pilih tidak cukup untuk persyaratan tugas Anda. Misalnya, ketika tugas menulis volume besar data ke/tmp.

Kasus penggunaan umum untuk peningkatan penyimpanan sementara

  1. RNA-Seq Deteksi Fusi: RNA-seq alur kerja menghasilkan BAM menengah yang besar dan proses tugas sering membutuhkan FastQ mentah dan output yang selaras untuk hadir secara bersamaan, membutuhkan cakram awal yang besar (misalnya, 512 GiB per tugas).

  2. Perakitan Genom De Novo: Long-read alur kerja perakitan membutuhkan volume awal yang besar untuk memproses pembacaan mentah dan artefak perakitan sementara yang berulang kali ditulis ulang dan diatur ulang sebelum output. Tugas-tugas ini intensif memori dan disk, terkadang membutuhkan beberapa TiB penyimpanan sementara.

  3. Pemrosesan panggilan varian/BAM: Alu r kerja pemanggilan varian memerlukan penyimpanan awal yang substansif untuk langkah-langkah penyelarasan dan penyortiran yang berulang kali membaca dan menulis ulang file BAM atau CRAM besar. Kebutuhan penyimpanan sementara biasanya ratusan GiB.

Sintaks direktif oleh mesin

Tabel berikut menunjukkan direktif yang setara untuk setiap bahasa alur kerja.

Engine Direktif Contoh
WDL 1.1 disks disks: "/tmp 700 GiB"
Alur Berikutnya disk disk '700 GB'
CWL tmpdirMin tmpdirMin: 716800(nilai dalam MiB)

Contoh berikut menunjukkan cara mengkonfigurasi tugas yang meminta 700 GiB penyimpanan sementara. HealthOmics membulatkan ini ke tingkat 704 GiB.

WDL
task sort_bam { runtime { cpu: 16 disks: "700 GiB" } command <<< samtools sort -T /tmp/sort_buffer ~{input_bam} -o ~{output_bam} >>> }
Nextflow
process sort_bam { disk '700 GB' script: """ samtools sort -T /tmp/sort_buffer ${input} -o ${output} """ }
CWL
requirements: ResourceRequirement: tmpdirMin: 716800 # 700 GiB expressed in MiB

Untuk informasi lebih lanjut tentang sintaks direktif yang didukung, lihat Spesifikasi definisi alur kerja WDL danSpesifikasi definisi alur kerja Nextflow.

Contoh: ukuran disk berbasis ekspresi

Alih-alih ukuran tetap, Anda dapat mengatur direk disk tif ke ekspresi yang dievaluasi mesin alur kerja untuk setiap tugas saat runtime. Proses Nextflow berikut menggunakan penutupan yang menskalakan permintaan dengan nomor percobaan tugas. Jika tugas gagal karena alasan apa pun dan Nextflow mencobanya lagi, percobaan ulang meminta volume yang lebih besar.

process sort_bam { disk { 200.GB * task.attempt } errorStrategy 'retry' maxRetries 2 script: """ samtools sort -T /tmp/sort_buffer ${input} -o ${output} """ } // First attempt requests 200 GiB (provisioned at the 208 GiB tier) // Second attempt requests 400 GiB (provisioned at the 400 GiB tier)

Mesin alur kerja mengevaluasi ekspresi untuk setiap upaya tugas. HealthOmics kemudian membulatkan ukuran yang diselesaikan hingga kenaikan 16 GiB berikutnya.

catatan

Karena mesin menyelesaikan ekspresi saat runtime, HealthOmics tidak dapat memeriksa ukuran diCreateWorkflow. HealthOmics membatasi ukuran yang dievaluasi di atas 3.072 GiB saat tugas dimulai. Untuk informasi selengkapnya, lihat Ukuran yang didukung.

Alat bioinformatika umum dan penyimpanan sementara

Banyak alat bioinformatika menulis file sementara besar selama eksekusi. Ketika scratchStorageMode disetel keLOCAL, arahkan alat-alat ini untuk digunakan /tmp sehingga scratch I/O masuk ke volume lokal cepat alih-alih sistem file yang dijalankan bersama. Contoh berikut menunjukkan bendera yang relevan untuk alat yang umum digunakan.

WDL
task sort_bam { runtime { cpu: 16 disks: "700 GiB" } command <<< # samtools: -T sets the temp-file prefix samtools sort -T /tmp/sort_buffer ~{input_bam} -o ~{sorted_bam} # GATK / Picard: --TMP_DIR flag (older Picard uses TMP_DIR=/tmp) gatk MarkDuplicates -I ~{sorted_bam} -O ~{output_bam} --TMP_DIR /tmp # STAR: --outTmpDir (path must not pre-exist; STAR creates it) STAR --runThreadN 16 --readFilesIn ~{reads} --outTmpDir /tmp/star_tmp --outFileNamePrefix out_ # bcftools sort: -T / --temp-dir bcftools sort -T /tmp ~{vcf} -o ~{output_vcf} # GNU sort: -T / --temporary-directory sort -T /tmp ~{big_table} -o ~{sorted_table} >>> } # HealthOmics rounds 700 GiB up to the 704 GiB tier
Nextflow
process sort_bam { disk '700 GB' script: """ # samtools: -T sets the temp-file prefix samtools sort -T /tmp/sort_buffer input.bam -o sorted.bam # GATK / Picard: --TMP_DIR flag (older Picard uses TMP_DIR=/tmp) gatk MarkDuplicates -I sorted.bam -O dedup.bam --TMP_DIR /tmp # STAR: --outTmpDir (path must not pre-exist; STAR creates it) STAR --runThreadN 16 --readFilesIn reads.fastq --outTmpDir /tmp/star_tmp --outFileNamePrefix out_ # bcftools sort: -T / --temp-dir bcftools sort -T /tmp input.vcf -o sorted.vcf # GNU sort: -T / --temporary-directory sort -T /tmp big_table.tsv -o sorted_table.tsv """ } // HealthOmics rounds 700 GB up to the 704 GiB tier
CWL
class: CommandLineTool cwlVersion: v1.2 requirements: ResourceRequirement: coresMin: 16 tmpdirMin: 716800 # 700 GiB expressed in MiB baseCommand: [bash, -c] arguments: - | set -euo pipefail # samtools: -T sets the temp-file prefix samtools sort -T /tmp/sort_buffer input.bam -o sorted.bam # GATK / Picard: --TMP_DIR flag (older Picard uses TMP_DIR=/tmp) gatk MarkDuplicates -I sorted.bam -O dedup.bam --TMP_DIR /tmp # STAR: --outTmpDir (path must not pre-exist; STAR creates it) STAR --runThreadN 16 --readFilesIn reads.fastq --outTmpDir /tmp/star_tmp --outFileNamePrefix out_ # bcftools sort: -T / --temp-dir bcftools sort -T /tmp input.vcf -o sorted.vcf # GNU sort: -T / --temporary-directory sort -T /tmp big_table.tsv -o sorted_table.tsv

Ukuran yang didukung

Ukuran yang diminta dibulatkan ke kenaikan 16 GiB terdekat, mulai dari default 16 GiB (16, 32, 48, 64,... hingga 3.072 GiB). Ukuran maksimum yang didukung adalah 3.072 GiB per tugas.

Jika ukuran yang diminta melebihi 3.072 GiB, menyediakan 3.0 HealthOmics 72 GiB dan menulis peringatan ke log run. Tugas tidak secara otomatis gagal.

catatan

Untuk arahan berbasis ekspresi disk — seperti penutupan Nextflow atau ekspresi WDL seperti disks: ceil(size(input_bam, "GiB") * 2.5) — nilainya dievaluasi saat runtime, bukan pada. CreateWorkflow Jika ukuran yang dievaluasi melebihi 3.072 GiB, tugas gagal saat runtime dan biaya komputasi yang dikeluarkan hingga saat itu akan dikenakan biaya. Sebagai contoh, lihat Contoh: ukuran disk berbasis ekspresi.

Bentuk disk WDL yang didukung

Untuk daftar lengkap formulir WDL yang disks diterima, lihatBentuk disk WDL yang didukung.

Menggunakan direktif Scratch Nextflow

Untuk alur kerja Nextflow, Anda dapat menggunakan direktif untuk scratch mengontrol di mana proses menulis file kerja sementara. Untuk informasi tentang nilai yang didukung dan penggunaan yang disarankan dengan penyimpanan sementara, lihat. Menggunakan penyimpanan gores secara efisien di Nextflow

Memantau penyimpanan sementara

HealthOmics menulis metrik penyimpanan sementara per tugas ke CloudWatch log manifes. Metrik mencakup data penyimpanan sementara per tugas dengan ukuran volume yang disediakan (sebagaiscratchStorageReservedGiB) dan penggunaan (sebagaiscratchStorageUtilizedGiB) untuk setiap tugas. Tinjau log manifes untuk menentukan apakah tugas sudah terlalu atau kurang disediakan tanpa menanyakan secara langsung. CloudWatch Untuk detail tentang log manifes, lihatPemantauan HealthOmics dengan CloudWatch Log.

Bagaimana penyimpanan sementara ditagih

Anda hanya ditagih untuk penyimpanan sementara yang disediakan di atas alokasi default. Permintaan di atas default dalam direk disk tif Anda dibulatkan ke tingkat yang didukung terdekat.

Instans GPU memiliki penyimpanan sementara yang sudah diperhitungkan dalam harga misalnya. Tidak ada biaya tambahan untuk penyimpanan sementara pada tugas GPU.

Pertimbangan dan batasan

Pertimbangan Detail
Penyimpanan sementara tidak persisten Volume penyimpanan sementara selalu dihapus ketika tugas berakhir. Data di dalam tidak /tmp disimpan, diekspor, atau tersedia untuk tugas atau proses berikutnya. Data yang /tmp masuk pada penyimpanan sementara tidak dapat berupa output tugas atau output alur kerja; ini akan mengakibatkan kegagalan saat runtime.
Penyimpanan sementara tidak dibagikan di seluruh tugas Setiap tugas menerima volume penyimpanan fana terisolasi sendiri. Tugas tidak dapat mengakses /tmp direktori satu sama lain. Data yang harus dibagikan antar tugas harus ditulis ke sistem file run bersama.
Penyimpanan tidak dapat diubah ukurannya di tengah tugas Ukuran penyimpanan ditetapkan pada awal tugas. Anda tidak dapat menambah atau mengurangi penyimpanan yang dialokasikan saat tugas sedang berjalan.
Working-directory goresan tidak dialihkan secara otomatis Alur kerja yang menulis scratch ke direktori kerja — misalnya,, input/./, atau out/ — tidak mendapat manfaat secara otomatis. Perbarui alur kerja Anda untuk mengarahkan awal I/O ke /tmp atau$TMPDIR.
Data Scratch tidak ditulis /tmp seperti yang diharapkan Pastikan proses tugas Anda secara eksplisit menulis ke /tmp dan perintah tugas Anda belum dipetakan $TMPDIR ke lokasi lain.
Instans GPU selalu menggunakan penyimpanan sementara Tugas GPU selalu dipasang /tmp di penyimpanan instans NVMe lokal. Pengaturan scratchStorageMode ke SHARED tidak menonaktifkan penyimpanan sementara untuk tugas GPU.
Instans GPU: Kapasitas NVMe diperbaiki Ukuran disk khusus tidak didukung pada instans GPU. HealthOmics mengabaikan ar disk ahan dan menyediakan kapasitas NVMe default untuk jenis instance.
Maksimum 3.072 GiB per tugas (CPU) Permintaan melebihi 3.072 GiB disediakan pada 3.072 GiB dengan peringatan run log. Tugas tidak gagal.
Hanya tingkatan yang didukung (CPU) Ukuran yang diminta dibulatkan ke kenaikan 16 GiB terdekat (16, 32, 48, 64,... hingga 3.072 GiB).
Expression-based arahan dievaluasi saat runtime disknilai yang dihitung dari ekspresi divalidasi pada awal tugas, bukan diCreateWorkflow. Biaya komputasi hingga saat itu dibebankan jika tugas gagal saat runtime.
SHAREDmode mengabaikan semua arahan disk (hanya CPU) When scratchStorageMode isSHARED,disk,tmpdirMin, dan arahan yang setara diabaikan untuk tugas CPU. Tidak ada volume penyimpanan lokal yang disediakan. Tugas GPU tidak terpengaruh, mereka selalu menggunakan NVMe lokal.

Memecahkan masalah penyimpanan sementara

Tugas gagal dengan penyimpanan sementara yang habis

Tugas gagal ketika penyimpanan sementara mencapai kapasitas. Tinjau log CloudWatch manifes Anda untuk menentukan berapa banyak penyimpanan yang sebenarnya digunakan tugas Anda, lalu tambahkan atau tingkatkan direk disk tif untuk meminta tingkat yang lebih besar.

# Before: 4-vCPU task using the 16 GiB default runtime { cpu: 4 } # After: explicitly request 400 GiB runtime { cpu: 4, disks: "400 GiB" }

Penyimpanan sementara tampaknya tidak digunakan

Hu GetRun bungi dan periksa scratchStorageMode lapangan. Jika nilainyaSHARED, penyimpanan sementara tidak diaktifkan untuk proses itu. A --scratch-storage-mode LOCAL tur start-run panggilan Anda berikutnya.

aws omics get-run --id run-id