Cara kerja caching panggilan - AWS HealthOmics

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

Cara kerja caching panggilan

Untuk menggunakan caching panggilan, Anda membuat cache run dan mengonfigurasinya agar memiliki lokasi Amazon S3 terkait untuk data yang di-cache. Saat Anda memulai proses, Anda menentukan cache run. Cache run tidak didedikasikan untuk satu alur kerja. Berjalan dari beberapa alur kerja dapat menggunakan cache yang sama.

Selama fase ekspor dijalankan, sistem mengekspor output tugas yang diselesaikan ke lokasi Amazon S3. Untuk mengekspor file tugas perantara, deklarasikan file-file ini sebagai output tugas dalam definisi alur kerja. Caching panggilan juga menyimpan metadata secara internal dan membuat hash unik untuk setiap entri cache.

Untuk setiap tugas yang dijalankan, mesin alur kerja mendeteksi apakah ada entri cache yang cocok untuk tugas ini. Jika tidak ada entri cache yang cocok, HealthOmics hitung tugasnya. Jika ada entri cache yang cocok, mesin mengambil hasil cache.

Untuk mencocokkan entri cache, HealthOmics gunakan mekanisme hashing yang disertakan dalam mesin alur kerja asli. HealthOmicsmemperluas implementasi hash yang ada ini untuk memperhitungkan HealthOmics variabel, seperti S3 ETag dan intisari wadah ECR.

HealthOmics mendukung caching panggilan untuk versi bahasa alur kerja ini:

  • WDL versi 1.0, 1.1, dan versi pengembangan

  • Nextflow versi 23.10 dan 24.10

  • Semua versi CWL

catatan

HealthOmics tidak mendukung caching panggilan untuk alur kerja Ready2Run.

Model tanggung jawab bersama

Ada tanggung jawab bersama antara pengguna dan AWS untuk menentukan apakah tugas dan proses adalah kandidat yang baik untuk caching panggilan. Call caching mencapai hasil terbaik ketika semua tugas idempoten (eksekusi berulang tugas menggunakan input yang sama menghasilkan hasil yang sama).

Namun, jika tugas mencakup elemen non-deterministik (seperti generasi bilangan acak atau waktu sistem), eksekusi tugas yang berulang menggunakan input yang sama dapat menghasilkan output yang berbeda. Hal ini dapat mempengaruhi efektivitas caching panggilan dengan cara-cara berikut:

  • Jika HealthOmics menggunakan entri cache (dibuat oleh proses sebelumnya) yang tidak identik dengan output yang akan dihasilkan oleh eksekusi tugas untuk proses saat ini, proses dapat menghasilkan hasil yang berbeda dari proses yang sama tanpa caching.

  • HealthOmics mungkin tidak menemukan entri cache yang cocok untuk tugas yang seharusnya cocok, karena output tugas non-deterministik. Jika tidak menemukan entri cache yang valid, proses menghitung ulang tugas secara tidak perlu, yang mengurangi manfaat penghematan biaya menggunakan caching panggilan.

Berikut ini adalah perilaku tugas yang diketahui yang dapat menyebabkan hasil non-deterministik yang memengaruhi hasil caching panggilan:

  • Menggunakan generator angka acak.

  • Ketergantungan pada waktu sistem.

  • Menggunakan konkurensi (kondisi ras dapat menyebabkan varians keluaran).

  • Mengambil file lokal atau jarak jauh di luar apa yang ditentukan dalam parameter input tugas.

Untuk skenario lain yang dapat menyebabkan perilaku non-deterministik, lihat Input proses non-deterministik di situs dokumentasi Nextflow.

Jika Anda menduga bahwa tugas menghasilkan output yang non-deterministik, pertimbangkan untuk menggunakan fitur mesin alur kerja, seperti cache opt-out di Nextflow, untuk menghindari cache tugas tertentu yang non-deterministik.

Kami menyarankan Anda meninjau alur kerja dan persyaratan tugas spesifik Anda secara menyeluruh sebelum mengaktifkan caching panggilan di lingkungan mana pun di mana caching panggilan yang tidak efektif atau output yang berbeda dari yang diharapkan dapat menimbulkan risiko. Misalnya, potensi keterbatasan caching panggilan harus dipertimbangkan dengan cermat dalam menentukan apakah caching panggilan sesuai untuk kasus penggunaan klinis.

Persyaratan caching untuk tugas

