Armin Töpfer Profile picture
Oct 26 16 tweets 7 min read
Have you heard about Revio by @PacBio at #ASHG22? It is such an amazing platform, 4x30-fold HiFi human genomes every 24 hours. Let me show you what it took to get this bioinformatics performance on the instrument. A thread on CCS GPU acceleration and DeepConsensus productization. Image
The team behind CCS has been working hard for the past years to reduce runtime massively for the initial SQIIe and subsequent releases. We pulled all tricks to get the CPU code as fast as possible, but Revio is a completely different beast. Generating 90Gb HiFi per SMRT Cell 25M! Image
The polish algo in CCS is an HMM, filling out matrices at its core. The nature of its operations makes an efficient GPU implementation challenging. We’ve ported it completely onto @nvidia GPUs and achieved a 10x speedup over a dual 64c AMD EPYC, easily the fastest HMM on GPU. Image
CCS draft step has three core algos: mapping, alignment, and draft sequence generation. Every algo and every line has been checked for tech debt and room for optimizations.
For draft sequence generation we are using Sparc by Ye C, Ma Z. (2016). GPU experiments were not that successful, so we’ve concentrated on a CPU rewrite and achieved more than 10x over reference implementation with identical output, ~10µs/ZMW wall time.
Bottlenecks in mapping have been molded into SIMD, hash methods for collecting seed hits carefully benchmarked and improved, enabled reseeding to get better HiFi yield for your low-complexity molecules ... we could have a whole seminar on this 😊
For alignment in CCS, we are using edlib and ksw2, compute intensive algorithms. Though not integrated yet, we’ve implemented the fastest short- and long-read double-affine aligner on GPU, beating every CPU, GPU, and FPGA out there. Stay tuned. Image
Size does matter. Small uBAMs save you storage $$. Every read has per-base binned QVs, capped at Q40 (binning does not decrease variant calling performance), and MM/ML tags for 5mC predictions. For one run, 39 GiBytes uBAM for 90 Gbases HiFi yield -> 0.43 bytes/base.
All of this made room for a new player: DeepConsensus by @GoogleHealth as part of CCS, running on Revio’s on-instrument compute. With Google’s model improvements to v1.0, a C++ front-end and using @onnxruntime with #TensorRT, 25M on Revio w/ DC is as fast as 8M on SQIIe w/o DC.
Because you will ask the obvious: Given that DeepConsensus is a transformer model and inference on CPU is slow, there’s currently no path forward to push a software update to SQIIe. CCS with integrated DeepConsensus stays a Revio exclusive on-instrument solution.
Revio does not only generate one 30-fold human genome per SMRT Cell 25M, but the data quality is also as good or better than SQIIe. More yield and better variant calling results? Too good to be true? No! Initial DeepVariant results of one Revio 🏆 vs three SQIIe SMRT Cells. Image
With this fully integrated solution, DeepConsensus improved HiFi reads are the real deal, annotated with HiFi kinetics enabling 5mC on-instrument calling and demultiplexing.
Want to have a look at the first HiFi reads that came off Revio? Check out five HG002/3/4 runs at downloads.pacbcloud.com/public/revio/2…. Each include 5mC annotated HiFi reads, alignments, and small variants + SV VCFs. We also included a new Revio DeepVariant model, so you can reproduce results
One more thing, we’ve improved our demultiplexing tool lima to increase barcode yield from ~97% to up to ~99.5% with similar PPV. Stay tuned, I'm not done yet. Image
More info on the currently publicly available CCS version at ccs.how

More info about revio pacb.com/revio

DeepConsensus public code github.com/google/deepcon… & paper rdcu.be/cUMIx

• • •

Missing some Tweet in this thread? You can try to force a refresh
 

Keep Current with Armin Töpfer

Armin Töpfer Profile picture

Stay in touch and get notified when new unrolls are available from this author!

Read all threads

This Thread may be Removed Anytime!

PDF

Twitter may remove this content at anytime! Save it as PDF for later use!

Try unrolling a thread yourself!

how to unroll video
  1. Follow @ThreadReaderApp to mention us!

  2. From a Twitter thread mention us with a keyword "unroll"
@threadreaderapp unroll

Practice here first or read more on our help page!

Did Thread Reader help you today?

Support us! We are indie developers!


This site is made by just two indie developers on a laptop doing marketing, support and development! Read more about the story.

Become a Premium Member ($3/month or $30/year) and get exclusive features!

Become Premium

Don't want to be a Premium member but still want to support us?

Make a small donation by buying us coffee ($5) or help with server cost ($10)

Donate via Paypal

Or Donate anonymously using crypto!

Ethereum

0xfe58350B80634f60Fa6Dc149a72b4DFbc17D341E copy

Bitcoin

3ATGMxNzCUFzxpMCHL5sWSt4DVtS8UqXpi copy

Thank you for your support!

Follow Us on Twitter!

:(