<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Martin L. Putra | UCSC OSPO</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/author/martin-l.-putra/</link><atom:link href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/martin-l.-putra/index.xml" rel="self" type="application/rss+xml"/><description>Martin L. Putra</description><generator>Wowchemy (https://wowchemy.com)</generator><language>en-us</language><image><url>https://deploy-preview-1007--ucsc-ospo.netlify.app/author/martin-l.-putra/avatar_hud5accbf5cbb22a94b05f76ad4e563ea9_6545693_270x270_fill_q75_lanczos_center.jpg</url><title>Martin L. Putra</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/author/martin-l.-putra/</link></image><item><title>Towards Scalable Performance Benchmarking of Genomics Workflows</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/uga/genomicswf/20240919-martinputra/</link><pubDate>Thu, 19 Sep 2024 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/uga/genomicswf/20240919-martinputra/</guid><description>&lt;h2 id="project-background">Project Background&lt;/h2>
&lt;p>Optimizing genomics workflows execution on a large-scale &amp;amp; heterogeneous cluster requires in-depth understanding of resource requirement and utilization pattern of each application in the workflows. Such information can be obtained by using a benchmarking tool. However, performance data generated by such tool should represent the scale of its target system, lest the design decisions made from it is misguided. My project aims to build &lt;em>GenScale&lt;/em>, the first benchmarking tool which can rapidly generate genomics workload performance data at the scale representative of production systems.&lt;/p>
&lt;p>As Summer of Reproduciblity (SoR) 2024 comes to an end, I took the time to reflect on my time working on GenScale, the challenges I faced, and the future works &amp;amp; impacts I hope &lt;em>GenScale&lt;/em> create for our community.&lt;/p>
&lt;h2 id="milestones--challenges">Milestones &amp;amp; Challenges&lt;/h2>
&lt;p>The time I spent working on &lt;em>GenScale&lt;/em> during SoR can be classified into three phases:&lt;/p>
&lt;p>&lt;strong>1. Per-Application Container &amp;amp; Input Creation.&lt;/strong>&lt;/p>
&lt;p>Containerization is the current de-facto standard for genomics workflow execution, thus I designed &lt;em>GenScale&lt;/em> to execute applications as containers. This requires me to package each application included in the benchmark as a container. I use state-of-art DNA-Seq &amp;amp; RNA-Seq alignment workflows as references for the list of applications &amp;amp; workflow structure. The container images &amp;amp; source files I created are publicy available in GitHub &lt;a href="#deliverables">(Deliverables #1)&lt;/a>&lt;/p>
&lt;p>I also prepare sample inputs for each application to ease the burden of users who do not have sufficient familiarity with genomics applications. The effort is not trivial, because in a workflow, the inputs for a certain step depend on the outputs of previous step(s). Simply speaking, to prepare inputs for the last application in a workflow, we need to get the outputs of applications executed before it, which also requires the outputs of another set of applications, and so on until we arrive at the beginning of workflow. This translates into significant manual labor of carefully tracing &amp;amp; collecting intermediate files from each step of the reference workflows.&lt;/p>
&lt;p>All inputs are hosted in a public Google Drive and ChameleonCloud object store &lt;a href="#deliverables">(Deliverables #2)&lt;/a>. In total, I prepared containers and inputs for 7 popular genomics applications: BWA, FastQC, Fastq Cleaner, GATK, Picard, STAR, and Trimmomatic.&lt;/p>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th style="text-align:center">
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="" srcset="
/report/osre24/uga/genomicswf/20240919-martinputra/genscale-stack_hu2d5cfbf95523918b0bcbd89f95a37c1b_91166_5d15908a9f03f47b787a549dbd280a24.webp 400w,
/report/osre24/uga/genomicswf/20240919-martinputra/genscale-stack_hu2d5cfbf95523918b0bcbd89f95a37c1b_91166_b606b0529a38b68c5979566b35e267ed.webp 760w,
/report/osre24/uga/genomicswf/20240919-martinputra/genscale-stack_hu2d5cfbf95523918b0bcbd89f95a37c1b_91166_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/uga/genomicswf/20240919-martinputra/genscale-stack_hu2d5cfbf95523918b0bcbd89f95a37c1b_91166_5d15908a9f03f47b787a549dbd280a24.webp"
width="760"
height="353"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td style="text-align:center">&lt;strong>Figure 1.&lt;/strong> Production-grade softwares used in GenScale: Kubernetes for task orchestration, and Prometheus + Grafana for real-time resource monitoring.&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;p>&lt;strong>2. Components Development.&lt;/strong>&lt;/p>
&lt;p>In this phase, &lt;em>GenScale&lt;/em> main components were developed. &lt;em>GenScale&lt;/em> consists of three components: (a) Workflow Manager, (b) Task Orchestrator, and (c) Resource Monitor. The Workflow Manager is built from scratch to allow high degree of freedom when scheduling workflows. I use industry-grade solutions for the other components, namely Kubernetes for orchestrating tasks / containers, and Prometheus + Grafana for real-time resource monitoring. My deliverables include semi-automatic installation scripts &amp;amp; easy-to-follow instructions to set up all three components. &lt;a href="#deliverables">(Deliverables #3)&lt;/a>&lt;/p>
&lt;p>&lt;strong>3. Performance Data Generation.&lt;/strong>&lt;/p>
&lt;p>The last phase is to use &lt;em>GenScale&lt;/em> prototype to generate performance data of each application. I focused on collecting data for three types of resources: compute (CPU utilization), memory (resident set size), and I/O (read &amp;amp; write operations over time). &lt;em>GenScale&lt;/em> export these information into a single CSV file to facilitate easy analysis. My deliverables include performance data for DNA-Seq and RNA-Seq workflows. I also provide a sample Python Notebook which analyzes the CPU utilization pattern of each application in DNA-Seq workflow. &lt;a href="#deliverables">(Deliverables #4)&lt;/a>&lt;/p>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th style="text-align:center">
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="" srcset="
/report/osre24/uga/genomicswf/20240919-martinputra/dnaseq-cpu_util_hu80d53d27b8c7b822ba2a4a4a343ec503_499906_9d39d7375c21c3eae305d20af9a8b7ee.webp 400w,
/report/osre24/uga/genomicswf/20240919-martinputra/dnaseq-cpu_util_hu80d53d27b8c7b822ba2a4a4a343ec503_499906_b8d8ac52b9cb53496558934c8a2b441b.webp 760w,
/report/osre24/uga/genomicswf/20240919-martinputra/dnaseq-cpu_util_hu80d53d27b8c7b822ba2a4a4a343ec503_499906_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/uga/genomicswf/20240919-martinputra/dnaseq-cpu_util_hu80d53d27b8c7b822ba2a4a4a343ec503_499906_9d39d7375c21c3eae305d20af9a8b7ee.webp"
width="760"
height="614"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td style="text-align:center">&lt;strong>Figure 2.&lt;/strong> CPU utilization pattern of 9 applications in DNA-Seq Alignment workflow collected by &lt;em>GenScale&lt;/em>. &lt;strong>y-axis&lt;/strong>: &lt;em>(num. cores) x 100%&lt;/em>, &lt;strong>x-axis&lt;/strong>: time elapsed in seconds.&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;h2 id="deliverables">Deliverables&lt;/h2>
&lt;p>This project&amp;rsquo;s deliverables can be found in the following Github repo: &lt;a href="https://github.com/martinluttap/sor24-genscale/tree/main" target="_blank" rel="noopener">https://github.com/martinluttap/sor24-genscale/tree/main&lt;/a>. In summary, the deliverables include:&lt;/p>
&lt;ol>
&lt;li>Container Images&lt;/li>
&lt;li>Input Dataset&lt;/li>
&lt;li>Source Code&lt;/li>
&lt;li>Performance Data &amp;amp; Sample Analysis Notebook&lt;/li>
&lt;/ol>
&lt;h2 id="future-works-broader-impacts">Future Works, Broader Impacts&lt;/h2>
&lt;p>Understanding workload characteristics is a crucial step for designing efficient scheduling policy &amp;amp; resource management techniques. &lt;em>GenScale&lt;/em> and the performance data it can generate might be a starting point for such effort. Furthermore, I hope &lt;em>GenScale&lt;/em> will catalyze meaningful engagements between the computer systems community and bioinformatics community. I believe state-of-arts systems techniques can greatly aid the computing efforts among bioinformatics community. Similarly, domain-specific knowledge &amp;amp; problems within bioinformatics provide unique grounds for the systems community to further advance their field.&lt;/p></description></item><item><title>Halfway Through SoR24: Building a Scalable Performance Benchmarking Tool for Genomics Workflows</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/uga/genomicswf/20240721-martinputra/</link><pubDate>Sun, 21 Jul 2024 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/uga/genomicswf/20240721-martinputra/</guid><description>&lt;h2 id="project-overview">Project Overview&lt;/h2>
&lt;p>Hi! I&amp;rsquo;m Martin Putra, and I&amp;rsquo;m working on the &amp;ldquo;Reproducible Performance Benchmarking for Genomics Workflows on HPC Cluster&amp;rdquo; project under the supervision of &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/in-kee-kim/">In Kee Kim&lt;/a>. We are building GenScale, a scalable benchmarking tool for genomics workfload which leverages industrial-grade cluster manager and monitoring systems. GenScale will allow us to generate performance data under a setup that is representative of large-scale production settings. Ultimately, we hope GenScale and the datasets it produces will catalyze engagement between the computer systems and bioinformatics community, thus accelerating the pace of discovery at both fields.&lt;/p>
&lt;h2 id="progress-and-challenges">Progress and Challenges&lt;/h2>
&lt;p>We have built a prototype using Kubernetes as cluster manager and Prometheus for monitoring systems. At its current state, the prototype can support an arbitrary number of compute nodes, owing to Kubernetes’ notable scaling capability. This provides a suitable environment for small- to mid-scale experiments. We leverage ChameleonCloud to provide the necessary computational and reproducibility infrastructure. The monitoring system supports cluster-level, node-level, and container-level metrics collection and failure detection. We integrated Grafana dashboards for visualizations.&lt;/p>
&lt;p>The prototype also supports the execution of user-defined workflows. During the design process, we considered integrating one of existing workflow execution systems, such as &lt;a href="https://github.com/common-workflow-language/cwltool" target="_blank" rel="noopener">cwltool&lt;/a>, &lt;a href="https://www.nextflow.io" target="_blank" rel="noopener">Nextflow&lt;/a>, or &lt;a href="https://github.com/broadinstitute/cromwell" target="_blank" rel="noopener">Cromwell&lt;/a>. Each system has its own pros and cons when placed within the context of how we envision GenScale. However, we ultimately decided to build our own workflow execution system in order to provide maximum flexibility for the capabilities we plan to add in the future. For example, we believe it will be interesting to study how hardware heterogeneity affects the performance of each application in the workflow (a well-known workflow scheduling problem). Studying the problem requires capability to schedule execution on specific machines. In addition, if we want to study contention, we may need to execute on machines which are currently running specific workflows, too. While there are ways to do them with existing workflow execution systems + Kubernetes stack, we believe it will be hugely simplified if we build our own workflow execution system.&lt;/p>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th style="text-align:center">
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="" srcset="
/report/osre24/uga/genomicswf/20240721-martinputra/dnaseq-exec_time_proportion_hu2a99ec14fc56f180a344028699f1df1c_255588_8dedba866f2dae2e3c155c6037bb3c4c.webp 400w,
/report/osre24/uga/genomicswf/20240721-martinputra/dnaseq-exec_time_proportion_hu2a99ec14fc56f180a344028699f1df1c_255588_0134d07c43c3857435ab5c59f410ed7f.webp 760w,
/report/osre24/uga/genomicswf/20240721-martinputra/dnaseq-exec_time_proportion_hu2a99ec14fc56f180a344028699f1df1c_255588_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/uga/genomicswf/20240721-martinputra/dnaseq-exec_time_proportion_hu2a99ec14fc56f180a344028699f1df1c_255588_8dedba866f2dae2e3c155c6037bb3c4c.webp"
width="760"
height="497"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td style="text-align:center">&lt;strong>Figure 1.&lt;/strong> Proportion of execution time for DNA Alignment applications, executed on Chameleon&amp;rsquo;s &lt;em>cascadelake_r&lt;/em> node with 1500MB paired-end input. &lt;strong>y-axis:&lt;/strong> proportion of application&amp;rsquo;s exec. time out of the whole workflow&amp;rsquo;s exec. time, &lt;strong>x-axis:&lt;/strong> top 10 applications accounting for 97% exec. time, sorted by proportion. Other applications are aggregated.&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;p>We confirmed GenScale’s capability to produce useful data by executing a DNA alignment workflow and capturing its runtime resource usage. We use &lt;a href="https://github.com/NCI-GDC/gdc-dnaseq-cwl" target="_blank" rel="noopener">Genomics Data Commons’ (GDC) DNA alignment workflow&lt;/a> as reference, which has a total of 27 applications ranging from quality check, read trimming, actual alignment, indexing, and various metrics collection. We wrote our own simplified version of the workflow by first analyzing the execution time &amp;amp; resource usage of each application, then we chose 10 applications which represents 97% of the workflow execution time. We took into account that containerization is the de-facto standard for workflow execution among the bioinformatics community. Thus, we packaged each application as its own separate container, then hosted their Dockerfiles &amp;amp; containers in a private Github Container Registry (GHCR). We plan to make them public in the future. Our monitoring system is able to show resource usage in real time. We also built sidecar containers which use Unix’s pidstats to generate a CSV of cores, memory, and storage utilization throughout each workflow’s execution. This will allow easier analysis and data sharing for GenScale’s users.&lt;/p>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th style="text-align:center">
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="" srcset="
/report/osre24/uga/genomicswf/20240721-martinputra/bwa_picardwgs_picardvalidate-cpu_hu75193f344cb2afdf6e001b1bc5f51540_1054163_7dea08952ec6bc07cee0579c31500d17.webp 400w,
/report/osre24/uga/genomicswf/20240721-martinputra/bwa_picardwgs_picardvalidate-cpu_hu75193f344cb2afdf6e001b1bc5f51540_1054163_0a311fc327ad5f4a739e574c86795b70.webp 760w,
/report/osre24/uga/genomicswf/20240721-martinputra/bwa_picardwgs_picardvalidate-cpu_hu75193f344cb2afdf6e001b1bc5f51540_1054163_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/uga/genomicswf/20240721-martinputra/bwa_picardwgs_picardvalidate-cpu_hu75193f344cb2afdf6e001b1bc5f51540_1054163_7dea08952ec6bc07cee0579c31500d17.webp"
width="760"
height="209"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td style="text-align:center">&lt;strong>Figure 2.&lt;/strong> CPU utilization pattern of &lt;a href="https://github.com/lh3/bwa" target="_blank" rel="noopener">BWA&lt;/a>, &lt;a href="https://gatk.broadinstitute.org/hc/en-us/articles/360037269351-CollectWgsMetrics-Picard" target="_blank" rel="noopener">Picard&amp;rsquo;s CollectWGSMetrics&lt;/a>, and &lt;a href="https://gatk.broadinstitute.org/hc/en-us/articles/360036854731-ValidateSamFile-Picard" target="_blank" rel="noopener">Picard&amp;rsquo;s ValidateSamFile&lt;/a> collected by &lt;em>GenScale&lt;/em>. &lt;strong>y-axis&lt;/strong>: &lt;em>(num. cores) x 100%&lt;/em>, &lt;strong>x-axis&lt;/strong>: time elapsed in seconds.&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;p>One technical challenge is in automating the creation of Kubernetes cluster and in keeping it alive. We believe GenScale’s users would be interested in the performance of workflows under dynamic cluster sizes, either due to intentional scaling or machine failures. While the current prototype supports creating a cluster with arbitrary nodes, there are still steps which require a reboot when adding nodes. This makes cluster creation and horizontal scaling not fully automated yet. Keeping a cluster alive is also expensive. Since we use ChameleonCloud as our testbed, we have a choice of either keeping the cluster alive at the cost of significant service units (SU) usage, or save SUs by terminating our leases at the cost of rebuilding the cluster from scratch later. We choose a middle ground by keeping only Kubernetes’ control plane alive. The approach works well so far.&lt;/p>
&lt;h2 id="next-steps">Next Steps&lt;/h2>
&lt;p>For the remaining weeks, we plan to work on the second workflow, namely &lt;a href="https://github.com/NCI-GDC/gdc-rnaseq-cwl" target="_blank" rel="noopener">RNA Alignment&lt;/a>. We would also like to add simple user interfaces if time permits. Finally, we plan to package GenScale’s source code, container images, and sample benchmark results for the open-source community. We look forward to the second half of Summer of Reproducibility!&lt;/p></description></item><item><title>Reproducible Performance Benchmarking for Genomics Workflows on HPC Cluster</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/uga/genomicswf/20240612-martinputra/</link><pubDate>Wed, 12 Jun 2024 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/uga/genomicswf/20240612-martinputra/</guid><description>&lt;p>Hi! I&amp;rsquo;m Martin, and I will be working on &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre24/uga/genomicswf/">Reproducible Performance Benchmarking for Genomics Workflows on HPC Cluster&lt;/a> under the mentorship of &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/in-kee-kim/">In Kee Kim&lt;/a>. Our work is driven by the scale of computing systems that hosts data commons &amp;ndash; we believe that performance characterization of genomics workload should be done &lt;em>rapidly&lt;/em> and at the &lt;em>scale&lt;/em> similar to production settings. &lt;a href="https://drive.google.com/file/d/1LmOpCKv09ZGKlkG6VNleWBZ792nIuVOf/view?usp=sharing" target="_blank" rel="noopener">Feel free to check our proposal&lt;/a> for more details!&lt;/p>
&lt;p>We propose &lt;em>GenScale&lt;/em>, a genomics workload benchmarking tool which can achieve both the scale and speed necessary for characterizing performance under large-scale settings. &lt;em>GenScale&lt;/em> will be built on top of industrial-grade cluster manager (e.g. Kubernetes), metrics collection &amp;amp; monitoring systems (e.g. Prometheus), and will support comprehensive set of applications used in state-of-art genomics workflows. Initial version developed during this project will include DNA and RNA alignment workflows.&lt;/p>
&lt;p>Finally, we believe that open access and reproducible research will greatly accelerate the pace of scientific discovery. We aim to package our artefacts and generated datasets in ways that makes it easiest to replicate, analyze, and build upon. I personally look forward to learn from &amp;amp; contribute to the open source community!&lt;/p></description></item></channel></rss>