HealthOmics cache output tugas untuk tugas yang memenuhi persyaratan berikut:

  • Tugas harus mendefinisikan wadah. HealthOmics tidak akan menyimpan output untuk tugas tanpa wadah.

  • Tugas harus menghasilkan satu atau lebih output. Anda menentukan output tugas dalam definisi alur kerja.

  • Definisi alur kerja tidak boleh menggunakan nilai dinamis. Misalnya, jika Anda meneruskan parameter ke tugas dengan nilai yang bertambah dengan setiap proses, HealthOmics tidak akan men-cache output tugas.

catatan

Jika beberapa tugas dalam proses menggunakan gambar kontainer yang sama, HealthOmics berikan versi gambar yang sama untuk semua tugas ini. Setelah HealthOmics menarik gambar, ia mengabaikan pembaruan apa pun pada gambar kontainer selama durasi proses. Pendekatan ini memberikan pengalaman yang dapat diprediksi dan konsisten serta mencegah potensi masalah yang dapat muncul dari pembaruan pada gambar kontainer yang diterapkan di pertengahan proses.

Jalankan kinerja cache

Saat Anda mengaktifkan caching panggilan untuk dijalankan, Anda mungkin melihat dampak berikut pada kinerja run:

  • Selama proses pertama, HealthOmics menyimpan data cache untuk tugas-tugas dalam proses. Anda mungkin mengalami waktu ekspor yang lebih lama untuk menjalankan ini, karena caching panggilan meningkatkan jumlah data ekspor.

  • Dalam proses berikutnya, saat melanjutkan proses dari cache, ini dapat mempersingkat jumlah langkah pemrosesan dan mengurangi waktu berjalan Anda.

  • Jika Anda juga memilih untuk mendeklarasikan file perantara sebagai output, maka waktu ekspor Anda mungkin lebih lama karena data ini bisa lebih bertele-tele.

Penyimpanan data cache dan peristiwa pembatalan

Tujuan utama dari cache run adalah untuk mengoptimalkan perhitungan tugas dalam proses. Jika ada entri cache pencocokan yang valid untuk tugas, HealthOmics gunakan entri cache alih-alih menghitung ulang tugas. Jika tidak, HealthOmics kembali ke perilaku layanan default, yaitu menghitung ulang tugas dan tugas dependennya. Dengan menggunakan pendekatan ini, cache meleset tidak menyebabkan run gagal.

Kami menyarankan Anda mengelola ukuran cache run. Seiring waktu, entri cache mungkin tidak lagi valid karena pembaruan mesin atau HealthOmics layanan alur kerja atau karena perubahan yang Anda buat dalam menjalankan atau menjalankan tugas. Bagian berikut memberikan detail tambahan.

Pembaruan versi manifes dan kesegaran data

Secara berkala, HealthOmics layanan dapat memperkenalkan fitur baru atau pembaruan mesin alur kerja yang membatalkan beberapa atau semua entri cache yang dijalankan. Dalam situasi ini, proses Anda dapat mengalami kehilangan cache satu kali.

HealthOmics membuat file manifes JSON untuk setiap entri cache. Untuk proses yang dimulai setelah 12 Februari 2025, file manifes menyertakan parameter versi. Jika pembaruan layanan membatalkan entri cache apa pun, HealthOmics tambahkan nomor versi sehingga Anda dapat mengidentifikasi entri cache lama untuk dihapus.

Contoh berikut menunjukkan file manifes dengan versi diatur ke 2:

{ "arn": "arn:aws:omics:us-west-2:12345678901:runCache/0123456/cacheEntry/1234567-195f-3921-a1fa-ffffcef0a6a4", "s3uri": "s3://example/1234567-d0d1-e230-d599-10f1539f4a32/1348677/4795326/7e8c69b1-145f-3991-a1fa-ffffcef0a6a4", "taskArn": "arn:aws:omics:us-west-2:12345678901:task/4567891", "workDir": "/mnt/workflow/1234567-d0d1-e230-d599-10f1539f4a32/workdir/call-TxtFileCopyTask/5w6tn5feyga7noasjuecdeoqpkltrfo3/wxz2fuddlo6hc4uh5s2lreaayczduxdm", "files": [ { "name": "output_txt_file", "path": "out/output_txt_file/outfile.txt", "etag": "ajdhyg9736b9654673b9fbb486753bc8" } ], "nextflowContext": {}, "otherOutputs": {}, "version": 2, }

