Piotr Grzesik
dr hab. inż. Dariusz Mrozek, prof. PŚ
Politechnika Śląska
Sekwencjonowanie nanoporowe - metoda sekwencjonowania DNA, opracowana przez Oxford Nanopore Technologies. Polega na monitorowaniu zmian natężenia prądu spowodowanego przez nić DNA/RNA przesuwającą się przez nanopory. Otrzymany sygnał jest następnie dekodowany do konkretnych sekwencji DNA/RNA. Proces ten nazywamy basecalling.
MinION Nanopore - przenośne urządzenie sekwencjonujące, udostępnione przez firmę Oxford Nanopore Technologies w 2014 roku. Jest to pierwsze z urządzeń pozwalające na prowadzenie eksperymentów sekwencjonowania w "przenośny" sposób w przystępnej cenie (~$1000). Jest zasilane przez USB, waży ok. 100g, co pozwala na wykorzystanie tego urządzenia w "terenie".
Przetwarzanie brzegowe (ang. edge computing) - jest to podejście programistyczne, które polega na przeniesieniu procesów przetwarzania oraz przechowywania danych bliżej źródła danych. Pozwala to na zredukowanie wolumenu danych przesyłanych np. przez sieć Internet, pozwala na zmniejszenie czasu reakcji systemu na zmieniający się stan, a także poprawia odporność systemu w przypadku zawodnego połączenia z centrami danych.
Rozpatrywane zadanie składa się z trzech kroków - sekwencjonowania, basecallingu, oraz klasyfikacji. W pierwszym kroku, MinION Nanopore sekwencjonuje DNA, czego rezultatem są odczyty natężenia prądu w formacie FAST5. W drugim kroku, basecaller interpretuje dane z plików FAST, czego rezultatem są sekwencje DNA w postaci plików FASTA. W ostanim kroku, sekwencje te są klasyfikowane oraz identyfikowane.
Symulator MinION Nanopore, który generuje pliki w formacie fast5
Urządzenie brzegowe, które jest odpowiedzialne za proces basecallingu oraz klasyfikacji, wyposażone w dysk SSD
Serwis chmurowy, który służy jako magazyn dla sekwencjonowanych danych
Zasilacz z układem INA219 oraz Rasperry Pi 4 w celu pomiaru natężenia prądu
Wykorzystano dostępne dane z eksperymentów sekwencjonowania materiału zawierającego Escherichia coli oraz Klebsiella Pneumoniae
Zarejestrowano liczbę próbek przeprocesowanych na sekundę dla różnych trybów mocy w Jetson Xavier NX
Przetestowano basecallery takie jak Guppy, Bonito, Causalcall, Deepnano, Deepnano-blitz
Guppy oraz Bonito przetestowano z oraz bez akceleracji GPU
Klasyfikacja przy użyciu Kraken2 również była przetestowana dla różnych trybów mocy w Jetson Xavier NX
Dostępne tryby mocy w Jetson Xavier NX: 15W 6 CORE, 15W 4 CORE, 15W 2 CORE, 10W 2 CORE, 10W 4 CORE
Jetson Xavier NX jest urządzeniem, które pozwala na przeprowadzanie tego typu eksperymentów sekwencjonowania i klasyfikacji przy ograniczonym dostępie do sieci i ograniczonych źródłach zasilania
Guppy z modelem "fast" pozwala na wsparcie dla basecallingu w czasie rzeczywistym nawet z 3 urządzeń MinION w tym samym czasie
Wykorzystanie trybu 10W w Jetson Xavier NX jest bardziej wydajne energetycznie niż wykorzystanie trybu 15W
Proces basecallingu bez akceleracji GPU jest niewykonalny na Jetson Xavier NX i podobnych urządzeniach
Na obecny moment, jedynym basecallerem, który oferuje wystarczającą wydajność na urządzeniach brzegowych jest Guppy z akceleracją GPU
Istnieje konieczność optymalizacji albo ograniczenia zbiorów danych w celu przetwarzania ich na brzegu (baza danych Kraken2)
Wiele istniejących narzędzi nie zakłada wsparcia dla architektury AArch64
Przetwarzanie bezserwerowe (ang. serverless computing) polega na wykorzystaniu prostych, bezstanowych funkcji (stąd alternatywna nazwa Function-as-a-service), które nie wymagają zarządzania, oferują tolerancję awarii, wspierają przetwarzanie równoległe, alokują zasoby tylko gdy zachodzi taka potrzeba, oraz mogą być szybko skalowane. Dodatkową zaletą takiego podejścia jest to, że użytkownicy płacą tylko za faktyczny czas wykonania funkcji.
Przetwarzanie bezserwerowe stało się w ostatnim czasie popularne w kontekście wykorzystania w bioinformatyce:
W ramach zaproponowanego rozwiązania, pierwszy krok to przesłanie plików FAST5 z MinION Nanopore do usługi S3. W następnym kroku, pierwsza z funkcji Lambda dzieli dostępne pliki FAST5 na równe sekcje. W następnym kroku uruchamia przetwarzanie każdej z sekcji przez oddzielną funkcję Lambda. W tym kroku, każda z funkcji prowadzi proces basecallingu. Po przetworzeniu, rezultat jest ponownie zapisywany w usłudze S3.
Wykorzystano dostępne dane z eksperymentów sekwencjonowania materiału zawierającego Escherichia coli oraz Klebsiella Pneumoniae
Przetestowano basecallery takie jak Guppy, Bonito, Causalcall, Deepnano, Deepnano-blitz
Eksperymenty zostały przeprowadzone dla konfiguracji z 256, 512, 1024, 2048, 4096, 6144, 8192, oraz 10240 MB RAM dla pojedynczej funkcji
Zarejestrowane liczbę próbek przeprocesowanych na sekundę oraz na 1 MB pamięci dla modeli fast oraz hac (Guppy)
W zaproponowanym podejściu, pierwszy krok służy ocenie, czy przy panujących warunkach istnieje możliwość wykorzystania "cloud offloadingu" do przyspieszenia przetwarzania brzegowego. W następnym kroku, pliki są dzielone na serie, które mają zostać przetworzone na brzegu oraz w chmurze. Podział ten oparty jest na wyznaczonych eksperymentalnie średnich szybkościach przetwarzania dla wybranych prędkości wysyłania. W ostatnim kroku, po przetworzeniu plików, urządzenie brzegowe pobiera rezultaty.
Wykorzystano dostępne dane z eksperymentów sekwencjonowania materiału zawierającego Escherichia coli oraz Klebsiella Pneumoniae
Wykorzystano Jetson Xavier NX jako urządzenie brzegowe, testy prowadzone były dla trybów mocy: 15W 6 CORE oraz 10W 2 CORE
W eksperymentach wykorzystano basecaller Guppy (CPU w modelu bezserwerowym, GPU na brzegu)
Testy prowadzone były dla prędkości wysyłania 128, 256, oraz 512 kB/s
Podczas eksperymentów rejestrowany był całkowity czas przetwarzania dla wybranego zestawu danych, a także całkowita energia zużyta podczas tego przetwarzania