Untuk menjalankan dengan entri cache yang tidak lagi valid, buat kembali cache untuk membuat entri baru yang valid. Lakukan langkah-langkah berikut untuk setiap lari:

  1. Mulai proses sekali dengan retensi cache disetel ke CACHE ALWAYS. Jalankan ini membuat entri cache baru.

  2. Untuk proses selanjutnya, atur retensi cache ke pengaturan sebelumnya (CACHE ALWAYS atau CACHE ON FAILURE).

Untuk membersihkan entri cache yang tidak lagi valid, Anda dapat menghapus entri cache ini dari cache Amazon S3 bucket. HealthOmics jangan pernah menggunakan kembali entri cache ini. Jika Anda memilih untuk mempertahankan entri yang tidak valid, tidak ada dampak pada proses Anda.

catatan

Caching panggilan menyimpan data output tugas di lokasi Amazon S3 yang ditentukan untuk cache, yang menimbulkan biaya ke Anda. Akun AWS

Jalankan perilaku cache

Anda dapat mengatur perilaku run cache untuk menyimpan output tugas untuk menjalankan yang gagal (cache pada kegagalan) atau untuk semua proses (cache selalu). Saat Anda membuat cache run, Anda mengatur perilaku cache default untuk semua proses yang menggunakan cache ini. Anda dapat mengganti perilaku default saat memulai proses.

Cache on failureberguna jika Anda men-debug alur kerja yang gagal setelah beberapa tugas berhasil diselesaikan. Proses selanjutnya dilanjutkan dari tugas terakhir yang berhasil diselesaikan jika semua variabel unik yang dipertimbangkan oleh hash identik dengan proses sebelumnya.

Cache alwaysberguna jika Anda memperbarui tugas dalam alur kerja yang berhasil diselesaikan. Kami menyarankan Anda mengikuti langkah-langkah ini:

  1. Buat run baru. Atur perilaku Cache ke Cache selalu, dan mulai jalankan.

  2. Setelah proses selesai, perbarui tugas dalam alur kerja dan mulai proses baru dengan set perilaku Cache selalu. Proses ini memproses tugas yang diperbarui dan tugas selanjutnya yang memiliki ketergantungan pada tugas yang diperbarui. Semua tugas lain menggunakan hasil cache.

  3. Ulangi langkah 2 sesuai kebutuhan, hingga pengembangan selesai untuk tugas yang diperbarui.

  4. Gunakan tugas yang diperbarui sesuai kebutuhan di future run. Ingatlah untuk mengalihkan proses berikutnya ke Cache saat gagal jika Anda berencana untuk menggunakan input baru atau berbeda untuk proses ini.

catatan

Kami merekomendasikan Cache selalu mode saat menggunakan set data pengujian yang sama, tetapi tidak untuk batch run. Jika Anda mengatur mode ini untuk sejumlah besar proses, sistem dapat mengekspor sejumlah besar data ke Amazon S3, sehingga meningkatkan waktu ekspor dan biaya penyimpanan.

Kontrol ukuran cache jalankan

HealthOmics tidak menghapus atau mengarsipkan secara otomatis data cache yang dijalankan atau menerapkan aturan pembersihan Amazon S3 untuk mengelola data cache. Kami menyarankan Anda melakukan pembersihan cache secara teratur untuk menghemat biaya penyimpanan Amazon S3 dan menjaga ukuran cache run Anda tetap dapat dikelola. Anda dapat menghapus file secara langsung atau menyetel retention/replication kebijakan data pada bucket cache run.

Misalnya, Anda dapat mengonfigurasi kebijakan siklus hidup Amazon S3 agar objek kedaluwarsa setelah 90 hari, atau Anda dapat membersihkan data cache secara manual di akhir setiap proyek pengembangan.

Informasi berikut dapat membantu Anda mengelola ukuran data cache:

  • Anda dapat melihat berapa banyak data yang ada di cache dengan memeriksa Amazon S3. HealthOmics tidak memantau atau melaporkan ukuran cache.

  • Jika Anda menghapus entri cache yang valid, proses berikutnya tidak akan gagal. HealthOmics menghitung ulang tugas dan tugas-tugas dependennya.

  • Jika Anda memodifikasi nama cache atau struktur direktori sedemikian rupa sehingga tidak HealthOmics dapat menemukan entri yang cocok untuk tugas, HealthOmics hitung ulang tugas tersebut.

Jika Anda perlu memeriksa apakah entri cache masih valid, periksa nomor versi manifes cache. Untuk informasi selengkapnya, lihat Pembaruan versi manifes dan kesegaran data.