<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>osre24 | UCSC OSPO</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/tag/osre24/</link><atom:link href="https://deploy-preview-1007--ucsc-ospo.netlify.app/tag/osre24/index.xml" rel="self" type="application/rss+xml"/><description>osre24</description><generator>Wowchemy (https://wowchemy.com)</generator><language>en-us</language><lastBuildDate>Fri, 31 Jan 2025 00:00:00 +0000</lastBuildDate><image><url>https://deploy-preview-1007--ucsc-ospo.netlify.app/media/logo_hub6795c39d7c5d58c9535d13299c9651f_74810_300x300_fit_lanczos_3.png</url><title>osre24</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/tag/osre24/</link></image><item><title>Final Blog: SS_Bench - Benchmarking SciStream</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/anl/scistream/20240820-kraislaik/</link><pubDate>Fri, 31 Jan 2025 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/anl/scistream/20240820-kraislaik/</guid><description>&lt;h2 id="introduction">Introduction&lt;/h2>
&lt;p>Hello! My name is Acheme, and I&amp;rsquo;m thrilled to have collaborated with my mentors &lt;a href="https://github.com/ucsc-ospo/ucsc-ospo.github.io/blob/main/content/authors/chungmiranda/_index.md" target="_blank" rel="noopener">Joaquin Chung&lt;/a> and &lt;a href="https://github.com/ucsc-ospo/ucsc-ospo.github.io/blob/main/content/authors/fcastro/_index.md" target="_blank" rel="noopener">Flavio Castro&lt;/a> under the &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre24/anl/scistream/">SciStream&lt;/a> project. This project aims to develop SciStream-bench, a set of benchmarks and artifacts designed to precisely evaluate the performance of scientific streaming applications across diverse traffic patterns when running over the SciStream framework.&lt;/p>
&lt;p>In the first half of the project, I focused on describing scientific streaming profiles based on use-cases experienced at Argonne National Lab. The necessary python scripts were developed to generate bursty and constant rate streaming traffic profiles.&lt;/p>
&lt;p>In the second half, I built upon this foundation by conducting experiments with the traffic profiles and measuring performance through metrics of latency, jitter and throughput. These experiments were conducted with different message sizes across LAN and WAN network topology.&lt;/p>
&lt;h2 id="key-achievements">Key Achievements&lt;/h2>
&lt;ol>
&lt;li>
&lt;p>&lt;strong>Streaming Traffic Profile:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>Developed scripts to generate streaming traffic profiles with configurable parameters.&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Created an Artifact:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>I created an artifact using a Jupyter notebook to document an easy to follow integration of SciStream with FABRIC testbed for future experimenters.&lt;/li>
&lt;/ul>
&lt;/li>
&lt;/ol>
&lt;h2 id="conclusion-and-future-work">Conclusion and Future Work&lt;/h2>
&lt;p>The work demonstrated that SciStream offers tolerable overhead for secure data streaming and experimentation with this middlebox is possible in publicly available testbed like FABRIC.
Future work would be to look into the comparative analysis of the performance of SciStream with or without hardware acceleration or offloading.&lt;/p>
&lt;h2 id="deliverables">Deliverables&lt;/h2>
&lt;ul>
&lt;li>&lt;strong>SciStream on FABRIC Demo:&lt;/strong> A demo can be found here on how to integrate SciStream on the FABRIC testbed &lt;a href="https://www.youtube.com/watch?v=2NNAWPAreU8" target="_blank" rel="noopener">SciStream on FABRIC&lt;/a>.&lt;/li>
&lt;li>&lt;strong>Jupyter Notebook:&lt;/strong> An Artifact on FABRIC portal: &lt;a href="https://artifacts.fabric-testbed.net/artifacts/1d604943-b5c0-4046-9971-ffb8f2535e42" target="_blank" rel="noopener">FABRIC Artifact&lt;/a>.&lt;/li>
&lt;/ul></description></item><item><title>Final Report: Deriving Realistic Performance Benchmarks for Python Interpreters</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/uutah/static-python-perf/20241113-mrigankpawagi/</link><pubDate>Tue, 12 Nov 2024 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/uutah/static-python-perf/20241113-mrigankpawagi/</guid><description>&lt;p>Hi, I am Mrigank. As a &lt;em>Summer of Reproducibility 2024&lt;/em> fellow, I have been working on &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/uutah/static-python-perf/20240817-mrigankpawagi/">deriving realistic performance benchmarks for Python interpreters&lt;/a> with &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/ben-greenman/">Ben Greenman&lt;/a> from the University of Utah. In particular, we want to benchmark Meta&amp;rsquo;s Static Python interpreter (which is a part of their Cinder project) and compare its performance with CPython on different levels of typing. In this post, I will share updates on my work since my &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/uutah/static-python-perf/20240909-mrigankpawagi/">last update&lt;/a>. This post forms my final report for the &lt;em>Summer of Reproducibility 2024&lt;/em>.&lt;/p>
&lt;h2 id="since-last-time-typing-django-files">Since Last Time: Typing Django Files&lt;/h2>
&lt;p>Based on the profiling results from load testing a Wagtail blog site, I identified three modules in Django that were performance bottlenecks and added shallow types to them. These are available on our GitHub repository.&lt;/p>
&lt;ol>
&lt;li>&lt;a href="https://github.com/utahplt/static-python-perf/blob/main/Benchmark/django/shallow/db/backends/sqlite3/_functions.py" target="_blank" rel="noopener">&lt;code>django.db.backends.sqlite3._functions&lt;/code>&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://github.com/utahplt/static-python-perf/blob/main/Benchmark/django/shallow/utils/functional.py" target="_blank" rel="noopener">&lt;code>django.utils.functional&lt;/code>&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://github.com/utahplt/static-python-perf/blob/main/Benchmark/django/shallow/views/debug.py" target="_blank" rel="noopener">&lt;code>django.views.debug&lt;/code>&lt;/a>&lt;/li>
&lt;/ol>
&lt;p>I also wrote a &lt;a href="https://github.com/utahplt/static-python-perf/tree/main/Tool_shed/driver" target="_blank" rel="noopener">script&lt;/a> to mix untyped, shallow-typed, and advanced-typed versions of a Python module and create a series of such &lt;em>gradually typed&lt;/em> versions.&lt;/p>
&lt;h2 id="summary-of-experience-and-contributions">Summary of Experience and Contributions&lt;/h2>
&lt;ol>
&lt;li>
&lt;p>I tried to set up different versions of Zulip to make them work with Static Python. My setup scripts are available in our &lt;a href="https://github.com/utahplt/static-python-perf/tree/main/Benchmark/zulip" target="_blank" rel="noopener">repository&lt;/a>. Unfortunately, Zulip&amp;rsquo;s Zerver did not run with Static Python due to incompatibility of some Django modules. A few non-Django modules were also initially throwing errors when run with Static Python due to a &lt;a href="https://github.com/facebookincubator/cinder/issues/137" target="_blank" rel="noopener">bug in Cinder&lt;/a> – but I was able to get around with a hack (which I have described in the linked GitHub issue I opened on Cinder&amp;rsquo;s repository).&lt;/p>
&lt;/li>
&lt;li>
&lt;p>I created a &lt;em>locust-version&lt;/em> of the small Django-related benchmarks available in &lt;a href="https://github.com/python/pyperformance" target="_blank" rel="noopener">pyperperformance&lt;/a> and &lt;a href="https://github.com/facebookarchive/skybison" target="_blank" rel="noopener">skybison&lt;/a>. This helped me confirm that Django is by itself compatible with Static Python, and helped me get started with Locust. This too is available in our &lt;a href="https://github.com/utahplt/static-python-perf/tree/main/Benchmark/django_sample" target="_blank" rel="noopener">repository&lt;/a>.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>As described in the midterm report, I created a complete pipeline with Locust to simulate real-world load on a Wagtail blog site. The instructions and scripts for running these load tests as well as profiling the Django codebase are available (like everything else!) in our &lt;a href="https://github.com/utahplt/static-python-perf/tree/main/Benchmark/wagtail" target="_blank" rel="noopener">repository&lt;/a>.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>We added shallow types to the three Django modules mentioned above, and I created scripts to mix untyped, shallow-typed, and advanced-typed versions of a Python module to create a series of &lt;em>gradually typed&lt;/em> versions to be tested for performance. We found that advanced-typed code may often be structurally incompatible with shallow-typed code and are looking for a solution for this. We are tracking some examples of this in a &lt;a href="https://github.com/utahplt/static-python-perf/issues/16" target="_blank" rel="noopener">GitHub issue&lt;/a>.&lt;/p>
&lt;/li>
&lt;/ol>
&lt;h2 id="going-forward">Going Forward&lt;/h2>
&lt;p>I had a great time exploring Static Python, typing in Python, load testing, and all other aspects of this project. I was also fortunate to have a helpful mentor along with other amazing team members in the group. During this project, we hit several roadblocks like the challenges in setting up real-world applications with Static Python and the difficulty in adding &lt;em>advanced&lt;/em> types – but are managing to work around them. I will be continuing to work on this project until we have a complete set of benchmarks and a comprehensive report on the performance of Static Python.&lt;/p>
&lt;p>Our work will continue to be open-sourced and available on our &lt;a href="https://github.com/utahplt/static-python-perf" target="_blank" rel="noopener">GitHub repository&lt;/a> for anyone interested in following along or contributing.&lt;/p></description></item><item><title>[Final Report] Automated Reproducibility Checklist support within StatWrap</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/ucsc/statwrap/20241102-adi/</link><pubDate>Sat, 02 Nov 2024 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/ucsc/statwrap/20241102-adi/</guid><description>&lt;p>Namaste🙏🏻! I&amp;rsquo;m &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/adi-akhilesh-singh/">Adi Akhilesh Singh&lt;/a>, and I&amp;rsquo;m excited to share my final updates on the &lt;a href="https://drive.google.com/file/d/1xV7eHL9lIWGKueQJxBks6OB_rcXCr8JY/view?usp=sharing" target="_blank" rel="noopener">Reproducibility Checklists project&lt;/a> by StatWrap, under the mentorship of &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/luke-rasmussen/">Luke Rasmussen&lt;/a>.&lt;/p>
&lt;h2 id="project-overview">Project Overview&lt;/h2>
&lt;p>This project introduces customizable reproducibility checklists in StatWrap, enabling metadata-driven and user-guided generation of checklists. The goal is to enhance the reproducibility of research projects by providing researchers with structured and comprehensive checklist to ensure their work is reproducible.&lt;/p>
&lt;h2 id="project-links">Project Links&lt;/h2>
&lt;p>Explore the StatWrap project repository and my contributions during GSoC &amp;lsquo;24:&lt;/p>
&lt;ul>
&lt;li>&lt;a href="https://github.com/StatTag/StatWrap" target="_blank" rel="noopener">StatWrap&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://github.com/StatTag/StatWrap/tree/gsoc24" target="_blank" rel="noopener">GSoC &amp;lsquo;24 Contributions&lt;/a>&lt;/li>
&lt;/ul>
&lt;h2 id="progress-and-achievements">Progress And Achievements&lt;/h2>
&lt;p>During the timeline of this project, I worked on designing the interface for the checklist page and the data structure to support the project needs.
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="Checklist Interface" srcset="
/report/osre24/ucsc/statwrap/20241102-adi/interface_hu5405d4f4fe0fcc5c29037ce596b14456_175744_0e20d5ebd32af685d0d2ccea73085611.webp 400w,
/report/osre24/ucsc/statwrap/20241102-adi/interface_hu5405d4f4fe0fcc5c29037ce596b14456_175744_3b54d1a2b420d4de3f33b717849e243e.webp 760w,
/report/osre24/ucsc/statwrap/20241102-adi/interface_hu5405d4f4fe0fcc5c29037ce596b14456_175744_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/ucsc/statwrap/20241102-adi/interface_hu5405d4f4fe0fcc5c29037ce596b14456_175744_0e20d5ebd32af685d0d2ccea73085611.webp"
width="760"
height="432"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
The interface was designed with user needs in mind, featuring components such as:&lt;/p>
&lt;ul>
&lt;li>URLs component to manage external links or file URIs, attached to the project.&lt;/li>
&lt;li>Images component to display project image files.&lt;/li>
&lt;li>Checklist Notes component to manage user-added notes.&lt;/li>
&lt;/ul>
&lt;p>All these assets (Files, URLs, Images) can be added to each checklist statement using the existing assets and external resources(urls) present in the project.
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="Add Asset Dialog" srcset="
/report/osre24/ucsc/statwrap/20241102-adi/addasset_huf5f93b812eac7fe9e6235b66e18b25cf_152586_046cbc4227c33853dde195b066b2af19.webp 400w,
/report/osre24/ucsc/statwrap/20241102-adi/addasset_huf5f93b812eac7fe9e6235b66e18b25cf_152586_2076fca94822416fc8dfb0806ae54833.webp 760w,
/report/osre24/ucsc/statwrap/20241102-adi/addasset_huf5f93b812eac7fe9e6235b66e18b25cf_152586_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/ucsc/statwrap/20241102-adi/addasset_huf5f93b812eac7fe9e6235b66e18b25cf_152586_046cbc4227c33853dde195b066b2af19.webp"
width="760"
height="432"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
Additionally, for each checklist item, StatWrap runs relevant scans to provide meaningful data based on its requirements. For example, for the item, “All the software dependencies for the project are documented,” StatWrap scans project files to list the languages and dependencies detected.
For each checklist statement supported in StatWrap, we implement methods to retrieve specific information by scanning project data. StatWrap currently supports six such checklist statements identified as foundational for ensuring research reproducibility.
Additionally, the checklist can be exported as a PDF summary, generated by StatWrap using the checklist data, with options to include notes.
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="Checklist Report" srcset="
/report/osre24/ucsc/statwrap/20241102-adi/report_hu7a01407dc27c71052bc56e4eb6e3d4fb_270768_06eff861f558dd904b00349a9a2d2717.webp 400w,
/report/osre24/ucsc/statwrap/20241102-adi/report_hu7a01407dc27c71052bc56e4eb6e3d4fb_270768_70ef332c2c3871d3a097995a59a7dd65.webp 760w,
/report/osre24/ucsc/statwrap/20241102-adi/report_hu7a01407dc27c71052bc56e4eb6e3d4fb_270768_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/ucsc/statwrap/20241102-adi/report_hu7a01407dc27c71052bc56e4eb6e3d4fb_270768_06eff861f558dd904b00349a9a2d2717.webp"
width="760"
height="432"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;h2 id="future-prospects">Future Prospects&lt;/h2>
&lt;p>As the project concludes, several areas for growth have emerged:&lt;/p>
&lt;ul>
&lt;li>Expanding language support within StatWrap. While StatWrap already includes key languages used in research, there is always a scope to extend compatibility to cover even more technologies.&lt;/li>
&lt;li>Options to export a data-extensive report that includes checklist and their associated scan results.
These and other enhancements, like adding new checklist statements with their scanning methods, will extend StatWrap’s impact on reproducibility in research.&lt;/li>
&lt;/ul>
&lt;h2 id="earlier-blogs">Earlier Blogs&lt;/h2>
&lt;p>If you’re interested in seeing the project’s evolution, check out my earlier posts:&lt;/p>
&lt;ul>
&lt;li>&lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/ucsc/statwrap/20240614-adi/">Intro Blog&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/ucsc/statwrap/20240916-adi/">MidTerm Blog&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>Thank you for reading!&lt;/p></description></item><item><title>ML-Powered Problem Detection in Chameleon</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/uchicago/chameleoncloud/20241018-syed/</link><pubDate>Fri, 18 Oct 2024 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/uchicago/chameleoncloud/20241018-syed/</guid><description>&lt;p>Hello! My name is &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/syed-mohammad-qasim/">Syed Mohammad Qasim&lt;/a>, a PhD candidate at the Department of Electrical and Computer Engineering, Boston University.
This summer I worked on the project &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre24/uchicago/ml_detect_chameleon/">ML-Powered Problem Detection in Chameleon&lt;/a>
as part of the Summer of Reproducibility (SoR) program with the mentorship of &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/ayse-coskun/">Ayse Coskun&lt;/a> and &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/michael-sherman/">Michael Sherman&lt;/a>.&lt;/p>
&lt;p>Chameleon is an open testbed that has supported over 5,000 users working on more than 500 projects.
It provides access to over 538 bare metal nodes across various sites, offering approximately 15,000 CPU cores and 5 petabytes of storage.
Each site runs independent OpenStack services to deliver its offerings.
Currently, Chameleon Cloud comprehensively monitors the sites at the Texas Advanced Computing Center (TACC) and the University of Chicago.
Metrics are collected using Prometheus at each site and fed into a central Mimir cluster.
All logs are sent to a central Loki, with Grafana used for visualization and alerting.
Chameleon currently collects around 3,000 metrics. Manually reviewing and setting alerts for them is time-consuming and labor-intensive.
This project aims to help Chameleon operators monitor their systems more effectively and improve overall reliability by creating an anomaly detection service to augment the existing alerting framework.
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="High level data flow" srcset="
/report/osre24/uchicago/chameleoncloud/20241018-syed/ad_hubea58d1d850a610a2195fe38eece12fb_58199_deb097bd50da0d94a76fc0dc7719233e.webp 400w,
/report/osre24/uchicago/chameleoncloud/20241018-syed/ad_hubea58d1d850a610a2195fe38eece12fb_58199_deeb0941e942a319e1cc5a8b743b6993.webp 760w,
/report/osre24/uchicago/chameleoncloud/20241018-syed/ad_hubea58d1d850a610a2195fe38eece12fb_58199_1200x1200_fit_q75_h2_lanczos.webp 1200w"
src="https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/uchicago/chameleoncloud/20241018-syed/ad_hubea58d1d850a610a2195fe38eece12fb_58199_deb097bd50da0d94a76fc0dc7719233e.webp"
width="760"
height="412"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;p>Over the summer, we focused on analyzing the data and identified 33 key metrics, after discussions with Chameleon operators, from the Prometheus Node Exporter that serve as leading indicators of resource usage on the nodes. For example:&lt;/p>
&lt;ul>
&lt;li>CPU usage: Metrics like node_load1, node_load5, and node_load15.&lt;/li>
&lt;li>Memory usage: Including buffer utilization.&lt;/li>
&lt;li>Disk usage: Metrics for I/O time, and read/write byte rates.&lt;/li>
&lt;li>Network activity: Rate of bytes received and transmitted.&lt;/li>
&lt;li>Filesystem metrics: Such as inode_utilization_ratio and node_procs_blocked.&lt;/li>
&lt;li>System-level metrics: Including node forks, context switches, and interrupts.&lt;/li>
&lt;/ul>
&lt;p>Collected at a rate of every 5 minutes, these metrics provide a comprehensive view of node performance and resource consumption.
After finalizing the metrics we wanted to monitor, we selected the following four anomaly detection methods, primarily due to their popularity in academia and recent publication in high-impact conferences such as SIG-KDD and SC.&lt;/p>
&lt;ul>
&lt;li>Omni Anomaly, [KDD 2019] [without POT selection as it requires labels.]&lt;/li>
&lt;li>USAD, [KDD 2020]&lt;/li>
&lt;li>TranAD, [KDD 2022]&lt;/li>
&lt;li>Prodigy, [SC 2023] [Only the VAE, not using their feature selection as it requires labels.]&lt;/li>
&lt;/ul>
&lt;p>We collected 75 days of healthy data from Chameleon, and after applying min-max scaling, we trained the models.
We then used these models to run inference on the metrics collected during outages, as marked by Chameleon operators.
The goal was to determine whether the outage data revealed something interesting or anomalous.
We can verify our approach by manually reviewing the results generated by these four anomaly detection methods.
Below are the results from the four methods on different outages, followed by an example of how these methods identified the root cause of an anomaly.&lt;/p>
&lt;p>
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="Resulsts of different approaches" srcset="
/report/osre24/uchicago/chameleoncloud/20241018-syed/comparison_plot_huca4b68c1c2625c3b2e86230c54612ea2_129034_adb242a18524d714dae87d46b29e1612.webp 400w,
/report/osre24/uchicago/chameleoncloud/20241018-syed/comparison_plot_huca4b68c1c2625c3b2e86230c54612ea2_129034_9dcdbbc6bac285c06195f54d49bd5ffe.webp 760w,
/report/osre24/uchicago/chameleoncloud/20241018-syed/comparison_plot_huca4b68c1c2625c3b2e86230c54612ea2_129034_1200x1200_fit_q75_h2_lanczos.webp 1200w"
src="https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/uchicago/chameleoncloud/20241018-syed/comparison_plot_huca4b68c1c2625c3b2e86230c54612ea2_129034_adb242a18524d714dae87d46b29e1612.webp"
width="760"
height="355"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;p>The above figure shows the percentage of outage data that was flagged as anomalous by different models.&lt;/p>
&lt;p>
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="cause of anomaly according to each model" srcset="
/report/osre24/uchicago/chameleoncloud/20241018-syed/partial-authentication-outage_plot_hu92456580e56fddf4f3c592621d13c105_392593_6edd22782678b48ce3a7cebad859b982.webp 400w,
/report/osre24/uchicago/chameleoncloud/20241018-syed/partial-authentication-outage_plot_hu92456580e56fddf4f3c592621d13c105_392593_3da0e020cdc4ddfd508b77b6a0adc3d2.webp 760w,
/report/osre24/uchicago/chameleoncloud/20241018-syed/partial-authentication-outage_plot_hu92456580e56fddf4f3c592621d13c105_392593_1200x1200_fit_q75_h2_lanczos.webp 1200w"
src="https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/uchicago/chameleoncloud/20241018-syed/partial-authentication-outage_plot_hu92456580e56fddf4f3c592621d13c105_392593_6edd22782678b48ce3a7cebad859b982.webp"
width="760"
height="532"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="cause of anomaly according to each model" srcset="
/report/osre24/uchicago/chameleoncloud/20241018-syed/chiuc-uplink-networking_plot_hu92456580e56fddf4f3c592621d13c105_376789_03e6f344d24d9b37a7d615ee3207586b.webp 400w,
/report/osre24/uchicago/chameleoncloud/20241018-syed/chiuc-uplink-networking_plot_hu92456580e56fddf4f3c592621d13c105_376789_6193a4b7b9107cb2693435514d80d21d.webp 760w,
/report/osre24/uchicago/chameleoncloud/20241018-syed/chiuc-uplink-networking_plot_hu92456580e56fddf4f3c592621d13c105_376789_1200x1200_fit_q75_h2_lanczos.webp 1200w"
src="https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/uchicago/chameleoncloud/20241018-syed/chiuc-uplink-networking_plot_hu92456580e56fddf4f3c592621d13c105_376789_03e6f344d24d9b37a7d615ee3207586b.webp"
width="760"
height="532"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;p>The above two plots shows two examples of the top 5 metrics which contributed to the anomaly score by each anomaly detection model.&lt;/p>
&lt;p>Although the methods seem to indicate anomalies during outages, they are not able to pinpoint the affected service or the exact cause.
For example, the first partial authentication outage was due to a DNS error, which can manifest in various ways, such as reduced CPU, memory, or network usage.
This work is still in progress, and we are conducting the same analysis on container-level metrics for each service, allowing us to narrow the scope to the affected service and more effectively identify the root cause of anomalies.
We will share the next set of results soon.&lt;/p>
&lt;p>Thanks for your time, please feel free to reach out to me for any details or questions.&lt;/p></description></item><item><title>Data Leakage in Applied ML: model uses features that are not legitimate</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/nyu/data-leakage/20240924-shaivimalik/</link><pubDate>Tue, 24 Sep 2024 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/nyu/data-leakage/20240924-shaivimalik/</guid><description>&lt;p>Hello everyone!&lt;/p>
&lt;p>I have been working on reproducing the results from &lt;strong>Identification of COVID-19 Samples from Chest X-Ray Images Using Deep Learning: A Comparison of Transfer Learning Approaches&lt;/strong>. This study aimed to distinguish COVID-19 cases from normal and pneumonia cases using chest X-ray images. Since my last blog post, we have successfully reproduced the results using the VGG19 model, achieving a 92% accuracy on the test set. However, a significant demographic inconsistency exists: normal and pneumonia chest X-ray images were from pediatric patients, while COVID-19 chest X-ray images were from adults. This allowed the model to achieve high accuracy by learning features that were not clinically relevant.&lt;/p>
&lt;p>In &lt;a href="https://github.com/shaivimalik/covid_illegitimate_features/blob/main/notebooks/Correcting_Original_Result.ipynb" target="_blank" rel="noopener">Reproducing “Identification of COVID-19 samples from chest X-Ray images using deep learning: A comparison of transfer learning approaches” without Data Leakage&lt;/a>, we followed the methodology outlined in the paper, but with a key change: we used datasets containing adult chest X-ray images. This time, the model achieved an accuracy of 51%, a 41% drop from the earlier results, confirming that the metrics reported in the paper were overly optimistic due to data leakage, where the model learned illegitimate features.&lt;/p>
&lt;p>
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="GradCAM from husky vs wolf example " srcset="
/report/osre24/nyu/data-leakage/20240924-shaivimalik/gradcam_hu02772b80d1d95ff5ae817af6261a6059_438521_7bc94e0816aa962665434756bf41e27d.webp 400w,
/report/osre24/nyu/data-leakage/20240924-shaivimalik/gradcam_hu02772b80d1d95ff5ae817af6261a6059_438521_a160058d1708baa257daa63de5fada34.webp 760w,
/report/osre24/nyu/data-leakage/20240924-shaivimalik/gradcam_hu02772b80d1d95ff5ae817af6261a6059_438521_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/nyu/data-leakage/20240924-shaivimalik/gradcam_hu02772b80d1d95ff5ae817af6261a6059_438521_7bc94e0816aa962665434756bf41e27d.webp"
width="760"
height="329"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;p>To further illustrate this issue, we created a &lt;a href="https://github.com/shaivimalik/covid_illegitimate_features/blob/main/notebooks/Exploring_ConvNet_Activations.ipynb" target="_blank" rel="noopener">toy example&lt;/a> demonstrating how a model can learn illegitimate features. Using a small dataset of wolf and husky images, the model achieved an accuracy of 90%. We then revealed that this performance was due to a data leakage issue: all wolf images had snowy backgrounds, while husky images had grassy backgrounds. When we trained the model on a dataset where both wolf and husky images had white backgrounds, the accuracy dropped to 70%. This shows that the accuracy obtained earlier was an overly optimistic measure due to data leakage.&lt;/p>
&lt;p>You can explore our work on the COVID-19 paper &lt;a href="https://github.com/shaivimalik/covid_illegitimate_features" target="_blank" rel="noopener">here&lt;/a>.&lt;/p>
&lt;p>Lastly, I would like to thank &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/fraida-fund/">Fraida Fund&lt;/a> and &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/mohamed-saeed/">Mohamed Saeed&lt;/a> for their support and guidance throughout my SoR journey.&lt;/p></description></item><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>[Final] ScaleRep: Reproducing and benchmarking scalability bugs hiding in cloud systems</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/osu/scalerep/20240918-imzahra/</link><pubDate>Wed, 18 Sep 2024 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/osu/scalerep/20240918-imzahra/</guid><description>&lt;p>Hello everyone,&lt;/p>
&lt;p>In my SoR 2024 project, &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre24/osu/scalerep/">ScaleRep project&lt;/a> for SoR 2024 under the mentorship of &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/bogdan-bo-stoica/">Bogdan &amp;quot;Bo&amp;quot; Stoica&lt;/a> and &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/yang-wang/">Yang Wang&lt;/a>. I’m excited to share the final progress and insights we’ve gathered on tackling scalability bugs in large-scale distributed systems. I aimed to tackle the reproducibility challenges posed by scalability bugs in large-scale distributed systems. Below is a detailed summary of the investigations and findings we&amp;rsquo;ve conducted on scalability bugs in large-scale distributed systems.&lt;/p>
&lt;h2 id="project-overview">Project Overview&lt;/h2>
&lt;p>As you may recall, our project, ScaleRep, aimed to tackle the challenge of scalability bugs—those insidious issues that often arise in large-scale distributed systems under heavy workloads. These bugs, when triggered, can lead to significant system issues such as downtime, performance bottlenecks, and even data loss. They are particularly difficult to catch using traditional testing methods.&lt;/p>
&lt;p>Our primary focus was on reproducing these bugs, documenting the challenges involved, and providing insights into how these bugs manifest under various conditions. This documentation will help researchers identify, benchmark, and resolve similar issues in the future.&lt;/p>
&lt;h2 id="progress">Progress&lt;/h2>
&lt;p>Since the midterm update, several Apache Ignite bugs have been investigated, some of which have been successfully reproduced and uploaded to Trovi for the research community to access and reuse. Below is the progress on the bugs investigated:&lt;/p>
&lt;h3 id="bugs-investigated">Bugs Investigated&lt;/h3>
&lt;ol>
&lt;li>&lt;strong>&lt;a href="https://issues.apache.org/jira/browse/IGNITE-20614" target="_blank" rel="noopener">IGNITE-20614&lt;/a>&lt;/strong>&lt;/li>
&lt;li>&lt;strong>&lt;a href="https://issues.apache.org/jira/browse/IGNITE-17407" target="_blank" rel="noopener">IGNITE-17407&lt;/a>&lt;/strong>&lt;/li>
&lt;li>&lt;strong>&lt;a href="https://issues.apache.org/jira/browse/IGNITE-20602" target="_blank" rel="noopener">IGNITE-20602&lt;/a>&lt;/strong>&lt;/li>
&lt;li>&lt;strong>&lt;a href="https://issues.apache.org/jira/browse/IGNITE-16600" target="_blank" rel="noopener">IGNITE-16600&lt;/a>&lt;/strong>&lt;/li>
&lt;li>&lt;strong>&lt;a href="https://issues.apache.org/jira/browse/IGNITE-16072" target="_blank" rel="noopener">IGNITE-16072&lt;/a>&lt;/strong>&lt;/li>
&lt;li>&lt;strong>&lt;a href="https://issues.apache.org/jira/browse/IGNITE-16582" target="_blank" rel="noopener">IGNITE-16582&lt;/a>&lt;/strong>&lt;/li>
&lt;li>&lt;strong>&lt;a href="https://issues.apache.org/jira/browse/IGNITE-16581" target="_blank" rel="noopener">IGNITE-16581&lt;/a>&lt;/strong>&lt;/li>
&lt;/ol>
&lt;h2 id="key-insights--challenges">Key Insights &amp;amp; Challenges&lt;/h2>
&lt;ol>
&lt;li>
&lt;p>Complexity of Scalability Bugs
Many scalability bugs involve subtle and complex interactions that are not easily detected in standard testing environments. For instance, IGNITE-20602 only manifested under certain high-load conditions and required a specific workload and environment to reliably trigger the issue. This highlights the importance of large-scale testing when investigating scalability issues.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Dependency and Documentation Gaps
We encountered significant challenges with outdated dependencies and incomplete documentation, particularly in older bugs like IGNITE-16072. In these cases, reproducing the bug required extensive modifications or wasn’t feasible without investing disproportionate effort in updating dependencies.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Effectiveness of Trovi and Chameleon
Packaging and sharing our reproducible investigations through Trovi and Chameleon have proven highly effective. By providing researchers with pre-configured environments and detailed documentation, we’ve laid the groundwork for future collaboration and further research on these bugs. We expect this to greatly benefit others attempting to reproduce similar issues.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Impact of Speed-Based Throttling
Our investigation into IGNITE-16600 revealed several important insights into speed-based throttling and its impact on system performance under high-load conditions. By analyzing the checkpoint starvation and thread throttling mechanisms, we were able to identify areas for improvement in the latest Ignite releases.&lt;/p>
&lt;/li>
&lt;/ol>
&lt;h2 id="next-steps">Next Steps&lt;/h2>
&lt;p>Expanding Collaboration: The packaged bugs and replayable Trovi experiments will be made available to the broader research community, encouraging further investigation and enhancements to large-scale distributed systems.&lt;/p>
&lt;p>The ScaleRep project has been an exciting journey into the world of scalability bugs, pushing the boundaries of what’s possible in terms of reproducibility and benchmarking. Through this project, we’ve demonstrated the importance of rigorous testing and comprehensive documentation in improving the reliability of distributed systems.&lt;/p></description></item><item><title>Final Blog: Enhancing User Experience Reproducibility through TROVI Redesign</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/uchicago/chameleontroviredesign/20240918-aliciaem/</link><pubDate>Wed, 18 Sep 2024 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/uchicago/chameleontroviredesign/20240918-aliciaem/</guid><description>&lt;p>Hello! My name is &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/alicia-esquivel-morel/">Alicia Esquivel Morel&lt;/a>, and I&amp;rsquo;m a graduate research assistant at the University of Missouri – Columbia, pursuing a PhD in Computer Science. This summer, I worked on a project to &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre24/uchicago/trovi/">improve user experience reproducibility through a redesign of TROVI&lt;/a>, as part of the Summer of Reproducibility (SoR) program.&lt;/p>
&lt;p>Before even starting this project, and me as a rising researcher, I always saw reproducibility as one of the biggest challenges in research. What I wanted to see was always as reproducibility—being able to consistently replicate experiments and share them in a way that others can follow.&lt;/p>
&lt;p>&lt;strong>TROVI&lt;/strong>, is a platform designed to help with this. However, as I joined the project, I knew it had room for improvement, not oly in the user interface, but also in the ease of integrating code and data.&lt;/p>
&lt;p>This project aimed to address these challenges by redesigning TROVI to streamline experiment replication, making the platform more intuitive and accessible. The goal was simple: create a user-friendly experience that eliminates confusion and frustration, allowing researchers to focus on their work instead of the technical aspects of running a research experiment.&lt;/p>
&lt;h2 id="our-goals-in-the-beginning-of-the-summer">Our goals in the beginning of the summer:&lt;/h2>
&lt;ul>
&lt;li>We wanted to simplify TROVI’s interface for intuitive navigation, inspired by platforms like Google Colab.&lt;/li>
&lt;li>We wanted to make uploading and sharing code and data easier, with seamless integration with tools like GitHub.&lt;/li>
&lt;li>We wanted to create a mechanism for users to provide feedback, allowing TROVI to evolve based on real user needs.&lt;/li>
&lt;/ul>
&lt;h2 id="how-was-the-progress-and-what-we-have-achieved">How was the progress and what we have achieved&lt;/h2>
&lt;p>I started by conducting thorough UX research and a literature review on reproducibility platforms, establishing a solid foundation for the redesign. With user feedback guiding the process, I created wireframes and low-fidelity prototypes, focusing on making the platform more intuitive.&lt;/p>
&lt;p>As the project progressed, I built a higher-fidelity prototype that connected various components of the platform, ensuring a seamless user journey. I then tackled the back-end integration, which tied together the front-end flows with TROVI’s API.&lt;/p>
&lt;p>Throughout this project, I received &lt;strong>valuable support and guidance from my mentors&lt;/strong>. &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/mark-powers/">Mark Powers&lt;/a> walked me through TROVI’s architecture and helped me understand exactly what was needed for a successful redesign. Thanks to his mentorship, I not only completed the project but learned a great deal along the way. Thanks &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/mark-powers/">Mark Powers&lt;/a>!!&lt;/p>
&lt;p>Through iterations and feedback from initial user testing, and we the help of &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/kate-keahey/">Kate Keahey&lt;/a>, I refined the design to ensure it met the needs of the research community. By the end of the program, TROVI had evolved into a cohesive, user-friendly platform that leads to enhanced experiment reproducibility.&lt;/p>
&lt;h2 id="accomplishments">Accomplishments&lt;/h2>
&lt;ul>
&lt;li>A simplified interface that makes navigating, uploading, and collaborating much easier.&lt;/li>
&lt;li>GitHub integration that streamlines the process of sharing code and data with collaborators.&lt;/li>
&lt;li>A built-in feedback loop that enables TROVI to grow with its users, adapting to their needs as they arise.&lt;/li>
&lt;/ul>
&lt;p>The platform is also getting ready to move into &lt;strong>production&lt;/strong> and will soon be available for the research community.&lt;/p>
&lt;h2 id="whats-next">What’s Next?&lt;/h2>
&lt;p>While the core objectives have been successfully met, future improvements could further enhance the platform&amp;rsquo;s capabilities, such as additional integrations and more advanced collaboration features. User testing will continue to provide insights for ongoing development.&lt;/p>
&lt;p>I&amp;rsquo;m grateful for this opportunity! Thank you for following along!&lt;/p></description></item><item><title>[MidTerm] StatWrap: Automated Reproducibility Checklists Generation</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/ucsc/statwrap/20240916-adi/</link><pubDate>Mon, 16 Sep 2024 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/ucsc/statwrap/20240916-adi/</guid><description>&lt;p>Namaste🙏🏻! I&amp;rsquo;m &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/adi-akhilesh-singh/">Adi Akhilesh Singh&lt;/a>, and I&amp;rsquo;m excited to share progress updates on the &lt;a href="https://drive.google.com/file/d/1xV7eHL9lIWGKueQJxBks6OB_rcXCr8JY/view?usp=sharing" target="_blank" rel="noopener">Reproducibility Checklists project&lt;/a> by StatWrap, under the mentorship of &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/luke-rasmussen/">Luke Rasmussen&lt;/a>.&lt;/p>
&lt;h2 id="project-overview">Project Overview&lt;/h2>
&lt;p>The project aims to integrate customizable reproducibility checklists into StatWrap, using metadata and user input to automate their generation. The goal is to enhance the reproducibility of research projects by providing researchers with structured and comprehensive checklists to ensure their work is reproducible.&lt;/p>
&lt;h2 id="progress">Progress&lt;/h2>
&lt;p>Over the past few months, my mentors and I have worked on developing the interface for the checklists page and designed key components to support our project goals. We’ve implemented logic that iterates over each checklist item, displaying its statement along with Boolean controls (Yes/No buttons) for user interaction.&lt;/p>
&lt;p>
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="Checklists Page" srcset="
/report/osre24/ucsc/statwrap/20240916-adi/checklist1_hu49ca38eb7e3448bf4ed2dfab22f3668a_108784_5fcb2c29a07fa3c85a9668932f8201f8.webp 400w,
/report/osre24/ucsc/statwrap/20240916-adi/checklist1_hu49ca38eb7e3448bf4ed2dfab22f3668a_108784_0a0b05429d19c5fac3cf4bd2f233cd58.webp 760w,
/report/osre24/ucsc/statwrap/20240916-adi/checklist1_hu49ca38eb7e3448bf4ed2dfab22f3668a_108784_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/ucsc/statwrap/20240916-adi/checklist1_hu49ca38eb7e3448bf4ed2dfab22f3668a_108784_5fcb2c29a07fa3c85a9668932f8201f8.webp"
width="760"
height="416"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;p>We’ve also developed components to display attached images and URLs linked to each checklist item. Additionally, we’ve integrated a notes feature that allows users to add, edit, and view project-related notes. Currently, we are writing methods to integrate real-time project data into the checklists. For example, one method we’ve implemented scans project files (assets) to detect the languages used.&lt;/p>
&lt;p>
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="Checklists Details" srcset="
/report/osre24/ucsc/statwrap/20240916-adi/checklist2_hu44aad6e1d0078aeaafbbf946cadf1130_201385_ed67e0f337158d4ded72db604d4b14df.webp 400w,
/report/osre24/ucsc/statwrap/20240916-adi/checklist2_hu44aad6e1d0078aeaafbbf946cadf1130_201385_c2fdd3677c5b7099074f7846753c15ff.webp 760w,
/report/osre24/ucsc/statwrap/20240916-adi/checklist2_hu44aad6e1d0078aeaafbbf946cadf1130_201385_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/ucsc/statwrap/20240916-adi/checklist2_hu44aad6e1d0078aeaafbbf946cadf1130_201385_ed67e0f337158d4ded72db604d4b14df.webp"
width="760"
height="416"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;h2 id="whats-next">What&amp;rsquo;s Next?&lt;/h2>
&lt;p>As we move closer to the final evaluation phase, our focus will be on the following objectives:&lt;/p>
&lt;ul>
&lt;li>Implement methods for each checklist item, integrating real-time data from the project data to auto-populate checklist answers.&lt;/li>
&lt;li>Enhance the &lt;code>Attached Images&lt;/code> component to allow users to select and attach existing image assets from the project.&lt;/li>
&lt;li>Display the results of the scans for each checklist item, providing users with detailed outputs based on the automated analysis.&lt;/li>
&lt;/ul>
&lt;p>Stay tuned for further updates as we continue developing this feature set! 🚀&lt;/p></description></item><item><title>Final Post: Enhancing Reproducibility and Portability in Network Experiments</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/tum/slices/20240905-warmuth/</link><pubDate>Thu, 05 Sep 2024 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/tum/slices/20240905-warmuth/</guid><description>&lt;h2 id="introduction">Introduction&lt;/h2>
&lt;p>As my project with the Summer of Reproducibility (SoR) 2024 comes to a close, I’d like to reflect on the journey and the outcomes achieved. My project focused on &lt;strong>enhancing the reproducibility and portability of network experiments&lt;/strong> by integrating the &lt;strong>RO-Crate standard&lt;/strong> into the &lt;strong>TUM intern testbed pos (plain orchestrating service)&lt;/strong>, and deploying this testbed on the &lt;strong>Chameleon cloud infrastructure&lt;/strong>. The aim was to ensure that experiments conducted on one platform could be seamlessly reproduced on another, adhering to the &lt;strong>FAIR principles&lt;/strong> (Findable, Accessible, Interoperable, Reusable) for research data.&lt;/p>
&lt;h2 id="project-recap">Project Recap&lt;/h2>
&lt;p>The core goal was to make the experiments reproducible and portable between different testbeds like TUM’s pos and Chameleon. To achieve this, I integrated the &lt;strong>RO-Crate standard&lt;/strong>, which ensures that all experiment data is automatically documented and stored with metadata, making it easier for others and especially for machines to understand, replicate, and build on the results. Additionally, deploying a lightweight version of pos on the &lt;strong>Chameleon testbed&lt;/strong> enabled cross-testbed execution, allowing experiments to be replicated across both environments without significant modifications.&lt;/p>
&lt;h2 id="key-achievements">Key Achievements&lt;/h2>
&lt;p>Over the course of the project, several key milestones were achieved:&lt;/p>
&lt;ul>
&lt;li>
&lt;p>&lt;strong>RO-Crate Integration&lt;/strong>: The first step was restructuring the results folder and automating the generation of metadata using RO-Crate. This ensured that all experiment data was comprehensively documented with details like author information, hardware configurations, and experiment scripts resulting in comprehensive &lt;code>ro-crate-metadata.json&lt;/code> files as important part of each result folder.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Improved Data Management&lt;/strong>: The integration of RO-Crate greatly simplified the process of organizing and retrieving experiment data and metadata with information about the experiment and the result files. All metadata was automatically generated, making it easier to share and document the experiments for other researchers to replicate.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Automatic Upload to Zenodo&lt;/strong>: Another crucial achievement was the implementation of automatic uploading of pos experiment result folders to &lt;strong>Zenodo&lt;/strong>, an open-access repository. This step significantly improved the reproducibility and sharing of experiment results, making them easily accessible to the broader scientific community. By utilizing Zenodo, we ensured that experiment results, along with their RO-Crate metadata, could be archived and referenced, fostering greater transparency and collaboration in scientific research.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Chameleon Deployment&lt;/strong>: Deploying the pos testbed within the Chameleon environment required managing various complexities, particularly related to Chameleon’s OpenStack API, networking setup, and hardware configurations. Coordinating the network components and infrastructure to support pos functionality in this testbed environment demanded significant adjustments to ensure smooth integration and operation.&lt;/p>
&lt;/li>
&lt;/ul>
&lt;h2 id="challenges">Challenges&lt;/h2>
&lt;p>Like any project, this one came with its own set of challenges:&lt;/p>
&lt;ul>
&lt;li>
&lt;p>&lt;strong>Balancing Automation and Flexibility&lt;/strong>: While automating the generation of RO-Crate metadata, it was crucial to ensure that the flexibility required by researchers for customizing their documentation was not compromised. Finding this balance required in-depth adjustments to the testbed infrastructure.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Complexity of Testbed Systems&lt;/strong>: Integrating RO-Crate into a complex system like pos, and ensuring it works seamlessly with Chameleon, involved understanding and adapting to the complexities of both testbeds.&lt;/p>
&lt;/li>
&lt;/ul>
&lt;h2 id="future-directions">Future Directions&lt;/h2>
&lt;p>As I move forward with my master&amp;rsquo;s thesis working on these challenges, we plan to expand on this work by:&lt;/p>
&lt;ul>
&lt;li>
&lt;p>&lt;strong>Extending the Chameleon Deployment&lt;/strong>: We aim to deploy the full version of pos on Chameleon, supporting more complex and larger-scale experiments.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Supporting Complex Experiment Workflows&lt;/strong>: Future work will focus on handling more intricate and larger datasets, ensuring reproducibility for complex workflows. Only by executing more complex experiments will we be able to thoroughly analyze and compare the differences between executions in pos and the pos deployed on Chameleon, helping us better understand the impact of different testbed environments on experiment outcomes.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Automation&lt;/strong>: The ultimate goal is to fully automate the process of experiment execution, result documentation, and sharing across testbeds, reducing manual intervention and further enhancing reproducibility.&lt;/p>
&lt;/li>
&lt;/ul>
&lt;h2 id="reflections">Reflections&lt;/h2>
&lt;p>By integrating the RO-Crate standard and deploying pos on the Chameleon testbed, we have made significant steps toward enhancing the reproducibility, accessibility, and portability of network experiments across research platforms. These efforts contribute to more shareable, and replicable research processes in the scientific community.&lt;/p>
&lt;p>I am excited about the future work ahead and am grateful for the mentorship and support I received during this project.&lt;/p>
&lt;h2 id="deliverables-and-availability">Deliverables and Availability&lt;/h2>
&lt;p>Due to the current non-public status of the pos framework, &lt;strong>the code and deliverables are not publicly available&lt;/strong> at the moment.&lt;/p>
&lt;h2 id="previous-blogs">Previous Blogs&lt;/h2>
&lt;p>Make sure to check out my other blogs to see how I started this project and the challenges I faced along the way:&lt;/p>
&lt;ul>
&lt;li>&lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/tum/slices/20240517-warmuth/">Introduction&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/tum/slices/20240716-warmuth/">Midterm Blog&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>Servus!&lt;/p></description></item><item><title>Understanding Data Leakage in Machine Learning: A Focus on TF-IDF</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/nyu/data-leakage/20240905-kyrillosishak/</link><pubDate>Thu, 05 Sep 2024 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/nyu/data-leakage/20240905-kyrillosishak/</guid><description>&lt;p>Hello again!&lt;/p>
&lt;p>This is my final blog post, and I will be discussing the second material I created for the 2024 Summer of Reproducibility Fellowship. As you may recall from my first post, I am working on the &lt;strong>Exploring Data Leakage in Applied ML: Reproducing Examples of Irreproducibility&lt;/strong> project with &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/fraida-fund/">Fraida Fund&lt;/a> and &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/mohamed-saeed/">Mohamed Saeed&lt;/a> as my mentors.&lt;/p>
&lt;p>This blog post will explore how data leakage can occur during feature extraction, particularly with the commonly used &lt;strong>TF-IDF&lt;/strong> vectorizer, and its impact on model generalization.&lt;/p>
&lt;h1 id="introduction">Introduction&lt;/h1>
&lt;p>In machine learning, data leakage is a critical issue that can severely impact model performance. It occurs when information from outside the training dataset is improperly used to create the model, leading to overly optimistic performance during evaluation. One common source of leakage comes from how features, such as those extracted using &lt;strong>TF-IDF&lt;/strong> (Term Frequency-Inverse Document Frequency), are handled. In this post, we&amp;rsquo;ll explore how data leakage can happen during feature extraction with TF-IDF and how it affects model accuracy.&lt;/p>
&lt;h1 id="what-is-tf-idf">What is TF-IDF?&lt;/h1>
&lt;p>TF-IDF is a method used to evaluate how important a word is in a document relative to a collection of documents. It consists of two components:&lt;/p>
&lt;ol>
&lt;li>&lt;strong>Term Frequency (TF)&lt;/strong>: Measures how frequently a term appears in a document.&lt;/li>
&lt;li>&lt;strong>Inverse Document Frequency (IDF)&lt;/strong>: Reduces the importance of terms that appear frequently across many documents.&lt;/li>
&lt;/ol>
&lt;p>Together, they provide a weighted value for each word, reflecting its importance relative to the dataset.&lt;/p>
&lt;h1 id="how-data-leakage-occurs-with-tf-idf">How Data Leakage Occurs with TF-IDF&lt;/h1>
&lt;p>Data leakage with TF-IDF happens when the inverse document frequency (IDF) is calculated using the entire dataset (including the test set) before splitting it into training and test sets. This means the model has access to information from the test set during training, leading to artificially inflated results. This is a subtle form of data leakage, as it often goes unnoticed.&lt;/p>
&lt;p>For example, when calculating the TF-IDF score, if the word &amp;ldquo;banana&amp;rdquo; appears more frequently in the test set but is considered during training, the model downplays its significance. As a result, the model may fail to predict correctly when &amp;ldquo;banana&amp;rdquo; is important in the test data.&lt;/p>
&lt;h1 id="why-does-this-matter">Why Does This Matter?&lt;/h1>
&lt;p>If the test data is included when calculating the IDF, the model gains unintended insight into the test set&amp;rsquo;s word distribution. In real-world scenarios, the test data is supposed to be unseen during training. By allowing the model to see this information, you&amp;rsquo;re essentially reducing the uncertainty that the model should have about future data.&lt;/p>
&lt;h1 id="impact-of-data-leakage-on-model-performance">Impact of Data Leakage on Model Performance&lt;/h1>
&lt;p>Let&amp;rsquo;s consider two cases to understand the impact of data leakage in detail:&lt;/p>
&lt;ol>
&lt;li>&lt;strong>When a word is rare in the training set but common in the test set&lt;/strong>: The model will underestimate the importance of this word during training, leading to poor performance when the word is critical in test documents.&lt;/li>
&lt;li>&lt;strong>When a word is common in the training set but rare in the test set&lt;/strong>: The model will overemphasize the word during training, leading to poor predictions when the word doesn’t appear as often in unseen data.&lt;/li>
&lt;/ol>
&lt;h3 id="case-study-data-leakage-in-tf-idf">Case Study: Data Leakage in TF-IDF&lt;/h3>
&lt;p>To see this effect in action, consider a small toy dataset where the presence of the word &amp;ldquo;banana&amp;rdquo; determines the label. If the word &amp;ldquo;banana&amp;rdquo; appears in a sentence, the label is 1; otherwise, the label is 0. Using &lt;strong>TF-IDF&lt;/strong> to vectorize the text, we train a machine learning model to predict this label.&lt;/p>
&lt;p>In the &lt;strong>first scenario&lt;/strong>, we calculate the &lt;strong>TF-IDF&lt;/strong> using the entire dataset before splitting it into training and testing sets. This causes data leakage since the model now knows the distribution of words across both sets. For instance, if &amp;ldquo;banana&amp;rdquo; is more common in the test set than the training set, the &lt;strong>IDF&lt;/strong> score for &amp;ldquo;banana&amp;rdquo; will be lower across the entire dataset, leading the model to downplay its importance.&lt;/p>
&lt;p>In the &lt;strong>second scenario&lt;/strong>, we calculate &lt;strong>TF-IDF&lt;/strong> only on the training set, ensuring that the test set remains unseen. This preserves the integrity of the test set, giving us a more realistic evaluation of the model&amp;rsquo;s performance.&lt;/p>
&lt;p>In both scenarios, the model&amp;rsquo;s accuracy is drastically different. When leakage is present, performance is artificially high during training but poor when tested on unseen data. Without leakage, the model generalizes better, as it is evaluated on truly unseen data.&lt;/p>
&lt;h1 id="avoiding-data-leakage">Avoiding Data Leakage&lt;/h1>
&lt;p>Avoiding data leakage is essential for building reliable machine learning models that generalize well to new data. Here are a few guidelines to help prevent leakage:&lt;/p>
&lt;ol>
&lt;li>&lt;strong>Split the dataset before feature extraction&lt;/strong>: Always divide your data into training and test sets before applying any feature engineering techniques.&lt;/li>
&lt;li>&lt;strong>Ensure proper cross-validation&lt;/strong>: When using cross-validation, ensure that the training and test splits do not overlap in any way that can leak information between them.&lt;/li>
&lt;li>&lt;strong>Be cautious with time-series data&lt;/strong>: In time-series models, avoid using future data to predict past events, as this can lead to leakage.&lt;/li>
&lt;/ol>
&lt;h1 id="conclusion">Conclusion&lt;/h1>
&lt;p>Avoiding data leakage is crucial for building robust machine learning models. In the case of TF-IDF, ensuring that feature extraction is done &lt;strong>only on the training set&lt;/strong> and not on the entire dataset is key to preventing leakage. Properly addressing this issue leads to better generalization and more reliable models in real-world applications.&lt;/p>
&lt;p>This blog post provided a case study on how TF-IDF can introduce data leakage and why it&amp;rsquo;s important to carefully handle your dataset before feature extraction. By splitting your data properly and ensuring that no test data &amp;ldquo;leaks&amp;rdquo; into the training process, you can build models that truly reflect real-world performance.&lt;/p>
&lt;p>Thanks for reading!&lt;/p></description></item><item><title>AutoAppendix: Towards One-Click reproducibility of high-performance computing experiments</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/tuwien/autoappendix/20240904-kkrassni/</link><pubDate>Wed, 04 Sep 2024 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/tuwien/autoappendix/20240904-kkrassni/</guid><description>&lt;p>Hi everyone,&lt;/p>
&lt;p>I&amp;rsquo;m excited to wrap up the AutoAppendix project with our final findings and
insights. Over the course of this initiative, we’ve worked to assess the
reproducibility of artifacts submitted to the SC24 conference and create
guidelines that aim to improve the standard for reproducible experiments in the
future. Here&amp;rsquo;s a summary of the project&amp;rsquo;s final phase and what we’ve learned.&lt;/p>
&lt;h2 id="project-goals-and-progress">Project Goals and Progress&lt;/h2>
&lt;p>The goal of AutoAppendix was to evaluate the computational artifacts provided by
SC24 paper submissions, focusing on reproducibility. These artifacts accompany
papers applying for the &amp;ldquo;Artifact Replicable&amp;rdquo; badge in the conference&amp;rsquo;s
reproducibility initiative. Volunteer members of this initiative assess 1-2 paper appendices each. In this project, we analyzed a larger portion of artifacts to gain a broader perspective on potential improvements to the reproducibility process.&lt;/p>
&lt;p>We selected 18 out of 45 submissions, focusing on experiments that could be
easily replicated on Chameleon Cloud. Our evaluation criteria were based on
simplicity (single-node setups) and availability of resources. The final
analysis expanded on the earlier midterm findings, shedding light on various
challenges and best practices related to artifact reproducibility.&lt;/p>
&lt;h2 id="artifact-evaluation-process">Artifact Evaluation Process&lt;/h2>
&lt;p>During the evaluation process, we focused on examining the completeness and
clarity of the provided artifacts, looking closely at documentation, setup
instructions, and the degree of automation.&lt;/p>
&lt;p>Our first step was to replicate the environments used in the original
experiments as closely as possible using the resources from Chameleon. Many papers included instructions for creating the necessary software environments,
but the clarity of these instructions varied significantly across submissions.
In some cases, we even encountered challenges in reproducing results due to unclear
instructions or missing dependencies, which reinforced the need for
standardized, clear documentation as part of the artifact submission process.&lt;/p>
&lt;p>We observed that &lt;em>containerization&lt;/em> and &lt;em>semi-automated setups&lt;/em> (with scripts
that break down the experiment into smaller steps) were particularly effective
in enhancing the reproducibility of the artifacts. One artifact
particularly caught our attention due to its usage of the Chameleon JupyterHub
platform, making it reproducible with a &lt;em>single click&lt;/em>. This highlighted the
potential for
streamlining the reproducibility process and showcased that, with sufficient
effort and the right tools, experiments can indeed be made replicable by
&lt;em>anyone&lt;/em>.&lt;/p>
&lt;h2 id="results">Results&lt;/h2>
&lt;p>Throughout the evaluation, we observed that reproducibility could vary widely
based on the clarity and completeness of the documentation and the automation of
setup procedures. Artifacts that were structured with clear, detailed steps for
installation and execution tended to perform well in terms of replicability.&lt;/p>
&lt;p>From our evaluation, we derived a set of guidelines (intended as must-haves) and
best practices (recommended) for artifact reproducibility, which can be found below.&lt;/p>
&lt;p>Due to our fascination of the potential of the Chameleon JupyterHub platform and its adjacent &lt;a href="https://www.chameleoncloud.org/experiment/share/" target="_blank" rel="noopener">Trovi&lt;/a> artifact repository, we decided to create
several templates that can be used as a starting point for authors to make integration
of their artifacts with the platform easier. In the design of these templates,
we made sure that artifacts structured according to our guidelines are
particularly easy to integrate.&lt;/p>
&lt;h3 id="guidelines">Guidelines&lt;/h3>
&lt;ol>
&lt;li>
&lt;p>&lt;strong>Clear Documentation&lt;/strong>: Provide clear and detailed documentation for the artifact in the corresponding appendix, such that the artifact can be replicated without the need for additional information. For third-party software, it is acceptable to refer to the official documentation.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Software Setup&lt;/strong>: Clearly specify the versions of all (necessary) software components used
in the creation of the artifact. This includes the operating system, libraries, and tools.
Particularly, state all software setup steps to replicate the software environment&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Hardware Specifications&lt;/strong>: Specify the hardware the experiment was conducted on. Importantly,
state the architecture the experiments are intended to run on, and ensure that
provided software (e.g. docker images) are compatible with commonly available
architectures.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Expected Results&lt;/strong>: Always provide the expected outputs of the experiment, especially when run on different hardware, to make it easier for reviewers to assess the success of the replication.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Public Data&lt;/strong>: Publish the experiment data to a public repository, and make
sure the data is available for download to reviewers and readers, especially during
the evaluation period. Zenodo is a recommended repository for this purpose.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Automated Reproducibility&lt;/strong>: For long-running experiments, provide
progress output to the reviewer to ensure the experiment is running as expected.
Give an idea in the documentation of&lt;/p>
&lt;/li>
&lt;/ol>
&lt;ul>
&lt;li>how much time long-running steps in the reproduction will take&lt;/li>
&lt;li>what the progress output looks like or how frequently it is emitted&lt;/li>
&lt;/ul>
&lt;ol start="7">
&lt;li>&lt;strong>Sample Execution&lt;/strong>: Conduct a sample evaluation with hardware and software
as similar as possible to the intended reproduction environment.&lt;/li>
&lt;/ol>
&lt;h3 id="best-practices">Best Practices&lt;/h3>
&lt;ol>
&lt;li>&lt;strong>Reproduciible Environment&lt;/strong>:
Use a reproducible environment for the artifact. This can come in several forms:&lt;/li>
&lt;/ol>
&lt;ul>
&lt;li>&lt;strong>Containerization&lt;/strong>: Provide instructions for building the environment, or,
ideally, provide a ready-to-use image. For example, Docker, Signularity or VirtualBox images can be used for this purpose&lt;/li>
&lt;li>&lt;strong>Reproducible Builds&lt;/strong>: Package managers like &lt;a href="https://nixos.org/" target="_blank" rel="noopener">Nix&lt;/a> or &lt;a href="https://guix.gnu.org/" target="_blank" rel="noopener">Guix&lt;/a> have recently spiked in popularity and allow their users to create reproducible environments, matching the exact software versions across different systems.&lt;/li>
&lt;/ul>
&lt;ol start="2">
&lt;li>
&lt;p>&lt;strong>Partial Automation&lt;/strong>: It often makes sense to break an experiment down into
smaller, more manageable steps. For Linux-based systems, bash scripts are particularly viable for this purpose. We recommend prefixing the scripts for each step with
a number, such that the order of execution is clear.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>X11 Availability&lt;/strong>: Usually, reviewers will not have access to a graphical user
interface on the system where the artifact is evaluated. If the artifact requires a
graphical user interface, provide a way to run the artifact without it. For example,
save &lt;code>matplotlib&lt;/code> plots to disk instead of showing them with &lt;code>plt.show()&lt;/code>.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Experiment output&lt;/strong>: Do not provide output files of the experiment in your artifact,
unless explicitly intended. If provided output files are intended for comparison,
they should be marked as such (e.g. in their filename). Similarly, any output logs
or interactive outputs in Jupyter notebook should not be part of the artifact, but
rather be initially generate during the artifact evaluation.&lt;/p>
&lt;/li>
&lt;/ol>
&lt;h3 id="trovi-templates">Trovi Templates&lt;/h3>
&lt;p>Our templates share a common base that features
a &lt;em>central configuration file&lt;/em> for modifying the
Chameleon experiment parameters (such as node type). Building on this base, we provide three templates with sample experiments that each use different environments:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Docker template&lt;/strong>: This template is designed for containerized experiments and supports nvidia GPUs over the &lt;code>nvidia-container-toolkit&lt;/code> integration.&lt;/li>
&lt;li>&lt;strong>Nix template&lt;/strong>: Sets up the Nix package manager with a &lt;code>shell.nix&lt;/code> file that can be used to configure the environment.&lt;/li>
&lt;li>&lt;strong>Guix template&lt;/strong>: Installs the Guix package manager and executes a sample experiment from an existing reproducible paper that hinges on the reproducibility of the software environment.&lt;/li>
&lt;/ul>
&lt;h2 id="conclusion">Conclusion&lt;/h2>
&lt;p>In summary, the AutoAppendix project has been an insightful journey into the
complexities of artifact reproducibility. Our evaluations highlight both the
challenges and potential solutions for future reproducibility initiatives. By
following these essential guidelines and implementing best practices, we aim for the
research community to achieve higher standards of transparency and reliability
in scientific research and help to ensure that the results of experiments can be replicated by others.&lt;/p>
&lt;p>Thanks for following along with our progress! We’re excited to see the positive
impact these findings will have on the research community.&lt;/p>
&lt;p>If you are interested in the full project report, you can find it &lt;a href="https://drive.google.com/drive/folders/113OsxGAlfyvlJnvpH5zL2XD-8gE3CYyu?usp=sharing" target="_blank" rel="noopener">here&lt;/a>, together with the &lt;em>Trovi&lt;/em> templates.&lt;/p></description></item><item><title>Reflecting on the ScaleRep Project: Achievements and Insights</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/osu/scalerep/20240902-shuangliang/</link><pubDate>Mon, 02 Sep 2024 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/osu/scalerep/20240902-shuangliang/</guid><description>&lt;p>Hello everyone,&lt;/p>
&lt;p>As we reach the conclusion of our ScaleRep project, I want to take a moment to reflect on the journey we’ve undertaken and the significant milestones we’ve achieved. Throughout this project, our primary focus was on identifying, reproducing, and analyzing scalability bugs in cloud systems such as Cassandra, HDFS, and Hadoop. Under the mentorship of Professor Yang Wang and Bogdan “Bo” Stoica, we have gained valuable insights into the complexities of scalability issues and their impact on large-scale distributed systems.&lt;/p>
&lt;h1 id="key-accomplishments">Key Accomplishments&lt;/h1>
&lt;p>Over the course of the project, we delved into various aspects of scalability bugs, reproducing some of the most challenging issues faced by cloud systems. One of our notable accomplishments was the successful reproduction and validation of developer fixes for several critical bugs in HDFS. These included:&lt;/p>
&lt;h2 id="1-throttling-bugs-in-hdfs">1. Throttling Bugs in HDFS:&lt;/h2>
&lt;p>We investigated HDFS-17087, where the absence of a throttler in led to unregulated data reads, causing potential performance degradation. By reproducing the bug and applying the developer’s patch, we were able to observe significant improvements in system stability.DataXceiver#readBlock&lt;/p>
&lt;h2 id="2-reducing-datanode-load">2. Reducing DataNode Load:&lt;/h2>
&lt;p>HDFS-16386 was another crucial bug we worked on, which involved reducing the load on DataNodes when was working. By analyzing the effects of high CPU and memory usage, we proposed and validated a solution that reduced the number of concurrent threads, ultimately improving the DataNode’s performance.FsDatasetAsyncDiskService&lt;/p>
&lt;h2 id="3-improving-log-throttling">3. Improving Log Throttling:&lt;/h2>
&lt;p>In HDFS-16872, we addressed excessive logging caused by unshared instances of . By making a static member, we were able to share throttling across instances, reducing unnecessary log entries and improving system efficiency.LogThrottlingHelperLogThrottlingHelper&lt;/p>
&lt;h1 id="insights-and-learnings">Insights and Learnings&lt;/h1>
&lt;h2 id="1-systematic-bug-reproduction">1. Systematic Bug Reproduction:&lt;/h2>
&lt;p>One of the most critical aspects of our work was developing a systematic approach to bug reproduction. This involved carefully setting up the environment, applying patches, and validating results through detailed monitoring and analysis. Our reproducible artifacts and investigation scripts will serve as a resource for future researchers and developers.&lt;/p>
&lt;h2 id="2-impact-of-throttling-mechanisms">2. Impact of Throttling Mechanisms:&lt;/h2>
&lt;p>Our exploration of throttling bugs highlighted the importance of accurate throttling mechanisms in maintaining system performance and stability. Small issues, such as incorrect data rate calculations, can have significant ripple effects on system behavior, emphasizing the need for precise and effective solutions.&lt;/p>
&lt;h2 id="3-collaboration-and-open-source-contribution">3. Collaboration and Open Source Contribution:&lt;/h2>
&lt;p>Working on an open-source project like ScaleRep underscored the importance of collaboration within the community. The bugs we analyzed and fixed not only improved the systems we worked on but also contributed to the broader effort of enhancing the reliability of cloud systems.&lt;/p>
&lt;h1 id="conclusion">Conclusion&lt;/h1>
&lt;p>As we wrap up the ScaleRep project, I am proud of the progress we have made and the contributions we have delivered to the open-source community. The knowledge and experience gained from this project will undoubtedly shape our future endeavors in the field of distributed systems and cloud computing. I am grateful for the guidance and support provided by Professor Yang Wang and Bogdan “Bo” Stoica throughout this journey.&lt;/p>
&lt;p>Thank you for following along, and I look forward to continuing to explore the future of scalable and reliable cloud systems!&lt;/p></description></item><item><title>Final Report: Stream processing support for FasTensor</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/lbl/fastensor/20240830-aditya_narayan/</link><pubDate>Fri, 30 Aug 2024 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/lbl/fastensor/20240830-aditya_narayan/</guid><description>&lt;h1 id="final-report-stream-processing-support-for-fastensor">Final Report: Stream processing support for FasTensor&lt;/h1>
&lt;h2 id="project-description">Project Description&lt;/h2>
&lt;p>FasTensor is a scientific computing library specialized in performing computations over dense matrices that exhibit spatial locality, a characteristic often found in physical phenomena data. Our GSoC'24 project aimed to enhance FasTensor by enabling it to ingest and process live data streams from sensors and scientific equipment.&lt;/p>
&lt;h2 id="what-is-fastensor">What is FasTensor?&lt;/h2>
&lt;p>Imagine you&amp;rsquo;re working on a physical simulation or solving partial differential equations (PDEs). You&amp;rsquo;ve discretized your PDE, but now you face a new challenge: you need to run your computations fast and parallelize them across massive compute clusters.&lt;/p>
&lt;p>At this point, you find yourself describing a stencil &lt;a href="https://dl.acm.org/doi/abs/10.1145/2686745.2686756" target="_blank" rel="noopener">[1]&lt;/a> operation. But should you really spend your time tinkering with loop orders, data layouts, and countless other side-quests unrelated to your core problem?&lt;/p>
&lt;p>This is where FasTensor comes in: Describe your computation as a stencil, and it takes care of ensuring optimal execution. FasTensor lets you focus on the science, not the implementation details.&lt;/p>
&lt;h2 id="repository-links">Repository Links&lt;/h2>
&lt;ul>
&lt;li>FasTensor: &lt;a href="https://github.com/BinDong314/FasTensor" target="_blank" rel="noopener">https://github.com/BinDong314/FasTensor&lt;/a>&lt;/li>
&lt;li>My fork: &lt;a href="https://github.com/my-name/FasTensor/tree/ftstream" target="_blank" rel="noopener">https://github.com/my-name/FasTensor/tree/ftstream&lt;/a>&lt;/li>
&lt;/ul>
&lt;h3 id="prs">PR(s)&lt;/h3>
&lt;ol>
&lt;li>&lt;a href="https://github.com/BinDong314/FasTensor/pull/1" target="_blank" rel="noopener">Stream processing support for FasTensor completed.&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://github.com/BinDong314/FasTensor/pull/2" target="_blank" rel="noopener">Merge ftstream into the FasTensor repo&lt;/a>&lt;/li>
&lt;/ol>
&lt;h2 id="work-done-this-summer">Work done this summer&lt;/h2>
&lt;h3 id="develop-streaming-simulator-ftstream">Develop Streaming simulator: FTStream&lt;/h3>
&lt;p>I was first entasked by Dr. Bin to develop a stream simulator for testing the streaming capability of FasTensor. For testing purposes, a stream is characterized by file size, count, and arrival interval. FTStream can generate streams of various sizes and intervals, up to the theoretical limits of disk and filesystem. We&amp;rsquo;re talking speeds up to 2.5 GiB/s on a non-parallel NVMe!&lt;/p>
&lt;p>Writing this tool was an adventure in throughput testing and exploring APIs. I wrote multiple drivers, each for a different whim and hijinks of systems in the HPC world. Here&amp;rsquo;s a brief journey through the APIs we explored:&lt;/p>
&lt;ol>
&lt;li>
&lt;p>&lt;strong>HDF5 APIs:&lt;/strong> Pretty fast in flush-to-disk operation, but the API design strongly binds to file handles, which inhibits high throughput duplication.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>HDF5 VFL and VOL:&lt;/strong> We dabbled in these dark arts, but there be dragons! Keeping a long-term view of maintenance, we dropped the idea.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>POSIX O_DIRECT:&lt;/strong> This involved getting your buffers aligned right and handling remainders correctly. A step up, but not quite at the theoretical limits.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Linux AIO:&lt;/strong> Streaming is latency sensitive domain, to reach the theoretical limits, every syscall saved matters. Linux AIO allowed us syscall batching with &lt;code>io_submit()&lt;/code>. It took a few testing sessions to get the correct combo of queue depth, buffer size, and alignment right.&lt;/p>
&lt;/li>
&lt;/ol>
&lt;p>We settled on O_DIRECT + Linux AIO. Feel free to modify &lt;code>ftstream/fastflush.h&lt;/code> to suit your needs.&lt;/p>
&lt;img src="https://raw.githubusercontent.com/aditya-narayan5/GSoC24-Final_Report/f486087ae3e6ef1f1077c885e9352c9440848724/images/ftstream.png" width=75% height=75%>
&lt;h3 id="stream-support">Stream Support&lt;/h3>
&lt;p>FasTensor has just one simple paradigm: you give it a data source, an output data store, and your transform, and it handles all the behind-the-scenes grunt work of computing over big datasets so you can focus on your research.&lt;/p>
&lt;p>We aimed to achieve the same for streaming: Drop in the STREAM keyword, append a pattern identifying your stream, and use your usual transform.&lt;/p>
&lt;img src="https://raw.githubusercontent.com/aditya-narayan5/GSoC24-Final_Report/f486087ae3e6ef1f1077c885e9352c9440848724/images/example_code.png" width=75% height=100%>
Voila! Now your previous FasTensor code supports live data streams.
&lt;img src="https://raw.githubusercontent.com/aditya-narayan5/GSoC24-Final_Report/da34fab7a857b0223332d84a0aa1c8cdf0811761/images/fastensor_streaming_demo.gif" width=75% height=75%>
&lt;h4 id="technical-tidbits">Technical tidbits:&lt;/h4>
&lt;ul>
&lt;li>Implements a manager-worker pattern to allow us flexibility in the future to implement different stream semantics such as windowing, CPU-memory based load balancing&lt;/li>
&lt;li>Supports streams of indefinite size&lt;/li>
&lt;/ul>
&lt;h2 id="challenges">Challenges&lt;/h2>
&lt;p>HPC has its fair share of challenges. Things you take for granted might not be available there, and it takes a while to adjust to paradigms of scale and parallelization.&lt;/p>
&lt;p>For example, when developing FTStream, we found O_DIRECT is available on some parallel file systems like GPFS but not supported on Lustre/CFS. We developed a separate MPIO driver for FTStream that will be upstreamed once thoroughly tested on Lustre.&lt;/p>
&lt;h2 id="future-work">Future Work&lt;/h2>
&lt;ul>
&lt;li>Implement windowing and explore more advanced stream semantics.&lt;/li>
&lt;li>Implement support for for defining workload policies&lt;/li>
&lt;li>Optimize interleaving IO and Compute.&lt;/li>
&lt;/ul>
&lt;h2 id="references">References&lt;/h2>
&lt;p>[1] Anshu Dubey. 2014. Stencils in Scientific Computations. In Proceedings of the Second Workshop on Optimizing Stencil Computations (WOSC &amp;lsquo;14). Association for Computing Machinery, New York, NY, USA, 57.
&lt;a href="https://doi.org/10.1145/2686745.2686756" target="_blank" rel="noopener">https://doi.org/10.1145/2686745.2686756&lt;/a>&lt;/p>
&lt;h2 id="acknowledgement">Acknowledgement&lt;/h2>
&lt;p>I struck gold when it comes to mentors.&lt;/p>
&lt;p>Dr. &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/bin-dong/">Bin Dong&lt;/a> was really kind and supportive throughout the journey. From the very first steps of giving a tour around the codebase to giving me a lot of freedom to experiment, refactor, and refine.&lt;/p>
&lt;p>Dr. &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/john-wu/">John Wu&lt;/a> was encouraging and nurturing of budding talent. We had great research presentations every Monday apart from usual mentor interactions, where different research groups presented their talks and students were invited to present their progress.&lt;/p>
&lt;p>I&amp;rsquo;ve come across Quantum computing many times in the news, but I never thought I&amp;rsquo;d get a frontline preview from the researchers working at the bleeding edge at the Lawrence Berkeley National Laboratory (LBL).&lt;/p>
&lt;p>This GSoC experience, made possible by Google and UC OSPO, has been invaluable for my growth as a developer and researcher.&lt;/p>
&lt;p>For people interested in HPC, ML, Systems, or Reproducibility, I encourage you all to apply to UC OSPO. It&amp;rsquo;s been an incredible journey, and I&amp;rsquo;m grateful for every moment of it!&lt;/p></description></item><item><title>Static and Interactive Visualization Capture</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/niu/repro-vis/20250301-aryas/</link><pubDate>Fri, 30 Aug 2024 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/niu/repro-vis/20250301-aryas/</guid><description>&lt;h2 id="introduction">Introduction&lt;/h2>
&lt;p>Hello! My name is &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/arya-sarkar/">Arya Sarkar&lt;/a> a machine learning engineer and researcher based out of Kolkata, a city in Eastern India dubbed the City of Joy.
During summer of 2024, I worked closely with Professor &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/david-koop/">David Koop&lt;/a> on the project titled &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre24/niu/repro-vis/">Reproducibility in Data Visualization&lt;/a>.
We explored multiple existing solutions and tested different stratergies and made great progress in the capture of visualiations using a relatively less used method of embedding visualization meta-information into the final resultant visualizations jpg as a json object.&lt;/p>
&lt;h2 id="progress-and-challenges">Progress and Challenges&lt;/h2>
&lt;p>Static Visualization Capture&lt;/p>
&lt;p>We successfully developed a method to capture static visualizations as .png files along with embedded metadata in a JSON format.
This approach enables seamless reproducibility of the visualization by storing all necessary metadata within the image file itself.
Our method supports both Matplotlib and Bokeh libraries and demonstrated near-perfect reproducibility, with only a minimal 1-2% pixel difference in cases where jitter (randomness) was involved.&lt;/p>
&lt;p>Interactive Visualization Capture&lt;/p>
&lt;p>For interactive visualizations, our focus shifted to capturing state changes in Plotly visualizations on the web.
We developed a script that tracks user interactions (e.g., zoom, box, lasso, slider) using event listeners and automatically captures the visualization state as both image and metadata files.
This script also maintains a history of interactions to ensure reproducibility of all interaction states.&lt;/p>
&lt;p>The challenge of capturing web-based visualizations from platforms like ObservableHq remains, as iframe restrictions prevent direct access to SVG elements.
Further exploration is needed to create a more robust capture method for these environments.&lt;/p>
&lt;p align="center">
&lt;img src="./bokeh_interactive.png" alt="bokeh interactive capture" style="width: 80%; height: auto;">
&lt;/p>
&lt;h1 id="future-work">Future Work&lt;/h1>
&lt;p>We aim to package our interactive capture script into a Google Chrome extension.&lt;/p>
&lt;p>Temporarily store interaction session files in the browser’s local storage.&lt;/p>
&lt;p>Enable users to download captured files as a zip archive, using base64 encoding for images.&lt;/p>
&lt;h1 id="conclusion">Conclusion&lt;/h1>
&lt;p>The last summer, we made significant strides in enhancing data visualization reproducibility.
Our innovative approach to embedding metadata directly into visualization files offers a streamlined method for recreating static visualizations.
The progress in capturing interactive visualization states opens new possibilities for tackling a long-standing challenge in the field of reproducibility.&lt;/p></description></item><item><title>Final Blog: BenchmarkST: Cross-Platform, Multi-Species Spatial Transcriptomics Gene Imputation Benchmarking</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/uci/benchmarkst/20240829-qianru/</link><pubDate>Thu, 29 Aug 2024 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/uci/benchmarkst/20240829-qianru/</guid><description>&lt;p>Hello! I&amp;rsquo;m Qianru! I have been contributing to the BenchmarkST: Cross-Platform, Multi-Species Spatial Transcriptomics Gene Imputation Benchmarking project under the mentorship of Ziheng Duan. My project aims to provide a standardized, easily accessible evaluation framework for gene imputation in spatial transcriptomics.&lt;/p>
&lt;h1 id="motivation-and-overview">Motivation and Overview&lt;/h1>
&lt;p>The &amp;ldquo;BenchmarkST&amp;rdquo; project was driven by the need to address a critical challenge in spatial transcriptomics: the impact of sparse data on downstream tasks, such as spatial domain identification. Sparse data can significantly degrade the performance of these tasks. For example, in a 10X Visium dataset of human brain Dorsolateral Prefrontal Cortex (DLPFC), using the complete dataset with GraphST (a state-of-the-art clustering method) for clustering resulted in an ARI (Adjusted Rand Index) of 0.6347. However, when using only 20% of the data—a common scenario—the performance dropped dramatically to 0.1880. This stark difference highlights the importance of effective gene imputation, which can help restore the lost information and improve the accuracy of downstream analyses.
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="fig1" srcset="
/report/osre24/uci/benchmarkst/20240829-qianru/fig1_hu72c585df7604f28a748aa64a85602fac_159578_1bdac9436ddd84b83023a2cd20d76fb3.webp 400w,
/report/osre24/uci/benchmarkst/20240829-qianru/fig1_hu72c585df7604f28a748aa64a85602fac_159578_8a97a3a52a0fad3fb5d2dbf596e883a9.webp 760w,
/report/osre24/uci/benchmarkst/20240829-qianru/fig1_hu72c585df7604f28a748aa64a85602fac_159578_1200x1200_fit_q75_h2_lanczos.webp 1200w"
src="https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/uci/benchmarkst/20240829-qianru/fig1_hu72c585df7604f28a748aa64a85602fac_159578_1bdac9436ddd84b83023a2cd20d76fb3.webp"
width="760"
height="496"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
To tackle this issue, the BenchmarkST project led to the creation of the Impeller package. This package provides a standardized, easily accessible evaluation framework for gene imputation in spatial transcriptomics, offering preprocessed datasets, reproducible evaluation methods, and flexible inference interfaces. It spans across different platforms, species, and organs, aiming to enhance the integrity and usability of spatial transcriptomics data.&lt;/p>
&lt;h1 id="what-was-accomplished">What Was Accomplished&lt;/h1>
&lt;h2 id="development-of-the-impeller-package">Development of the Impeller Package&lt;/h2>
&lt;h4 id="data-aggregation-and-preprocessing">Data Aggregation and Preprocessing:&lt;/h4>
&lt;p>We aggregated and preprocessed spatial transcriptomic datasets from multiple platforms (10X Visium, StereoSeq, SlideSeqV2), species (human, mouse), and organs (Dorsolateral Prefrontal Cortex, olfactory bulb). These datasets are readily available for download within the package.&lt;/p>
&lt;h4 id="unified-evaluation-framework">Unified Evaluation Framework:&lt;/h4>
&lt;p>A reproducible framework was developed, integrating methods such as K-Nearest Neighbors (KNN) and the deep learning-based Impeller method, enabling users to easily evaluate the performance of different gene imputation techniques.&lt;/p>
&lt;h4 id="inference-interfaces">Inference Interfaces:&lt;/h4>
&lt;p>We provided interfaces that allow users to apply gene imputation on custom datasets, offering the flexibility to predict any gene in any cell, maximizing the utility for diverse research needs.&lt;/p>
&lt;h2 id="code-contributions-and-documentation">Code Contributions and Documentation&lt;/h2>
&lt;h4 id="repository">Repository:&lt;/h4>
&lt;p>All code related to the Impeller package has been committed to the &lt;a href="https://pypi.org/project/impeller/0.1.2/#files" target="_blank" rel="noopener">Impeller&lt;/a> repository.&lt;/p>
&lt;h4 id="link-to-versions">Link to Versions:&lt;/h4>
&lt;p>&lt;a href="https://pypi.org/project/impeller/0.1.2/#history" target="_blank" rel="noopener">Here&lt;/a> you can find all the versions made during the project, with detailed descriptions of each change.&lt;/p>
&lt;h4 id="readmemdhttpspypiorgprojectimpeller012description">&lt;a href="https://pypi.org/project/impeller/0.1.2/#description" target="_blank" rel="noopener">README.md&lt;/a>:&lt;/h4>
&lt;p>Detailed documentation on how to use the Impeller package, including installation instructions, usage examples, and explanations of the key components.&lt;/p></description></item><item><title>Final Blog: ML in Detecting and Addressing System Drift</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/anl/last/20240829-joanna/</link><pubDate>Thu, 29 Aug 2024 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/anl/last/20240829-joanna/</guid><description>&lt;p>Hello! I&amp;rsquo;m Joanna! I have been contributing to the &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre24/anl/last">ML in Detecting and Addressing System Drift&lt;/a> project under the mentorship of &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/ray-andrew-sinurat/">Ray Andrew Sinurat&lt;/a> and &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/sandeep-madireddy/">Sandeep Madireddy&lt;/a>. My project aims to design a pipeline to evaluate drift detection algorithms on system traces.&lt;/p>
&lt;h1 id="methodology">Methodology&lt;/h1>
&lt;p>Here is some background on my project: Model drift, or the degradation of model performance, is typically caused by data drift, which is a shift in the input distribution, and concept drift, which is a change in the relationship between input and output. This project focuses specifically on data drift, aiming to design a pipeline for evaluating drift detection algorithms on system traces. The goal is to benchmark different drift detection algorithms and have a better understanding of the features of system traces. The project is divided into two main parts: dataset construction and algorithm benchmarking.&lt;/p>
&lt;h3 id="part-1-dataset-construction">PART 1: Dataset Construction&lt;/h3>
&lt;p>To benchmark drift detection algorithms in system data, it&amp;rsquo;s important to recognize that system trace data is inherently different from other data types, often containing more noise, which can complicate detection efforts. Therefore, constructing a labeled dataset specific to system data is crucial. In our case, we utilize the Tencent I/O block trace data as the dataset. This raw data was processed to extract timestamps along with various features such as IOPS, write size ratio, read write ratio, and etc., which were then used to create a data drift dataset.&lt;/p>
&lt;p>I constructed this dataset by labeling segments of the trace data as either exhibiting drift or not. To identify where the drift occurs and to help construct the dataset, I employed several offline drift detection algorithms, including Kolmogorov-Smirnov, Cramer-von Mises, KL-Divergence, and Jensen-Shannon Distance.&lt;/p>
&lt;p>To enhance the accuracy of the drift detection, especially in the presence of noise common in trace data, I applied additional preprocessing steps such as Fourier transform and moving average. These techniques help to smooth the data, making it easier to detect true drift signals. Finally, a voting strategy was used in combination with post-processing methods to build and refine the final datasets.&lt;/p>
&lt;p>The first figure below illustrates the segments of IOPS where drift has been detected. The second figure shows the segments of data where no drift occurs.&lt;/p>
&lt;p>
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="Drift Data" srcset="
/report/osre24/anl/last/20240829-joanna/drift_hueed6613a6bb326df79ee6a6125caea30_218453_ed8c1284ad85bf6b4049e6c666e015b1.webp 400w,
/report/osre24/anl/last/20240829-joanna/drift_hueed6613a6bb326df79ee6a6125caea30_218453_8be8f041f7c86965792bf781e2489836.webp 760w,
/report/osre24/anl/last/20240829-joanna/drift_hueed6613a6bb326df79ee6a6125caea30_218453_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/anl/last/20240829-joanna/drift_hueed6613a6bb326df79ee6a6125caea30_218453_ed8c1284ad85bf6b4049e6c666e015b1.webp"
width="715"
height="760"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="Non-Drift Data" srcset="
/report/osre24/anl/last/20240829-joanna/nondrift_hu71453c92de8e4df0dd4aefaf6b160e99_327249_ac2898dbe6747b2a53de6ee136def2e4.webp 400w,
/report/osre24/anl/last/20240829-joanna/nondrift_hu71453c92de8e4df0dd4aefaf6b160e99_327249_046f624ccca1c3537b820060909a7bd2.webp 760w,
/report/osre24/anl/last/20240829-joanna/nondrift_hu71453c92de8e4df0dd4aefaf6b160e99_327249_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/anl/last/20240829-joanna/nondrift_hu71453c92de8e4df0dd4aefaf6b160e99_327249_ac2898dbe6747b2a53de6ee136def2e4.webp"
width="734"
height="760"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;h3 id="part-2-benchmark-drift-detection-algorithms">PART 2: Benchmark Drift Detection Algorithms&lt;/h3>
&lt;p>This part focuses on benchmarking the Jensen-Shannon and Wasserstein drift detection methods using system trace data. The evaluation metrics are categorized into three main areas:&lt;/p>
&lt;ol>
&lt;li>Detection Accuracy Metrics&lt;/li>
&lt;/ol>
&lt;ul>
&lt;li>True Positive Rate (Recall)&lt;/li>
&lt;li>True Negative Rate (Specificity)&lt;/li>
&lt;li>Precision&lt;/li>
&lt;li>F1-Score&lt;/li>
&lt;/ul>
&lt;ol start="2">
&lt;li>Detection Overhead Metrics&lt;/li>
&lt;/ol>
&lt;ul>
&lt;li>Time Taken: The computational time required to detect drifts, critical&lt;/li>
&lt;/ul>
&lt;ol start="3">
&lt;li>Stability Metrics&lt;/li>
&lt;/ol>
&lt;ul>
&lt;li>False Positive Rate&lt;/li>
&lt;li>False Negative Rate&lt;/li>
&lt;/ul>
&lt;p>(Additional) Comparative Analysis:&lt;/p>
&lt;ul>
&lt;li>Accuracy Across Different Features: How well the detection algorithms perform when applied to various features within the system trace data.&lt;/li>
&lt;/ul>
&lt;p>
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="Jensen-Shannon Distance Results" srcset="
/report/osre24/anl/last/20240829-joanna/js-result_hufb49199342183a3232a30a04b1d40959_183762_a7d269c0f217c0b79c79d4f011f54fd9.webp 400w,
/report/osre24/anl/last/20240829-joanna/js-result_hufb49199342183a3232a30a04b1d40959_183762_06f6c204e8a4457868c4b2bc43fb7c28.webp 760w,
/report/osre24/anl/last/20240829-joanna/js-result_hufb49199342183a3232a30a04b1d40959_183762_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/anl/last/20240829-joanna/js-result_hufb49199342183a3232a30a04b1d40959_183762_a7d269c0f217c0b79c79d4f011f54fd9.webp"
width="760"
height="607"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="Wasserstein Distance Results" srcset="
/report/osre24/anl/last/20240829-joanna/wd-result_hufb49199342183a3232a30a04b1d40959_190137_36d4aa25ff595624ac289c635f82a085.webp 400w,
/report/osre24/anl/last/20240829-joanna/wd-result_hufb49199342183a3232a30a04b1d40959_190137_efd489c01a8f75e3d059b819fc51eb25.webp 760w,
/report/osre24/anl/last/20240829-joanna/wd-result_hufb49199342183a3232a30a04b1d40959_190137_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/anl/last/20240829-joanna/wd-result_hufb49199342183a3232a30a04b1d40959_190137_36d4aa25ff595624ac289c635f82a085.webp"
width="760"
height="607"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;h1 id="discussion">Discussion&lt;/h1>
&lt;p>The results clearly demonstrate that the Jensen-Shannon distance method outperforms the Wasserstein distance method in detecting drift. Additionally, the write size ratio proves to be a more effective feature for representing the variations in the data, offering a more nuanced understanding of the underlying changes.&lt;/p>
&lt;h1 id="conclusion-and-next-steps">Conclusion and Next Steps&lt;/h1>
&lt;p>In conclusion, this project establishes a pipeline that encompasses data labeling, data processing, and the benchmarking of drift detection algorithms. This just serves as the first step in detecting drift in system data.&lt;/p>
&lt;p>There is significant potential for further improvement. Future work should focus on enhancing dataset construction by incorporating large language models (LLMs) and other advanced techniques to further clean and refine the datasets. Additionally, the evaluation of drift detection methods should be expanded beyond the current benchmarks, which only include two statistical methods. Incorporating additional statistical methods, as well as machine learning (ML) and deep learning (DL) approaches, could provide a more comprehensive analysis. Furthermore, exploring a broader range of evaluation metrics will ensure a more robust and accurate assessment of drift detection performance. These steps will help to advance the accuracy and reliability of drift detection in system trace data.&lt;/p>
&lt;h1 id="deliverables">Deliverables&lt;/h1>
&lt;p>The following are the deliverables of this project:&lt;/p>
&lt;ul>
&lt;li>&lt;a href="https://www.chameleoncloud.org/experiment/share/384ee2bd-853c-427b-877b-3af2993fb502" target="_blank" rel="noopener">Trovi Artifact&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://github.com/JoannaCCJH/drift-detection-OSRE24" target="_blank" rel="noopener">Github Repository&lt;/a>: This repository contains the code for generating drift datasets with labels and notebooks with benchmarking results&lt;/li>
&lt;/ul></description></item><item><title>Final Blogpost: Reproducibility in Data Visualization</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/niu/repro-vis/20240828-triveni5/</link><pubDate>Wed, 28 Aug 2024 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/niu/repro-vis/20240828-triveni5/</guid><description>&lt;p>Hello everyone!&lt;/p>
&lt;p>I&amp;rsquo;m Triveni, a Master&amp;rsquo;s student in Computer Science at Northern Illinois University (NIU). I&amp;rsquo;m excited to share my progress on the OSRE 2024 project &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre24/niu/repro-vis/">Categorize Differences in Reproduced Visualizations&lt;/a> focusing on data visualization reproducibility. Working under the mentorship of &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/david-koop/">David Koop&lt;/a>, I&amp;rsquo;ve made some significant strides and faced some interesting challenges.&lt;/p>
&lt;h1 id="reproducibility-in-data-visualization">Reproducibility in data visualization&lt;/h1>
&lt;p>Reproducibility is crucial in data visualization, ensuring that two visualizations accurately convey the same data. This is essential for maintaining transparency and trust in data-driven decision-making. When comparing two visualizations, the challenge is not just spotting differences but determining which differences are meaningful. Tools like OpenCV are often used for image comparison, but they may detect all differences, including those that do not impact the data&amp;rsquo;s interpretation. For example, slight shifts in labels might be flagged as differences even if the underlying data remains unchanged, making it challenging to assess whether the visualizations genuinely differ in terms of the information they convey.&lt;/p>
&lt;h1 id="a-breakthrough-with-chartdetective">A Breakthrough with ChartDetective&lt;/h1>
&lt;p>Among various tools like ChartOCR and ChartReader, ChartDetective proved to be the most effective. This tool enabled me to extract data from a range of visualizations, including bar charts, line charts, box plots, and scatter plots. To enhance its capabilities, I modified the codebase to capture pixel values alongside the extracted data and store both in a CSV file. This enhancement allowed for a direct comparison of data values and their corresponding pixel coordinates between two visualizations, focusing on meaningful differences that truly impact data interpretation.&lt;/p>
&lt;h1 id="example-comparing-two-bar-plots-with-chartdetective">Example: Comparing Two Bar Plots with ChartDetective&lt;/h1>
&lt;p>Consider two bar plots that visually appear similar but have slight differences in their data values. Using ChartDetective, I extracted the data and pixel coordinates from both plots and stored this information in a CSV file. The tool then compared these values to identify any discrepancies.&lt;/p>
&lt;p>For instance, in one bar plot, the height of a specific bars were slightly increased. By comparing the CSV files generated by ChartDetective, I was able to pinpoint these differences precisely. The final step involved highlighting these differences on one of the plots using OpenCV, making it clear where visualizations diverged.This approach ensures that only meaningful differences—those that reflect changes in the data—are considered when assessing reproducibility.&lt;/p>
&lt;ul>
&lt;li>ChartDetective: SVG or PDF file of the visualization is uploaded to extract data.&lt;/li>
&lt;/ul>
&lt;p align="center">
&lt;img src="./barplot_chartdetective.png" alt="ChartDetective" style="width: 80%; height: auto;">
&lt;/p>
- Data Extraction: Data values along with pixel details are stored in the CSV files.
&lt;p align="center">
&lt;img src="./barplots_pixels.png" alt="Data_Extraction" style="width: 80%; height: auto;">
&lt;/p>
- Highlighting the differences: Differences are highlighted on one of the plots using OpenCV
&lt;p align="center">
&lt;img src="./Highlighted_differences.png" alt="Highlighting the differences" style="width: 60%; height: auto;">
&lt;/p>
&lt;h1 id="understanding-user-perspectives-on-reproducibility">Understanding User Perspectives on Reproducibility&lt;/h1>
&lt;p>To complement the technical analysis, I created a pilot survey to understand how users perceive reproducibility in data visualizations. The survey evaluates user interpretations of two visualizations and explores which visual parameters impact their decision-making. This user-centered approach is crucial because even minor differences in visual representation can significantly affect how data is interpreted and used.&lt;/p>
&lt;p>Pilot Survey Example:&lt;/p>
&lt;p>Pixel Differences: In one scenario, the height of two bars was altered slightly, introducing a noticeable yet subtle change.&lt;/p>
&lt;p>Label Swapping: In another scenario, the labels of two bars were swapped without changing their positions or heights.&lt;/p>
&lt;p align="center">
&lt;img src="./barchart_labels_swap.png" alt="Label Swapping" style="width: 80%; height: auto;">
&lt;/p>
&lt;p>Participants will be asked to evaluate the reproducibility of these visualizations, considering whether the differences impacted their interpretation of the data. The goal was to determine which visual parameters—such as bar height or label positioning—users find most critical when assessing the similarity of visualizations.&lt;/p>
&lt;h1 id="future-work-and-conclusion">Future Work and Conclusion&lt;/h1>
&lt;p>Going forward, I plan to develop a proof of concept based on these findings and implement an extensive survey to further explore the impact of visual parameters on users&amp;rsquo; perceptions of reproducibility. Understanding this will help refine tools and methods for comparing visualizations, ensuring they not only look similar but also accurately represent the same underlying data.&lt;/p></description></item><item><title>ORAssistant - LLM Assistant for OpenROAD</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/ucsd/openroad/20240827-palaniappan-r/</link><pubDate>Tue, 27 Aug 2024 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/ucsd/openroad/20240827-palaniappan-r/</guid><description>&lt;h2 id="introduction">Introduction&lt;/h2>
&lt;p>Hello! I&amp;rsquo;m &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/palaniappan-r/">Palaniappan R&lt;/a>, an undergraduate student at BITS Pilani, India. Over the past few months, I&amp;rsquo;ve been working as a GSoC contributor on the &lt;a href="https://summerofcode.withgoogle.com/programs/2024/projects/DSo6kvA5" target="_blank" rel="noopener">LLM Assistant for OpenROAD - Model Architecture and Prototype&lt;/a> project, under the mentorship of &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/indira-iyer/">Indira Iyer&lt;/a> and &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/jack-luar/">Jack Luar&lt;/a>. &lt;/p>
&lt;p>The primary objective of my project is to improve the user experience within OpenROAD and OpenROAD-flow-scripts by utilizing Large Language Models(LLMs) to offer fast, relevant answers to FAQs and common issues. The ORAssistant chatbot aims to act as a first line of support, addressing basic queries in domains such as installation and command usage. Its goal is to resolve simple issues before they escalate to public forums, thereby reducing the number of support tickets on platforms like GitHub Issues.&lt;/p>
&lt;h2 id="architecture-overview">Architecture Overview&lt;/h2>
&lt;p>Retrieval-augmented-generation (RAG) is a technique that improves the q&amp;amp;a capabilities and reliability of LLMs by incorporating factual information from external sources. When a user submits a query, the RAG process begins by fetching relevant information from a knowledge base. The retrieved content, combined with the original query is the provided to the LLM to generate a relevant, informed response.&lt;/p>
&lt;p>
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="RAG Architecture" srcset="
/report/osre24/ucsd/openroad/20240827-palaniappan-r/rag_arch_hu8e03f7a9c64923f7711e5a6dbcc7ac36_44482_df391271ecbbb458269da059ad7cf993.webp 400w,
/report/osre24/ucsd/openroad/20240827-palaniappan-r/rag_arch_hu8e03f7a9c64923f7711e5a6dbcc7ac36_44482_3c455fc32c6d18b57b31be5f86590e99.webp 760w,
/report/osre24/ucsd/openroad/20240827-palaniappan-r/rag_arch_hu8e03f7a9c64923f7711e5a6dbcc7ac36_44482_1200x1200_fit_q75_h2_lanczos_2.webp 1200w"
src="https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/ucsd/openroad/20240827-palaniappan-r/rag_arch_hu8e03f7a9c64923f7711e5a6dbcc7ac36_44482_df391271ecbbb458269da059ad7cf993.webp"
width="760"
height="410"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;h2 id="the-knowledge-base">The Knowledge Base&lt;/h2>
&lt;p>ORAssistant is designed to answer queries about all the major tools in the OR flow. The knowledge base primarily consists of official documentation from OpenROAD, OpenROAD-flow-scripts, and their respective manpages. Instead of scraping these primary sources from their websites, the docs are built to the desired markdown format directly from the respective GitHub repositories, using specific commit hashes for reproducibility. The knowledge base also includes documentation from other essential applications in the EDA flow, such as Yosys and OpenSTA. Additionally, it includes scraped and annotated conversational data from discussions on the OpenROAD and OpenROAD-flow-scripts GitHub pages.&lt;/p>
&lt;p>The entire dataset building process has been automated, allowing for dynamic updates to accommodate any live changes.&lt;/p>
&lt;p>
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="Knowledge Base Building" srcset="
/report/osre24/ucsd/openroad/20240827-palaniappan-r/knowledge_base_hu389de4d06f6f5009d6f8a5e32337289b_95686_4f5d36607bb3f3a68d364c4b052d7564.webp 400w,
/report/osre24/ucsd/openroad/20240827-palaniappan-r/knowledge_base_hu389de4d06f6f5009d6f8a5e32337289b_95686_774ab20167d5029994bd3450cf9f9627.webp 760w,
/report/osre24/ucsd/openroad/20240827-palaniappan-r/knowledge_base_hu389de4d06f6f5009d6f8a5e32337289b_95686_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/ucsd/openroad/20240827-palaniappan-r/knowledge_base_hu389de4d06f6f5009d6f8a5e32337289b_95686_4f5d36607bb3f3a68d364c4b052d7564.webp"
width="760"
height="424"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;h2 id="the-tool-based-architecture">The Tool-Based Architecture&lt;/h2>
&lt;p>After experimenting with multiple RAG approaches, a tool-based setup proved to be the most effective solution. Data from various domains are embedded into vector databases, and hybrid search retriever functions are applied to these vector stores. These functions are organized as individual tools that can be called by the chatbot. To maintain context, each query is rephrased while considering the chat history. This ensures a more precise and context-rich query. Please refer to my previous &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/ucsd/openroad/20240719-palaniappan-r/">blog post&lt;/a> for more information on the retrieval tools.&lt;/p>
&lt;p>As depicted in the flowchart, a preliminary LLM call analyzes the input query, rephrases it based on the chat history and picks the appropriate tools for the rephrased query. Subsequently, documents are retrieved using the tool and sent to the LLM, which produces a relevant, context-aware response.&lt;/p>
&lt;p>
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="Tool Based Architecture" srcset="
/report/osre24/ucsd/openroad/20240827-palaniappan-r/tool_arch_hua38e30b25f21f78f6a933005dd192c89_51518_75dcf9730e30df6c2af5b2e12a33089e.webp 400w,
/report/osre24/ucsd/openroad/20240827-palaniappan-r/tool_arch_hua38e30b25f21f78f6a933005dd192c89_51518_7e257ae5876d4a2639c310e21b80ae97.webp 760w,
/report/osre24/ucsd/openroad/20240827-palaniappan-r/tool_arch_hua38e30b25f21f78f6a933005dd192c89_51518_1200x1200_fit_q75_h2_lanczos_2.webp 1200w"
src="https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/ucsd/openroad/20240827-palaniappan-r/tool_arch_hua38e30b25f21f78f6a933005dd192c89_51518_75dcf9730e30df6c2af5b2e12a33089e.webp"
width="760"
height="546"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;h2 id="using-orassistant">Using ORAssistant&lt;/h2>
&lt;p>ORAssistant is currently hosted at this &lt;a href="https://orassistant.netlify.app/" target="_blank" rel="noopener">link&lt;/a>.&lt;/p>
&lt;p>To set up out ORAssistant locally, find detailed instructions in the &lt;a href="">GitHub Repo&lt;/a>. Both cloud based LLM providers (Gemini, VertexAI) and local options (Ollama) are supported.&lt;/p>
&lt;p>Here&amp;rsquo;s an example of ORAssistant in action,
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="Example 1" srcset="
/report/osre24/ucsd/openroad/20240827-palaniappan-r/example1_huc9b9a5dd27909efbfc0d6a5a5532244f_175139_07d9479d1764c9189c0bdd3947bc3a05.webp 400w,
/report/osre24/ucsd/openroad/20240827-palaniappan-r/example1_huc9b9a5dd27909efbfc0d6a5a5532244f_175139_ef65593aa1ba677fc24f91d973e5bfc7.webp 760w,
/report/osre24/ucsd/openroad/20240827-palaniappan-r/example1_huc9b9a5dd27909efbfc0d6a5a5532244f_175139_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/ucsd/openroad/20240827-palaniappan-r/example1_huc9b9a5dd27909efbfc0d6a5a5532244f_175139_07d9479d1764c9189c0bdd3947bc3a05.webp"
width="760"
height="384"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;h2 id="future-plans">Future Plans&lt;/h2>
&lt;p>To further enhance the usability of ORAssistant, there are plans to add support for flow script generation. This will become possible after adding a dedicated script generation tool into the current tool-based workflow. Support for more tools in the EDA flow, such as KLayout will also be added in the near future.&lt;/p>
&lt;p>Additionally, ORAssistant is planned to be integrated directly into OpenROAD&amp;rsquo;s CLI and GUI interfaces.&lt;/p>
&lt;p>As I near the end of my GSoC, I&amp;rsquo;d like to thank the GSoC Organizing Committee, UC OSPO and The OpenROAD Project for this incredible opportunity. I&amp;rsquo;m immensely grateful to &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/indira-iyer/">Indira Iyer&lt;/a> and &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/jack-luar/">Jack Luar&lt;/a> for their support and guidance throughout my GSoC journey. Thank You.&lt;/p></description></item><item><title>Final Blogpost: Drift Management Strategies Benchmark</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/anl/last/20240827-williamn/</link><pubDate>Sat, 24 Aug 2024 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/anl/last/20240827-williamn/</guid><description>&lt;h1 id="background">Background&lt;/h1>
&lt;p>Hello there! I&amp;rsquo;m William and this is my final blog for my proposal &amp;ldquo;Developing A Comprehensive Pipeline to Benchmark Drift Management Approaches&amp;rdquo; under the mentorship of &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/ray-andrew-sinurat/">Ray Andrew Sinurat&lt;/a> and &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/sandeep-madireddy/">Sandeep Madireddy&lt;/a> under the &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre24/anl/last">LAST&lt;/a> project.&lt;/p>
&lt;p>If you&amp;rsquo;re not familiar with it, this project aims to address the issue of model aging, where machine learning (ML) models experience a decline in effectiveness over time due to environmental changes, known as drift. My goal is to design an extensible pipeline that evaluates and benchmarks the robustness of state-of-the-art algorithms in addressing these drifts.&lt;/p>
&lt;h1 id="deliverables">Deliverables&lt;/h1>
&lt;p>You can find my list of deliverables here:&lt;/p>
&lt;ul>
&lt;li>&lt;a href="https://docs.google.com/document/d/14tSmBndX1RBv_d3luRcqFDmbuMk6XsGOB8G7tzTcHnE/edit" target="_blank" rel="noopener">Final report&lt;/a>, this blog is a summarized version of my final report, so do take a look if you&amp;rsquo;d like to know more!&lt;/li>
&lt;li>&lt;a href="https://github.com/williamnixon20/osre-drift" target="_blank" rel="noopener">Github repository&lt;/a>, contains code as well as the raw experiment results.&lt;/li>
&lt;li>&lt;a href="https://www.chameleoncloud.org/experiment/share/e3ae5f07-4340-48c0-94e8-ba99ee2bf691" target="_blank" rel="noopener">Trovi artifact&lt;/a>&lt;/li>
&lt;/ul>
&lt;h1 id="evaluation">Evaluation&lt;/h1>
&lt;p>Here are some of the graphs that show the performance of every algorithm on the created datasets. For more graphs and figures, you can check out my final report:&lt;/p>
&lt;ul>
&lt;li>CIRCLE: AUE demonstrates stability, maintaining a high accuracy even as the data drifts, which may be due to its ensemble nature. It is even more stable than baseline retraining algorithms. Matchmaker is also able to recover quickly upon experiencing drift, which maybe again due to its ranking the most high performing models to do inference, recovering faster than RetrainWin. On the other hand, DriftSurf experiences several random drops in accuracy, indicating that it can be somewhat unstable.
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="Circle" srcset="
/report/osre24/anl/last/20240827-williamn/circle_hubbc4ef0a01f86beba0bcc28be93ed90c_288185_1f197cacfff5e655fb7250e99000891a.webp 400w,
/report/osre24/anl/last/20240827-williamn/circle_hubbc4ef0a01f86beba0bcc28be93ed90c_288185_f3747fe006d5ab30df409c38f9f518fd.webp 760w,
/report/osre24/anl/last/20240827-williamn/circle_hubbc4ef0a01f86beba0bcc28be93ed90c_288185_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/anl/last/20240827-williamn/circle_hubbc4ef0a01f86beba0bcc28be93ed90c_288185_1f197cacfff5e655fb7250e99000891a.webp"
width="760"
height="481"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/li>
&lt;li>SINE: Similar to CIRCLE, AUE demonstrates stability throughout the dataset, maintaining a high accuracy even as the data drifts. Matchmaker however was struggling to adapt as fast when encountering such a sudden drift, as it needed some time/windows to recover from the drop. Driftsurf&amp;rsquo;s performance was notably better than baseline, as unlike them, it was able to recover successfully fairly quickly upon experiencing drift.
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="Sine" srcset="
/report/osre24/anl/last/20240827-williamn/sine_huc62276117407137b51fc43d9c9e20c37_686961_16a2edab20232bdbb4c23e0fa37398dd.webp 400w,
/report/osre24/anl/last/20240827-williamn/sine_huc62276117407137b51fc43d9c9e20c37_686961_cc1b5a8e845047c50f95da38dbf5a262.webp 760w,
/report/osre24/anl/last/20240827-williamn/sine_huc62276117407137b51fc43d9c9e20c37_686961_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/anl/last/20240827-williamn/sine_huc62276117407137b51fc43d9c9e20c37_686961_16a2edab20232bdbb4c23e0fa37398dd.webp"
width="760"
height="500"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/li>
&lt;li>CovCon: In CovCon, Matchmaker was able to achieve the best accuracy, as it is able to select the models most relevant to each incoming batch (model trained on the most similar features), performing comparably to retrain window. Most of the other algorithms suffered in this dataset, particularly AUE whose performance is now becoming comparable to the rest of the algorithms and baseline.
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="CovCon" srcset="
/report/osre24/anl/last/20240827-williamn/covcon_hua1f3c6557283d861ec9482d15a04c8d4_668622_658cedab5102506c34376dd9e6fe748e.webp 400w,
/report/osre24/anl/last/20240827-williamn/covcon_hua1f3c6557283d861ec9482d15a04c8d4_668622_9bd5024236a880f53d616f4ed4a7294f.webp 760w,
/report/osre24/anl/last/20240827-williamn/covcon_hua1f3c6557283d861ec9482d15a04c8d4_668622_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/anl/last/20240827-williamn/covcon_hua1f3c6557283d861ec9482d15a04c8d4_668622_658cedab5102506c34376dd9e6fe748e.webp"
width="760"
height="502"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/li>
&lt;li>IOAdmission: Performance on this dataset was led by AUE, which was able to maintain impressive stability amongst all of the algorithms used. This is followed closely by Matchmaker. The other algorithms used undergo a lot of fluctuations in accuracy.
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="IOAdmission" srcset="
/report/osre24/anl/last/20240827-williamn/ioadm_hubb89d2e4deb0623f90d37221d48664dd_505735_6022f696d548c8dea5e78a1144b71820.webp 400w,
/report/osre24/anl/last/20240827-williamn/ioadm_hubb89d2e4deb0623f90d37221d48664dd_505735_b58b4d4753cc231ef4ada6a72fbb773a.webp 760w,
/report/osre24/anl/last/20240827-williamn/ioadm_hubb89d2e4deb0623f90d37221d48664dd_505735_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/anl/last/20240827-williamn/ioadm_hubb89d2e4deb0623f90d37221d48664dd_505735_6022f696d548c8dea5e78a1144b71820.webp"
width="760"
height="500"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/li>
&lt;/ul>
&lt;h1 id="findings--discussion">Findings / Discussion&lt;/h1>
&lt;p>From the experiments conducted, the findings are as follows:&lt;/p>
&lt;ul>
&lt;li>
&lt;p>Matchmaker was able to perform particularly well in the CovCon dataset. This maybe due to its ability to choose the most relevant trained model from its ensemble during inference time. Its training time is also the best compared to other algorithms, especially considering that it keeps data for training an additional random forest model for ranking the models. However, its inference time was the longest amongst all other algorithms. This may be due to the fact that on inference time, one needs to traverse all of the leaf nodes of the random forest used to rank it (computing covariate shift).&lt;/p>
&lt;/li>
&lt;li>
&lt;p>AUE was able to perform particularly well in the CIRCLE and IOAdmission dataset. However, it is quite competitive on other datasets too. It&amp;rsquo;s weighting function which incentives highly relevant models and eviction of less relevant ones may be key. Its inference time is decent compared to other algorithms, being slower than most baselines and Driftsurf, but faster than Matchmaker. However, its training time took the longest amongst other competitors, as it has an expensive weighting function to weight, evict, or retrain models on every retraining.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>DriftSurf was performing very similarly to the RetrainWindow baseline, in almost all datasets, except for IO Admission and SINE where it did better. This may be because of the fact that it maintains only at most 2 models every iteration, and as such, its performance was not competitive against the mult-models approach used in Matchmaker and AUE. On the plus side, its inference time is comparable to the baseline single model, having almost no inference overhead compared to most of the competitors out there. Another plausible explanation for the lack of performance is the lack of tuning, such as the number of windows retained, the length of its reactive period, and its reactivity sensitivity threshold. A better performance could be achieved if these parameters were tuned further.&lt;/p>
&lt;/li>
&lt;/ul>
&lt;h1 id="next-steps">Next Steps&lt;/h1>
&lt;p>These are some of the potential extensions for this project:&lt;/p>
&lt;ol>
&lt;li>Optimize Matchmaker&amp;rsquo;s inference time improving Matchmaker&amp;rsquo;s efficiency, especially in covariate shift ranking, can reduce inference time. Simplifying the random forest traversal could make Matchmaker faster without impacting performance.&lt;/li>
&lt;li>Extending the work to include other frameworks like TensorFlow or PyTorch, as it can now only support a scikit-learn base model.&lt;/li>
&lt;/ol>
&lt;p>Thank you for reading!&lt;/p></description></item><item><title>Hardware Hierarchical Dynamical Systems</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/ucsc/livehd/20240824-ujjwalshekhar/</link><pubDate>Sat, 24 Aug 2024 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/ucsc/livehd/20240824-ujjwalshekhar/</guid><description>&lt;p>Hi everyone! I am Ujjwal Shekhar, a Computer Science student at the International Institute of Information Technology - Hyderabad. I am excited to share my work on the project titled &lt;strong>&amp;ldquo;Hardware Hierarchical Dynamical Systems&amp;rdquo;&lt;/strong> as part of the &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/osre/">Open Source Research Experience (OSRE) program&lt;/a> and &lt;a href="https://summerofcode.withgoogle.com/" target="_blank" rel="noopener">Google Summer of Code&lt;/a>. This project has been an incredible journey, and I&amp;rsquo;ve had the privilege of working with my mentors, &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/jose-renau/">Jose Renau&lt;/a> and &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/sakshi-garg/">Sakshi Garg&lt;/a>.&lt;/p>
&lt;h1 id="project-overview-and-goals">Project Overview and Goals&lt;/h1>
&lt;blockquote>
&lt;p>Abstract Syntax Trees (ASTs) are fundamental to modern compilers, serving as the backbone for parsing and transforming code. When compiling hardware code, the sheer volume of data can make compilation times a significant bottleneck. My project focuses on building a memory-optimized tree data structure specifically tailored for AST-typical queries.&lt;/p>
&lt;/blockquote>
&lt;p>The &lt;a href="https://github.com/masc-ucsc/livehd" target="_blank" rel="noopener">LiveHD&lt;/a> repository, developed by the &lt;a href="https://masc.soe.ucsc.edu" target="_blank" rel="noopener">Micro Architecture Lab&lt;/a> at UCSC, offers a compiler infrastructure optimized for hardware synthesis and simulation. The existing &lt;a href="https://github.com/masc-ucsc/livehd/blob/master/core/lhtree.hpp" target="_blank" rel="noopener">LHTree&lt;/a> data structure provides a foundation, but there was significant potential for further optimization, which I explored throughout this project.&lt;/p>
&lt;h3 id="key-ast-queries">Key AST Queries&lt;/h3>
&lt;p>The core queries that the tree is optimized for include:&lt;/p>
&lt;ul>
&lt;li>Finding the parent of a node.&lt;/li>
&lt;li>Finding the first and last child of a node.&lt;/li>
&lt;li>Locating the previous and next sibling of a node.&lt;/li>
&lt;li>Adding a child to a node.&lt;/li>
&lt;li>Inserting a sibling to a node.&lt;/li>
&lt;li>Performing preorder, postorder, and sibling order traversal.&lt;/li>
&lt;li>Removing a leaf or an entire subtree from the tree.&lt;/li>
&lt;/ul>
&lt;p>The primary goal was to create a tree class that excels at handling these queries efficiently, while still being robust enough to support less frequent operations. The new HHDS tree structure has demonstrated superior performance for specific tree configurations and continues to show potential across other types, particularly in memory consumption and cache efficiency, compared to the current LHTree.&lt;/p>
&lt;p>The benchmarks were done using Google Bench to test the tree for scalability and performance. The new version of the tree is currently being integrated into the LiveHD core repository. Profiling to find bottlenecks in the tree was also done using Callgrind and KCachegrind.&lt;/p>
&lt;h2 id="background-and-motivation">Background and Motivation&lt;/h2>
&lt;h3 id="naive-approach">Naive approach&lt;/h3>
&lt;p>A straightforward method for storing an n-ary tree is to maintain pointers from each node to its parent, children, and immediate siblings. While simple, this approach is memory-intensive and has poor cache efficiency due to the non-contiguous nature of nodes in memory. The variable memory usage per node, depending on the number of children, can also introduce significant overhead.&lt;/p>
&lt;h3 id="enhancements-to-the-naive-approach">Enhancements to the Naive Approach&lt;/h3>
&lt;p>To reduce memory overhead, one optimization is to store only pointers to the first and last child within each node. This reduces memory usage to a constant per node. Additionally, since many AST-related queries focus on the tree&amp;rsquo;s structure rather than the data itself, we can separate the data from the structure. The tree would store only pointers to the data, allowing the tree structure to be optimized independently of the data storage.&lt;/p>
&lt;blockquote>
&lt;p>While separating the data and the structure may seem like an obvious improvement, we will see that it can be extended to provide greater benefits.&lt;/p>
&lt;/blockquote>
&lt;p>
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="Naive and improved methods of storing the tree" srcset="
/report/osre24/ucsc/livehd/20240824-ujjwalshekhar/fig1_hu78c649c062d309c5f78b4b25d06f11c2_90521_7d57a7eca121eafa6de264160253597d.webp 400w,
/report/osre24/ucsc/livehd/20240824-ujjwalshekhar/fig1_hu78c649c062d309c5f78b4b25d06f11c2_90521_ad09a2aa9614ada2d18b11fd703737e7.webp 760w,
/report/osre24/ucsc/livehd/20240824-ujjwalshekhar/fig1_hu78c649c062d309c5f78b4b25d06f11c2_90521_1200x1200_fit_q75_h2_lanczos.webp 1200w"
src="https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/ucsc/livehd/20240824-ujjwalshekhar/fig1_hu78c649c062d309c5f78b4b25d06f11c2_90521_7d57a7eca121eafa6de264160253597d.webp"
width="760"
height="686"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;h3 id="improving-the-cache-efficiency">Improving the cache efficiency&lt;/h3>
&lt;p>While reducing memory consumption is beneficial, the tree&amp;rsquo;s cache efficiency can still be suboptimal if the children of a node are scattered in memory. To enhance cache efficiency, storing children in contiguous memory locations is crucial. This improves spatial locality, which in turn boosts cache performance. Additionally, this approach eliminates the need to explicitly store data pointers in the tree, as the data resides at a contiguous memory index aligned with the bookkeeping.&lt;/p>
&lt;p>By storing children contiguously, we can also eliminate the need for previous and next sibling pointers, as siblings are inherently adjacent in memory. Similarly, we can avoid storing the parent pointer for every child, since all children share the same parent.&lt;/p>
&lt;h2 id="optimizations-in-lhtree-old-method">Optimizations in LHTree (Old method)&lt;/h2>
&lt;p>The &lt;a href="https://github.com/masc-ucsc/livehd/blob/master/core/lhtree.hpp" target="_blank" rel="noopener">LHTree&lt;/a> class in LiveHD was designed with these optimizations in mind. It groups siblings into &lt;em>chunks&lt;/em> of four, storing the parent pointer only in the first sibling of each chunk. The last sibling in each chunk points to the next chunk, minimizing the number of pointers required and thus reducing memory overhead.&lt;/p>
&lt;p>LHTree organizes the entire tree as a 2-dimensional array, where the first dimension represents the tree level and the second dimension represents the node index at that level. This structure improves cache efficiency by storing nodes contiguously in memory. Each tree position is a 48-bit ID, with the last 32 bits representing the node&amp;rsquo;s index and the first 16 bits indicating the tree level.&lt;/p>
&lt;p>This explicit maintenance of level separately limits the tree&amp;rsquo;s scalability for deeper trees, due to the fixed number of bits allocated for the level.&lt;/p>
&lt;blockquote>
&lt;p>Despite these optimizations, LHTree has some limitations, particularly in cache alignment and flexibility, which the HHDS tree aims to address.&lt;/p>
&lt;/blockquote>
&lt;p>Unfortunately, the number of bits required by each &amp;ldquo;chunk&amp;rdquo; happens to be slightly bigger than a single cache line (512 bits). This means that the cache efficiency of the tree is not optimal.&lt;/p>
&lt;h2 id="hhds-tree--a-new-approach">HHDS Tree : A New Approach&lt;/h2>
&lt;h3 id="eliminating-levels">Eliminating Levels&lt;/h3>
&lt;p>The HHDS tree stores everything in a single vector, removing the need for explicit level information. This simplification not only improves cache efficiency but also eliminates restrictions on the number of nodes per level and the total number of levels.&lt;/p>
&lt;h3 id="enhanced-cache-alignment">Enhanced Cache Alignment&lt;/h3>
&lt;p>In the HHDS tree, each node has a 46-bit ID. Chunks in the HHDS tree contain up to eight children, with the first 43 bits of the absolute ID serving as the chunk ID and the last three bits indicating the node&amp;rsquo;s offset within the chunk.&lt;/p>
&lt;p>For each chunk, which is exactly 64 bytes (or 512 bits) long—matching the size of a cache line—the following information is stored:&lt;/p>
&lt;ul>
&lt;li>A 46-bit parent pointer (absolute ID).&lt;/li>
&lt;li>A 43-bit first child long pointer (chunk ID).&lt;/li>
&lt;li>A 43-bit last child long pointer (chunk ID).&lt;/li>
&lt;li>43-bit previous and next sibling chunk pointers.&lt;/li>
&lt;li>Seven 21-bit short delta pointers for the first child.&lt;/li>
&lt;li>Seven 21-bit short delta pointers for the last child.&lt;/li>
&lt;/ul>
&lt;blockquote>
&lt;p>&lt;strong>NOTE&lt;/strong>: The 0th chunk is an INVALID node, the real nodes start from the 1st chunk, with the node at an absolute ID of 8 (chunk ID of 1) being the root node.&lt;/p>
&lt;/blockquote>
&lt;p>
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="Overview of the HHDS tree book-keeping" srcset="
/report/osre24/ucsc/livehd/20240824-ujjwalshekhar/fig2_hucb9a27b986f748027535f10fe0848fa0_79213_30c5181b8def0cc33b1b86e98f51c9db.webp 400w,
/report/osre24/ucsc/livehd/20240824-ujjwalshekhar/fig2_hucb9a27b986f748027535f10fe0848fa0_79213_dbc8dcac70e873bb719beedc7adf4645.webp 760w,
/report/osre24/ucsc/livehd/20240824-ujjwalshekhar/fig2_hucb9a27b986f748027535f10fe0848fa0_79213_1200x1200_fit_q75_h2_lanczos.webp 1200w"
src="https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/ucsc/livehd/20240824-ujjwalshekhar/fig2_hucb9a27b986f748027535f10fe0848fa0_79213_30c5181b8def0cc33b1b86e98f51c9db.webp"
width="760"
height="359"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;blockquote>
&lt;p>Refer to the next section for more information on the short delta pointers.&lt;/p>
&lt;/blockquote>
&lt;p>The chunk is 512 bits long, which is 64 bytes, exactly the size of a cache line. Thus the amount of memory required in the worst case is 512 bits for a single node in the chunk, and in the best case is 46 bits for all 8 nodes in the chunk.&lt;/p>
&lt;blockquote>
&lt;p>We utilized the &lt;code>__attribute__((packed, aligned(64)))&lt;/code> attribute in C++ to ensure that each chunk aligns perfectly with a cache line. Bitfields were employed to pack the data efficiently within the chunk.&lt;/p>
&lt;/blockquote>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-cpp" data-lang="cpp">&lt;span class="line">&lt;span class="cl">&lt;span class="k">class&lt;/span> &lt;span class="nf">__attribute__&lt;/span>&lt;span class="p">((&lt;/span>&lt;span class="n">packed&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">aligned&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="mi">64&lt;/span>&lt;span class="p">)))&lt;/span> &lt;span class="n">Tree_pointers&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">private&lt;/span>&lt;span class="o">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">// We only store the exact ID of parent
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="n">Tree_pos&lt;/span> &lt;span class="nl">parent&lt;/span> &lt;span class="p">:&lt;/span> &lt;span class="n">CHUNK_BITS&lt;/span> &lt;span class="o">+&lt;/span> &lt;span class="n">CHUNK_SHIFT&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">Tree_pos&lt;/span> &lt;span class="nl">next_sibling&lt;/span> &lt;span class="p">:&lt;/span> &lt;span class="n">CHUNK_BITS&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">Tree_pos&lt;/span> &lt;span class="nl">prev_sibling&lt;/span> &lt;span class="p">:&lt;/span> &lt;span class="n">CHUNK_BITS&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">// Long child pointers
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="n">Tree_pos&lt;/span> &lt;span class="nl">first_child_l&lt;/span> &lt;span class="p">:&lt;/span> &lt;span class="n">CHUNK_BITS&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">Tree_pos&lt;/span> &lt;span class="nl">last_child_l&lt;/span> &lt;span class="p">:&lt;/span> &lt;span class="n">CHUNK_BITS&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">// Short (delta) child pointers
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="c1">// You cannot make an array of bitfields inside a packed
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="c1">// struct, since the compiler will align each bitfield to the
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="c1">// size of the nearest power of two.
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="n">Short_delta&lt;/span> &lt;span class="nl">first_child_s_0&lt;/span> &lt;span class="p">:&lt;/span> &lt;span class="n">SHORT_DELTA&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">Short_delta&lt;/span> &lt;span class="nl">first_child_s_1&lt;/span> &lt;span class="p">:&lt;/span> &lt;span class="n">SHORT_DELTA&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">Short_delta&lt;/span> &lt;span class="nl">first_child_s_2&lt;/span> &lt;span class="p">:&lt;/span> &lt;span class="n">SHORT_DELTA&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">Short_delta&lt;/span> &lt;span class="nl">first_child_s_3&lt;/span> &lt;span class="p">:&lt;/span> &lt;span class="n">SHORT_DELTA&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">Short_delta&lt;/span> &lt;span class="nl">first_child_s_4&lt;/span> &lt;span class="p">:&lt;/span> &lt;span class="n">SHORT_DELTA&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">Short_delta&lt;/span> &lt;span class="nl">first_child_s_5&lt;/span> &lt;span class="p">:&lt;/span> &lt;span class="n">SHORT_DELTA&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">Short_delta&lt;/span> &lt;span class="nl">first_child_s_6&lt;/span> &lt;span class="p">:&lt;/span> &lt;span class="n">SHORT_DELTA&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">Short_delta&lt;/span> &lt;span class="nl">last_child_s_0&lt;/span> &lt;span class="p">:&lt;/span> &lt;span class="n">SHORT_DELTA&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">Short_delta&lt;/span> &lt;span class="nl">last_child_s_1&lt;/span> &lt;span class="p">:&lt;/span> &lt;span class="n">SHORT_DELTA&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">Short_delta&lt;/span> &lt;span class="nl">last_child_s_2&lt;/span> &lt;span class="p">:&lt;/span> &lt;span class="n">SHORT_DELTA&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">Short_delta&lt;/span> &lt;span class="nl">last_child_s_3&lt;/span> &lt;span class="p">:&lt;/span> &lt;span class="n">SHORT_DELTA&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">Short_delta&lt;/span> &lt;span class="nl">last_child_s_4&lt;/span> &lt;span class="p">:&lt;/span> &lt;span class="n">SHORT_DELTA&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">Short_delta&lt;/span> &lt;span class="nl">last_child_s_5&lt;/span> &lt;span class="p">:&lt;/span> &lt;span class="n">SHORT_DELTA&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">Short_delta&lt;/span> &lt;span class="nl">last_child_s_6&lt;/span> &lt;span class="p">:&lt;/span> &lt;span class="n">SHORT_DELTA&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="build-append---short-delta-heuristic">Build Append - Short Delta Heuristic&lt;/h3>
&lt;p>Empirical observations show that children are often added to a node shortly after the parent, meaning they are stored close to the parent in memory. This allows children to be stored as a delta from the parent, reducing the need for full chunk IDs.&lt;/p>
&lt;p>When adding a child:&lt;/p>
&lt;ul>
&lt;li>Attempt to store the child as a delta from the parent.&lt;/li>
&lt;li>If not feasible, allocate a new chunk for the parent and store the pointer to the child chunk in the newly created parent chunk.&lt;/li>
&lt;/ul>
&lt;p>Implementing chunk breaking required careful handling to ensure that when a parent moves to a new chunk, its new chunk can still be referenced efficiently by its parent, potentially requiring recursive adjustments.&lt;/p>
&lt;blockquote>
&lt;p>This is because the grandparent might not be able to store the parent as a delta from itself after the parent moves to a new chunk.&lt;/p>
&lt;/blockquote>
&lt;h2 id="compliance-with-the-livehd-core-repository">Compliance with the LiveHD core repository&lt;/h2>
&lt;p>Since the HHDS tree is an evolution of the LHTree, it was crucial to maintain compatibility with the LiveHD core repository. All necessary methods were implemented in the HHDS tree to ensure seamless integration. Naming conventions and syntax were kept consistent with the LHTree to facilitate a smooth transition.&lt;/p>
&lt;p>Exposed methods in the HHDS tree are:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-cpp" data-lang="cpp">&lt;span class="line">&lt;span class="cl">&lt;span class="cm">/**
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="cm"> * Query based API (no updates)
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="cm"> */&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">Tree_pos&lt;/span> &lt;span class="nf">get_parent&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="k">const&lt;/span> &lt;span class="n">Tree_pos&lt;/span>&lt;span class="o">&amp;amp;&lt;/span> &lt;span class="n">curr_index&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="k">const&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">Tree_pos&lt;/span> &lt;span class="nf">get_last_child&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="k">const&lt;/span> &lt;span class="n">Tree_pos&lt;/span>&lt;span class="o">&amp;amp;&lt;/span> &lt;span class="n">parent_index&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="k">const&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">Tree_pos&lt;/span> &lt;span class="nf">get_first_child&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="k">const&lt;/span> &lt;span class="n">Tree_pos&lt;/span>&lt;span class="o">&amp;amp;&lt;/span> &lt;span class="n">parent_index&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="k">const&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="kt">bool&lt;/span> &lt;span class="nf">is_last_child&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="k">const&lt;/span> &lt;span class="n">Tree_pos&lt;/span>&lt;span class="o">&amp;amp;&lt;/span> &lt;span class="n">self_index&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="k">const&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="kt">bool&lt;/span> &lt;span class="nf">is_first_child&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="k">const&lt;/span> &lt;span class="n">Tree_pos&lt;/span>&lt;span class="o">&amp;amp;&lt;/span> &lt;span class="n">self_index&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="k">const&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">Tree_pos&lt;/span> &lt;span class="nf">get_sibling_next&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="k">const&lt;/span> &lt;span class="n">Tree_pos&lt;/span>&lt;span class="o">&amp;amp;&lt;/span> &lt;span class="n">sibling_id&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="k">const&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">Tree_pos&lt;/span> &lt;span class="nf">get_sibling_prev&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="k">const&lt;/span> &lt;span class="n">Tree_pos&lt;/span>&lt;span class="o">&amp;amp;&lt;/span> &lt;span class="n">sibling_id&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="k">const&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="kt">bool&lt;/span> &lt;span class="nf">is_leaf&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="k">const&lt;/span> &lt;span class="n">Tree_pos&lt;/span>&lt;span class="o">&amp;amp;&lt;/span> &lt;span class="n">leaf_index&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="k">const&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="cm">/**
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="cm"> * Update based API (Adds and Deletes from the tree)
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="cm"> */&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">// FREQUENT UPDATES
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="n">Tree_pos&lt;/span> &lt;span class="nf">append_sibling&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="k">const&lt;/span> &lt;span class="n">Tree_pos&lt;/span>&lt;span class="o">&amp;amp;&lt;/span> &lt;span class="n">sibling_id&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="k">const&lt;/span> &lt;span class="n">X&lt;/span>&lt;span class="o">&amp;amp;&lt;/span> &lt;span class="n">data&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">Tree_pos&lt;/span> &lt;span class="nf">add_child&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="k">const&lt;/span> &lt;span class="n">Tree_pos&lt;/span>&lt;span class="o">&amp;amp;&lt;/span> &lt;span class="n">parent_index&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="k">const&lt;/span> &lt;span class="n">X&lt;/span>&lt;span class="o">&amp;amp;&lt;/span> &lt;span class="n">data&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">Tree_pos&lt;/span> &lt;span class="nf">add_root&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="k">const&lt;/span> &lt;span class="n">X&lt;/span>&lt;span class="o">&amp;amp;&lt;/span> &lt;span class="n">data&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="kt">void&lt;/span> &lt;span class="nf">delete_leaf&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="k">const&lt;/span> &lt;span class="n">Tree_pos&lt;/span>&lt;span class="o">&amp;amp;&lt;/span> &lt;span class="n">leaf_index&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="kt">void&lt;/span> &lt;span class="nf">delete_subtree&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="k">const&lt;/span> &lt;span class="n">Tree_pos&lt;/span>&lt;span class="o">&amp;amp;&lt;/span> &lt;span class="n">subtree_root&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">// INFREQUENT UPDATES
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="n">Tree_pos&lt;/span> &lt;span class="nf">insert_next_sibling&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="k">const&lt;/span> &lt;span class="n">Tree_pos&lt;/span>&lt;span class="o">&amp;amp;&lt;/span> &lt;span class="n">sibling_id&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">const&lt;/span> &lt;span class="n">X&lt;/span>&lt;span class="o">&amp;amp;&lt;/span> &lt;span class="n">data&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h1 id="benchmarking-results">Benchmarking Results&lt;/h1>
&lt;p>Preliminary benchmarks indicate that the HHDS tree outperforms the LHTree in both runtime efficiency (for certain cases, more on this in a later section) and memory consumption. The HHDS tree demonstrates enhanced performance across various tests, offering a more optimized solution for handling Abstract Syntax Tree (AST) operations.&lt;/p>
&lt;p>I constructed identical trees using both the LHTree and HHDS tree structures and executed a series of queries on each. The benchmarks were performed using Google Benchmark to ensure accurate and consistent results. Below, I detail the specific tests conducted.&lt;/p>
&lt;h3 id="benchmark-tests-overview">Benchmark Tests Overview&lt;/h3>
&lt;ol>
&lt;li>
&lt;p>&lt;strong>Deep Tree Test&lt;/strong>&lt;br>
This test simulates a line graph by repeatedly adding a child to the last node in the tree. It is designed to assess the tree&amp;rsquo;s performance when handling deep structures, where each node has a single child.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Wide Tree Test&lt;/strong>&lt;br>
In this scenario, a single root node is created, followed by the addition of numerous child nodes directly under the root. This test evaluates the tree&amp;rsquo;s efficiency in managing wide structures with many immediate children.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Chip-Typical Tree Test&lt;/strong>&lt;br>
This test models a tree commonly seen in hardware design. For each node, a random number of children (ranging from 1 to 7) are added, and the process is recursively applied to the leaf nodes up to a certain depth. This test measures the tree&amp;rsquo;s performance in realistic, varied conditions.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Chip-Typical (Long) Tree Test&lt;/strong>&lt;br>
Similar to the Chip-Typical Tree Test, but with a broader range of children per node (1 to 20). This test is particularly useful for examining performance when the tree is more complex and chunk splitting is more likely.&lt;/p>
&lt;/li>
&lt;/ol>
&lt;p>These tests provide a comprehensive analysis of the HHDS tree&amp;rsquo;s capabilities, highlighting its superiority over the LHTree for deeper trees.&lt;/p>
&lt;h2 id="addappend-benchmarks">Add/Append Benchmarks&lt;/h2>
&lt;h3 id="deep-tree-test">Deep Tree Test&lt;/h3>
&lt;blockquote>
&lt;p>&lt;code>test_deep_tree_100_hhds&lt;/code> indicates the time taken to run a benchmark on a deep tree of 100 nodes using the HHDS tree structure. This nomenclature is consistent across all tests.&lt;/p>
&lt;/blockquote>
&lt;h4 id="disabled-compiler-optimizations">Disabled compiler optimizations&lt;/h4>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">------------------------------------------
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Benchmark Time
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">------------------------------------------
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">test_deep_tree_10_hhds 11704 ns
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">test_deep_tree_10_lh 19541 ns
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">test_deep_tree_100_hhds 85317 ns
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">test_deep_tree_100_lh 163058 ns
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">test_deep_tree_1000_hhds 760260 ns
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">test_deep_tree_1000_lh 1442391 ns
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">test_deep_tree_10000_hhds 9889199 ns
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">test_deep_tree_10000_lh 16215232 ns
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">test_deep_tree_100000_hhds 84650074 ns
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">test_deep_tree_100000_lh 163255882 ns
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">test_deep_tree_1000000_hhds 877646208 ns
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">test_deep_tree_1000000_lh 1659725904 ns
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">test_deep_tree_10000000_hhds 9256118059 ns
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">test_deep_tree_10000000_lh 1.4431e+10 ns
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h4 id="enabled-compiler-optimizations">Enabled compiler optimizations&lt;/h4>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">------------------------------------------
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Benchmark Time
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">------------------------------------------
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">test_deep_tree_10_hhds 1443 ns
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">test_deep_tree_10_lh 1462 ns
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">test_deep_tree_100_hhds 7398 ns
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">test_deep_tree_100_lh 17455 ns
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">test_deep_tree_1000_hhds 79544 ns
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">test_deep_tree_1000_lh 165656 ns
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">test_deep_tree_10000_hhds 1337406 ns
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">test_deep_tree_10000_lh 1494153 ns
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">test_deep_tree_100000_hhds 12288324 ns
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">test_deep_tree_100000_lh 14897463 ns
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">test_deep_tree_1000000_hhds 116810846 ns
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">test_deep_tree_1000000_lh 188815892 ns
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">test_deep_tree_10000000_hhds 2338596582 ns
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">test_deep_tree_10000000_lh 2238844395 ns
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Here, the HHDS tree structure consistently outperforms the LHTree in the Deep Tree Test, showcasing its efficiency in handling deep tree structures.&lt;/p>
&lt;h3 id="wide-tree-test">Wide Tree Test&lt;/h3>
&lt;h4 id="disabled-compiler-optimizations-1">Disabled compiler optimizations&lt;/h4>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">------------------------------------------
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Benchmark Time
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">------------------------------------------
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">test_wide_tree_10_hhds 6581 ns
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">test_wide_tree_10_lh 6235 ns
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">test_wide_tree_100_hhds 34911 ns
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">test_wide_tree_100_lh 35734 ns
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">test_wide_tree_1000_hhds 323228 ns
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">test_wide_tree_1000_lh 312755 ns
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">test_wide_tree_10000_hhds 3547963 ns
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">test_wide_tree_10000_lh 2975894 ns
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">test_wide_tree_100000_hhds 33800125 ns
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">test_wide_tree_100000_lh 32538424 ns
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">test_wide_tree_1000000_hhds 332509041 ns
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">test_wide_tree_1000000_lh 336261868 ns
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">test_wide_tree_10000000_hhds 3527352810 ns
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">test_wide_tree_10000000_lh 8774024963 ns
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h4 id="enabled-compiler-optimizations-1">Enabled compiler optimizations&lt;/h4>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">------------------------------------------
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Benchmark Time
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">------------------------------------------
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">test_wide_tree_10_hhds 837 ns
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">test_wide_tree_10_lh 512 ns
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">test_wide_tree_100_hhds 3394 ns
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">test_wide_tree_100_lh 2675 ns
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">test_wide_tree_1000_hhds 26019 ns
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">test_wide_tree_1000_lh 20141 ns
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">test_wide_tree_10000_hhds 319068 ns
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">test_wide_tree_10000_lh 245964 ns
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">test_wide_tree_100000_hhds 3369183 ns
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">test_wide_tree_100000_lh 2910862 ns
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">test_wide_tree_1000000_hhds 39243340 ns
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">test_wide_tree_1000000_lh 26777306 ns
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">test_wide_tree_10000000_hhds 454508781 ns
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">test_wide_tree_10000000_lh 331688046 ns
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Here without compiler optimizations, the HHDS tree structure typically outperforms the LHTree in the Wide Tree Test for large tree sizes. For smaller tree sizes, the LHTree showed a slightly better performance. However, using compiler optimizations, the LHTree starts to perform better than HHDS.&lt;/p>
&lt;blockquote>
&lt;p>The reason for the HHDS tree&amp;rsquo;s superior performance can be attributed to the chunk size being large, which allows for better cache utilization and reduced memory overhead. However, the LH Tree has been put through more tuning and has been in use for a longer time, which could explain its better performance with compiler optimizations. In the future, the HHDS tree could be optimized further to match or exceed the LH Tree&amp;rsquo;s performance.&lt;/p>
&lt;/blockquote>
&lt;h3 id="chip-typical-tree-test">Chip Typical Tree Test&lt;/h3>
&lt;h4 id="disabled-compiler-optimizations-2">Disabled compiler optimizations&lt;/h4>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">--------------------------------------------------------
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Benchmark Time
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">--------------------------------------------------------
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">test_chip_typical_tree_1_hhds 7109 ns
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">test_chip_typical_tree_1_lh 6803 ns
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">test_chip_typical_tree_2_hhds 22728 ns
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">test_chip_typical_tree_2_lh 22064 ns
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">test_chip_typical_tree_3_hhds 75398 ns
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">test_chip_typical_tree_3_lh 70910 ns
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">test_chip_typical_tree_4_hhds 270062 ns
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">test_chip_typical_tree_4_lh 254423 ns
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">test_chip_typical_tree_5_hhds 1110254 ns
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">test_chip_typical_tree_5_lh 1074439 ns
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">test_chip_typical_tree_6_hhds 5024264 ns
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">test_chip_typical_tree_6_lh 3900709 ns
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">test_chip_typical_tree_7_hhds/iterations:5 13290739 ns
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">test_chip_typical_tree_7_lh/iterations:5 22145462 ns
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">test_chip_typical_tree_8_hhds/iterations:5 83438683 ns
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">test_chip_typical_tree_8_lh/iterations:5 105475664 ns
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h4 id="enabled-compiler-optimizations-2">Enabled compiler optimizations&lt;/h4>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">--------------------------------------------------------
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Benchmark Time
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">--------------------------------------------------------
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">test_chip_typical_tree_1_hhds 938 ns
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">test_chip_typical_tree_1_lh 387 ns
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">test_chip_typical_tree_2_hhds 1877 ns
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">test_chip_typical_tree_2_lh 1351 ns
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">test_chip_typical_tree_3_hhds 7095 ns
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">test_chip_typical_tree_3_lh 5052 ns
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">test_chip_typical_tree_4_hhds 35019 ns
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">test_chip_typical_tree_4_lh 21569 ns
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">test_chip_typical_tree_5_hhds 130915 ns
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">test_chip_typical_tree_5_lh 78010 ns
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">test_chip_typical_tree_6_hhds 522385 ns
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">test_chip_typical_tree_6_lh 278223 ns
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">test_chip_typical_tree_7_hhds/iterations:5 4015636 ns
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">test_chip_typical_tree_7_lh/iterations:5 1648426 ns
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">test_chip_typical_tree_8_hhds/iterations:5 9873724 ns
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">test_chip_typical_tree_8_lh/iterations:5 4607773 ns
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>For the Chip Typical test, the HHDS tree&amp;rsquo;s performance is better for larger tree sizes, while the LHTree performs better for smaller tree sizes. However, with compiler optimizations, the LH Tree performs better than the HHDS tree.&lt;/p>
&lt;h3 id="chip-typical-long-tree-test">Chip Typical (long) Tree test&lt;/h3>
&lt;h4 id="disabled-compiler-optimizations-3">Disabled compiler optimizations&lt;/h4>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">-------------------------------------------------------------
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Benchmark Time
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">-------------------------------------------------------------
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">test_chip_typical_long_tree_1_hhds 8875 ns
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">test_chip_typical_long_tree_1_lh 8479 ns
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">test_chip_typical_long_tree_2_hhds 62490 ns
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">test_chip_typical_long_tree_2_lh 64620 ns
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">test_chip_typical_long_tree_3_hhds 625064 ns
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">test_chip_typical_long_tree_3_lh 654787 ns
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">test_chip_typical_long_tree_4_hhds 6128047 ns
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">test_chip_typical_long_tree_4_lh 6528778 ns
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">test_chip_typical_long_tree_5_hhds 71345448 ns
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">test_chip_typical_long_tree_5_lh 77170587 ns
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">test_chip_typical_long_tree_6_hhds/iterations:5 656595039 ns
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">test_chip_typical_long_tree_6_lh/iterations:5 860193491 ns
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h4 id="enabled-compiler-optimizations-3">Enabled compiler optimizations&lt;/h4>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">-------------------------------------------------------------
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Benchmark Time
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">-------------------------------------------------------------
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">test_chip_typical_long_tree_1_hhds 1139 ns
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">test_chip_typical_long_tree_1_lh 692 ns
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">test_chip_typical_long_tree_2_hhds 8666 ns
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">test_chip_typical_long_tree_2_lh 5238 ns
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">test_chip_typical_long_tree_3_hhds 90856 ns
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">test_chip_typical_long_tree_3_lh 48758 ns
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">test_chip_typical_long_tree_4_hhds 1034346 ns
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">test_chip_typical_long_tree_4_lh 472964 ns
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">test_chip_typical_long_tree_5_hhds 13040238 ns
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">test_chip_typical_long_tree_5_lh 5025192 ns
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">test_chip_typical_long_tree_6_hhds/iterations:3 131143411 ns
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">test_chip_typical_long_tree_6_lh/iterations:3 68739573 ns
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Similar to the previous case, the HHDS tree performs better in debug mode (without compiler optimizations). However, the LH Tree performs better with compiler optimizations.&lt;/p>
&lt;blockquote>
&lt;p>We see that the HHDS tree has shown overall better performance without compiler optimizations, however, with compiler optimizations, the LH Tree has shown better performance. HHDS Tree has shown better performance regardless, for the Deep Tree test. This indicates an inherent trade-off between the choice of both trees. To further investigate this behaviour I conducted some profiling, which is in a later section.&lt;/p>
&lt;/blockquote>
&lt;h2 id="iterators-benchmarks">Iterators Benchmarks&lt;/h2>
&lt;h3 id="deep-tree-test-1">Deep Tree test&lt;/h3>
&lt;h4 id="disabled-compiler-optimizations-4">Disabled compiler optimizations&lt;/h4>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">--------------------------------------------------------
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Benchmark Time
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">-------------------------------------------------------
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">test_deep_tree_10_hhds 884 ns
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">test_deep_tree_10_lh 1356 ns
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">test_deep_tree_100_hhds 7987 ns
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">test_deep_tree_100_lh 11191 ns
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">test_deep_tree_1000_hhds 86991 ns
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">test_deep_tree_1000_lh 105809 ns
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">test_deep_tree_10000_hhds 894127 ns
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">test_deep_tree_10000_lh 1076983 ns
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">test_deep_tree_100000_hhds 7927102 ns
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">test_deep_tree_100000_lh 11177187 ns
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">test_deep_tree_1000000_hhds/iterations:4 80470145 ns
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">test_deep_tree_1000000_lh/iterations:4 145763040 ns
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">test_deep_tree_10000000_hhds/iterations:3 1055529435 ns
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">test_deep_tree_10000000_lh/iterations:3 995416880 ns
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h4 id="enabled-compiler-optimizations-4">Enabled compiler optimizations&lt;/h4>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">------------------------------------------
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Benchmark Time
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">------------------------------------------
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">test_deep_tree_10_hhds 202 ns
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">test_deep_tree_10_lh 93.1 ns
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">test_deep_tree_100_hhds 1595 ns
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">test_deep_tree_100_lh 1039 ns
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">test_deep_tree_1000_hhds 15663 ns
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">test_deep_tree_1000_lh 11000 ns
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">test_deep_tree_10000_hhds 164778 ns
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">test_deep_tree_10000_lh 107293 ns
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">test_deep_tree_100000_hhds 1615928 ns
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">test_deep_tree_100000_lh 1260507 ns
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">test_deep_tree_1000000_hhds 19582402 ns
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">test_deep_tree_1000000_lh 15954697 ns
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">test_deep_tree_10000000_hhds 214887559 ns
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">test_deep_tree_10000000_lh 179118729 ns
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="wide-tree-test-1">Wide Tree test&lt;/h3>
&lt;h4 id="disabled-compiler-optimizations-5">Disabled compiler optimizations&lt;/h4>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">-------------------------------------------------------
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Benchmark Time
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">-------------------------------------------------------
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">test_wide_tree_10_hhds 7171 ns
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">test_wide_tree_10_lh 7098 ns
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">test_wide_tree_100_hhds 6204 ns
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">test_wide_tree_100_lh 10372 ns
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">test_wide_tree_1000_hhds 62762 ns
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">test_wide_tree_1000_lh 106132 ns
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">test_wide_tree_10000_hhds 622999 ns
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">test_wide_tree_10000_lh 1124283 ns
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">test_wide_tree_100000_hhds 6118490 ns
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">test_wide_tree_100000_lh 9550170 ns
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">test_wide_tree_1000000_hhds/iterations:10 59438777 ns
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">test_wide_tree_1000000_lh/iterations:10 97842431 ns
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">test_wide_tree_10000000_hhds/iterations:7 778347697 ns
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">test_wide_tree_10000000_lh/iterations:7 1163215808 ns
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h4 id="enabled-compiler-optimizations-5">Enabled compiler optimizations&lt;/h4>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">------------------------------------------
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Benchmark Time
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">------------------------------------------
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">test_wide_tree_10_hhds 2103 ns
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">test_wide_tree_10_lh 1284 ns
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">test_wide_tree_100_hhds 1563 ns
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">test_wide_tree_100_lh 632 ns
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">test_wide_tree_1000_hhds 15627 ns
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">test_wide_tree_1000_lh 6410 ns
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">test_wide_tree_10000_hhds 149588 ns
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">test_wide_tree_10000_lh 56030 ns
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">test_wide_tree_100000_hhds 1511278 ns
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">test_wide_tree_100000_lh 563926 ns
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">test_wide_tree_1000000_hhds 17056051 ns
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">test_wide_tree_1000000_lh 7754815 ns
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">test_wide_tree_10000000_hhds 143994848 ns
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">test_wide_tree_10000000_lh 55040231 ns
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="chip-typical-test">Chip typical test&lt;/h3>
&lt;h4 id="disabled-compiler-optimizations-6">Disabled compiler optimizations&lt;/h4>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">--------------------------------------------------------
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Benchmark Time
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">--------------------------------------------------------
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">test_chip_typical_tree_1_hhds 344 ns
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">test_chip_typical_tree_1_lh 892 ns
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">test_chip_typical_tree_2_hhds 2192 ns
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">test_chip_typical_tree_2_lh 1691 ns
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">test_chip_typical_tree_3_hhds 13628 ns
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">test_chip_typical_tree_3_lh 14235 ns
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">test_chip_typical_tree_4_hhds 34049 ns
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">test_chip_typical_tree_4_lh 84096 ns
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">test_chip_typical_tree_5_hhds 206482 ns
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">test_chip_typical_tree_5_lh 203680 ns
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">test_chip_typical_tree_6_hhds 848996 ns
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">test_chip_typical_tree_6_lh 708212 ns
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">test_chip_typical_tree_7_hhds/iterations:5 3645372 ns
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">test_chip_typical_tree_7_lh/iterations:5 6657982 ns
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">test_chip_typical_tree_8_hhds/iterations:5 7375050 ns
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">test_chip_typical_tree_8_lh/iterations:5 4577351 ns
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h4 id="enabled-compiler-optimizations-6">Enabled compiler optimizations&lt;/h4>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">-------------------------------------------
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Benchmark Time
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">-------------------------------------------
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">test_chip_typical_tree_1_hhds 93.1 ns
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">test_chip_typical_tree_1_lh 50.1 ns
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">test_chip_typical_tree_2_hhds 149 ns
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">test_chip_typical_tree_2_lh 212 ns
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">test_chip_typical_tree_3_hhds 1166 ns
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">test_chip_typical_tree_3_lh 554 ns
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">test_chip_typical_tree_4_hhds 7385 ns
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">test_chip_typical_tree_4_lh 3138 ns
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">test_chip_typical_tree_5_hhds 54477 ns
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">test_chip_typical_tree_5_lh 10643 ns
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">test_chip_typical_tree_6_hhds 215050 ns
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">test_chip_typical_tree_6_lh 53043 ns
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">test_chip_typical_tree_7_hhds 492555 ns
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">test_chip_typical_tree_7_lh 577120 ns
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">test_chip_typical_tree_8_hhds 2630675 ns
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">test_chip_typical_tree_8_lh 1278702 ns
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="chip-typical-long-test">Chip typical (long) test&lt;/h3>
&lt;h4 id="disabled-compiler-optimizations-7">Disabled compiler optimizations&lt;/h4>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">------------------------------------------------
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Benchmark Time
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">------------------------------------------------
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">test_chip_typical_long_tree_1_hhds 911 ns
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">test_chip_typical_long_tree_1_lh 1435 ns
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">test_chip_typical_long_tree_2_hhds 8161 ns
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">test_chip_typical_long_tree_2_lh 8619 ns
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">test_chip_typical_long_tree_3_hhds 76618 ns
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">test_chip_typical_long_tree_3_lh 132467 ns
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">test_chip_typical_long_tree_4_hhds 1644808 ns
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">test_chip_typical_long_tree_4_lh 1962406 ns
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">test_chip_typical_long_tree_5_hhds 7199648 ns
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">test_chip_typical_long_tree_5_lh 9195894 ns
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">test_chip_typical_long_tree_6_hhds 169002499 ns
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">test_chip_typical_long_tree_6_lh 207296570 ns
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h4 id="enabled-compiler-optimizations-7">Enabled compiler optimizations&lt;/h4>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">------------------------------------------------
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Benchmark Time
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">------------------------------------------------
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">test_chip_typical_long_tree_1_hhds 223 ns
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">test_chip_typical_long_tree_1_lh 101 ns
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">test_chip_typical_long_tree_2_hhds 2270 ns
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">test_chip_typical_long_tree_2_lh 719 ns
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">test_chip_typical_long_tree_3_hhds 38291 ns
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">test_chip_typical_long_tree_3_lh 12547 ns
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">test_chip_typical_long_tree_4_hhds 294222 ns
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">test_chip_typical_long_tree_4_lh 187010 ns
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">test_chip_typical_long_tree_5_hhds 4721230 ns
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">test_chip_typical_long_tree_5_lh 835256 ns
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">test_chip_typical_long_tree_6_hhds 30302468 ns
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">test_chip_typical_long_tree_6_lh 10057136 ns
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Overall, both add/append and iterators related benchmarks show an improvement in performance. Without compiler optimizations, HHDS tree performs better than the LH Tree. With compiler optimizations, there are similar differences in the traversal benchmarks. We will now look at some profiling that was done to identify the bottlenecks in the HHDS tree.&lt;/p>
&lt;h2 id="exceptions-and-a-reminder-of-why-they-are-slow">Exceptions, and a reminder of why they are slow.&lt;/h2>
&lt;p>When looking at the performance difference between the HHDS tree and LH tree (after enabling compiler optimizations), I was shocked to see that the HHDS tree was performing worse than the LH tree by multiple orders of magnitude upon using exceptions. This was a surprise to me, as I had not expected exceptions to have such a large impact on performance.&lt;/p>
&lt;p>The reason this happens is because exceptions are slow. When an exception is thrown, the stack is unwound, and the program has to jump to the catch block. This is a slow process, and should be avoided in performance-critical code. Moreover, the compiler cannot optimize code with exceptions as well as it can without them. This is why the HHDS tree performs so much worse than the LH tree when exceptions are enabled. But the HHDS tree still wasn&amp;rsquo;t performing as well as it should have been.&lt;/p>
&lt;h1 id="profiling">Profiling&lt;/h1>
&lt;p>I used &lt;code>callgrind&lt;/code> to profile the HHDS tree and identify potential bottlenecks. The profiling results provided valuable insights into the tree&amp;rsquo;s performance and areas for optimization. I generated a call graph using &lt;code>KCachegrind&lt;/code> and analyzed the function calls to determine the most time-consuming operations.
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="Profiling results" srcset="
/report/osre24/ucsc/livehd/20240824-ujjwalshekhar/fig3_hubc3fa7f2ca383621c0ea38621e28abe1_254926_06163f8afdc871f89387a8c1724d9e28.webp 400w,
/report/osre24/ucsc/livehd/20240824-ujjwalshekhar/fig3_hubc3fa7f2ca383621c0ea38621e28abe1_254926_731e96b9cf72b9d02381dec918d2530f.webp 760w,
/report/osre24/ucsc/livehd/20240824-ujjwalshekhar/fig3_hubc3fa7f2ca383621c0ea38621e28abe1_254926_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/ucsc/livehd/20240824-ujjwalshekhar/fig3_hubc3fa7f2ca383621c0ea38621e28abe1_254926_06163f8afdc871f89387a8c1724d9e28.webp"
width="760"
height="683"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;p>The call graph clearly shows that the bottleneck is the &lt;code>_create_space&lt;/code> call that is tasked with creating space for a new node. This function is called when a new node is added to the tree, and its performance directly impacts the tree&amp;rsquo;s efficiency.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">inline Tree_pos _create_space(const X&amp;amp; data) {
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> // Make space for CHUNK_SIZE number of entries at the end
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> data_stack.emplace_back(data);
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> for (int i = 0; i &amp;lt; CHUNK_MASK; i++) {
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> data_stack.emplace_back();
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> }
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> // Add the single pointer node for all CHUNK_SIZE entries
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> pointers_stack.emplace_back();
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> return pointers_stack.size() - 1;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>However, the &lt;code>_create_space&lt;/code> function is relatively simple and should not be causing such a significant performance hit. This indicates that the issue may lie in the memory allocation process or the data structure itself. One possible way of dealing with this would be to increase chunk sizes, or enable dynamic chunk sizing, which would allow for more efficient memory allocation.&lt;/p>
&lt;p>Another possible bottleneck, seems to be any amount of computation that will be done to find the next vacant space in the chunk (like in &lt;code>get_last_child()&lt;/code>). This is because the chunk is a fixed size, and if the chunk is full, the program will have to search for the next chunk that has space. This is a linear operation, and can be slow for wide trees. To fix this, I tried to add extra bookkeeping in the &lt;code>Tree_pointers&lt;/code> node structure:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">class __attribute__((packed, aligned(64))) Tree_pointers {
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">private:
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> // We only store the exact ID of parent
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> Tree_pos parent : CHUNK_BITS + CHUNK_SHIFT;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> Tree_pos next_sibling : CHUNK_BITS;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> Tree_pos prev_sibling : CHUNK_BITS;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> // Long child pointers
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> Tree_pos first_child_l : CHUNK_BITS;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> Tree_pos last_child_l : CHUNK_BITS;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> // Storing the last occupied index in the short delta
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> // This is to avoid iterating over all short deltas
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> // to find the last occupied index
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> unsigned short last_occupied : CHUNK_SHIFT;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> // Short (delta) child pointers
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> Short_delta first_child_s_0 : SHORT_DELTA;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> Short_delta first_child_s_1 : SHORT_DELTA;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> ...
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>However, the improvement in performance was marginal after making this change. This indicates that the issue may be more complex and require further investigation. This tree has also been added to the repository, in case a future contributor might be able to make use of it.&lt;/p>
&lt;p>There are other possible bottlenecks that might be coming from storing separate short deltas instead of reducing the size of the delta and packing it into a single large integer type. I will be implementing this idea in the future.&lt;/p>
&lt;h1 id="code-contributions">Code contributions&lt;/h1>
&lt;p>All of my Pull requests and code changes here made on the &lt;a href="https://github.com/masc-ucsc/hhds/graphs/contributors" target="_blank" rel="noopener">HHDS repository&lt;/a>. Each contribution has undergone thorough review and been successfully merged into the main repository:&lt;/p>
&lt;ul>
&lt;li>&lt;a href="https://github.com/masc-ucsc/hhds/pull/32" target="_blank" rel="noopener">https://github.com/masc-ucsc/hhds/pull/32&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://github.com/masc-ucsc/hhds/pull/37" target="_blank" rel="noopener">https://github.com/masc-ucsc/hhds/pull/37&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://github.com/masc-ucsc/hhds/pull/38" target="_blank" rel="noopener">https://github.com/masc-ucsc/hhds/pull/38&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://github.com/masc-ucsc/hhds/pull/41" target="_blank" rel="noopener">https://github.com/masc-ucsc/hhds/pull/41&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://github.com/masc-ucsc/hhds/pull/47" target="_blank" rel="noopener">https://github.com/masc-ucsc/hhds/pull/47&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://github.com/masc-ucsc/hhds/pull/48" target="_blank" rel="noopener">https://github.com/masc-ucsc/hhds/pull/48&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://github.com/masc-ucsc/hhds/pull/54" target="_blank" rel="noopener">https://github.com/masc-ucsc/hhds/pull/54&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>Additionally, we are planning to integrate these changes into the LiveHD repository in the near future.&lt;/p>
&lt;h1 id="conclusion-and-future-work">Conclusion and Future Work&lt;/h1>
&lt;p>Working on this project has been a valuable learning experience, particularly in applying core C++ features. I discovered that simple, fundamentally sound optimizations often outperform more complex ones. The greatest challenge for me was to steer through the changes in our original Plan of Action, however, due to the support and guidance from my mentors I was able to make it.&lt;/p>
&lt;p>There are still areas where the HHDS tree can be improved to make it more robust. One area of future exploration is dynamic chunk sizing:&lt;/p>
&lt;blockquote>
&lt;p>Dynamic Chunk Sizing: Instead of using fixed 8-sized chunks as we did, we could implement multiple chunk sizes. This would allow users to &amp;ldquo;hint&amp;rdquo; the HHDS tree to use specific chunk types, potentially reducing memory consumption further.&lt;/p>
&lt;/blockquote>
&lt;p>Overall, the HHDS tree has shown promise in handling deep tree structures efficiently. With further optimization and enhancements, it can become a powerful tool for handling complex tree operations.&lt;/p>
&lt;h1 id="acknowledgements">Acknowledgements&lt;/h1>
&lt;p>I would like to thank my mentors, &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/jose-renau/">Jose Renau&lt;/a> and &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/sakshi-garg/">Sakshi Garg&lt;/a> for their guidance and support throughout the project. It would not have been possible without their help. Their insights and mentorship have significantly contributed to my learning and the success of this work.&lt;/p></description></item><item><title>Reproducing and addressing Data Leakage issue : Duplicates in dataset</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/nyu/data-leakage/20240823-kyrillosishak/</link><pubDate>Fri, 23 Aug 2024 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/nyu/data-leakage/20240823-kyrillosishak/</guid><description>&lt;p>Hello!&lt;/p>
&lt;p>In this blog post, I will explore a common issue in machine learning called data leakage, using an example from the paper:&lt;/p>
&lt;blockquote>
&lt;p>Benedetti, P., Perri, D., Simonetti, M., Gervasi, O., Reali, G., Femminella, M. (2020). Skin Cancer Classification Using Inception Network and Transfer Learning. In: Gervasi, O., et al. Computational Science and Its Applications – ICCSA 2020. ICCSA 2020. Lecture Notes in Computer Science(), vol 12249. Springer, Cham. &lt;a href="https://doi.org/10.1007/978-3-030-58799-4_39" target="_blank" rel="noopener">https://doi.org/10.1007/978-3-030-58799-4_39&lt;/a> &lt;a href="https://arxiv.org/pdf/2111.02402v1" target="_blank" rel="noopener">arXiv&lt;/a>&lt;/p>
&lt;/blockquote>
&lt;h1 id="overview-of-the-paper">Overview of the Paper&lt;/h1>
&lt;p>In this paper, the authors use transfer learning on a pretrained convolutional neural network (CNN) to classify skin lesions in dermatoscopic images from the HAM10000 (Human Against Machine with 10,000 training images) dataset. The paper reports a final accuracy of 78.9% on the validation set.&lt;/p>
&lt;p>While this reported result appears to be impressive, there are concerns regarding the validity of this performance metric due to data leakage. Data leakage occurs when the model is trained or evaluated on data that it would not have access to during real-world deployment, leading to an overestimation of the model&amp;rsquo;s true performance.&lt;/p>
&lt;h1 id="identifying-data-leakage-in-the-original-paper">Identifying Data Leakage in the Original Paper&lt;/h1>
&lt;p>Upon closer inspection, it appears that the original experiment suffers from data leakage in two significant ways:&lt;/p>
&lt;ol>
&lt;li>
&lt;p>Duplicate Images in Training and Validation Sets:&lt;/p>
&lt;p>The HAM10000 dataset contains near-duplicate images of the same lesions in both the training and validation sets. This results in the model seeing very similar images during training and then again during validation. Consequently, the model&amp;rsquo;s performance is artificially inflated because it has already been &amp;ldquo;trained&amp;rdquo; on images similar to those in the validation set, making the task easier than it should be.&lt;/p>
&lt;p>
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="Lesions" srcset="
/report/osre24/nyu/data-leakage/20240823-kyrillosishak/Near-duplicate_HAM10000_hu729e02c2ef4cc1a337c6f61174a87df8_81762_dd4057c4bb0e4dc6092a43699881c4f4.webp 400w,
/report/osre24/nyu/data-leakage/20240823-kyrillosishak/Near-duplicate_HAM10000_hu729e02c2ef4cc1a337c6f61174a87df8_81762_95478285e99e3f18a8b724b5a0a3dbb5.webp 760w,
/report/osre24/nyu/data-leakage/20240823-kyrillosishak/Near-duplicate_HAM10000_hu729e02c2ef4cc1a337c6f61174a87df8_81762_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/nyu/data-leakage/20240823-kyrillosishak/Near-duplicate_HAM10000_hu729e02c2ef4cc1a337c6f61174a87df8_81762_dd4057c4bb0e4dc6092a43699881c4f4.webp"
width="620"
height="104"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="Lesions2" srcset="
/report/osre24/nyu/data-leakage/20240823-kyrillosishak/Near-duplicate2_HAM10000_hu1c922099c4dc23532306de6197bf4d86_99960_a0e705292db1f7f683a77cd92f29edc0.webp 400w,
/report/osre24/nyu/data-leakage/20240823-kyrillosishak/Near-duplicate2_HAM10000_hu1c922099c4dc23532306de6197bf4d86_99960_fae997e88feee11018435aebd9ed6c88.webp 760w,
/report/osre24/nyu/data-leakage/20240823-kyrillosishak/Near-duplicate2_HAM10000_hu1c922099c4dc23532306de6197bf4d86_99960_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/nyu/data-leakage/20240823-kyrillosishak/Near-duplicate2_HAM10000_hu1c922099c4dc23532306de6197bf4d86_99960_a0e705292db1f7f683a77cd92f29edc0.webp"
width="620"
height="104"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Using the Validation Set for Early Stopping and Final Evaluation:&lt;/p>
&lt;p>Another critical issue is the use of the validation set for both early stopping and final model evaluation. Early stopping is a technique where training is halted when the model&amp;rsquo;s performance on a validation set no longer improves, preventing overfitting. However, if this same validation set is later used to evaluate the model&amp;rsquo;s final performance, it can lead to overfitting on the validation data itself, resulting in an overly optimistic estimate of model accuracy.&lt;/p>
&lt;/li>
&lt;/ol>
&lt;h1 id="our-reproduction-and-results">Our Reproduction and Results&lt;/h1>
&lt;p>To demonstrate the impact of these data leakage issues, we reproduced the experiment with corrected methodologies:&lt;/p>
&lt;ul>
&lt;li>
&lt;p>Corrected Data Split: We ensured that there were no duplicate images between the training and validation sets. This setup is crucial to simulate a realistic scenario where the model encounters completely unseen data during validation.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Separate Validation and Test Sets: We introduced a distinct test set to evaluate the final model performance, independent of the data used for early stopping.&lt;/p>
&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>Results Comparison&lt;/strong>&lt;/p>
&lt;table>
&lt;tr>
&lt;td>&lt;/td>
&lt;td>Original results&lt;/td>
&lt;td>Our results&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>
Accuracy
&lt;/td>
&lt;td>
78.9%
&lt;/td>
&lt;td>
78.6%
&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>
Number of epochs
&lt;/td>
&lt;td>
Approx. 42 epochs
&lt;/td>
&lt;td>
40 epochs
&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>
Training size
&lt;/td>
&lt;td>
Unknown
&lt;/td>
&lt;td>
7000 samples
&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>
Validation size
&lt;/td>
&lt;td>
478 samples
&lt;/td>
&lt;td>
478 samples
&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>
Confusion martix
&lt;/td>
&lt;td>
&lt;img src="https://raw.githubusercontent.com/kyrillosishak/re-SkinCancer/main/assets/paper's_results.jpeg" />
&lt;/td>
&lt;td>
&lt;img src="https://raw.githubusercontent.com/kyrillosishak/re-SkinCancer/main/assets/Our_results.jpeg" />
&lt;/td>
&lt;/tr>
&lt;/table>
&lt;h1 id="analysis-of-the-results">Analysis of the Results&lt;/h1>
&lt;p>While our reproduced accuracy of 78.6% is close to the original reported accuracy, it is based on a properly separated training and validation set, avoiding the data leakage pitfalls of the original paper. The slight drop in accuracy further highlights the overestimation of the original model&amp;rsquo;s performance due to data leakage.&lt;/p>
&lt;p>Moreover, using a separate test set for final evaluation provides a more reliable measure of the model&amp;rsquo;s ability to generalize to new, unseen data. The confusion matrices show that our model&amp;rsquo;s performance is consistent across different lesion classes, confirming the robustness of the evaluation.&lt;/p>
&lt;h1 id="conclusion">Conclusion&lt;/h1>
&lt;p>Data leakage is a common and often overlooked problem in applied machine learning, leading to misleading performance metrics and irreproducible results. By carefully examining and correcting these issues in our reproduction, we hope to provide a clearer understanding of the importance of proper data handling and validation practices.&lt;/p>
&lt;p>It is crucial for researchers and practitioners to be vigilant about data leakage and ensure that their models are trained, validated, and tested under realistic conditions. This not only ensures the credibility of their results but also enhances the real-world applicability of their models.&lt;/p>
&lt;p>Thank you for reading, and stay tuned for more insights on machine learning reproducibility!&lt;/p></description></item><item><title>Final blog: Automatic reproducibility of COMPSs experiments through the integration of RO-Crate in Chameleon</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/intel/20240822-architd/</link><pubDate>Thu, 22 Aug 2024 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/intel/20240822-architd/</guid><description>&lt;h2 id="introduction">Introduction&lt;/h2>
&lt;p>Hello everyone,&lt;/p>
&lt;p>I&amp;rsquo;m Archit from India, an undergraduate student at the Indian Institute of Technology, Banaras Hindu University (IIT BHU), Varanasi. As part of the &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre24/bsc/ro-crate-compss/">Automatic Reproducibility of COMPSs Experiments through the Integration of RO-Crate in Chameleon&lt;/a> project, my &lt;a href="https://drive.google.com/file/d/1qY-uipQZPox144LD4bs05rn3islfcjky/view" target="_blank" rel="noopener">proposal&lt;/a>, under the mentorship of &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/raul-sirvent/">Raül Sirvent&lt;/a>, aims to develop a service that facilitates the automated replication of COMPSs experiments within the Chameleon infrastructure.&lt;/p>
&lt;h2 id="about-the-project">About the Project&lt;/h2>
&lt;p>The project proposes to create a service that can take a COMPSs crate (an artifact adhering to the RO-Crate specification) and, through analysis of the provided metadata, construct a Chameleon-compatible image for replicating the experiment on the testbed.&lt;/p>
&lt;h2 id="final-product">Final Product&lt;/h2>
&lt;p align="center">
&lt;img src="./logo.png" alt="Logo" style="width: 60%; height: auto;">
&lt;/p>
&lt;p>The basic workflow of the COMPSs Reproducibility Service can be explained as follows:&lt;/p>
&lt;ol>
&lt;li>The service takes the workflow path or link as the first argument from the user.&lt;/li>
&lt;li>The program shifts the execution to a separate sub-directory, &lt;code>reproducibility_service_{timestamp}&lt;/code>, to store the results from the reproducibility process.&lt;/li>
&lt;li>Two main flags are required:
&lt;ul>
&lt;li>&lt;strong>Provenance flag&lt;/strong>: If you want to generate the provenance of the workflow via the runcompss runtime.&lt;/li>
&lt;li>&lt;strong>New Dataset flag&lt;/strong>: If you want to reproduce the experiment with a new dataset instead of the one originally used.&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>If there are any remote datasets, they are fetched into the sub-directory.&lt;/li>
&lt;li>The main work begins with parsing the metadata from &lt;code>ro-crate-metadata.json&lt;/code> and verifying the files present inside the dataset, as well as any files downloaded as remote datasets. This step generates a status table for the user to check if any files are missing or have modified sizes.&lt;/li>
&lt;/ol>
&lt;p align="center">
&lt;img src="./status_table.png" alt="Status Table" style="width: 70%; height: auto;">
&lt;/p>
&lt;ol start="6">
&lt;li>The final step is to transform the &lt;code>compss-command-line.txt&lt;/code> and all the paths specified inside it to match the local environment where the experiment will be reproduced. This includes:
&lt;ul>
&lt;li>Mapping the paths from the old machine to new paths inside the RO-Crate.&lt;/li>
&lt;li>Changing the runtime to &lt;code>runcompss&lt;/code> or &lt;code>enqueue_compss&lt;/code>, depending on whether the environment is a SLURM cluster.&lt;/li>
&lt;li>Detecting if the paths specified in the command line are for results, and redirecting them to new results inside the &lt;code>reproducibility_service_{timestamp}\Results&lt;/code> directory.&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>After this, the service prompts the user to add any additional flags to the final command. Upon final verification, the command is executed via Python&amp;rsquo;s subprocess pipe.&lt;/li>
&lt;/ol>
&lt;p align="center">
&lt;img src="./end.png" alt="End Image" style="width: 50%; height: auto;">
&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Logging System&lt;/strong>: All logs related to the Reproducibility Service are stored inside the &lt;code>reproducibility_service_{timestamp}\log&lt;/code>.&lt;/li>
&lt;/ul>
&lt;p>You can view the basic &lt;a href="https://github.com/Minimega12121/COMPSs-Reproducibility-Service/blob/main/pseudocode.txt" target="_blank" rel="noopener">pseudocode&lt;/a> of the service.&lt;/p>
&lt;h2 id="conclusion-and-future-work">Conclusion and Future Work&lt;/h2>
&lt;p>It&amp;rsquo;s been a long journey since I started this project, and now it&amp;rsquo;s finally coming to an end. I have learned a lot from this experience, from weekly meetings with my mentor to working towards long-term goals—it has all been thrilling. I would like to thank the OSRE community and my mentor for providing me with this learning opportunity.&lt;/p>
&lt;p>This is only version 1.0.0 of the Reproducibility Service. If I have time from my coursework, I would like to fix any bugs or improve the service further to meet user needs.&lt;/p>
&lt;p>However, the following issues still exist with the service and can be improved upon:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Third-party software dependencies&lt;/strong>: Automatic detection and loading of these dependencies on a SLURM cluster are not yet implemented. Currently, these must be handled manually by the user.&lt;/li>
&lt;li>&lt;strong>Support for workflows with &lt;code>data_persistence = False&lt;/code>&lt;/strong>: There is no support for workflows where all datasets are remote files.&lt;/li>
&lt;/ul>
&lt;h2 id="deliverables">Deliverables&lt;/h2>
&lt;ul>
&lt;li>&lt;a href="https://github.com/Minimega12121/COMPSs-Reproducibility-Service" target="_blank" rel="noopener">Reproducibility Service Repository&lt;/a>: This repository contains the main service along with guidelines on how to use it. The service will be integrated with the COMPSs official distribution in its next release.&lt;/li>
&lt;li>&lt;a href="https://www.chameleoncloud.org/appliances/121/" target="_blank" rel="noopener">Chameleon Appliance&lt;/a> : This is a single-node appliance with COMPSs 3.3.1 installed, so that anyone with access to Chameleon can reproduce experiments.&lt;/li>
&lt;/ul>
&lt;!-- - [Experiments Analysis](https://docs.google.com/spreadsheets/d/1W4CKqiYVPquSwXFRITbb1Hga1xcyv2_3DJIcq7JalZk/edit?gid=0#gid=0) : This report contains details of experiments I have reproduced using the Reproducibility Service on a SLURM cluster, a local machine, and a Chameleon appliance, along with observations. -->
&lt;h2 id="previous-blogs">Previous Blogs&lt;/h2>
&lt;p>Make sure to check out my other blogs to see how I started this project and the challenges I faced along the way:&lt;/p>
&lt;ul>
&lt;li>&lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/intel/20240612-architd/">First blog&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/intel/20240729-architd/">Mid-term blog&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>Thank you for reading the blog, have a nice day!!&lt;/p></description></item><item><title>Final Blogpost: HDEval's LLM Benchmarking for HDL Design</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/ucsc/livehd/20240821-ashwinbardhwaj/</link><pubDate>Wed, 21 Aug 2024 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/ucsc/livehd/20240821-ashwinbardhwaj/</guid><description>&lt;h1 id="introduction">Introduction&lt;/h1>
&lt;p>Hello everyone! I&amp;rsquo;m Ashwin Bardhwaj, an undergraduate student studying at UC Berkeley. As part of &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre23/ucsc/livehd">Micro Architecture Santa Cruz (MASC)&lt;/a> my &lt;a href="https://drive.google.com/file/d/1Fnr85lqrTs7OBohfHfSZI2K3wZU3zJm0/view?usp=sharing" target="_blank" rel="noopener">proposal&lt;/a> under the mentorship of &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/jose-renau/">Jose Renau&lt;/a> and &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/sakshi-garg/">Sakshi Garg&lt;/a> looks to create a suite of benchmark programs for &lt;a href="https://github.com/masc-ucsc/hdeval" target="_blank" rel="noopener">HDEval&lt;/a>.&lt;/p>
&lt;p>The goal of this project is to create large-scale Verilog programs in order to benchmark that capability of LLMs to develop HDL code. Throughout this project, I have created 3 of the large Verilog testbenches called 3-Stage-RISC_V processor, Gameboy Emulator, and Sorts. The benchmark programs will lose their effectriveness if LLMs such as ChatGPT scrape over Github reposotires and learn from them. As a result, the code itself cannot be made public due to LLM scraping over repositories, this file will cover the test report for all 3 of these projects.&lt;/p>
&lt;h1 id="3-stage-risc-v-processor">3 Stage RISC V Processor&lt;/h1>
&lt;p>This is a pipelined RISC processor developed to to handle RV32I instructions. A 3-Stage processsor will typically contain a Fetch, Decode, and Execute cycle. As a result, every instruction will take exactly 3 clock cycles. For this processor, instructions can be formatted into R, I (Load), S (Store), B (Cond), and J (Jump and Link) type instructions. Once a 32 bit instruction is fetched at the location in memory specifed by the pc (Program Counter) register, it is sent to be decoded by the &amp;ldquo;decode unit&amp;rdquo;. Through decoding an instruction, we can determine the exact operation code, register location of the 2 operands (rs1 and rs2), and the destination register (rd) at which to write the calculated result. After decoding, an activation flag is sent to the excetution cycle to then take and access the register file at address rs1 and rs2 in order to get the correct operand data. The data and operation is then sent to the ALU to compute the result based on the opcode. The result is then written back into the register file at the rd address and the program counter is incremented and the next instruction is fetched.&lt;/p>
&lt;p>The prompts for each module in this processor have been generated and tested against a GPT 3 turbo and GPT 4o models as an example. In the RISC V tab in my test report, I have provided the exact prompts and results after running on MASC&amp;rsquo;s &lt;a href="https://github.com/masc-ucsc/hdlagent" target="_blank" rel="noopener">HDLAgent&lt;/a> tool which can access the APIs of many LLMs.&lt;/p>
&lt;h1 id="gameboy-emulator">Gameboy Emulator&lt;/h1>
&lt;p>The Gameboy Emulator is a Verilog implementation of the classic GameBoy console that was widely popular in the 1990s. The main aspects of the GameBoy that were focused on in this project were the Z-80 like CPU, memory objects like RAM, VRAM, and ROM, the PPU (Picture Processing Unit), and other peripherals. The instructions are given to the CISC (variable-length instructions) CPU where they are decoded and executed based on the details and expectations of that specific instruction. In some cases, timing becomes a concern and there is significant effort made to ensure that instructions can be parsed and run predictably and effictively. Instructions from the ROM may take between 1 to 4 clock cycles to run depending on the requirements. For example, the instruction &amp;ldquo;LD B, HL&amp;rdquo; , loads the data found at the 16 bit address given by registers H and L into register B is a 2 cycle instruction. The first cycle decodes the HL address and fetches the data at the accurate location, while the second cycle takes the new input data at writes it into register B. This requires accurate timing control between different asects of the GameBoy.
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="Gameboy Emulator Top Level Wave File" srcset="
/report/osre24/ucsc/livehd/20240821-ashwinbardhwaj/Gameboy_Wave_File_hueac052dcb2b1c9a531ecc9cf3de73e1f_112493_1c31333f2eab882478c68b3e4fe07ef4.webp 400w,
/report/osre24/ucsc/livehd/20240821-ashwinbardhwaj/Gameboy_Wave_File_hueac052dcb2b1c9a531ecc9cf3de73e1f_112493_afc571aac140f2cd4e9e117826b4bf3a.webp 760w,
/report/osre24/ucsc/livehd/20240821-ashwinbardhwaj/Gameboy_Wave_File_hueac052dcb2b1c9a531ecc9cf3de73e1f_112493_1200x1200_fit_q75_h2_lanczos.webp 1200w"
src="https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/ucsc/livehd/20240821-ashwinbardhwaj/Gameboy_Wave_File_hueac052dcb2b1c9a531ecc9cf3de73e1f_112493_1c31333f2eab882478c68b3e4fe07ef4.webp"
width="760"
height="402"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;p>The Picture Processing Unit is also an integral feature of the gameboy. Three frames called Background, Window, and Sprite are combined into the classic Gameboy screens we know today. White the Background and Window data are consistently called from the VRAM after certain clock cycle times, the Sprite and sprtite attributes are accessed using DMA (Direct Memory Access) from OAM (Object Attribute Memory). This reduces the CPU load and improves the speed of sprite data.&lt;/p>
&lt;h1 id="deliverables">Deliverables&lt;/h1>
&lt;ul>
&lt;li>
&lt;p>&lt;strong>HDEval Test Report&lt;/strong>: The &lt;a href="https://docs.google.com/spreadsheets/d/1vDh_k75h0sG8JGRDDZcdBM4AprVcw9l1/edit?usp=sharing&amp;amp;ouid=102173779464961795129&amp;amp;rtpof=true&amp;amp;sd=true" target="_blank" rel="noopener">HDEval Test Report&lt;/a> contains the module prompts for each testbench, the results after testing on GPT 3 turbo and 4o, and test cases to ensure code correctness and reliability.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>HDEval Repo&lt;/strong>: &lt;a href="https://github.com/masc-ucsc/hdeval" target="_blank" rel="noopener">HDEval&lt;/a> contains the encrypted version of the yaml files that encapsulate the code, prompts, and additional data.&lt;/p>
&lt;/li>
&lt;/ul>
&lt;h1 id="next-steps">Next Steps&lt;/h1>
&lt;p>Given these benchmarks, it is important to track the abilities of these LLMs to generate HDL code. Therefore, including GPT 3-turbo and 4o. I would like these benchmarks to be applied to more models so that we can track their growth and keep informed on their effectiveness in HDL and hardware.&lt;/p>
&lt;h1 id="previous-blogs">Previous Blogs&lt;/h1>
&lt;p>Please feel free to check out my previous blogs!&lt;/p>
&lt;ul>
&lt;li>&lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/ucsc/livehd/20240611-ashwinbardhwaj/">First Blog&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/ucsc/livehd/20240718-ashwinbardhwaj/">Midterm Blog&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>Thank you for reading!&lt;/p></description></item><item><title>Deriving Realistic Performance Benchmarks for Python Interpreters</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/uutah/static-python-perf/20240817-mrigankpawagi/</link><pubDate>Sat, 17 Aug 2024 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/uutah/static-python-perf/20240817-mrigankpawagi/</guid><description>&lt;p>Hi, I am Mrigank. I am one of the &lt;em>Summer of Reproducibility&lt;/em> fellows for 2024, and I will be working on &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre24/uutah/static-python-perf/">deriving realistic performance benchmarks for Python interpreters&lt;/a> with &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/ben-greenman/">Ben Greenman&lt;/a> from the University of Utah.&lt;/p>
&lt;h2 id="background-and-motivation">Background and Motivation&lt;/h2>
&lt;p>Recent work by Meta on a statically typed variant of Python – Static Python – which has provided immense promise in moving towards gradually typed languages without compromising on performance due to lack of complete soundness. Lu et al.&lt;sup id="fnref:1">&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref">1&lt;/a>&lt;/sup> provide an evaluation of Static Python and conclude that the enhancement in performance reported by Meta on their web servers for Instagram is reasonable and is not just the result of refactoring. In fact, the study notes that very little refactoring is typically required for converting existing Python programs to Static Python. However, this study depends on a limited model of the language and does not represent real-world software applications.&lt;/p>
&lt;p>In our project, we aim to create a realistic performance benchmark to reproduce performance improvements reported by Meta and to evaluate the performance of Static Python in real-world software applications. In addition, we will analyze partially-typed code to understand the performance implications of gradual typing in Python.&lt;/p>
&lt;h2 id="key-objectives">Key Objectives&lt;/h2>
&lt;p>We will use widely-used open-sourced applications to derive realistic performance benchmarks for evaluating Static Python. In particular, we will focus on projects that utilize the Python framework &lt;a href="https://www.djangoproject.com/" target="_blank" rel="noopener">Django&lt;/a>, which is also known to power the backend of Instagram. We plan to begin with &lt;a href="https://github.com/wagtail/wagtail" target="_blank" rel="noopener">Wagtail&lt;/a>, a popular CMS built on Django. We have also identified other potential projects like &lt;a href="https://github.com/zulip/zulip" target="_blank" rel="noopener">Zulip&lt;/a>, &lt;a href="https://github.com/makeplane/plane" target="_blank" rel="noopener">Plane&lt;/a> and &lt;a href="https://github.com/LibrePhotos/librephotos" target="_blank" rel="noopener">LibrePhotos&lt;/a>. These are all actively maintained projects with significantly large codebases.&lt;/p>
&lt;p>Further, we will analyze the performance of partially-typed code. This will be of value to the Python community as it will provide confidence in gradually moving towards Static Python for improving performance. We will make our benchmarks publicly available for the community to use, reproduce, and extend.&lt;/p>
&lt;h2 id="methodology">Methodology&lt;/h2>
&lt;h3 id="load-testing">Load Testing&lt;/h3>
&lt;p>For each project that we derive benchmarks from, we will design user pipelines that simulate real-world usage and implement them to create load tests using the open-sourced &lt;a href="https://github.com/locustio/locust" target="_blank" rel="noopener">Locust&lt;/a> framework. This will allow us to evaluate the performance of Static Python in real-world loads and scenarios. Locust can spawn thousands of users, each of which independently bombards the system with HTTP requests for a range of tasks that are defined in their user pipeline. We will host each project on a server (local or cloud) to run these load tests.&lt;/p>
&lt;p>We will profile each project to ensure that our tests cover different parts of the codebase and to identify performance bottlenecks. We can then focus on these bottlenecks while gradually typing the codebase.&lt;/p>
&lt;h3 id="gradual-typing">Gradual Typing&lt;/h3>
&lt;p>For typing the code in these projects, we will create two versions of each project: one with the so-called &amp;ldquo;shallow&amp;rdquo; type annotations and another with &amp;ldquo;advanced&amp;rdquo; type annotations. The former is relatively easier to implement and we can use tools like &lt;a href="https://github.com/Instagram/MonkeyType" target="_blank" rel="noopener">MonkeyType&lt;/a> to generate stubs that can be quickly verified manually. The latter is quite non-trivial and will require manual effort. We will then mix-and-match the three versions of each project to create different combinations of typed and untyped code. Note that this mix-and-match can be done at both the module level and also at the function or class level.&lt;/p>
&lt;h2 id="conclusion">Conclusion&lt;/h2>
&lt;p>This is my first time working on performance-benchmarking and I am excited to pick up new skills in the process. I am also looking forward to interacting with people from the Python community, people from Meta&amp;rsquo;s Static Python team, and also with the maintainers of the projects we will be working on. I will be posting more updates on this project as we make progress. Stay tuned!&lt;/p>
&lt;div class="footnotes" role="doc-endnotes">
&lt;hr>
&lt;ol>
&lt;li id="fn:1">
&lt;p>Kuang-Chen Lu, Ben Greenman, Carl Meyer, Dino Viehland, Aniket Panse, and Shriram Krishnamurthi. Gradual soundness: Lessons from static python. &lt;em>The Art, Science, and Engineering of Programming&lt;/em>.&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;/ol>
&lt;/div></description></item><item><title>Midterm Report: Deriving Realistic Performance Benchmarks for Python Interpreters</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/uutah/static-python-perf/20240909-mrigankpawagi/</link><pubDate>Sat, 17 Aug 2024 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/uutah/static-python-perf/20240909-mrigankpawagi/</guid><description>&lt;p>Hi, I am Mrigank. As a &lt;em>Summer of Reproducibility 2024&lt;/em> fellow, I am working on &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/uutah/static-python-perf/20240817-mrigankpawagi/">deriving realistic performance benchmarks for Python interpreters&lt;/a> with &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/ben-greenman/">Ben Greenman&lt;/a> from the University of Utah. In this post, I will provide an update on the progress we have made so far.&lt;/p>
&lt;h2 id="creating-a-performance-benchmark">Creating a Performance Benchmark&lt;/h2>
&lt;p>We are currently focusing on applications built on top of Django, a widely used Python web framework. For our first benchmark, we chose &lt;a href="https://github.com/wagtail/wagtail" target="_blank" rel="noopener">Wagtail&lt;/a>, a popular content management system. We created a pipeline with locust to simulate real-world load on the application. All of our work is open-sourced and available on our &lt;a href="https://github.com/utahplt/static-python-perf/blob/main/Benchmark/wagtail/locustfile.py" target="_blank" rel="noopener">GitHub repository&lt;/a>.&lt;/p>
&lt;p>This load-testing pipeline creates hundreds of users who independently create many blog posts on a Wagtail blog site. At the same time, thousands of users are spawned to view these blog posts. Wagtail does not have a built-in API and so it took some initial effort to figure out the endpoints to hit, which I did by inspecting the network logs in the browser while interacting with the Wagtail admin interface.&lt;/p>
&lt;p>A snapshot from a run of the load test with Locust is shown in the featured image above. This snapshot was generated by spawning users from 24 different parallel locust processes. This was done on a local server, and we plan to perform the same experiments on CloudLab soon.&lt;/p>
&lt;h2 id="profiling">Profiling&lt;/h2>
&lt;p>On running the load tests with a profiler, we found that the bottlenecks in the performance arose not from the Wagtail codebase but from the Django codebase. In particular, we identified three modules in Django that consumed the most time during the load tests: &lt;code>django.db.backends.sqlite3._functions&lt;/code>, &lt;code>django.utils.functional&lt;/code>, and &lt;code>django.views.debug&lt;/code>. &lt;a href="https://github.com/dibrinsofor" target="_blank" rel="noopener">Dibri&lt;/a>, a graduate student in Ben&amp;rsquo;s lab, is helping us add types to these modules.&lt;/p>
&lt;h2 id="next-steps">Next Steps&lt;/h2>
&lt;p>Based on these findings, we are now working on typing these modules to see if we can improve the performance of the application by using Static Python. Typing Django is a non-trivial task, and while there have been some efforts to do so, previous attempts like &lt;a href="https://github.com/typeddjango/django-stubs" target="_blank" rel="noopener">django-stubs&lt;/a> are incomplete for our purpose.&lt;/p>
&lt;p>We are also writing scripts to mix untyped, shallow-typed, and advanced-typed versions of a Python file, and run each mixed version several times to obtain a narrow confidence interval for the performance of each version.&lt;/p>
&lt;p>We will be posting more updates as we make progress. Thank you for reading!&lt;/p></description></item><item><title>Final Blog: FEP-Bench: Benchmarking for Enhanced Feature Engineering and Preprocessing in Machine Learning</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/uchicago/fep_bench/20240816-jaycezhu/</link><pubDate>Fri, 16 Aug 2024 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/uchicago/fep_bench/20240816-jaycezhu/</guid><description>&lt;h2 id="background">Background&lt;/h2>
&lt;p>Hello, I’m &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/lihaowen-jayce-zhu/">Lihaowen (Jayce) Zhu&lt;/a>, a 2024 SoR contributor for the FEP-bench project, under the mentorship of &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/yuyang-roy-huang/">Yuyang (Roy) Huang&lt;/a>. Before we started, let&amp;rsquo;s recap the goal of our project and our progress until mid term. The FEP-Bench project proposes to address the significant bottlenecks encountered during this phase, particularly focusing on the challenges posed by data retrieval from data lakes and computational inefficiencies in data operations. In order to solve these challenges, we have collected the basic information of various common datasets for different machine learning tasks, and corresponding preprocessing pipelines.&lt;/p>
&lt;h2 id="methodology">Methodology&lt;/h2>
&lt;p>Since our goal is to improve the efficiency of the machine learning preprocessing pipeline and keep the training process of the Deep Learning model busy, it means that we need to enhance the preprocessing throughput which is the feed rate from the preprocessing stage to the training stage. According to some previous works, we have a new way to look at the Deep Learning Preprocessing Pipelines. The preprocessing pipeline can be split into 2 parts. The first part contains steps that are run once (S1-Sm). We can call it the “offline” part. The second part includes all the rest steps, which are run at every iteration of training. We call it the ”online” part. After the offline preprocessing steps, the output data is written back to disk. Then the online preprocessing steps need to load that data from storage first and do the following operations. We can split the pipeline at any step, and each split is a preprocessing strategy. By using this method, some specific strategies can achieve a much higher final preprocessing throughput. Our project adopts this method to profile the performance of different strategies. And our goal is to maximize the final preprocessing throughput into training, for a specific pipeline. We want to make this an automatic process, rather than ask for extra user instructions or parameters.&lt;/p>
&lt;h2 id="experiment">Experiment&lt;/h2>
&lt;p>Next, we did the data preprocessing strategy experiment on the LibriSpeech dataset, which is an audio dataset for ML tasks like Auto Speech Recognition. The dataset size is 6.3 GB with almost 30000 samples. Each audio file is in a binary format FLAC. As a result, the first step of the preprocessing pipeline we use is decoding, which converts the binary data into arrays of floats. Then we applied some typical audio preprocessing steps of transformation (normalization, padding, extract loudest section) and augmentation (random cut, random shift audio, random mask, random add noise) to audio data. Finally, the audio data is converted to Log-Mel Spectrogram signal, which is commonly used in audio tasks like Speech Recognition and Speaker identification.&lt;/p>
&lt;p>We have benchmarked the throughput performance and storage overhead of all possible strategy split points, and have seen some trade-offs between them. Both storage overhead and throughput speed-up use the fully online method as the baseline. What we&amp;rsquo;ve observed from our results is that the speed-up keeps increasing when we put operations into the offline part, and the storage consumption is very low for the strategies after audio decoding. Also, we analysed the performance of individual methods of transformation and augmentation steps. We find that the speed-up performance is quite stable between 1.0 and 1.2 across these methods, but some methods can have a high storage overhead, like normalization and random noise.&lt;/p>
&lt;p>Another thing we observed during our experiments is that different dataset sizes can influence the preprocessing pipeline throughput. We found that the throughput speed-up of 10000 samples is almost double the speed-up of 5000 samples. It seems like a larger dataset size may lead to a higher speed-up. So, we were thinking that does every operation follows this pattern or only certain operations can have increasing throughput with increasing dataset size, and then did experiments about the throughput speed-ups on different dataset sizes of all operations in the audio preprocessing pipeline. The results showed that only the audio decoding step can have a great increase in speed-up for larger dataset sizes. But for transformation, augmentation and LMS, the throughputs always stay at a steady level. This indicates that the only audio decoding step can become faster and faster when the dataset size grows.&lt;/p>
&lt;h2 id="conclusion">Conclusion&lt;/h2>
&lt;p>In our work, we have built up a collection of common datasets and their preprocessing pipelines for different machine-learning tasks. For the audio dataset LibriSpeech, we have done experiments about the trade-offs between throughput speed-ups and storage overhead, and dataset sizes. We have found that speed-ups keep increasing when more and more operations are divided into the offline part. Only the audio decoding step can become faster and faster when the dataset size grows.&lt;/p>
&lt;h2 id="future-works">Future works&lt;/h2>
&lt;p>In the near future, we still want to find the optimal preprocessing strategy by profiling only a small part of the original enormous dataset. The second thing is that besides the audio dataset, we must expand the range of our experiments on other datasets and ML tasks. Finally, we need to implement our goal of building an automatic system that decides the optimal strategy of a preprocessing pipeline.&lt;/p></description></item><item><title>Final Blog: FSA - Benchmarking Fail-Slow Algorithms</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/uchicago/fsa-benchmarking/20240814-xikangsong/</link><pubDate>Wed, 14 Aug 2024 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/uchicago/fsa-benchmarking/20240814-xikangsong/</guid><description>&lt;h2 id="introduction">Introduction&lt;/h2>
&lt;p>Hello! I hope you&amp;rsquo;re enjoying the summer as much as I am. I&amp;rsquo;m excited to join the SOR community as a 2024 contributor. My name is &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/xikang-song/">Xikang Song&lt;/a>, and I&amp;rsquo;m thrilled to collaborate with mentors &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/ruidan-li/">Ruidan Li&lt;/a> and &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/kexin-pei/">Kexin Pei&lt;/a> on the FSA-Benchmark project. This project is dedicated to exploring and benchmarking various machine learning models to identify disks at high risk of fail-slow anomalies. Throughout this journey, we tested a broad range of algorithms, from traditional approaches to state-of-the-art techniques, using a robust evaluation system to compare their effectiveness.&lt;/p>
&lt;p>In the first half of the project, I focused on implementing and testing different machine learning models for detecting disks at high risk of fail-slow anomalies. This involved setting up initial models such as the Cost-Sensitive Ranking Model and Multi-Prediction Models, and beginning to explore LSTM networks for analyzing input disk data.&lt;/p>
&lt;p>In the second half, I built upon this foundation by refining the evaluation processes, exploring advanced models like PatchTST, and investigating the potential of large language models (LLMs) for detecting subtle fail-slow conditions in storage systems. This blog post will summarize the key achievements, findings, and comparisons with baseline models from this phase.&lt;/p>
&lt;h2 id="key-achievements">Key Achievements&lt;/h2>
&lt;ol>
&lt;li>
&lt;p>&lt;strong>Comprehensive Benchmarking and Evaluation:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>I extended the benchmarking framework to evaluate multiple algorithms across 25 different data clusters on PERSEUS. This process involved generating and analyzing heatmaps that visualized the precision and recall of each model under various settings, providing a clear understanding of each approach&amp;rsquo;s strengths and limitations.&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Exploration of Advanced Machine Learning Models:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>
&lt;p>&lt;strong>LSTM Model:&lt;/strong> I implemented the Long Short-Term Memory (LSTM) model, specifically designed for sequential data, to capture temporal dependencies in disk performance metrics. This model was used to predict potential fail-slow anomalies by analyzing historical data. Using Mean Squared Error (MSE) as a risk indicator, the LSTM model outperformed baseline approaches like the Cost-Sensitive Ranking Model and Multi-Prediction Models, especially in clusters where latency patterns between faulty and normal disks were distinct, such as in Cluster_P. This resulted in a higher precision and fewer false positives. However, in clusters with more complex and overlapping data distributions, like Cluster_L, the LSTM model&amp;rsquo;s performance diminished, similar to that of the baseline models&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>PatchTST Model:&lt;/strong> I also introduced and evaluated the PatchTST model, which is built on a transformer-based architecture known for its ability to handle sequential data by capturing long-range dependencies and intricate temporal patterns. Unlike traditional models, PatchTST processes time series data in segments or &amp;ldquo;patches,&amp;rdquo; enhancing its ability to predict disk behavior over extended periods. Like the LSTM model, PatchTST uses outlier MSE values to assess disk risk. In clusters with a clear separation between faulty and normal disks, PatchTST outperformed baseline models by effectively identifying faulty patterns. However, similar to the LSTM model, PatchTST encountered difficulties in clusters with significant data overlap, such as Cluster_L.&lt;/p>
&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Investigation into Large Language Models (LLMs):&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>I explored the use of GPT-4-o-mini for fail-slow detection. While large language models (LLMs) showed potential, particularly in reducing false positives and improving precision over baseline models, they did not consistently outperform specialized models like LSTM and PatchTST in this context. LLMs struggled with recall, especially as thresholds increased, revealing the challenges of adapting LLMs to time series data. This limitation arises because LLMs are primarily trained for natural language generation tasks, not for analyzing time series data. As a result, their ability to fully capture anomalies is limited. To improve their effectiveness, we need to develop methods that help LLMs better understand time series data. For example, incorporating statistical information about each disk’s performance could enhance LLMs&amp;rsquo; understanding, leading to better precision in fail-slow detection.&lt;/li>
&lt;/ul>
&lt;/li>
&lt;/ol>
&lt;h2 id="conclusion-and-future-work">Conclusion and Future Work&lt;/h2>
&lt;p>The work in this project demonstrated that while advanced machine learning models like LSTM and PatchTST offer significant potential for detecting fail-slow conditions, challenges remain in ensuring consistent performance across diverse clusters. Compared to baseline models, these advanced approaches generally provided better precision and recall, especially in clusters with distinct data patterns between faulty and normal disk performance time series. However, the persistent difficulties in more complex clusters indicate the need for further refinement.&lt;/p>
&lt;p>Moving forward, future work will focus on refining these models, particularly in improving their performance in challenging clusters like Cluster_L. Additionally, I plan to further explore techniques such as prompt engineering for LLMs to better tailor them for time series analysis and fail-slow detection tasks.&lt;/p>
&lt;h2 id="deliverables">Deliverables&lt;/h2>
&lt;ul>
&lt;li>&lt;strong>Repository:&lt;/strong> All comprehensive analysis code and source code can be found in the &lt;a href="https://github.com/songxikang/FSA_BENCHMARK" target="_blank" rel="noopener">FSA_BENCHMARK GitHub Repository&lt;/a>.&lt;/li>
&lt;li>&lt;strong>Jupyter Notebook:&lt;/strong> A notebook to reproduce the experiments and benchmarks on Chameleon: &lt;a href="https://chameleoncloud.org/experiment/share/585c1fc0-924c-4501-b143-ad6476339aa8" target="_blank" rel="noopener">Chameleon Experiment Notebook&lt;/a>.&lt;/li>
&lt;li>&lt;strong>Final Report:&lt;/strong> Comprehensive algorithm performance evaluation for all methods in &lt;a href="https://docs.google.com/document/d/1NONl23sXK-qE4Krx3JwG7gCrNiNmaaW1t4WVzMmomLQ/edit?usp=sharing" target="_blank" rel="noopener">FSA-Benchmarking Final Report&lt;/a>.&lt;/li>
&lt;/ul></description></item><item><title>Data Leakage in Applied ML</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/nyu/data-leakage/20240813-shaivimalik/</link><pubDate>Tue, 13 Aug 2024 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/nyu/data-leakage/20240813-shaivimalik/</guid><description>&lt;p>Hello everyone!&lt;/p>
&lt;p>I have been working on reproducing the results from &lt;strong>Characterization of Term and Preterm Deliveries using Electrohysterograms Signatures&lt;/strong>. This paper aims to predict preterm birth using Support Vector Machine with RBF kernel. However, there is a major flaw in the methodology: &lt;strong>preprocessing on training and test set&lt;/strong>. This happens when preprocessing is performed on the entire dataset before splitting it into training and test sets.&lt;/p>
&lt;p>
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="Sample produced from test and training set samples" srcset="
/report/osre24/nyu/data-leakage/20240813-shaivimalik/leakage_hu7171e85c8455cc3219721a2e3b71a711_62548_687703a1dee465e80fb3dbe262dd5860.webp 400w,
/report/osre24/nyu/data-leakage/20240813-shaivimalik/leakage_hu7171e85c8455cc3219721a2e3b71a711_62548_42051adaf7804083284553c10ca73861.webp 760w,
/report/osre24/nyu/data-leakage/20240813-shaivimalik/leakage_hu7171e85c8455cc3219721a2e3b71a711_62548_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/nyu/data-leakage/20240813-shaivimalik/leakage_hu7171e85c8455cc3219721a2e3b71a711_62548_687703a1dee465e80fb3dbe262dd5860.webp"
width="760"
height="589"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;p>
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="Sample produced from training set samples" srcset="
/report/osre24/nyu/data-leakage/20240813-shaivimalik/no_leakage_hu60ff986c558a17237e53708798334267_66856_47e6397030251c1681ff92260f687641.webp 400w,
/report/osre24/nyu/data-leakage/20240813-shaivimalik/no_leakage_hu60ff986c558a17237e53708798334267_66856_8bad9197813df4344757765d43878a56.webp 760w,
/report/osre24/nyu/data-leakage/20240813-shaivimalik/no_leakage_hu60ff986c558a17237e53708798334267_66856_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/nyu/data-leakage/20240813-shaivimalik/no_leakage_hu60ff986c558a17237e53708798334267_66856_47e6397030251c1681ff92260f687641.webp"
width="760"
height="594"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;p>Reproducing the published results came with its own challenges, including updating EHG-Oversampling to extract meaningful features from EHG signals and finding optimal hyperparameters for the model. Through our work on reproducing the published results and creating toy example notebooks, we have been able to demonstrate that data leakage leads to overly optimistic measures of model performance and models trained with data leakage fail to generalize to real-world data. In such cases, performance on test set doesn&amp;rsquo;t translate to performance in the real-world.&lt;/p>
&lt;p>Next, I&amp;rsquo;ll be reproducing the results published in &lt;strong>Identification of COVID-19 Samples from Chest X-Ray Images Using Deep Learning: A Comparison of Transfer Learning Approaches&lt;/strong>.&lt;/p>
&lt;p>You can follow my work on the EHG paper &lt;a href="https://github.com/shaivimalik/medicine_preprocessing-on-entire-dataset" target="_blank" rel="noopener">here&lt;/a>.&lt;/p>
&lt;p>Stay tuned for more insights on data leakage and updates on our progress!&lt;/p></description></item><item><title>Midterm Report : Halfway through medicinal data visulaization using PolyPhy/Polyglot</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/ucsc/polyphy/20240719-ayushsharma/</link><pubDate>Mon, 12 Aug 2024 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/ucsc/polyphy/20240719-ayushsharma/</guid><description>&lt;h2 id="introduction">Introduction&lt;/h2>
&lt;p>Hello! My name is &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/ayush-sharma/">Ayush Sharma&lt;/a>, a machine learning engineer and researcher based out of Chandigarh, a beautiful city in Northern India known for its modern architecture and green spaces.
For the last month and a half I have been working closely with my mentors &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/oskar-elek/">Oskar Elek&lt;/a> and &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/kiran-deol/">Kiran Deol&lt;/a> on the project titled &lt;a href="%5cproject%5cosre24%5cucsc%5cpolyphy">Unveiling Medicine Patterns: 3D Clustering with Polyphy/Polyglot&lt;/a>as part of GSoC 2024.&lt;/p>
&lt;h2 id="progress-and-challenges">Progress and Challenges&lt;/h2>
&lt;p>The project focuses on developing effective clustering algorithms to visualize medicine data in three dimensions using PolyPhy and Polyglot. My journey began with data preprocessing and cleaning, where unnecessary data points were removed, and missing values were addressed.&lt;/p>
&lt;p>One of the primary techniques we&amp;rsquo;ve employed is UMAP (Uniform Manifold Approximation and Projection). UMAP&amp;rsquo;s ability to preserve the global structure of the data while providing meaningful clusters proved advantageous. Initial experiments with UMAP on datasets of various sizes (ranging from 1,500 to 15,000 medicines) provided valuable insights into the clustering patterns. By iteratively halving the dimensions and refining the parameters, we achieved more accurate clustering results.&lt;/p>
&lt;p>
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="UMAP on a dataset of 15000 medicines" srcset="
/report/osre24/ucsc/polyphy/20240719-ayushsharma/umap_hua68b3da7cb5e27475c0ecf687ad0d87a_123755_48eb545fa0673e23a0ff289b6fdac6cd.webp 400w,
/report/osre24/ucsc/polyphy/20240719-ayushsharma/umap_hua68b3da7cb5e27475c0ecf687ad0d87a_123755_12b5cf998e90e476fdd4e6c9800cc63e.webp 760w,
/report/osre24/ucsc/polyphy/20240719-ayushsharma/umap_hua68b3da7cb5e27475c0ecf687ad0d87a_123755_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/ucsc/polyphy/20240719-ayushsharma/umap_hua68b3da7cb5e27475c0ecf687ad0d87a_123755_48eb545fa0673e23a0ff289b6fdac6cd.webp"
width="679"
height="603"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;p>To complement UMAP, we explored t-SNE (t-distributed Stochastic Neighbor Embedding). t-SNE&amp;rsquo;s focus on local relationships helped in understanding finer details within the clusters. By adjusting t-SNE parameters and conducting perturbations, we could better comprehend the data&amp;rsquo;s behavior. Combining UMAP with t-SNE in a loop, halving dimensions iteratively, showed promise, allowing us to leverage the strengths of both techniques to enhance clustering accuracy.&lt;/p>
&lt;p>
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="t-SNE on a dataset of 15000 medicines" srcset="
/report/osre24/ucsc/polyphy/20240719-ayushsharma/t-SNE_hu27c25081a80397a68d5439e1a165b2a0_67619_505feb5f73fb8656ef98cfa71acfb53b.webp 400w,
/report/osre24/ucsc/polyphy/20240719-ayushsharma/t-SNE_hu27c25081a80397a68d5439e1a165b2a0_67619_fc473d7fb06ab1b2e2bafbb3b86db867.webp 760w,
/report/osre24/ucsc/polyphy/20240719-ayushsharma/t-SNE_hu27c25081a80397a68d5439e1a165b2a0_67619_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/ucsc/polyphy/20240719-ayushsharma/t-SNE_hu27c25081a80397a68d5439e1a165b2a0_67619_505feb5f73fb8656ef98cfa71acfb53b.webp"
width="760"
height="527"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;p>We also experimented with pre-trained models like BERT and Glove to create embeddings for the medicines. BERT’s splitting of salts into subparts and Glove’s limitations in recognizing specific salts led us to inaccurate clustering and we&amp;rsquo;ve been working on improving it for the time being.&lt;/p>
&lt;h2 id="next-steps">Next Steps&lt;/h2>
&lt;p>Moving forward, I will focus on refining our clustering and embedding techniques to enhance overall accuracy. This involves integrating Jaccard distance alongside other distance measures to improve similarity assessments between medicines and clusters. Additionally, I&amp;rsquo;ll continue experimenting with advanced models like gpt,CLIP, gemini etc., for better embeddings while addressing the limitations of BERT and Glove by leveraging custom embeddings created with transformers and one-hot encoding. Optimization of UMAP and t-SNE algorithms will also be crucial, ensuring their effectiveness in clustering and visualization. These steps aim to overcome current challenges and further advance the project&amp;rsquo;s goals.&lt;/p></description></item><item><title>Midterm Check-In: Progress on the AutoAppendix Project</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/tuwien/autoappendix/20240803-kkrassni/</link><pubDate>Sat, 03 Aug 2024 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/tuwien/autoappendix/20240803-kkrassni/</guid><description>&lt;p>Hi all,&lt;/p>
&lt;p>I&amp;rsquo;m happy to share a quick update on the AutoAppendix project as we’re about
halfway through. We’ve made some steady progress on evaluating artifacts from SC24 papers, and we&amp;rsquo;re starting
to think about how we can use what we&amp;rsquo;ve learned to
improve the artifact evaluation process in the future.&lt;/p>
&lt;h2 id="what-weve-been-up-to">What We’ve Been Up To&lt;/h2>
&lt;p>As a quick reminder, the goal of our project is to develop a set of guidelines that
researchers can use to improve the reproducibility of their work. We&amp;rsquo;re focusing
on papers from the Supercomputing Conference 2024 that applied for an &amp;ldquo;Artifact Replicable&amp;rdquo; badge, and we&amp;rsquo;re
evaluating their artifacts to see how well the experiments can be replicated. As it was difficult to make assumptions about the exact outcomes of the project besides detailed experiment recreation, our main goal of this
midterm check-in is to share what insights we have gathered so far and to set the stage for the final outcomes.&lt;/p>
&lt;p>Our main task so far has been making a selection of submissions with experiments designed
for Chameleon Cloud, or those that could be easily adapted to run on Chameleon. As there were 45 submissions that applied
for an &amp;ldquo;Artifact Replicable&amp;rdquo; badge, it was not easy
to choose which ones to evaluate, but we managed to narrow
it down to 18 papers that we thought would be a good fit for our project.&lt;/p>
&lt;p>We&amp;rsquo;ve chosen to focus on papers that do not require
special hardware (like a specific supercomputer) or
complex network setups, as it would be difficult to
generalize the insights from these kinds of
experiments. Instead, we&amp;rsquo;ve been looking at those
that require only a &lt;em>single computation node&lt;/em>, and
could theoretically be run with the available hardware
on Chameleon.&lt;/p>
&lt;h2 id="observations-and-learning-points">Observations and Learning Points&lt;/h2>
&lt;p>At the moment, we&amp;rsquo;re about halfway through the
evaluation process. So far, we&amp;rsquo;ve noticed a range of
approaches to documenting and setting up computational
experiments. Even without looking at the appendices in
detail, it&amp;rsquo;s clear that there’s a lot of room for
standardization of the documentation format and software setup, which could make life easier for
everyone involved. This particularly applies to
software setups, which are often daunting to replicate,
especially when there are specific version requirements, version
incompatibilities or outright missing dependencies. Since the main goal of this
project is to develop a set of guidelines that
researchers can use to improve the reproducibility of
their work, suggesting a way to deal with software
versions and dependencies will be a key part of our
results.&lt;/p>
&lt;p>We’ve observed that submissions with well-structured and detailed appendices
tend to fare better in reproducibility checks. This includes those that utilized
containerization solutions like Docker, which encapsulate the computing
environment needed to run the experiments and thus
eliminates the need for installing specific software
packages. It’s these kinds of practices that we
think could be encouraged more broadly.&lt;/p>
&lt;h2 id="looking-ahead">Looking Ahead&lt;/h2>
&lt;p>The next steps are pretty exciting! We’re planning to use what we’ve learned to draft some
guidelines that could help future SC conference submissions be more consistent.
This might include templates or checklists that ensure all the necessary details
are covered.&lt;/p>
&lt;p>Additionally, we’re thinking about ways to automate some parts of the artifact
evaluation process. The goal here is to make it less labor-intensive and more
objective. A particularly nice way
of reproducible artifact evaluation is
Chameleon&amp;rsquo;s JupyterHub interface, which in conglomeration with the &lt;em>Trovi&lt;/em>
artifact sharing platform makes it easy to share artifacts and allow interested
parties to reproduce the experiments with minimal effort. We are thus looking into ways to
utilize and contribute to these tools in a way that could benefit the broader research community.&lt;/p>
&lt;h2 id="wrapping-up">Wrapping Up&lt;/h2>
&lt;p>That’s it for now! We are working towards getting
as many insights as possible from the rest of the
artifact evaluations, and hopefully, by the end of this project, we’ll have some solid
recommendations and tools to show for it. Thanks for keeping up with our
progress, and I’ll be back with more updates as we move into the final stages of
our work.&lt;/p></description></item><item><title>[MidTerm] ScaleRep: Reproducing and benchmarking scalability bugs hiding in cloud systems</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/osu/scalerep/20240801-imzahra/</link><pubDate>Thu, 01 Aug 2024 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/osu/scalerep/20240801-imzahra/</guid><description>&lt;p>Hey there, scalability enthusiasts and fellow researchers! I’m excited to share my progress on the &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre24/osu/scalerep/">ScaleRep project&lt;/a> for SoR 2024 under the mentorship of &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/bogdan-bo-stoica/">Bogdan &amp;quot;Bo&amp;quot; Stoica&lt;/a> and &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/yang-wang/">Yang Wang&lt;/a>. Here’s a glimpse into how we’re tackling scalability bugs in large-scale distributed systems.&lt;/p>
&lt;h2 id="project-overview">Project Overview&lt;/h2>
&lt;p>Large-scale distributed systems are the backbone of modern computing, powering various applications and services. However, these systems often face challenges related to reliability and performance, particularly scalability bugs. These bugs manifest in large-scale deployments, causing issues such as system downtime, reduced responsiveness, and data loss. Traditional bug-finding methods fall short in detecting these bugs, which are triggered by factors like component count, system load, workload size, recovery protocol reliability, and intermediate failure magnitude.&lt;/p>
&lt;p>Our project, ScaleRep, aims to address these challenges by analyzing recent scalability issues from ten popular open-source large-scale systems. We are providing detailed accounts of bug reproduction experiences, identifying common challenges, and developing protocols for triggering and quantifying the impact of scalability bugs.&lt;/p>
&lt;h2 id="progress-highlights">Progress Highlights&lt;/h2>
&lt;p>So far, I have been working on the following bugs and have successfully uploaded some of them to Trovi. Here’s a brief overview of my progress:&lt;/p>
&lt;h3 id="bugs-worked-on">Bugs Worked On:&lt;/h3>
&lt;ol>
&lt;li>&lt;strong>&lt;a href="https://issues.apache.org/jira/browse/IGNITE-20614" target="_blank" rel="noopener">IGNITE-20614&lt;/a>&lt;/strong>: Uploaded to Trovi &lt;a href="https://www.chameleoncloud.org/experiment/share/9f045059-011e-4089-90d4-0f5845ef3c73" target="_blank" rel="noopener">Trovi Link&lt;/a>&lt;/li>
&lt;li>&lt;strong>&lt;a href="https://issues.apache.org/jira/browse/IGNITE-17407" target="_blank" rel="noopener">IGNITE-17407&lt;/a>&lt;/strong>: Uploaded to Trovi &lt;a href="https://www.chameleoncloud.org/experiment/share/9cfd42b7-c7c9-4b6b-a538-b6c496eb1bed" target="_blank" rel="noopener">Trovi Link&lt;/a>&lt;/li>
&lt;li>&lt;strong>&lt;a href="https://issues.apache.org/jira/browse/IGNITE-20692" target="_blank" rel="noopener">IGNITE-20692&lt;/a>&lt;/strong>&lt;/li>
&lt;li>&lt;strong>&lt;a href="https://issues.apache.org/jira/browse/IGNITE-16600" target="_blank" rel="noopener">IGNITE-16600&lt;/a>&lt;/strong>&lt;/li>
&lt;li>&lt;strong>&lt;a href="https://issues.apache.org/jira/browse/IGNITE-16072" target="_blank" rel="noopener">IGNITE-16072&lt;/a>&lt;/strong>&lt;/li>
&lt;/ol>
&lt;h2 id="what-is-chameleon-and-trovi">What is Chameleon and Trovi?&lt;/h2>
&lt;p>&lt;strong>&lt;a href="https://chameleoncloud.org/" target="_blank" rel="noopener">Chameleon&lt;/a>&lt;/strong> is a configurable experimental environment for large-scale cloud research. It provides a platform for running and testing distributed systems at scale, allowing researchers to reproduce and study scalability issues in a controlled setting.&lt;/p>
&lt;p>&lt;strong>&lt;a href="https://chameleoncloud.org/experiment/share/" target="_blank" rel="noopener">Trovi&lt;/a>&lt;/strong> is a platform that facilitates the sharing of reproducible artifacts. By uploading our bug reproduction artifacts to Trovi, we enable other researchers to easily reproduce scalability bugs, fostering collaboration and advancing the field of distributed systems research.&lt;/p>
&lt;h2 id="short-description-of-the-bugs">Short Description of the Bugs&lt;/h2>
&lt;ol>
&lt;li>&lt;a href="https://issues.apache.org/jira/browse/IGNITE-20614" target="_blank" rel="noopener">IGNITE-20614&lt;/a>
This bug refers to an issue where the Ignite service grid experiences degradation or hangs under specific conditions related to service deployment and node restarts.&lt;/li>
&lt;/ol>
&lt;p>&lt;strong>Root Causes&lt;/strong>: The root cause is a race condition during the deployment and undeployment of services in the service grid, particularly when nodes are restarted or when there is a significant amount of concurrent service deployment and undeployment activity.&lt;/p>
&lt;p>&lt;strong>Impact&lt;/strong>: The impact of this bug includes potential service grid hangs, degraded performance, and possible inability to deploy or undeploy services as expected, which can disrupt the overall operation of the Ignite cluster.&lt;/p>
&lt;p>&lt;strong>Fix&lt;/strong>: The fix involves adding proper synchronization mechanisms to handle concurrent service deployment and undeployment operations more gracefully, ensuring that race conditions are avoided.&lt;/p>
&lt;ol start="2">
&lt;li>&lt;a href="https://issues.apache.org/jira/browse/IGNITE-17407" target="_blank" rel="noopener">IGNITE-17407&lt;/a>
This issue pertains to the incorrect behavior of the Ignite thin client protocol, particularly when dealing with binary objects and schema changes.&lt;/li>
&lt;/ol>
&lt;p>&lt;strong>Root Causes&lt;/strong>: The root cause lies in the way the thin client handles binary object schema changes. The thin client was not correctly updating the schema cache, leading to inconsistencies and incorrect behavior when deserializing binary objects.&lt;/p>
&lt;p>&lt;strong>Impact&lt;/strong>: Users of the thin client may experience issues with binary object deserialization, leading to potential data corruption, incorrect query results, and overall application instability.&lt;/p>
&lt;p>&lt;strong>Fix&lt;/strong>: The fix involves updating the thin client protocol to properly handle schema changes by ensuring that the schema cache is correctly updated and synchronized with the server.&lt;/p>
&lt;ol start="3">
&lt;li>&lt;a href="https://issues.apache.org/jira/browse/IGNITE-20692" target="_blank" rel="noopener">IGNITE-20692&lt;/a>
This bug is related to the performance degradation observed in the Ignite SQL engine when executing certain complex queries.&lt;/li>
&lt;/ol>
&lt;p>&lt;strong>Root Causes&lt;/strong>: The root cause is identified as inefficient query planning and execution strategies for specific types of complex SQL queries, leading to excessive resource consumption and slow query performance.&lt;/p>
&lt;p>&lt;strong>Impact&lt;/strong>: Users running complex SQL queries may experience significant performance degradation, leading to slower response times, increased CPU and memory usage, and potentially impacting the overall performance of the Ignite cluster.&lt;/p>
&lt;p>&lt;strong>Fix&lt;/strong>: The fix involves optimizing the SQL query planner and executor to handle complex queries more efficiently, including better indexing strategies, improved query plan caching, and more effective resource management during query execution.&lt;/p>
&lt;ol start="4">
&lt;li>&lt;a href="https://issues.apache.org/jira/browse/IGNITE-16600" target="_blank" rel="noopener">IGNITE-16600&lt;/a>
This bug involves an issue with speed-based throttling in the checkpoint process, leading to possible starvation of the checkpoint thread under heavy load.&lt;/li>
&lt;/ol>
&lt;p>&lt;strong>Root Causes&lt;/strong>: The root cause is the absence of proper mechanisms to wake up throttled threads when they no longer need to be throttled, resulting in unnecessary waiting and potential starvation of the checkpoint thread.&lt;/p>
&lt;p>&lt;strong>Impact&lt;/strong>: Under heavy load, the checkpoint process can be significantly delayed, leading to slower checkpoint completion times, increased risk of data loss, and overall degraded performance of the Ignite cluster.&lt;/p>
&lt;p>&lt;strong>Fix&lt;/strong>: The fix includes implementing methods to wake up throttled threads when they no longer need to be throttled (tryWakeupThrottledThreads and shouldThrottle), ensuring that the checkpoint process can proceed without unnecessary delays.&lt;/p>
&lt;ol start="5">
&lt;li>&lt;a href="https://issues.apache.org/jira/browse/IGNITE-16072" target="_blank" rel="noopener">IGNITE-16072&lt;/a>
This issue pertains to the incorrect handling of SQL queries involving NULL values in the Ignite SQL engine, leading to unexpected query results.&lt;/li>
&lt;/ol>
&lt;p>&lt;strong>Root Causes&lt;/strong>: The root cause is an incorrect implementation of SQL semantics for handling NULL values in certain query conditions, particularly in the presence of complex joins and subqueries.&lt;/p>
&lt;p>&lt;strong>Impact&lt;/strong>: Users may experience incorrect query results when NULL values are involved, leading to potential data inconsistencies and incorrect application behavior.&lt;/p>
&lt;p>&lt;strong>Fix&lt;/strong>: The fix involves correcting the SQL engine&amp;rsquo;s implementation to properly handle NULL values according to the SQL standard, ensuring that queries involving NULL values produce the expected results.&lt;/p>
&lt;h2 id="whats-next">What&amp;rsquo;s Next?&lt;/h2>
&lt;h4 id="continued-bug-reproduction">Continued Bug Reproduction:&lt;/h4>
&lt;ul>
&lt;li>Focus on reproducing more scalability bugs&lt;/li>
&lt;/ul>
&lt;h4 id="documentation-of-challenges">Documentation of Challenges:&lt;/h4>
&lt;ul>
&lt;li>Breakdown specific challenges encountered during attempts to reproduce scalability bugs.&lt;/li>
&lt;li>Categorize challenges, including technical complexities, environmental dependencies, and lack of documentation in bug reports.&lt;/li>
&lt;/ul>
&lt;h4 id="finalizing-project-deliverables">Finalizing Project Deliverables:&lt;/h4>
&lt;ul>
&lt;li>Package artifacts using Jupyter notebook scripts for convenient replay of investigation steps.&lt;/li>
&lt;li>Upload the package to Trovi for replayable artifacts, enabling other researchers to easily reproduce scalability bugs for our benchmark applications.&lt;/li>
&lt;/ul>
&lt;h3 id="conclusion">Conclusion&lt;/h3>
&lt;p>The ScaleRep project has made significant strides in reproducing and benchmarking scalability bugs in large-scale distributed systems. By successfully reproducing and documenting scalability bugs, we are contributing valuable insights to the research community, aiding in the development of more robust distributed systems. The protocols and methodologies devised in this project will serve as valuable tools for researchers exploring similar issues.&lt;/p>
&lt;p>Stay tuned for more updates as we continue to tackle scalability bugs and improve the reliability and performance of large-scale distributed systems.&lt;/p></description></item><item><title>Midway Through GSoC</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/lbl/drishti/20240714-jaytau/</link><pubDate>Wed, 31 Jul 2024 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/lbl/drishti/20240714-jaytau/</guid><description>&lt;p>Hello everyone! I&amp;rsquo;m &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/joel-tony/">Joel Tony&lt;/a>, and I&amp;rsquo;m excited to share my progress update on the &lt;a href="https://github.com/hpc-io/drishti" target="_blank" rel="noopener">Drishti&lt;/a> project as part of my Google Summer of Code (GSoC) experience. Over the past few weeks, I&amp;rsquo;ve been diving deep into the world of I/O visualization for scientific applications, and I&amp;rsquo;m thrilled to tell you about the strides we&amp;rsquo;ve made.&lt;/p>
&lt;h2 id="what-is-drishti">What is Drishti?&lt;/h2>
&lt;p>For those unfamiliar with Drishti, it&amp;rsquo;s an application used to visualize I/O traces of scientific applications. When running complex scientific applications, understanding their I/O behavior can be challenging. Drishti steps in to parse logs from various sources, with a primary focus on those collected using &lt;a href="https://wordpress.cels.anl.gov/darshan/" target="_blank" rel="noopener">Darshan&lt;/a>, a lightweight I/O characterization tool for HPC applications. Drishti provides human-interpretable insights on how to improve I/O performance based on these logs. While Drishti supports multiple log sources, our current work emphasizes Darshan logs due to their comprehensive I/O information. Additionally, Drishti offers visually appealing and easy-to-understand graphs to help users better grasp their application&amp;rsquo;s I/O patterns, making it easier to identify bottlenecks and optimize performance.&lt;/p>
&lt;h2 id="progress-and-challenges">Progress and Challenges&lt;/h2>
&lt;h3 id="export-directory-feature">Export Directory Feature&lt;/h3>
&lt;p>One of the first features I implemented was the export directory functionality. In earlier versions of Drishti, users couldn&amp;rsquo;t select where they wanted their output files to be saved. This became problematic when working with read-only log locations. I familiarized myself with the codebase, created a pull request, and successfully added this feature, allowing users to choose their preferred output location.&lt;/p>
&lt;h3 id="ci-improvements-and-cross-project-dependencies">CI Improvements and Cross-Project Dependencies&lt;/h3>
&lt;p>While working on Drishti, I discovered the tight coupling between various tools in the HPC I/O organization, such as Drishti and DXT Explorer. This highlighted the need for improved Continuous Integration (CI) practices. We currently run about eight GitHub Actions for each pull request, but they don&amp;rsquo;t adequately test the interactions between different branches of these interconnected tools. This is an area we&amp;rsquo;ve identified for future improvement to ensure smoother integration and fewer conflicts between projects.&lt;/p>
&lt;h3 id="refactoring-for-multi-file-support">Refactoring for Multi-File Support&lt;/h3>
&lt;p>The bulk of my time was spent refactoring Drishti to extend its framework from parsing single Darshan files to handling multiple files. This task was more complex than it initially appeared, as Drishti&amp;rsquo;s insights are based on the contents of each Darshan file. When dealing with multiple files, we needed to find a way to aggregate the data meaningfully without sacrificing on performance.&lt;/p>
&lt;p>The original codebase had a single, thousand-line function for parsing Darshan files. To improve this, I implemented a data class structure in Python. This refactoring allows for:&lt;/p>
&lt;ol>
&lt;li>Better separation of computation and condition checking&lt;/li>
&lt;li>Easier parallelization of processing multiple traces&lt;/li>
&lt;li>Finer-grained profiling of performance bottlenecks&lt;/li>
&lt;li>More flexibility in data manipulation and memory management&lt;/li>
&lt;/ol>
&lt;h2 id="learnings-and-skills-gained">Learnings and Skills Gained&lt;/h2>
&lt;p>Through this process, I&amp;rsquo;ve gained valuable insights into:&lt;/p>
&lt;ol>
&lt;li>Refactoring large codebases&lt;/li>
&lt;li>Understanding and improving cross-project dependencies&lt;/li>
&lt;li>Implementing data classes in Python for better code organization&lt;/li>
&lt;li>Balancing performance with code readability and maintainability&lt;/li>
&lt;/ol>
&lt;h2 id="next-steps">Next Steps&lt;/h2>
&lt;p>As I move forward with the project, my focus will be on:&lt;/p>
&lt;ol>
&lt;li>Adding unit tests for individual methods to ensure functionality&lt;/li>
&lt;li>Exploring alternative data frame implementations like Polars for better performance&lt;/li>
&lt;li>Developing aggregation methods for different types of data across multiple Darshan files&lt;/li>
&lt;li>Optimizing memory usage and computational efficiency for large datasets&lt;/li>
&lt;/ol>
&lt;h2 id="conclusion">Conclusion&lt;/h2>
&lt;p>Working on Drishti has been an incredible learning experience. I&amp;rsquo;ve had the opportunity to tackle real-world challenges in scientific computing and I/O visualization. As we progress, I&amp;rsquo;m excited about the potential impact of these improvements on the scientific community&amp;rsquo;s ability to optimize their applications&amp;rsquo; I/O performance.&lt;/p>
&lt;p>I&amp;rsquo;m grateful for this opportunity and looking forward to the challenges and discoveries that lie ahead in the second half of my GSoC journey. Stay tuned for more updates as we continue to enhance Drishti!&lt;/p>
&lt;p>If you have any questions or would like to learn more about the project, feel free to &lt;a href="https://www.jaytau.com/#contact?ref=uc-ospo" target="_blank" rel="noopener">reach out to me&lt;/a>. Let&amp;rsquo;s keep pushing the boundaries of scientific computing together!&lt;/p></description></item><item><title>Streaming into the Future: Adding Real-Time Processing to FasTensor</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/lbl/fastensor/20240730-aditya_narayan/</link><pubDate>Tue, 30 Jul 2024 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/lbl/fastensor/20240730-aditya_narayan/</guid><description>&lt;p>Hey there, HPC enthusiasts and fellow coders! I&amp;rsquo;m excited to share my progress on this summer&amp;rsquo;s Google Summer of Code project under UC OSPO&amp;rsquo;s FasTensor.
Here&amp;rsquo;s a glimpse into how we&amp;rsquo;re pushing the boundaries of real-time data processing.&lt;/p>
&lt;h2 id="the-big-picture-fastensor-and-hpc-challenges">The Big Picture: FasTensor and HPC Challenges&lt;/h2>
&lt;p>First, a quick refresher: FasTensor is our go-to tool for handling dense arrays in scientific computing. It tackles three major HPC challenges:&lt;/p>
&lt;ul>
&lt;li>
&lt;p>Optimizing computations&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Distributing data efficiently&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Balancing workloads across computing cores&lt;/p>
&lt;/li>
&lt;/ul>
&lt;p>FasTensor excels at these tasks, especially when dealing with data that has structural locality - a common feature in scientific computing. Here, the Stencil computations come in handy, capturing data locality for operations like solving partial differential equations in physical simulations.&lt;/p>
&lt;h3 id="the-mission-bringing-fastensor-into-real-time">The Mission: Bringing FasTensor into Real-Time&lt;/h3>
&lt;p>While FasTensor is great at processing existing data, the next frontier is handling live data streams from scientific instruments and sensors. That&amp;rsquo;s where my GSoC project comes in: adding stream processing capabilities to FasTensor.&lt;/p>
&lt;h2 id="progress-highlights">Progress Highlights:&lt;/h2>
&lt;h3 id="building-a-stream-simulator">Building a Stream Simulator&lt;/h3>
&lt;p>We&amp;rsquo;ve created FTstream, a nifty tool that simulates data streams. It can generate streams of various sizes and intervals, pushing the limits of what your disk can handle. We&amp;rsquo;re talking speeds up to 2.5 GiB/s on a non-parallel NVMe! This tool is crucial because many scientific instruments, from particle accelerators to radio telescopes, generate massive amounts of data at incredible speeds and we need to able to simulate that. For context, that&amp;rsquo;s faster than a 10MP RGB camera shooting at 35 frames per second that generates data at ~1 GiB/s.
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="FTStream: a stream simulator" srcset="
/report/osre24/lbl/fastensor/20240730-aditya_narayan/ftstream_hu742d341e5ed79c96d79ca4fdb4fe00ee_107361_e1ff5502d16324d112780cafc587c0bb.webp 400w,
/report/osre24/lbl/fastensor/20240730-aditya_narayan/ftstream_hu742d341e5ed79c96d79ca4fdb4fe00ee_107361_9ecceb72d631078c6b5109deaefeb0f5.webp 760w,
/report/osre24/lbl/fastensor/20240730-aditya_narayan/ftstream_hu742d341e5ed79c96d79ca4fdb4fe00ee_107361_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/lbl/fastensor/20240730-aditya_narayan/ftstream_hu742d341e5ed79c96d79ca4fdb4fe00ee_107361_e1ff5502d16324d112780cafc587c0bb.webp"
width="760"
height="410"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;h3 id="optimizing-io-strategies">Optimizing I/O Strategies&lt;/h3>
&lt;p>We&amp;rsquo;ve been experimenting with various I/O approaches to optimize high-speed data stream handling.&lt;/p>
&lt;h3 id="exploring-streaming-semantics">Exploring Streaming Semantics&lt;/h3>
&lt;p>We&amp;rsquo;re investigating various ways to express and execute stream transformations, to ensure that FasTensor can handle a wide range of streaming computations.&lt;/p>
&lt;h3 id="developing-io-drivers">Developing I/O Drivers&lt;/h3>
&lt;p>We&amp;rsquo;ve developed two new I/O drivers based on LinuxAIO and MPI IO to ingest incoming data smoothly and maintain stream consistency.&lt;/p>
&lt;h2 id="whats-next">What&amp;rsquo;s Next?&lt;/h2>
&lt;h3 id="putting-it-all-together">Putting It All Together&lt;/h3>
&lt;p>We&amp;rsquo;re in the final stretch of integrating all these components into a seamless stream processing system.&lt;/p>
&lt;h3 id="rigorous-testing">Rigorous Testing&lt;/h3>
&lt;p>We&amp;rsquo;ll push our stream processing to its limits, simulating diverse data flows to ensure rock-solid performance in any scientific setting.&lt;/p>
&lt;h3 id="hpc-environment-validation">HPC Environment Validation&lt;/h3>
&lt;p>The ultimate test will be running our new streaming capabilities in real HPC environments, checking how they perform with different I/O setups and computing paradigms.&lt;/p>
&lt;h2 id="wrapping-up">Wrapping Up&lt;/h2>
&lt;p>This summer has been a whirlwind of coding, testing, and learning. We&amp;rsquo;re making significant strides in bringing real-time processing capabilities to FasTensor, which could open up exciting new possibilities in scientific computing and data analysis.
Stay tuned for more updates as we finalize this feature. If you&amp;rsquo;re interested in the nitty-gritty technical details or want to check out the code, feel free to reach out or check our project repository.
Happy coding, and may your computations be ever faster!&lt;/p></description></item><item><title>Mid-term Blog: Automatic reproducibility of COMPSs experiments through the integration of RO-Crate in Chameleon</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/intel/20240729-architd/</link><pubDate>Mon, 29 Jul 2024 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/intel/20240729-architd/</guid><description>&lt;h2 id="introduction">Introduction&lt;/h2>
&lt;p>Hello everyone
I&amp;rsquo;am Archit from India. An undergraduate student at the Indian Institute of Technology, Banaras Hindu University, IIT (BHU), Varanasi. As part of the &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre24/bsc/ro-crate-compss/">Automatic reproducibility of COMPSs experiments through the integration of RO-Crate in Chameleon&lt;/a> my &lt;a href="https://drive.google.com/file/d/1qY-uipQZPox144LD4bs05rn3islfcjky/view" target="_blank" rel="noopener">proposal&lt;/a> under mentorship of &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/raul-sirvent/">Raül Sirvent&lt;/a> aims to develop a service that facilitates the automated replication of COMPSs experiments within the Chameleon infrastructure.&lt;/p>
&lt;h2 id="about-the-project">About the project:&lt;/h2>
&lt;p>The project proposes to create a service that will have the capability to take a COMPSs crate (an artifact adhering to the RO-Crate specification) and, through analysis of the provided metadata construct a Chameleon-compatible image for replicating the experiment on the testbed.&lt;/p>
&lt;h2 id="progress">Progress&lt;/h2>
&lt;p>It has been more than six weeks since the ReproducibilityService project began, and significant progress has been made. You can test the actual service from my GitHub repository: &lt;a href="https://github.com/Minimega12121/COMPSs-Reproducibility-Service" target="_blank" rel="noopener">ReproducibilityService&lt;/a>. Let&amp;rsquo;s break down what the ReproducibilityService is capable of doing now:&lt;/p>
&lt;ol>
&lt;li>
&lt;p>&lt;strong>Support for Reproducing Basic COMPSs Experiments&lt;/strong>: The RS program is now fully capable of reproducing basic COMPSs experiments with no third-party dependencies on any device with the COMPSs Runtime installed. Here&amp;rsquo;s how it works:&lt;/p>
&lt;ul>
&lt;li>
&lt;p>&lt;strong>Getting the Crate&lt;/strong>: The RS program can accept the COMPSs workflow from the user either as a path to the crate or as a link from WorkflowHub. In either case, it creates a sub-directory for further execution named &lt;code>reproducibility_service_{timestamp}&lt;/code> and stores the workflow as &lt;code>reproducibility_service_{timestamp}/Workflow&lt;/code>.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Address Mapping&lt;/strong>: The ro-crate contains &lt;code>compss_submission_command_line.txt&lt;/code>, which is the command originally used to execute the experiment. This command may include many paths such as &lt;code>runcompss flag1 flag2 ... flagn &amp;lt;main_workflow_file.py&amp;gt; input1 input2 ... inputn output&lt;/code>. The RS program maps all the paths for &lt;code>&amp;lt;main_workflow_file.py&amp;gt; input1 input2 ... inputn output&lt;/code> to paths inside the machine where we want to reproduce the experiment. The flags are dropped as they may be device-specific, and the service asks the user for any new flags they want to add to the COMPSs runtime.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Verifying Files&lt;/strong>: Before reproducing an experiment, it&amp;rsquo;s crucial to check whether the inputs or outputs have been tampered with. The RS program cross-verifies the &lt;code>contentSize&lt;/code> from the &lt;code>ro-crate-metadata.json&lt;/code> and generates warnings in case of any abnormalities.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Error Logging&lt;/strong>: In case of any problems during execution, the &lt;code>std_out&lt;/code> and &lt;code>std_err&lt;/code> are stored inside &lt;code>reproducibility_service_{timestamp}/log&lt;/code>.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Results&lt;/strong>: If any results do get generated by the experiment, the RS program stores them inside &lt;code>reproducibility_service_{timestamp}/Results&lt;/code>. If we
ask for the provenance of the workflow also, the ro-crate thus generated is also stored here only.&lt;/p>
&lt;/li>
&lt;/ul>
&lt;/li>
&lt;/ol>
&lt;p>
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="REPRODUCIBILITY SERVICE FLOWCHART" srcset="
/report/osre24/intel/20240729-architd/RS_chart_hu1a952b7a4697c53cd74822153911f260_56808_4df9e9a771513277aaf5c7a4d8182666.webp 400w,
/report/osre24/intel/20240729-architd/RS_chart_hu1a952b7a4697c53cd74822153911f260_56808_0b96071409b70d8356241465bf214510.webp 760w,
/report/osre24/intel/20240729-architd/RS_chart_hu1a952b7a4697c53cd74822153911f260_56808_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/intel/20240729-architd/RS_chart_hu1a952b7a4697c53cd74822153911f260_56808_4df9e9a771513277aaf5c7a4d8182666.webp"
width="760"
height="267"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;ol start="2">
&lt;li>&lt;strong>Support for Reproducing Remote Datasets&lt;/strong>: If a remote dataset is specified inside the metadata file, the RS program fetches the dataset from the specified link using &lt;code>wget&lt;/code>, stores the remote dataset inside the crate, and updates the path in the new command line it generates.&lt;/li>
&lt;/ol>
&lt;h2 id="challenges-and-end-term-goals">Challenges and End-Term Goals&lt;/h2>
&lt;ul>
&lt;li>
&lt;p>&lt;strong>Support for DATA_PERSISTENCE_FALSE&lt;/strong>: The RS program still needs to support crates with &lt;code>dataPersistence&lt;/code> set to false. After weeks of brainstorming ideas on how to implement this, we recently concluded that since the majority of &lt;code>DATA_PERSISTENCE_FALSE&lt;/code> crates are run on SLURM clusters, and the dataset required to fetch in such a case is somewhere inside the cluster, the RS program will support this case for such clusters. Currently, I am working with the Nord3v2 cluster to further enhance the functionality of ReproducibilityService.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Chameleon Cluster Setup&lt;/strong>: I have made some progress towards creating a new COMPSs 3.3 Appliance on Chameleon to test the service. However, creating the cluster setup script needed for the service to run on a COMPSs 3.3.1 cluster to execute large experiments has been challenging.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Integrating with COMPSs Repository&lt;/strong>: After completing the support for &lt;code>dataPersistence&lt;/code> false cases, we aim to launch this service as a tool inside the &lt;a href="https://github.com/bsc-wdc/compss" target="_blank" rel="noopener">COMPSs repository&lt;/a>. This will be a significant milestone in my developer journey as it will be the first real-world project I have worked on, and I hope everything goes smoothly.&lt;/p>
&lt;/li>
&lt;/ul>
&lt;p>Stay tuned for the next blog!!&lt;/p></description></item><item><title>Enhancing h5bench with HDF5 Compression Capability</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/lbl/h5bench/20240731-henryz/</link><pubDate>Sat, 27 Jul 2024 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/lbl/h5bench/20240731-henryz/</guid><description>&lt;h1 id="introduction">Introduction&lt;/h1>
&lt;p>As part of the &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre24/lbl/h5bench">h5bench&lt;/a> project my &lt;a href="https://summerofcode.withgoogle.com/myprojects/details/n0H28Z40" target="_blank" rel="noopener">Enhencing h5bench with HDF5 Compression Capability&lt;/a> under the mentorship of Dr. &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/jean-luca-bez/">Jean Luca Bez&lt;/a> and Dr. Suren Byna aims to allow users of h5bench to incoporate compression features in their simulations by creating custom benchmarks with common scientific lossless &amp;amp; lossy compression algorithms such as SZ, SZ3, ZFP, and GZIP.&lt;/p>
&lt;p>The problem I am trying to solve is to implement multiple data compression algorithms in h5bench core access patterns through HDF5 filters. This capability should grant users the flexibility to configure the parameters and methods of compression applied to their datasets according to their specific needs and preferences. My solution primarily involves using a user-defined HDF5 filter mechanism to implement lossless and lossy compression algorithms, such as ZFP, SZ, and cuSZ. Throughout the process, I will deliver one C source code implementing compression configuration settings, one C source code implementing lossless and lossy algorithms, a set of performance reports before and after data compression in CSV and standard output files, and a technical documentation on h5bench user manual website.&lt;/p>
&lt;h1 id="midterm-blog">Midterm Blog&lt;/h1>
&lt;p>This summer, after completing my junior year, I was honored to have the opportunity working with Dr. Jean Luca Bez and Dr. Suren Byna on the h5bench, an open-source benchmarking project designed to simulate runnning sync/async HDF5 I/O on HPC machines. This post will cover mostly what I have learned, produced, planned, and thoughts over the first six weeks.&lt;/p>
&lt;p>First of all, let&amp;rsquo;s define some of the terms here. HDF5 stands for Hierarchical Data Format 5. Unlike other data storage formats (JSON, CSV, XML&amp;hellip;), HDF5 is not only a container that manages data similar to a file system, but also a powerful library that gives you the ability to perform I/O (Inputs/Outputs) operations between memory and file. One of the reasons this tool is commonly used by HPC applications is that it also supports MPI I/O, which is a protocol for parallel computing (you can think of it as the parallel version of POSIX). With exabytes of data and high frequencies of usage for analysis in scientific studies, HDF5 is perfect for the job. Essentially, h5bench is a software that tests the hardware&amp;rsquo;s performance through HDF5 (it also provides other benchmark kernels such as AMReX, E3SM-IO, MACSio, and openPMD-api, but my job focuses on using vanilla HDF5 I/O).&lt;/p>
&lt;p>So, what I have done so far? Frist, my job is to allow users to tune input parameters regarding data compression, and make sure h5bench prints accurate benchmark results with the intended compression algorithm applied to their datasets. h5bench&amp;rsquo;s frondend is written in Python, which takes an input of a JSON file from user and parses it into a CFG configuration file that can be read by the backend later, which is written in C. I created a new enum struct and made user able to specify one from a range of compression algorithms (SZ3, ZFP, LZ4, GZIP, and other pre-defined algorithms). I also made it possible to apply these algorithms to the datasets, so the .h5 (an HDF5 file) would contain chunks of compressed data after multiple H5Dwrite calls.&lt;/p>
&lt;p>Next, the challenges and gains. Throughout the first six weeks, 30% of the time was spent on understanding the newest version of h5bench and HDF5 by reading through C source codes and documentations, and asking many dumb questions to my mentors (thanks to their patience and great answers :D). Writing code is fairly easy after I really understood what the program is doing. By that I mean you have to understand every line in almost all functions and how each and every variables change. 40% of the time was used on debugging and testing the compression algorithm, mainly SZ3. To make code behaves correctly is another level of difficulty. Most of the issues resulted from failing to configure the application and dependent libraries correctly. Without necessary macros enabled during the build process, features like compression filter plugin will not run. As I was also new to CMake and HPC environment, I learned that new envrionment variables will be reset for every new session, even if you requested a compute node resource. Besides getting used to the standard build sequence: &amp;ldquo;cmake ..&amp;rdquo;, &amp;ldquo;make&amp;rdquo;, &amp;ldquo;make install&amp;rdquo;, I also learned to use &amp;ldquo;ccmake ..&amp;rdquo; to examine the flags of the compiled program. The rest of time I learned more about parallel computing, HDF5, compression algorithms, by reading some papers and documentations. A lot of notes were taken (I must say a good note taking system is the game changer). Last but not the least, I also spent times synchronizing online and offline with my mentors to discuess problems. Without their help, I can never make this far.&lt;/p>
&lt;p>My next phase will tackle these problems, here I am just offering a list:&lt;/p>
&lt;ul>
&lt;li>Test applying filter with other compression algorithms, and with different dimension layout of the dataset&lt;/li>
&lt;li>Add decompression capability&lt;/li>
&lt;li>Allow users to tune the auxiliary parameters for controlling the behavior of a certain compression filter H5Pset_filter(COMPRESS_INFO.dcpl_id, H5Z_FILTER_SZ3, H5Z_FLAG_MANDATORY, 0, NULL); cd_nelmts cd_values[]&lt;/li>
&lt;li>Print additional benchmark results to indicate what and how the compression filter is applied, and the compression ratio&lt;/li>
&lt;/ul></description></item><item><title>Final Blog: FetchPipe: Data Science Pipeline for ML-based Prefetching</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/uchicago/fetchpipe/20240918-peiranqin/</link><pubDate>Sat, 27 Jul 2024 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/uchicago/fetchpipe/20240918-peiranqin/</guid><description>&lt;h2 id="introduction">Introduction&lt;/h2>
&lt;p>Hello, I’m &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/peiran-qin/">Peiran Qin&lt;/a>, a CS student at the University of Chicago. This summer I worked on the project &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre24/uchicago/fetchpipe/">FetchPipe: Data Science Pipeline for ML-based Prefetching&lt;/a> under the mentorship of Prof. &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/haryadi-s.-gunawi/">Haryadi S. Gunawi&lt;/a>. The FetchPipe project focuses on building a unified Python simulator and evaluating the existing cache-eviction policy and ML-based prefetcher under this simulator. Through this projects, we make the following contributions and get several insights that can share with the community:&lt;/p>
&lt;ol>
&lt;li>We built up a simulator to evaluate various prefetchers under a unified framework, under the production level traces from Alibaba, Microsoft Research, and Tencent.&lt;/li>
&lt;li>Through the evaluation, we discover several downsides that existing heuristic-based prefetchers encounter.&lt;/li>
&lt;li>We draw several insights that can guide the future prefetchers&amp;rsquo; design.&lt;/li>
&lt;/ol>
&lt;h2 id="methodology">Methodology&lt;/h2>
&lt;p>In the first half of the SoR project, I mainly focus on the &lt;strong>simulator building of I/O prefetcher&lt;/strong>. The simulator should mimic the real OS-level prefetching as much as possible. First, we develop a mechanism that mimics the users sending I/O requests to the underlying systems. Then, we simulate the process of page division, and memory management inside the systems. Finally, we designed a sleep-based mechanism to mimic the I/O latency of backend storage. The outcome system can eventually simulate the data path of I/O request and prefetching of real systems, and collect the crucial metrics such as hit rate, total prefetched data, bandwidth usage, prefetch accuracy, total cache eviction, etc.&lt;/p>
&lt;p>In the second half of the SoR project, I concentrate on the &lt;strong>evaluation of existing prefetchers&lt;/strong>. First, we surveyed the existing state-of-the-art prefetchers and divided them into two categories: (1) Heuristic-based prefetchers and (2) ML-based prefetchers. Next, for each category, we picked several representative prefetchers and implemented them within our simulator. Then, we evaluated those prefetchers using the production-level over 600 traces from Alibaba, Tencent, and Microsoft Research. Finally, we analyzed the performance of those prefetchers and discovered some interesting insights that might guide the future prefeters&amp;rsquo;s design.&lt;/p>
&lt;p>Finally, based on the achievements of the SoR project, I will continue involving this interesting project with Prof. &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/haryadi-s.-gunawi/">Haryadi S. Gunawi&lt;/a>. We are leveraging the current insights we get to build an I/O prefetcher that mitigates the downsides of existing prefetchers.&lt;/p>
&lt;h2 id="insights">Insights&lt;/h2>
&lt;p>Based on our experiments on the existing prefetchers, we would like the share the following insights:&lt;/p>
&lt;ol>
&lt;li>
&lt;p>Heuristic-based prefetchers, including Linux Readahead and Stride prefetcher, rely on strict pre-fined rules and detect straightforward access patterns. However, those prefetchers are too conservative to recognize the increasingly complex access patterns. Especially, in real-world applications, sequential accesses are interweaved with random accesses, leading to a next-level complexity that makes it difficult for Linux Readahead and Stride prefetchers to recognize.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Offline learning-based prefetchers learn the access patterns by training machine learning models on pre-collected historical access patterns. Blessed by the representational power of machine learning, these prefetchers excel at recognizing complex access patterns. However, their effectiveness is constrained by their dependence on the patterns encountered during offline training, making them less adaptable to previously unseen patterns in online scenarios. Moreover, due to not relying on the pre-defined rule of prefetching, Offline learning-based prefetchers are more prone to prefetch useless data, which causes cache pollution and extra pressure on backend storage.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>We argue that a good prefetcher under nowadays complex and changing workload should have three properties: (1) Complexity-Recognition: which means the prefetcher should be able to recognize the complex access pattern of a complex workload. (2) Reliability: means the prefetcher should reduce its possibility to prefetch using less data and cause cache pollution. (3) Adaptability: means the prefetcher should adapt itself to the changing workload.&lt;/p>
&lt;/li>
&lt;/ol>
&lt;h2 id="future-works">Future Works&lt;/h2>
&lt;p>Based on the above insights, we are now designing our own prefetchers that can mitigate the downsides of existing prefetchers. We will make our code public after we finalize our design.&lt;/p>
&lt;h2 id="conclusion">Conclusion&lt;/h2>
&lt;p>Through the SoR project, I delved into the research area of I/O prefetching by reproducing the related works, characterizing their performance, and designing our own prefetcher. We contribute to the community with a comprehensive simulator, evaluation results of related prefetchers, and insights that can guide the future prefetchers&amp;rsquo; design. In the future, I will continue working on the research area of prefetcher and keep making contributions.&lt;/p></description></item><item><title>Mid Term Blog: FetchPipe: Data Science Pipeline for ML-based Prefetching</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/uchicago/fetchpipe/20240727-peiranqin/</link><pubDate>Sat, 27 Jul 2024 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/uchicago/fetchpipe/20240727-peiranqin/</guid><description>&lt;h2 id="introduction">Introduction&lt;/h2>
&lt;p>Hello, I’m &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/peiran-qin/">Peiran Qin&lt;/a>, a CS student at the University of Chicago, currently working on the project &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre24/uchicago/fetchpipe/">FetchPipe: Data Science Pipeline for ML-based Prefetching&lt;/a> under the mentorship of Prof. &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/haryadi-s.-gunawi/">Haryadi S. Gunawi&lt;/a>. The FetchPipe project focuses on building a unified python simulator and evaluating the existing chache-eviction and ML-Based prefetcher under this simulator.&lt;/p>
&lt;h2 id="motivation">Motivation&lt;/h2>
&lt;p>Existing prefetching algorithms can be categorized into (a) heuristic-based methods such as the Linux lookahead prefetcher and (b) machine learning-based methods like Long Short Term Memory (LSTM) models. However, there is a research gap in comprehensively comparing all existing ML solutions, such as Leap and LSTM Prefetcher, under a consistent evaluation setup. To ensure the fairness of evaluations, it is essential to integrate all baselines and our prefetcher into a homogeneous evaluation environment. Additionally, there is a need to evaluate cache eviction algorithms under prefetching scenarios.&lt;/p>
&lt;p>Therefore, in this project, we aim to build a fair simulator, deploy state-of-the-art prefetchers and cache eviction algorithms onto this platform, and then evaluate them using comprehensive metrics. The state-of-the-art prefetchers we consider include Pythia (MICRO'21), SGDP (arXiv), and the Markov-Chain prefetcher. For cache eviction algorithms, we consider S3FIFO (SOSP'23) and SIEVE (NSDI'24). Our focus is on implementing these algorithms on our simulator and evaluating their performance using block storage datasets from Alibaba, Tencent, and MSR. Besides evaluating the prefetchers and eviction algorithms individually, we also aim to combine prefetchers with cache eviction algorithms to test overall performance.&lt;/p>
&lt;h2 id="current-progress">Current Progress&lt;/h2>
&lt;p>In the past one and a half months, I have focused on (1) implementing our Python simulator and (2) deploying state-of-the-art prefetchers and cache eviction algorithms on this simulator. The implementation phase is now complete. The detailed progress is as follows:&lt;/p>
&lt;ol>
&lt;li>The python simulator of evaluating both ML-based or heuristic-based prefetchers and cache eviction are done.&lt;/li>
&lt;li>Evaluations metrics collection, such as hit rate, total prefetched data, prefetch overhead, prefetch accuracy are implemented on the simulator.&lt;/li>
&lt;li>Two ML-based prefetchers, SGDP, Pythia and Markov-Chain are deployed on the simulator. SGDP is a graphed neural network based prefetcher, and Pythia is a reinforment learning based prefetcher.&lt;/li>
&lt;li>State-of-the-art heuristic based eviction algorithms are implemented in the simulator, including S3FIFO and SIEVE.&lt;/li>
&lt;/ol>
&lt;p>With the simulator and state-of-the-art ML-based prefetchers and eviction algorithms in place, the next steps are to (1) organize a large-scale dataset (including over 600 traces from real storage servers) for testing performance and (2) evaluate the implemented prefetchers and eviction algorithms on this dataset. Finally, I will analyze the evaluation results and provide insights from the experimental outcomes. For the ML-based prefetchers, I will analyze both ML-related metrics such as accuracy and F1-score, and system metrics such as hit rate and various overheads.&lt;/p>
&lt;h2 id="challenges">Challenges&lt;/h2>
&lt;p>The biggest challenge is implementing existing prefetchers correctly and fairly. Since some state-of-the-art prefetchers are designed for DRAM prefetching, adapting them for SSD prefetching in the simulator is challenging. Additionally, the lack of source code for some works makes it difficult to reproduce their algorithms accurately based solely on their paper descriptions.&lt;/p></description></item><item><title>Halfway Blog: FSA: Benchmarking Fail-Slow Algorithms</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/uchicago/fsa-benchmarking/20240723-xikangsong/</link><pubDate>Tue, 23 Jul 2024 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/uchicago/fsa-benchmarking/20240723-xikangsong/</guid><description>&lt;h2 id="introduction">Introduction&lt;/h2>
&lt;p>Hi, I&amp;rsquo;m &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/xikang-song/">Xikang Song&lt;/a>, a 2024 SoR contributor to the project, working with mentors &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/ruidan-li/">Ruidan Li&lt;/a> and &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/kexin-pei/">Kexin Pei&lt;/a>. Our FSA-Benchmark project is dedicated to exploring and benchmarking various machine learning models to identify disks at high risk of fail-slow anomalies. We will benchmark a range of machine learning algorithms, from traditional to advanced methods, and compare the results using a comprehensive evaluation system. This will provide a clear view of how machine learning impacts critical error detection in RAID systems.&lt;/p>
&lt;h2 id="motivation">Motivation&lt;/h2>
&lt;p>Fail-slow issues in storage systems , where a disk operates at a significantly reduced speed without completely failing, are subtle and can manifest as consistently higher latency compared to peer disks or recurrent abnormal latency spikes. These issues are challenging to detect but can significantly degrade overall system performance over time. Fixed thresholds are ineffective because latency distributions vary across different clusters, leading to thresholds that are either too low or too high, resulting in numerous false alerts. Therefore, we are enthusiastic about using machine learning models to analyze disk performance data. Machine learning algorithms can deeply learn the trends in the data, providing better detection capabilities.&lt;/p>
&lt;h2 id="current-progress-and-challenges">Current Progress and Challenges&lt;/h2>
&lt;h3 id="algorithm-implementation">Algorithm Implementation:&lt;/h3>
&lt;ul>
&lt;li>
&lt;p>&lt;strong>Cost-Sensitive Ranking Model&lt;/strong>: Inspired by the paper &amp;ldquo;Improving Service Availability of Cloud Systems by Predicting Disk Error&amp;rdquo; presented at the USENIX ATC &amp;lsquo;18 conference, this model ranks disks based on fail-slow risk.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Multi-Prediction Models&lt;/strong>: Drawing from &amp;ldquo;Improving Storage System Reliability with Proactive Error Prediction&amp;rdquo; presented at the USENIX ATC &amp;lsquo;17 conference, this approach uses multiple traditional machine learning models to evaluate disk health using diverse features. Various models were tested, with the Random Forest classifier proving most effective.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>LSTM Model&lt;/strong>: This model employs Long Short-Term Memory (LSTM) networks, trained on the first day&amp;rsquo;s data for each cluster and evaluated on data spanning all days. It captures temporal dependencies to accurately predict fail-slow anomalies over time.&lt;/p>
&lt;/li>
&lt;/ul>
&lt;h3 id="comprehensive-evaluation">Comprehensive Evaluation:&lt;/h3>
&lt;ol>
&lt;li>Collected outputs from all algorithms on Chameleon for Perseus data A to Y (25 clusters).&lt;/li>
&lt;li>Parsed the outputs through a comprehensive evaluation system, recording the true/false positives/negatives.&lt;/li>
&lt;li>Plotted heat maps to show precision and recall with different look-back days and alert threshold settings.&lt;/li>
&lt;li>Compared the performance across different clusters to draw conclusions.&lt;/li>
&lt;/ol>
&lt;h3 id="packaging-code">Packaging Code:&lt;/h3>
&lt;ul>
&lt;li>Packaged all the code into a Trovi Jupyter notebook, including the Chameleon server setup, to provide clear steps for running the code and reproducing the experiments. All algorithm testing and result parsing can be easily done here.&lt;/li>
&lt;/ul>
&lt;h3 id="challenges">Challenges&lt;/h3>
&lt;p>Initially, I was unsure how to evaluate the performance of different algorithms. &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/ruidan-li/">Ruidan Li&lt;/a> provided comprehensive guidance on collecting all the results uniformly and parsing them to gather true/false positives/negatives. This approach enabled us to derive meaningful metrics and plot heatmaps for precision and recall. I learned the scientific method of benchmarking performance, and I am grateful for the guidance.&lt;/p>
&lt;h2 id="future-steps">Future Steps&lt;/h2>
&lt;h3 id="further-investigation-of-advanced-algorithms">Further Investigation of Advanced Algorithms&lt;/h3>
&lt;p>We plan to explore advanced algorithms such as PatchTST. This will involve systematically collecting outputs and conducting comprehensive benchmarking to assess their performance in identifying fail-slow anomalies.&lt;/p>
&lt;h3 id="transition-to-large-language-models-llms">Transition to Large Language Models (LLMs)&lt;/h3>
&lt;p>Recognizing the limitations of traditional machine learning methods, we intend to transition to utilizing Large Language Models (LLMs). LLMs have demonstrated superior capabilities in understanding complex patterns and making accurate predictions. We anticipate that incorporating LLMs into our analysis will enhance our ability to detect and predict fail-slow anomalies more accurately, leading to better overall system reliability.&lt;/p></description></item><item><title>Exploring Throttling Bugs in HDFS: Reproducing Developer Fixes</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/osu/scalerep/20240722-shuangliang/</link><pubDate>Mon, 22 Jul 2024 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/osu/scalerep/20240722-shuangliang/</guid><description>&lt;p>Scalability is a critical concern for large-scale distributed systems like the Hadoop Distributed File System (HDFS). Throttling bugs, which affect the system&amp;rsquo;s ability to manage data transfer rates effectively, can lead to performance issues and system instability. In my recent work, I focused on reproducing the effects of two specific throttling bugs in HDFS, which were fixed by developers. This blog provides an overview of these bugs and the process of reproducing their effects to validate the fixes.&lt;/p>
&lt;h1 id="hdfs-17087-missing-throttler-in-dataxceiverreadblock">HDFS-17087: Missing Throttler in DataXceiver#readBlock&lt;/h1>
&lt;p>One of the throttling bugs I explored was HDFS-17087. The DataXceiver#readBlock function in HDFS lacked a throttler, resulting in unregulated data reads. This absence could lead to potential performance degradation under heavy loads. The developer fixed this issue by adding a throttler to regulate the data transfer rate. In my work, I reproduced the bug and observed the system&amp;rsquo;s behavior both before and after applying the developer&amp;rsquo;s patch. The results showed a significant improvement in stability and performance post-fix.&lt;/p>
&lt;p>
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img src="./Figure1.png" alt="Figure 1" loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;h1 id="hdfs-17216-incorrect-data-rate-calculation">HDFS-17216: Incorrect Data Rate Calculation&lt;/h1>
&lt;p>Another crucial bug was HDFS-17216. The issue stemmed from the use of integer division in the getBytesPerSec function, which caused incorrect speed calculations and failed to trigger the throttle, resulting in overspeed. The developer addressed this by switching from integer to float for calculating the elapsed time, ensuring accurate speed measurements. I reproduced the conditions that highlighted the bug&amp;rsquo;s effects and compared the system&amp;rsquo;s performance with and without the fix. The post-fix results confirmed that the throttling mechanism worked correctly, effectively preventing overspeed.&lt;/p>
&lt;p>
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img src="./Figure2.png" alt="Figure 2" loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;h1 id="conclusion">Conclusion&lt;/h1>
&lt;p>Reproducing these throttling bugs and validating the developer fixes was a vital step in understanding their impact on HDFS&amp;rsquo;s scalability. The improvements observed in system stability and performance underscore the importance of accurate throttling mechanisms. This work contributes to the broader effort of maintaining robust and scalable distributed systems, ensuring they can handle increasing loads efficiently.&lt;/p></description></item><item><title>Trovi redesign process and low fidelity prototype in Figma</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/uchicago/chameleontroviredesign/20240722-aliciaem/</link><pubDate>Mon, 22 Jul 2024 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/uchicago/chameleontroviredesign/20240722-aliciaem/</guid><description>&lt;p>Hello! My name is &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/alicia-esquivel-morel/">Alicia Esquivel Morel&lt;/a>, and I&amp;rsquo;m a graduate research assistant at the University of Missouri – Columbia, pursuing a PhD in Computer Science. This summer, I&amp;rsquo;m working on a project to &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre24/uchicago/trovi/">improve user experience reproducibility through a redesign of TROVI&lt;/a>, as part of the Summer of Reproducibility (SoR) program. I&amp;rsquo;m excited to be working with two fabulous mentors, &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/kate-keahey/">Kate Keahey&lt;/a>, and &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/mark-powers/">Mark Powers&lt;/a>. .&lt;/p>
&lt;h2 id="research-reproducibility-with-a-trovi-redesign">Research Reproducibility with a TROVI Redesign&lt;/h2>
&lt;p>As researchers, we constantly face challenges replicating experiments due to limitations in current tools. &lt;a href="https://chameleoncloud.readthedocs.io/en/latest/technical/sharing.html" target="_blank" rel="noopener">TROVI&lt;/a>, a platform designed to facilitate experiment replication, can be hindered by hard-to-follow interfaces and difficulties integrating code and data. This leads to confusion and frustration.&lt;/p>
&lt;p>My SoR project tackles these issues by redesigning TROVI to enhance user experience reproducibility. Imagine a user-friendly platform where uploading code, sharing data, and collaborating with colleagues becomes easy and straighforward.&lt;/p>
&lt;h2 id="the-redesigns-goals">The Redesign&amp;rsquo;s Goals&lt;/h2>
&lt;ul>
&lt;li>&lt;strong>Enhanced User Experience:&lt;/strong> Inspired by user-friendly platforms like Google Colab, we&amp;rsquo;ll simplify TROVI&amp;rsquo;s interface for intuitive navigation and ease of use.&lt;/li>
&lt;li>&lt;strong>Uploads and Sharing:&lt;/strong> Uploading code and data, as well as collaborating with researchers, are key goals. Integration with platforms like GitHub will further streamline collaboration.&lt;/li>
&lt;li>&lt;strong>Continuous Improvement:&lt;/strong> A built-in feedback loop will allow users to provide input and suggestions, ensuring TROVI constantly evolves based on user needs.&lt;/li>
&lt;/ul>
&lt;h2 id="progress-i-have-made-so-far">Progress I have made so far&lt;/h2>
&lt;p>The first stage of my project began with conducting User Experience (UX) research and identifying user requirements for TROVI. I then conducted a literature review on reproducibility platforms to learn about efficient methodologies and platforms for reproducibility. This helped establish a clearer project scope. Additionally, I analyzed TROVI end-user feedback to understand redesign needs.&lt;/p>
&lt;p>In summary, during the first weeks of the project, I focused on research and requirements gathering, including the literature review on state-of-the-art reproducibility platforms. Before midterm assessment, my work also involved the redesign process, prioritizing improved usability and user experience. I designed wireframes following requierements and user feedback and later translated them into a low-fidelity prototypes. Front-end and back-end considerations were made, such as selecting a front-end language (Vue.js) and a collaborative design tool (Figma).&lt;/p>
&lt;h2 id="what-do-i-plan-to-do-over-the-next-weeks">What do I plan to do over the next weeks?&lt;/h2>
&lt;p>During the next two weeks, I will address challenges encountered in the design process and make the necessary adjustments to ensure the success of the next steps of the project. A higher-fidelity prototype will be completed, including connections between the different objects and frames. This will facilitate the creation of a front-end with multiple flows in the prototype. Additionally, this will provide a preview of the end-user experience through the design process, without requiring the back-end to be functional or connected yet. I&amp;rsquo;m also investigating design tool API integrations to access TROVI&amp;rsquo;s APIs. This will give us the ability to access and isolate any TROVI artifact properties associated with it.&lt;/p>
&lt;ol>
&lt;li>
&lt;p>I&amp;rsquo;m halfway in the redesign process. Next steps will include the integration of both the backend and frontend components to create a cohesive and functional system. We will also facilitate initial user interactions and testing to gather valuable feedback and ensure that the system meets the needs and expectations of end users.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>In addition, as I progress, my focus will shift towards enhancing the user experience and refining the final product based on the feedback received. The final two weeks of the program will be dedicated to this critical phase, where I will implement user experience techniques and conduct thorough testing to polish the product. This period will involve close analysis and iteration to address any issues, and an optimize functionality.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>By the end of the program, I aim to deliver a functional and user-friendly product that not only meets the initial project goals but also exceeds user expectations.&lt;/p>
&lt;/li>
&lt;/ol>
&lt;p>&lt;strong>Stay tuned to see how TROVI is built for reproducible research!!&lt;/strong>&lt;/p></description></item><item><title>Data Engineering and Automated Evaluation for OpenROAD's Chat Assistant: Midterm Update</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/ucsd/openroad/20240621-aviral/</link><pubDate>Sun, 21 Jul 2024 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/ucsd/openroad/20240621-aviral/</guid><description>&lt;p>Hello everyone! We&amp;rsquo;ve reached the halfway point of our Google Summer of Code 2024 journey, and it&amp;rsquo;s time for an update on our project to build a conversational chat assistant for OpenROAD. Under the guidance of our mentors, &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/indira-iyer/">Indira Iyer&lt;/a> and &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/jack-luar/">Jack Luar&lt;/a>, we&amp;rsquo;re making significant strides in enhancing OpenROAD&amp;rsquo;s user support capabilities.&lt;/p>
&lt;h2 id="project-focus">Project Focus&lt;/h2>
&lt;p>My project focuses on two crucial aspects of our chat assistant:&lt;/p>
&lt;ol>
&lt;li>&lt;strong>Data Engineering&lt;/strong>: Ensuring our assistant has access to comprehensive and relevant information.&lt;/li>
&lt;li>&lt;strong>Evaluation&lt;/strong>: Developing robust methods to assess and improve the assistant&amp;rsquo;s performance.&lt;/li>
&lt;/ol>
&lt;p>The ultimate goal is to create a more responsive and accurate chat assistant capable of aiding users with troubleshooting, installation, and general queries about OpenROAD. I&amp;rsquo;m working in tandem with &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/palaniappan-r/">Palaniappan R&lt;/a>, who is developing the RAG architecture for our assistant.&lt;/p>
&lt;h2 id="progress">Progress&lt;/h2>
&lt;p>Since our initial deployment, I&amp;rsquo;ve been concentrating on implementing automated evaluation systems for our RAG architecture. We&amp;rsquo;ve developed two primary evaluation methods:&lt;/p>
&lt;h3 id="basic-abbreviation-evaluation">Basic Abbreviation Evaluation&lt;/h3>
&lt;p>This method assesses the model&amp;rsquo;s ability to accurately identify and explain common abbreviations used within the OpenROAD community. It ensures that our assistant can effectively communicate using domain-specific terminology.&lt;/p>
&lt;p>
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="Figure 1: Flow Chart of Basic Abbreviation Evaluation" srcset="
/report/osre24/ucsd/openroad/20240621-aviral/figure1_basic_abbreviation_evaluation_hud808c3411b9bf24258c9c6d4950618ae_122195_7793f2944668d59749f48f3848acfba7.webp 400w,
/report/osre24/ucsd/openroad/20240621-aviral/figure1_basic_abbreviation_evaluation_hud808c3411b9bf24258c9c6d4950618ae_122195_c0340ef0448a8f440bce5566986a10ef.webp 760w,
/report/osre24/ucsd/openroad/20240621-aviral/figure1_basic_abbreviation_evaluation_hud808c3411b9bf24258c9c6d4950618ae_122195_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/ucsd/openroad/20240621-aviral/figure1_basic_abbreviation_evaluation_hud808c3411b9bf24258c9c6d4950618ae_122195_7793f2944668d59749f48f3848acfba7.webp"
width="469"
height="760"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;p>
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="Examples" srcset="
/report/osre24/ucsd/openroad/20240621-aviral/figure2_sample_examples_hu78acdf5642b62d8d730a2574d861f211_90900_f04196ec40b94ffced2a574cbd37ad44.webp 400w,
/report/osre24/ucsd/openroad/20240621-aviral/figure2_sample_examples_hu78acdf5642b62d8d730a2574d861f211_90900_1a776103bd42be9525343172ad16d2a2.webp 760w,
/report/osre24/ucsd/openroad/20240621-aviral/figure2_sample_examples_hu78acdf5642b62d8d730a2574d861f211_90900_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/ucsd/openroad/20240621-aviral/figure2_sample_examples_hu78acdf5642b62d8d730a2574d861f211_90900_f04196ec40b94ffced2a574cbd37ad44.webp"
width="760"
height="431"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;h3 id="llm-judge-based-evaluation">LLM Judge-Based Evaluation&lt;/h3>
&lt;p>
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="Figure 2: Flow Chart of LLM Judge-Based Evaluation" srcset="
/report/osre24/ucsd/openroad/20240621-aviral/figure3_llm_judge_evaluation_hu385b71952e0ff054a9e7c96b25e3d452_269894_8dfc4bba33d8ad8d797f27f1c7a1eaaf.webp 400w,
/report/osre24/ucsd/openroad/20240621-aviral/figure3_llm_judge_evaluation_hu385b71952e0ff054a9e7c96b25e3d452_269894_6ef7c0153c7e61298bbf98aa15f5d69d.webp 760w,
/report/osre24/ucsd/openroad/20240621-aviral/figure3_llm_judge_evaluation_hu385b71952e0ff054a9e7c96b25e3d452_269894_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/ucsd/openroad/20240621-aviral/figure3_llm_judge_evaluation_hu385b71952e0ff054a9e7c96b25e3d452_269894_8dfc4bba33d8ad8d797f27f1c7a1eaaf.webp"
width="689"
height="760"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;p>For this more comprehensive evaluation, we:&lt;/p>
&lt;ol>
&lt;li>Prepared a dataset of question-answer pairs relevant to OpenROAD.&lt;/li>
&lt;li>Queried our model with these questions to generate answers.&lt;/li>
&lt;li>Employed LLMs (including GPT-4o and Gemini 1.5 Flash) to act as judges.&lt;/li>
&lt;li>Evaluated our model&amp;rsquo;s responses against ground truth answers.&lt;/li>
&lt;/ol>
&lt;p>Here&amp;rsquo;s a glimpse of our early benchmark results:&lt;/p>
&lt;p>
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="Benchmark" srcset="
/report/osre24/ucsd/openroad/20240621-aviral/figure4_model_performance_comparison_hu7cf4636aada9c277e08b0256b02e5dd8_206498_06ea37525851a60dad5bd072a03cd329.webp 400w,
/report/osre24/ucsd/openroad/20240621-aviral/figure4_model_performance_comparison_hu7cf4636aada9c277e08b0256b02e5dd8_206498_d9a11b8b08e2634c01f9063cc78ab134.webp 760w,
/report/osre24/ucsd/openroad/20240621-aviral/figure4_model_performance_comparison_hu7cf4636aada9c277e08b0256b02e5dd8_206498_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/ucsd/openroad/20240621-aviral/figure4_model_performance_comparison_hu7cf4636aada9c277e08b0256b02e5dd8_206498_06ea37525851a60dad5bd072a03cd329.webp"
width="760"
height="701"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;p>
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="Example" srcset="
/report/osre24/ucsd/openroad/20240621-aviral/figure5_sample_examples_hu7826377a5560a22c15aefc27866894bb_575795_f63055fd0281e09d0ef800e1e444c7f9.webp 400w,
/report/osre24/ucsd/openroad/20240621-aviral/figure5_sample_examples_hu7826377a5560a22c15aefc27866894bb_575795_91c683a3ebadbf3ce5a21099a81b1836.webp 760w,
/report/osre24/ucsd/openroad/20240621-aviral/figure5_sample_examples_hu7826377a5560a22c15aefc27866894bb_575795_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/ucsd/openroad/20240621-aviral/figure5_sample_examples_hu7826377a5560a22c15aefc27866894bb_575795_f63055fd0281e09d0ef800e1e444c7f9.webp"
width="577"
height="760"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;h2 id="exploratory-data-analysis-eda-on-github-openroad-issues">Exploratory Data Analysis (EDA) on GitHub OpenROAD issues&lt;/h2>
&lt;p>To gather more data, I performed Exploratory Data Analysis (EDA) on GitHub OpenROAD issues using GitHub&amp;rsquo;s GraphQL API. This allowed us to:&lt;/p>
&lt;ul>
&lt;li>
&lt;p>Filter data based on parameters such as:&lt;/p>
&lt;ul>
&lt;li>Minimum number of comments&lt;/li>
&lt;li>Date range&lt;/li>
&lt;li>Mentioned PRs&lt;/li>
&lt;li>Open or closed status&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>
&lt;p>Structure the data, focusing on issues tagged with Build, Query, Installation, and Runtime.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Process the data into JSONL format with key fields including:&lt;/p>
&lt;ul>
&lt;li>&lt;code>url&lt;/code>: URL of the GitHub issue&lt;/li>
&lt;li>&lt;code>id&lt;/code>: Unique issue number&lt;/li>
&lt;li>&lt;code>title&lt;/code>: Issue title&lt;/li>
&lt;li>&lt;code>author&lt;/code>: Username of the issue creator&lt;/li>
&lt;li>&lt;code>description&lt;/code>: Initial issue description&lt;/li>
&lt;li>&lt;code>content&lt;/code>: Array of messages related to the issue&lt;/li>
&lt;li>&lt;code>category&lt;/code>: General category of the issue&lt;/li>
&lt;li>&lt;code>subcategory&lt;/code>: More specific category of the issue&lt;/li>
&lt;li>&lt;code>tool&lt;/code>: Relevant tools or components&lt;/li>
&lt;li>&lt;code>date&lt;/code>: Issue creation timestamp&lt;/li>
&lt;/ul>
&lt;/li>
&lt;/ul>
&lt;p>
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="Figure 5: Sample structure of our processed JSONL data" srcset="
/report/osre24/ucsd/openroad/20240621-aviral/figure6_jsonl_data_structure_hua8b5c15add3c3268be11381a14b4e3cd_555437_fd103ea5ef1fa131b8bc806db99a24d1.webp 400w,
/report/osre24/ucsd/openroad/20240621-aviral/figure6_jsonl_data_structure_hua8b5c15add3c3268be11381a14b4e3cd_555437_c30d5d185fec144cfca686499f464f19.webp 760w,
/report/osre24/ucsd/openroad/20240621-aviral/figure6_jsonl_data_structure_hua8b5c15add3c3268be11381a14b4e3cd_555437_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/ucsd/openroad/20240621-aviral/figure6_jsonl_data_structure_hua8b5c15add3c3268be11381a14b4e3cd_555437_fd103ea5ef1fa131b8bc806db99a24d1.webp"
width="692"
height="760"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;p>After curating this dataset, I was able to run an Analysis on OpenROAD Github Issues, identifying multiple categories of issues in the form of a pie chart.&lt;/p>
&lt;p>
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="Figure 6: Distribution of OpenROAD issue types" srcset="
/report/osre24/ucsd/openroad/20240621-aviral/figure7_issue_type_distribution_hu54d4d8b580cc8ae9261f464a2e9181da_130314_d788906f5395b26ab2030fb056e45941.webp 400w,
/report/osre24/ucsd/openroad/20240621-aviral/figure7_issue_type_distribution_hu54d4d8b580cc8ae9261f464a2e9181da_130314_ebae2b4145d035c9521679314911236b.webp 760w,
/report/osre24/ucsd/openroad/20240621-aviral/figure7_issue_type_distribution_hu54d4d8b580cc8ae9261f464a2e9181da_130314_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/ucsd/openroad/20240621-aviral/figure7_issue_type_distribution_hu54d4d8b580cc8ae9261f464a2e9181da_130314_d788906f5395b26ab2030fb056e45941.webp"
width="760"
height="504"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;p>
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="Figure 7: Breakdown of issues by specific OpenROAD tools" srcset="
/report/osre24/ucsd/openroad/20240621-aviral/figure8_issues_by_openroad_tools_hu9e03c2c37c64c392ac5e783cdb492b5c_174856_3af195a89fadc1379452709cdea50d22.webp 400w,
/report/osre24/ucsd/openroad/20240621-aviral/figure8_issues_by_openroad_tools_hu9e03c2c37c64c392ac5e783cdb492b5c_174856_e171fcc132e7c13ef62f2a192ed18b62.webp 760w,
/report/osre24/ucsd/openroad/20240621-aviral/figure8_issues_by_openroad_tools_hu9e03c2c37c64c392ac5e783cdb492b5c_174856_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/ucsd/openroad/20240621-aviral/figure8_issues_by_openroad_tools_hu9e03c2c37c64c392ac5e783cdb492b5c_174856_3af195a89fadc1379452709cdea50d22.webp"
width="760"
height="511"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;h2 id="looking-ahead">Looking Ahead&lt;/h2>
&lt;p>As we move into the second half of the GSOC period, our plans include:&lt;/p>
&lt;ul>
&lt;li>Incorporating GitHub Discussions data into our knowledge base.&lt;/li>
&lt;li>Utilizing this expanded dataset to enhance our RAG architecture.&lt;/li>
&lt;li>Continually refining and improving our model&amp;rsquo;s performance based on evaluation results.&lt;/li>
&lt;/ul>
&lt;p>We&amp;rsquo;re excited about the progress we&amp;rsquo;ve made and look forward to delivering an even more capable and helpful chat assistant for the OpenROAD community. Stay tuned for more updates as we continue this exciting journey!&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>Midterm Blog: ML in Detecting and Addressing System Drift</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/anl/last/20240721-joanna/</link><pubDate>Sun, 21 Jul 2024 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/anl/last/20240721-joanna/</guid><description>&lt;p>Hello! I&amp;rsquo;m Joanna! Over the past month, I have been contributing to the &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre24/anl/last">ML in Detecting and Addressing System Drift&lt;/a> project under the mentorship of &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/ray-andrew-sinurat/">Ray Andrew Sinurat&lt;/a> and &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/sandeep-madireddy/">Sandeep Madireddy&lt;/a>. My project aims to design a pipeline to evaluate drift detection algorithms on system traces. The goal is to characterize different drifts, understand how they affect model performance, and evaluate the performance of state-of-the-art (SOTA) drift detection algorithms.&lt;/p>
&lt;h1 id="progress">Progress&lt;/h1>
&lt;p>Here is some background on my project: Model drift, or the degradation of model performance, is typically caused by data drift, which is a shift in the input distribution, and concept drift, which is a change in the relationship between input and output. The project aims to detect both data drifts and concept drifts, analyze these drifts, and try to improve the model performance in computer system.&lt;/p>
&lt;p>Over the past month, I’ve primarily been constructing a data drift dataset from the Tencent I/O block trace, which includes both drift and non-drift data. By combining offline drift detection algorithms such as Maximum Mean Discrepancy, Cramér-von Mises, and Kolmogorov-Smirnov, I am developing a dataset that contains segments with and without drifts for features such as IOPS (Input/Output Operations Per Second), read/write size ratio, write size, and other relevant performance metrics. The diagrams below illustrate the data segments identified with and without drifts, respectively.&lt;/p>
&lt;p>
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="Drift Data" srcset="
/report/osre24/anl/last/20240721-joanna/drift_hucf4bc0bd843fb60be6a646f8116e435c_702790_3e192a352fe3c303df3195f4c92fe970.webp 400w,
/report/osre24/anl/last/20240721-joanna/drift_hucf4bc0bd843fb60be6a646f8116e435c_702790_174dedff6f5c0b72b3d10b82cb9d1a86.webp 760w,
/report/osre24/anl/last/20240721-joanna/drift_hucf4bc0bd843fb60be6a646f8116e435c_702790_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/anl/last/20240721-joanna/drift_hucf4bc0bd843fb60be6a646f8116e435c_702790_3e192a352fe3c303df3195f4c92fe970.webp"
width="760"
height="752"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="Non-Drift Data" srcset="
/report/osre24/anl/last/20240721-joanna/nondrift_hue8c599cc81a10cc02482d676af5d2cf8_455606_3d133279bb8e32779c8b94396ec0ef5d.webp 400w,
/report/osre24/anl/last/20240721-joanna/nondrift_hue8c599cc81a10cc02482d676af5d2cf8_455606_c450f1394af9661bb2d86f0232d340d1.webp 760w,
/report/osre24/anl/last/20240721-joanna/nondrift_hue8c599cc81a10cc02482d676af5d2cf8_455606_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/anl/last/20240721-joanna/nondrift_hue8c599cc81a10cc02482d676af5d2cf8_455606_3d133279bb8e32779c8b94396ec0ef5d.webp"
width="760"
height="757"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;p>In addition to constructing the datasets, I have begun evaluating some online drift detection algorithms and designing metrics to assess their performance. I have tested the performance of online drift detection algorithms such as Online Maximum Mean Discrepancy and Online Cramér-von Mises under various settings, including different window lengths and sensitivity levels. The following diagrams illustrate the drift points detected for the IOPS feature under these different settings.&lt;/p>
&lt;p>
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="Evaluation" srcset="
/report/osre24/anl/last/20240721-joanna/evaluation_hu21317d2d7888d01b0cbee9e7a13940af_724895_51a49130183b2dfa7ad977d297aa0f3b.webp 400w,
/report/osre24/anl/last/20240721-joanna/evaluation_hu21317d2d7888d01b0cbee9e7a13940af_724895_a3c8bf9bdc160fc4323a73bc0ac837b7.webp 760w,
/report/osre24/anl/last/20240721-joanna/evaluation_hu21317d2d7888d01b0cbee9e7a13940af_724895_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/anl/last/20240721-joanna/evaluation_hu21317d2d7888d01b0cbee9e7a13940af_724895_51a49130183b2dfa7ad977d297aa0f3b.webp"
width="760"
height="584"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;h1 id="next-steps">Next Steps&lt;/h1>
&lt;p>Here are my plans for the next month:&lt;/p>
&lt;ul>
&lt;li>Complete the experiments on data drift and generate improved visualizations to summarize the performance of these online drift detection algorithms, including their overhead and accuracy over time.&lt;/li>
&lt;li>Characterize drifts by identifying the types of drifts that lead to model performance degradation&lt;/li>
&lt;li>Evaluate drift detection algorithms in the context of concept drifts.&lt;/li>
&lt;/ul>
&lt;p>Stay tuned for my future updates on this project!&lt;/p></description></item><item><title>Enabling VAA Execution: Environment and VAA Preparation and/or Reproducibility for Dynamic Bandwidth Allocation (CONCIERGE)</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/uchicago/edgerep/20240720-rafaelsw/</link><pubDate>Sat, 20 Jul 2024 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/uchicago/edgerep/20240720-rafaelsw/</guid><description>&lt;p>Hi there!&lt;/p>
&lt;p>I am Rafael Sinjunatha Wulangsih, a Telecommunication Engineering graduate from the Bandung Institute of Technology (ITB), Bandung, Indonesia. I&amp;rsquo;m currently contributing to the &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre24/uchicago/edgerep">&amp;ldquo;EdgeRep: Reproducing and benchmarking edge analytic systems&amp;rdquo;&lt;/a> project under the mentorship of &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/yuyang-roy-huang/">Yuyang (Roy) Huang&lt;/a> and Prof. &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/junchen-jiang/">Junchen Jiang&lt;/a>. You can find more details about the project proposal &lt;a href="https://drive.google.com/file/d/1GUMiglFqezOqEeQiMaL4QVgsXZOHYoEK/view?usp=drive_link" target="_blank" rel="noopener">here&lt;/a>.&lt;/p>
&lt;p>This project addresses the challenges posed by the massive deployment of edge devices, such as traffic or security cameras, in smart cities and other environments. In the previous Edgebench project, the team proposed a solution to dynamically allocate bandwidth and compute resources to video analytic applications (VAAs) running on edge devices. However, that project was limited to a single VAA, which may not represent the diverse applications running on edge devices. Therefore, the main goal of this project, &amp;ldquo;EdgeRep,&amp;rdquo; is to diversify the VAAs running on edge devices while utilizing a solution similar to that of the Edgebench project. EdgeRep aims to reproduce state-of-the-art self-adaptive VAAs (with seven candidates) and maintain self-adaptation in these video analytics pipelines. We will implement it ourselves if the video analytics applications do not support self-adaptation.&lt;/p></description></item><item><title>Halfway Through GSOC: Heterogeneous Graph Neural Networks for I/O Performance Bottleneck Diagnosis</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/lbl/aiio/20240720-mahdi/</link><pubDate>Sat, 20 Jul 2024 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/lbl/aiio/20240720-mahdi/</guid><description>&lt;p>Hello, I&amp;rsquo;m &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/mahdi-banisharifdehkordi/">Mahdi Banisharifdehkordi&lt;/a>, a Ph.D. student in Computer Science at Iowa State University. I&amp;rsquo;m currently working on the &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre24/lbl/aiio/">AIIO / Graph Neural Network&lt;/a> project under the guidance of &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/bin-dong/">Bin Dong&lt;/a> and Suren Byna. Our project focuses on enhancing the AIIO framework to automatically diagnose I/O performance bottlenecks in high-performance computing (HPC) systems using Graph Neural Networks (GNNs).&lt;/p>
&lt;h1 id="project-overview">Project Overview&lt;/h1>
&lt;p>Our primary goal is to tackle the persistent issue of I/O bottlenecks in HPC applications. Identifying these bottlenecks manually is often labor-intensive and prone to errors. By integrating GNNs into the AIIO framework, we aim to create an automated solution that can diagnose these bottlenecks with high accuracy, ultimately improving the efficiency and reliability of HPC systems.&lt;/p>
&lt;h1 id="progress-and-challenges">Progress and Challenges&lt;/h1>
&lt;p>Over the past few weeks, my work has been centered on developing a robust data pre-processing pipeline. This pipeline is crucial for converting raw I/O log data into a graph format suitable for GNN analysis. The data pre-processing involves extracting relevant features from Darshan I/O logs, which include job-related information and performance metrics. One of the main challenges has been dealing with the heterogeneity and sparsity of the data, which can affect the accuracy of our models. To address this, we&amp;rsquo;ve focused on using correlation analysis to identify and select the most relevant features, ensuring that the dataset is well-structured and informative for GNN processing.&lt;/p>
&lt;p>We&amp;rsquo;ve also started constructing the GNN model. The model is designed to capture the complex relationships between different I/O operations and their impact on system performance. This involves defining nodes and edges in the graph that represent job IDs, counter types, and their values. We explored different graph structures, including those that focus on counter types and those that incorporate more detailed information. While more detailed graphs offer better accuracy, they also require more computational resources.&lt;/p>
&lt;p>
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="Overview" srcset="
/report/osre24/lbl/aiio/20240720-mahdi/overview_hu3b8a0374313d077c49f26c894c548b00_437453_efa6bf6f7434ca74fff6a35fcb540861.webp 400w,
/report/osre24/lbl/aiio/20240720-mahdi/overview_hu3b8a0374313d077c49f26c894c548b00_437453_de1d11a65f3f46dfd75b1bc00e8e6406.webp 760w,
/report/osre24/lbl/aiio/20240720-mahdi/overview_hu3b8a0374313d077c49f26c894c548b00_437453_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/lbl/aiio/20240720-mahdi/overview_hu3b8a0374313d077c49f26c894c548b00_437453_efa6bf6f7434ca74fff6a35fcb540861.webp"
width="760"
height="566"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;h1 id="current-achievements">Current Achievements&lt;/h1>
&lt;ol>
&lt;li>
&lt;p>&lt;strong>Data Pre-processing Pipeline&lt;/strong>: We have successfully developed and tested the pipeline to transform Darshan I/O logs into graph-structured data. This was a significant milestone, as it sets the foundation for all subsequent GNN modeling efforts.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>GNN Model Construction&lt;/strong>: The initial version of our GNN model has been implemented. This model is now capable of learning from the graph data and making predictions about I/O performance bottlenecks.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Correlation Analysis for Graph Structure Design&lt;/strong>: We have used correlation analysis on the dataset to understand the relationships between I/O counters. This analysis has been instrumental in designing a more effective graph structure, helping to better capture the dependencies and interactions critical for accurate performance diagnosis.&lt;/p>
&lt;/li>
&lt;/ol>
&lt;p>
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="Correlation Analysis1" srcset="
/report/osre24/lbl/aiio/20240720-mahdi/correlation1_huf0ba9e5fcd08c89560bf3e668ac22994_763024_211eb50374f4febd5aee688644797792.webp 400w,
/report/osre24/lbl/aiio/20240720-mahdi/correlation1_huf0ba9e5fcd08c89560bf3e668ac22994_763024_fd5992e42a60d6cb85be9cd136a5d93b.webp 760w,
/report/osre24/lbl/aiio/20240720-mahdi/correlation1_huf0ba9e5fcd08c89560bf3e668ac22994_763024_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/lbl/aiio/20240720-mahdi/correlation1_huf0ba9e5fcd08c89560bf3e668ac22994_763024_211eb50374f4febd5aee688644797792.webp"
width="760"
height="614"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="Correlation Analysis2" srcset="
/report/osre24/lbl/aiio/20240720-mahdi/correlation2_hu550eeb7f303ef774f36732146058c5a3_277912_b05324cc90f73bd1b2ff53c9d2d04ecb.webp 400w,
/report/osre24/lbl/aiio/20240720-mahdi/correlation2_hu550eeb7f303ef774f36732146058c5a3_277912_0115179de349c5834c2b3fc2636ecd23.webp 760w,
/report/osre24/lbl/aiio/20240720-mahdi/correlation2_hu550eeb7f303ef774f36732146058c5a3_277912_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/lbl/aiio/20240720-mahdi/correlation2_hu550eeb7f303ef774f36732146058c5a3_277912_b05324cc90f73bd1b2ff53c9d2d04ecb.webp"
width="760"
height="309"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;ol start="4">
&lt;li>&lt;strong>Training for Different Graph Structures&lt;/strong>: We are currently training our model using various graph structures to determine the most effective configuration for accurate I/O performance diagnosis. This ongoing process aims to refine our approach and improve the model&amp;rsquo;s predictive accuracy.&lt;/li>
&lt;/ol>
&lt;h1 id="next-steps">Next Steps&lt;/h1>
&lt;p>Looking ahead, we plan to focus on several key areas:&lt;/p>
&lt;ol>
&lt;li>
&lt;p>&lt;strong>Refinement and Testing&lt;/strong>: We&amp;rsquo;ll continue refining the GNN model, focusing on improving its accuracy and efficiency. This includes experimenting with different graph structures and training techniques.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>SHAP Analysis&lt;/strong>: To enhance the interpretability of our model, we&amp;rsquo;ll incorporate SHAP (SHapley Additive exPlanations) values. This will help us understand the contribution of each feature to the model&amp;rsquo;s predictions, making it easier to identify critical factors in I/O performance.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Documentation and Community Engagement&lt;/strong>: As we make progress, we&amp;rsquo;ll document our methods and findings, sharing them with the broader community. This includes contributing to open-source repositories and engaging with other researchers in the field.&lt;/p>
&lt;/li>
&lt;/ol>
&lt;p>This journey has been both challenging and rewarding, and I am grateful for the support and guidance from my mentors and the community. I look forward to sharing more updates as we continue to advance this exciting project.&lt;/p></description></item><item><title>Hardware Hierarchical Dynamical Systems</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/ucsc/livehd/20240720-ujjwalshekhar/</link><pubDate>Sat, 20 Jul 2024 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/ucsc/livehd/20240720-ujjwalshekhar/</guid><description>&lt;p>Hi everyone! I am Ujjwal Shekhar, a Computer Engineering student at the International Institute of Information Technology - Hyderabad. I am excited to share my current progress on the project titled &amp;ldquo;Hardware Hierarchical Dynamical Systems&amp;rdquo; as part of the &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/osre/">Open Source Research Experience (OSRE) program&lt;/a> and &lt;a href="https://summerofcode.withgoogle.com/" target="_blank" rel="noopener">Google Summer of Code&lt;/a>. I am working with my mentors, &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/jose-renau/">Jose Renau&lt;/a> and &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/sakshi-garg/">Sakshi Garg&lt;/a>, on this project.&lt;/p>
&lt;h1 id="project-overview">Project Overview&lt;/h1>
&lt;p>With hardware compilers, it is not uncommon for the size of code that the hardware compilers need to handle to go into millions. We aim to improve the efficiency of the tree data structure to be used for representing the Abstract Syntax Tree (AST) of the input program. The tree data structure is optimized for typical AST traversal and queries. Some queries that are made to this tree are much more frequent than others.&lt;/p>
&lt;p>Thus, the goal of this project is to be able to optimize the tree for frequent queries while still providing support for other infrequent queries. We use Google Bench to benchmark the tree for scalability and performance and expect it to outperform the current version of the tree. Finally, the new version of the tree will be integrated into the LiveHD core repository.&lt;/p>
&lt;h1 id="progress-and-challenges">Progress and Challenges&lt;/h1>
&lt;p>Over the past month and a half, I have successfully finished working on the add/append methods of the tree. Moreover, I have finished writing the iterators on the tree too. There are preliminary tests already in place and the HHDS repository now has a working Bazel build system.&lt;/p>
&lt;p>As shown in the figure, we can see that the tree went from storing pointers to everything that it could to only storing pointers to the nodes that are absolutely necessary. Moreover, by not maintaining multiple levels in the tree, we have been able to reduce the memory footprint of the tree. This is a significant improvement from the LHtree that was being used earlier.
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="Gradual improvements from a classical way of storing the tree" srcset="
/report/osre24/ucsc/livehd/20240720-ujjwalshekhar/intro_pic_osre_mid_term_blog_hub4e071864eb1075945911ddf73245a76_149696_ee6f0bd20e8720764ff6513360229a8a.webp 400w,
/report/osre24/ucsc/livehd/20240720-ujjwalshekhar/intro_pic_osre_mid_term_blog_hub4e071864eb1075945911ddf73245a76_149696_3c453b165782d0f857e35219165cfb9c.webp 760w,
/report/osre24/ucsc/livehd/20240720-ujjwalshekhar/intro_pic_osre_mid_term_blog_hub4e071864eb1075945911ddf73245a76_149696_1200x1200_fit_q75_h2_lanczos.webp 1200w"
src="https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/ucsc/livehd/20240720-ujjwalshekhar/intro_pic_osre_mid_term_blog_hub4e071864eb1075945911ddf73245a76_149696_ee6f0bd20e8720764ff6513360229a8a.webp"
width="760"
height="495"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;p>Furthermore, we have also been able to improve the cache friendliness of each node of the tree. By realizing that most of the time, new children are added soon after the parent is added, we have been able to store the children in a contiguous memory location whenever possible, or access them using a shorter delta from the parent node. This has significantly improved the cache friendliness of the tree by allowing the packing of the book-keeping of up to 8 children in a single 512-bit word. This 512-bit chunk has amazing cache alignment properties.
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="Bookkeeping in a 512-bit Tree_pointer word" srcset="
/report/osre24/ucsc/livehd/20240720-ujjwalshekhar/tree_pointers_pic_osre_mid_term_blog_hu51661e0f756b9d3138ea612a8422b121_152644_0cacd0b06553a3da1528ebbf73c1d4c5.webp 400w,
/report/osre24/ucsc/livehd/20240720-ujjwalshekhar/tree_pointers_pic_osre_mid_term_blog_hu51661e0f756b9d3138ea612a8422b121_152644_fb9fc4bd787dfbae81d4afd9a5d85401.webp 760w,
/report/osre24/ucsc/livehd/20240720-ujjwalshekhar/tree_pointers_pic_osre_mid_term_blog_hu51661e0f756b9d3138ea612a8422b121_152644_1200x1200_fit_q75_h2_lanczos.webp 1200w"
src="https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/ucsc/livehd/20240720-ujjwalshekhar/tree_pointers_pic_osre_mid_term_blog_hu51661e0f756b9d3138ea612a8422b121_152644_0cacd0b06553a3da1528ebbf73c1d4c5.webp"
width="760"
height="186"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;h2 id="highlights">Highlights&lt;/h2>
&lt;ul>
&lt;li>Finished working on the add/append methods of the tree.&lt;/li>
&lt;li>Finished writing the iterators on the tree.&lt;/li>
&lt;li>Preliminary tests are in place.&lt;/li>
&lt;li>HHDS repository now has a working Bazel build system.&lt;/li>
&lt;/ul>
&lt;h2 id="challenges">Challenges&lt;/h2>
&lt;ul>
&lt;li>Working out a new plan: The initial plan was to use a flattening policy to optimize the tree for frequent queries. However, this plan has been revised and we have flattened the tree not using a tour-based flattening policy, but by still storing pointers to various nodes in the tree. This has been done to ensure that the tree is still able to support infrequent queries.&lt;/li>
&lt;li>Benchmarking: The benchmarking of the tree is still in progress. I am working on creating a benchmarking suite that will be able to test the tree for scalability and performance. This will allow future developers to test the tree for performance and scalability after they make changes.&lt;/li>
&lt;/ul>
&lt;h1 id="next-steps">Next Steps&lt;/h1>
&lt;p>From here, a lot of testing and benchmarking is still left to be done. Moreover, we need to add the delete methods and make sure that the integration with the LiveHD core repository is smooth. The next steps involve:&lt;/p>
&lt;ul>
&lt;li>Adding the delete methods to the tree.&lt;/li>
&lt;li>Benchmarking the tree for scalability and performance.&lt;/li>
&lt;li>Ensuring that the syntax of the tree is in line with the LiveHD core repository.&lt;/li>
&lt;li>Integrating the tree into the LiveHD core repository.&lt;/li>
&lt;li>Adding documentation to the tree.&lt;/li>
&lt;li>Integrating the testing of the tree into the LiveHD testing suite.&lt;/li>
&lt;/ul>
&lt;h1 id="conclusions">Conclusions&lt;/h1>
&lt;p>My experience so far has been amazing. I have been able to work on a project that is at the intersection of hardware and software. Moreover, I have been able to work with a team that is very supportive and has been able to guide me through the project. I am looking forward to the next steps and am excited to see the final version of the tree in the LiveHD core repository.&lt;/p>
&lt;h1 id="acknowledgements">Acknowledgements&lt;/h1>
&lt;p>I would like to thank my mentors, &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/jose-renau/">Jose Renau&lt;/a> and &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/sakshi-garg/">Sakshi Garg&lt;/a> for their guidance and support throughout the project. It would not have been possible without their help.&lt;/p></description></item><item><title>Optimizing Scientific Data Streaming: Developing Reproducible Benchmarks for High-Speed Memory-to-Memory Data Transfer over SciStream</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/anl/scistream/20240720-kraislaik/</link><pubDate>Sat, 20 Jul 2024 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/anl/scistream/20240720-kraislaik/</guid><description>&lt;p>Hello there! I&amp;rsquo;m Acheme and I&amp;rsquo;m thrilled to share the progress on my project, &amp;ldquo;Optimizing Scientific Data Streaming: Developing Reproducible Benchmarks for High-Speed Memory-to-Memory Data Transfer over SciStream&amp;rdquo; under the mentorship of &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/joaquin-chung/">Joaquin Chung&lt;/a> and &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/flavio-castro/">Flavio Castro&lt;/a> under the &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre24/anl/scistream/">SciStream&lt;/a> project.&lt;/p>
&lt;h1 id="project-overview">Project Overview&lt;/h1>
&lt;p>This project aims to develop SciStream-bench, a set of benchmarks and artifacts designed to precisely evaluate the performance of scientific streaming applications across diverse traffic patterns when running over the SciStream framework.&lt;/p>
&lt;h1 id="progress">Progress&lt;/h1>
&lt;p>One of the first points of call in the project was consultation with SciStream team members working at Argonne to identify use cases in scientific streaming applications and what typical traffic profiles they represent. The goal was to simulate these profiles using traffic generator tools and network configuration of network resources on the FABRIC/Chameleon testbed. The following traffic profiles were identified to meet many use-cases including one of the ESnet’s broad categorization, “The Time-Sensitive Pattern”, in integrated research workflows:&lt;/p>
&lt;ol>
&lt;li>Throughput intensive startup&lt;/li>
&lt;li>Intermittent burst of traffic for a duration of time&lt;/li>
&lt;li>Constant rate traffic&lt;/li>
&lt;li>Latency sensitive&lt;/li>
&lt;/ol>
&lt;p>Since data streaming applications have some unique requirements for optimum performance, the following metrics were selected as important for testing streaming performance.&lt;/p>
&lt;ol>
&lt;li>Latency&lt;/li>
&lt;li>Jitter&lt;/li>
&lt;li>Packet loss / message loss&lt;/li>
&lt;li>Throughput&lt;/li>
&lt;/ol>
&lt;p>Subsequently, about seventeen open-source traffic generator applications were identified and compared to determine a few suitable ones for generating our defined traffic profiles and that expose the desired performance metrics.
We ultimately settled on iperf3 and pvaPy (a scientific streaming application developed at Argonne National Lab)
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="Traffic generator selection" srcset="
/report/osre24/anl/scistream/20240720-kraislaik/traffic_gen_table_hu1de203c8f0a7ec60f5933544490e9409_166049_e6d6efa6a70c4df7ca728d23dc563c54.webp 400w,
/report/osre24/anl/scistream/20240720-kraislaik/traffic_gen_table_hu1de203c8f0a7ec60f5933544490e9409_166049_26e55280da7d2ab0a44eba5e07d9d657.webp 760w,
/report/osre24/anl/scistream/20240720-kraislaik/traffic_gen_table_hu1de203c8f0a7ec60f5933544490e9409_166049_1200x1200_fit_q75_h2_lanczos.webp 1200w"
src="https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/anl/scistream/20240720-kraislaik/traffic_gen_table_hu1de203c8f0a7ec60f5933544490e9409_166049_e6d6efa6a70c4df7ca728d23dc563c54.webp"
width="760"
height="667"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;p>So far, the first set of tools for benchmarking using iperf3 as traffic generator with profiles of constant rate and intermittent bursts have been developed, the tools generate traffic, collects the metrics that iperf3 exposes metrics including throughput, jitter and datagram losses, and saved to a csv file for further analysis. A Jupyter notebook is used to setup a FABRIC slice and configure a four-node experiment suitable for benchmarking SciStream base architecture. After running the experiments on the nodes on FABRIC and collecting results in a CSV file, cells in the Jupyter notebook were coded to analyze the data.
In the analysis includes average, min, max and standard deviation of the various metric performances.&lt;/p>
&lt;p>
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="Average performance analysis" srcset="
/report/osre24/anl/scistream/20240720-kraislaik/average_analysis_hub26a1bd8be2bfada2c95935ad89433f1_90557_28252818b6ed679b5bf748d6df51a729.webp 400w,
/report/osre24/anl/scistream/20240720-kraislaik/average_analysis_hub26a1bd8be2bfada2c95935ad89433f1_90557_c45bee687ef4762a87c2455789146763.webp 760w,
/report/osre24/anl/scistream/20240720-kraislaik/average_analysis_hub26a1bd8be2bfada2c95935ad89433f1_90557_1200x1200_fit_q75_h2_lanczos.webp 1200w"
src="https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/anl/scistream/20240720-kraislaik/average_analysis_hub26a1bd8be2bfada2c95935ad89433f1_90557_28252818b6ed679b5bf748d6df51a729.webp"
width="760"
height="728"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="Minimum performance analysis" srcset="
/report/osre24/anl/scistream/20240720-kraislaik/min_hue760cbb8515e83e802b6292f194d0407_90680_ab7516f0f11772bbbfee6b83998545a1.webp 400w,
/report/osre24/anl/scistream/20240720-kraislaik/min_hue760cbb8515e83e802b6292f194d0407_90680_031545108de74ea71be7a8c9f221286d.webp 760w,
/report/osre24/anl/scistream/20240720-kraislaik/min_hue760cbb8515e83e802b6292f194d0407_90680_1200x1200_fit_q75_h2_lanczos.webp 1200w"
src="https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/anl/scistream/20240720-kraislaik/min_hue760cbb8515e83e802b6292f194d0407_90680_ab7516f0f11772bbbfee6b83998545a1.webp"
width="760"
height="739"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="Maximum performance analysis" srcset="
/report/osre24/anl/scistream/20240720-kraislaik/max_hud1db05134f576847a7f30efa01c43981_86991_8c9589d9aceb571572d05f6f1c20f03b.webp 400w,
/report/osre24/anl/scistream/20240720-kraislaik/max_hud1db05134f576847a7f30efa01c43981_86991_f2f60074ded7d8cf873fb29edc8ed917.webp 760w,
/report/osre24/anl/scistream/20240720-kraislaik/max_hud1db05134f576847a7f30efa01c43981_86991_1200x1200_fit_q75_h2_lanczos.webp 1200w"
src="https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/anl/scistream/20240720-kraislaik/max_hud1db05134f576847a7f30efa01c43981_86991_8c9589d9aceb571572d05f6f1c20f03b.webp"
width="760"
height="725"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="STD performance analysis" srcset="
/report/osre24/anl/scistream/20240720-kraislaik/std_hu03e1d4d764aea6b18d9fe63b88967d71_86805_0dedae6ede701f5dd0913e39862edcbb.webp 400w,
/report/osre24/anl/scistream/20240720-kraislaik/std_hu03e1d4d764aea6b18d9fe63b88967d71_86805_459f5f4ecf29042cd486cd7465f9e6b8.webp 760w,
/report/osre24/anl/scistream/20240720-kraislaik/std_hu03e1d4d764aea6b18d9fe63b88967d71_86805_1200x1200_fit_q75_h2_lanczos.webp 1200w"
src="https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/anl/scistream/20240720-kraislaik/std_hu03e1d4d764aea6b18d9fe63b88967d71_86805_0dedae6ede701f5dd0913e39862edcbb.webp"
width="760"
height="719"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;h1 id="findings">Findings&lt;/h1>
&lt;p>From the experiments conducted so far, the findings are as follows:&lt;/p>
&lt;ul>
&lt;li>We could not properly simulate some of the listed traffic profiles initially defined: for example, to simulate a latency-sensitive traffic profile, we needed the ability to set timeouts in iperf3 which is not available at the moment&lt;/li>
&lt;li>It is not straightforward to implement SciStream on the Chameleon testbed at the moment.&lt;/li>
&lt;li>Iperf3 does not expose the latency metric and the jitter computation is suspect.&lt;/li>
&lt;/ul>
&lt;h1 id="next-steps">Next Steps&lt;/h1>
&lt;p>Similar to the iperf3-based benchmarking tool developed and the analysis tools, I will focus next on pvaPy:&lt;/p>
&lt;ul>
&lt;li>Fully develop traffic generator and metric collection tools for pvaPy for the defined traffic profiles and exposing the chosen metrics&lt;/li>
&lt;li>Perform initial experiment like for iperf3 before&lt;/li>
&lt;li>Repeat both iperf3 and pvaPy-based benchmarking operation in multiple scenario (LAN, METRO, WAN), compare performance and explain results.&lt;/li>
&lt;/ul>
&lt;p>Stay tuned for my final blog as I present deeper results and insights!&lt;/p></description></item><item><title>Architecture Updates - LLM Assistant for OpenROAD</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/ucsd/openroad/20240719-palaniappan-r/</link><pubDate>Fri, 19 Jul 2024 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/ucsd/openroad/20240719-palaniappan-r/</guid><description>&lt;p>Hi again! I&amp;rsquo;m &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/palaniappan-r/">Palaniappan R&lt;/a>, a GSoC contributor working on the OpenROAD chat assistant project under the mentorship of &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/indira-iyer/">Indira Iyer&lt;/a> and &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/jack-luar/">Jack Luar&lt;/a>. My project aims to build an LLM-powered chat assistant designed to provide seamless access to existing online resources, thereby reducing support overhead. Over the past month, I&amp;rsquo;ve been collaborating with &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/aviral-kaintura/">Aviral Kaintura&lt;/a>, on data engineering to deliver on our common project goal of an OpenROAD assistant and an open-EDA dataset that promotes further research and collaboration.&lt;/p>
&lt;h3 id="progress">Progress&lt;/h3>
&lt;p>The retrieval architecture is at the heart of any retrieval-augmented generation (RAG) setup. Our current setup employs a hybrid-search technique, combining a traditional keyword search method with more advanced vector search methods. As illustrated in the diagram, we combine a simple semantic search, a Maximal Marginal Relevance (MMR) search and a text-based BM25 ranking technique to build our hybrid retriever.&lt;/p>
&lt;div class="mermaid">flowchart LR
id0([Query]) --> id1
id1([Vectorstore]) --- id2([Semantic Retriever])
id1([Vectorstore]) --- id3([MMR Retriever])
id1([Vectorstore]) --- id4([BM25 Retriever])
id2([Semantic Retriever]) -- Retrieved Docs ---> id5([Reranking])
id3([MMR Retriever]) -- Retrieved Docs ---> id5([Reranking])
id4([BM25 Retriever]) -- Retrieved Docs ---> id5([Reranking])
id5([Reranking]) ---> id6(top-n docs)
&lt;/div>
&lt;p>Upon receiving a query, relevant documents are sourced from each retriever, resulting in a broad set of results. We feed these results into a cross-encoder re-ranker model to get the &lt;code>top-n&lt;/code> documents with maximum relevance.&lt;/p>
&lt;p>After building the retriever, we utilized the LangGraph framework to develop a stateful, multi-agent workflow tailored to our use case. This allows flexibility in servicing a diverse set of user questions in an efficient and accurate manner, given the sparse nature of our dataset.&lt;/p>
&lt;p>Our current dataset can be broadly classified into the following categories:&lt;/p>
&lt;ul>
&lt;li>OpenROAD Documentation&lt;/li>
&lt;li>OpenROAD-flow-scripts Documentation&lt;/li>
&lt;li>OpenSTA Documentation&lt;/li>
&lt;li>OpenROAD Manpages&lt;/li>
&lt;/ul>
&lt;p>These data sources are embedded into separate FAISS vector databases using open-source embeddings models (we&amp;rsquo;ve been working on fine-tuning an embeddings model for better retrieval accuracy). The hybrid search retrievers are then applied to these vector databases, creating internal tools that can be queried by our LLM as needed. Each tool has access to different data sources in various domains. For instance, the &lt;code>retrieve_cmds&lt;/code> tool selectively has access to information detailing the multiple commands in the OpenROAD framework, while the &lt;code>retrieve_install&lt;/code> deals with installation-related documentation. As depicted in the flowchart, a routing LLM call classifies the input query and forwards it to the appropriate retriever tool. Relevant documents are then sent back to the LLM for response generation.&lt;/p>
&lt;div class="mermaid">graph TD
__start__ --> router_agent
router_agent -.-> retrieve_cmds
router_agent -.-> retrieve_general
router_agent -.-> retrieve_install
router_agent -.-> retrieve_opensta
retrieve_cmds --> generate
retrieve_general --> generate
retrieve_install --> generate
retrieve_opensta --> generate
generate --> __end__
&lt;/div>
&lt;p>Feel free to try out our chat assistant &lt;a href="https://orassistant.netlify.app/" target="_blank" rel="noopener">here&lt;/a>. Instructions to set up and run our chatbot can be found &lt;a href="https://github.com/The-OpenROAD-Project/ORAssistant" target="_blank" rel="noopener">here&lt;/a>.&lt;/p>
&lt;p>Here&amp;rsquo;s an example of our chatbot in action.
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="Example" srcset="
/report/osre24/ucsd/openroad/20240719-palaniappan-r/img1_hu0b0a2035cec8d14387553facf446abed_79114_fdd1b5352a0557597dd03559dd46260b.webp 400w,
/report/osre24/ucsd/openroad/20240719-palaniappan-r/img1_hu0b0a2035cec8d14387553facf446abed_79114_2dc96697a7dd37f2c6e4dc350d2f33c6.webp 760w,
/report/osre24/ucsd/openroad/20240719-palaniappan-r/img1_hu0b0a2035cec8d14387553facf446abed_79114_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/ucsd/openroad/20240719-palaniappan-r/img1_hu0b0a2035cec8d14387553facf446abed_79114_fdd1b5352a0557597dd03559dd46260b.webp"
width="735"
height="655"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;h3 id="future-plans">Future Plans&lt;/h3>
&lt;p>In the upcoming weeks, we aim to enhance our dataset by incorporating actionable information filtered from GitHub issues and discussions. We’ll be adding support to keep track of the conversation history as well.&lt;/p>
&lt;p>Stay tuned for more updates!&lt;/p></description></item><item><title>Reproducibility in Data Visualization</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/niu/repro-vis/20240719-triveni5/</link><pubDate>Fri, 19 Jul 2024 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/niu/repro-vis/20240719-triveni5/</guid><description>&lt;p>Hello everyone!&lt;/p>
&lt;p>I&amp;rsquo;m Triveni, a Master&amp;rsquo;s student in Computer Science at Northern Illinois University (NIU). I&amp;rsquo;m excited to share my progress on the OSRE 2024 project &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre24/niu/repro-vis/">Categorize Differences in Reproduced Visualizations&lt;/a> focusing on data visualization reproducibility. Working under the mentorship of &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/david-koop/">David Koop&lt;/a>, I&amp;rsquo;ve made some significant strides and faced some interesting challenges.&lt;/p>
&lt;h2 id="initial-approach-and-challenges">Initial Approach and Challenges&lt;/h2>
&lt;p>I began my work by comparing original visualizations with reproduced ones using OpenCV for pixel-level comparison. This method helped highlight structural differences but also brought to light some challenges. Different versions of libraries rendered visualizations slightly differently, causing minor positional changes that didn&amp;rsquo;t affect the overall message but were still flagged as discrepancies.&lt;/p>
&lt;p>To address this, I experimented with machine learning models like VGG16, ResNet, and Detectron2. These models are excellent for general image recognition but fell short for our specific needs with charts and visualizations. The results were not as accurate as I had hoped, primarily because these models aren&amp;rsquo;t tailored to handle the unique characteristics of data visualizations.&lt;/p>
&lt;h2 id="shifting-focus-to-chart-specific-models">Shifting Focus to Chart-Specific Models&lt;/h2>
&lt;p>Recognizing the limitations of general ML models, I shifted my focus to chart-specific models like ChartQA, ChartOCR, and ChartReader. These models are designed to understand and summarize chart data, making them more suitable for our goal of comparing visualizations based on the information they convey.&lt;/p>
&lt;h2 id="generating-visualization-variations-and-understanding-human-perception">Generating Visualization Variations and Understanding Human Perception&lt;/h2>
&lt;p>Another exciting development in my work has been generating different versions of visualizations. This will allow me to create a survey to collect human categorization of visualizations. By understanding how people perceive differences whether it&amp;rsquo;s outliers, shapes, data points, or colors. We can gain insights into what parameters impact human interpretation of visualizations.&lt;/p>
&lt;h2 id="next-steps">Next Steps&lt;/h2>
&lt;p>Moving forward, I&amp;rsquo;ll continue to delve into chart-specific models to refine our comparison techniques. Additionally, the survey will provide valuable data on human perception, which can be used to improve our automated comparison methods. By combining these approaches, I hope to create a robust framework for reliable and reproducible data visualizations.&lt;/p>
&lt;p>I&amp;rsquo;m thrilled about the progress made so far and eager to share more updates with you all. Stay tuned for more insights and developments on this exciting journey!&lt;/p></description></item><item><title> Reproducibility in Data Visualization</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/niu/repro-vis/20240718-aryas/</link><pubDate>Thu, 18 Jul 2024 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/niu/repro-vis/20240718-aryas/</guid><description>&lt;h2 id="introduction">Introduction&lt;/h2>
&lt;p>Hello! My name is &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/arya-sarkar/">Arya Sarkar&lt;/a> a machine learning engineer and researcher based out of Kolkata, a city in Eastern India dubbed the City of Joy.
For the last month and a half I have been working closely with Professor &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/david-koop/">David Koop&lt;/a> on the project titled &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre24/niu/repro-vis/">Reproducibility in Data Visualization&lt;/a>. I’m thrilled to be able to make my own little mark on this amazing project and aid in exploring solutions to capture visualizations in hopes of making reproducibility easier in this domain.&lt;/p>
&lt;h2 id="progress-and-challenges">Progress and Challenges&lt;/h2>
&lt;p>The last month and a half have mostly been spent trying to explore best possible solutions to facilitate the reproducibility of STATIC visualizations from local sources and/or the web.
We have taken inspiration from existing work in the domain and successfully captured meta-information required to ensure reproducibility in the regenerated visualizations from the said metadata. The metadata extracted is saved into the generated .png figure of the visualization therefore allowing reproducibility as long as you have (a) The original dataset (b) The generated .png of the visualization. Every other information is stored inside the .png file as a json object and can be used to regenerate the original image with a very high accuracy.&lt;/p>
&lt;p>The problem however remains with visualizations where randomness such as jitter is involved. Capturing the randomness has not been 100% successful as of now, and we are looking into options to ensure the capture of certain plots that contains randomness.&lt;/p>
&lt;p>The following images can be used to highlight some results from our reproducibility experiments:
Original Histogram using Matplotlib on the iris dataset:
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="original_figure4" srcset="
/report/osre24/niu/repro-vis/20240718-aryas/original_histogram_hua04132746cb0ed26b86c32673b823c8f_29642_4d5ccda2a3e4409f5fb5bfccad4abae9.webp 400w,
/report/osre24/niu/repro-vis/20240718-aryas/original_histogram_hua04132746cb0ed26b86c32673b823c8f_29642_3d4477374e3469fd72bbb32675129816.webp 760w,
/report/osre24/niu/repro-vis/20240718-aryas/original_histogram_hua04132746cb0ed26b86c32673b823c8f_29642_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/niu/repro-vis/20240718-aryas/original_histogram_hua04132746cb0ed26b86c32673b823c8f_29642_4d5ccda2a3e4409f5fb5bfccad4abae9.webp"
width="760"
height="468"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
Reproduced Histogram using metainformation from the original:
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="reproduced_figure4" srcset="
/report/osre24/niu/repro-vis/20240718-aryas/Reproduced_histogram_hub205e2d6c877abb784c35befc8616823_26597_9ca3975509f66dbedf2746a253660ec4.webp 400w,
/report/osre24/niu/repro-vis/20240718-aryas/Reproduced_histogram_hub205e2d6c877abb784c35befc8616823_26597_ca77d573979d523935009285864d087b.webp 760w,
/report/osre24/niu/repro-vis/20240718-aryas/Reproduced_histogram_hub205e2d6c877abb784c35befc8616823_26597_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/niu/repro-vis/20240718-aryas/Reproduced_histogram_hub205e2d6c877abb784c35befc8616823_26597_9ca3975509f66dbedf2746a253660ec4.webp"
width="760"
height="490"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;h2 id="the-next-steps">The next steps&lt;/h2>
&lt;p>We have already started looking into solutions and ways to capture visualizations from the web i.e. from platforms such as ObservableHq and use these experiments to transition into capturing interactive visualizations from the web.&lt;/p>
&lt;p>Capturing user interactions and all states in an interactive visualization can prove to be very useful as it is a very known pain-point in the reproducibility community and has been a challenge that needs to be solved. My next steps involve working on finding a solution to capture these interactive visualizations especially those living on the web and ensuring their reproducibility.&lt;/p></description></item><item><title>Halfway Through GSOC: My Experience and Learnings</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/uci/benchmarkst/20240718-qianru/</link><pubDate>Thu, 18 Jul 2024 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/uci/benchmarkst/20240718-qianru/</guid><description>&lt;p>Hello there! I&amp;rsquo;m Qianru, and this is my mid-term blog post for the 2024 Google Summer of Code. I am working on the BenchmarkST project, focusing on benchmarking gene imputation methods in spatial transcriptomics. My goal is to create a comprehensive, reproducible platform for evaluating these methods across various datasets and conditions.&lt;/p>
&lt;p>In this post, I will share some of the progress I have made so far, the challenges I have faced, and how I overcame them. I will also highlight some specific accomplishments and what I plan to do next.&lt;/p>
&lt;hr>
&lt;h3 id="achievements">Achievements:&lt;/h3>
&lt;ol>
&lt;li>&lt;strong>Developed the Python Package:&lt;/strong> I created the &amp;ldquo;Impeller&amp;rdquo; Python package, which includes tools for downloading example data, processing it, and training models. This package aims to standardize gene imputation tasks in spatial transcriptomics.&lt;/li>
&lt;li>&lt;strong>Example Data Integration:&lt;/strong> Successfully integrated various spatial transcriptomics datasets into the package for benchmarking purposes.&lt;/li>
&lt;li>&lt;strong>Benchmarking Framework:&lt;/strong> Established a framework for objective comparison of different gene imputation methodologies.&lt;/li>
&lt;/ol>
&lt;p>&lt;strong>Python Package: Installation and Usage&lt;/strong>&lt;/p>
&lt;p>You can install the package using pip:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">pip install Impeller
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Download Example Data&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">from Impeller import download_example_data
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">download_example_data&lt;span class="o">()&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Load and Process Data&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">from Impeller import load_and_process_example_data, val_mask, test_mask, x, &lt;span class="nv">original_x&lt;/span> &lt;span class="o">=&lt;/span> load_and_process_example_data&lt;span class="o">()&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Train Model&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">from Impeller import create_args, train &lt;span class="nv">args&lt;/span> &lt;span class="o">=&lt;/span> create_args&lt;span class="o">()&lt;/span>,test_l1_distance, test_cosine_sim, &lt;span class="nv">test_rmse&lt;/span> &lt;span class="o">=&lt;/span> train&lt;span class="o">(&lt;/span>args, data, val_mask, test_mask, x, original_x&lt;span class="o">)&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;hr>
&lt;h3 id="challenges">Challenges:&lt;/h3>
&lt;p>Reproducing the results of various gene imputation methods was not an easy task. I faced several challenges along the way:&lt;/p>
&lt;ol>
&lt;li>&lt;strong>Lack of Standardized Data:&lt;/strong> Some methods had incomplete or missing code, making it difficult to reproduce their results accurately.&lt;/li>
&lt;li>&lt;strong>Reproducibility Issues:&lt;/strong> Successfully integrated various spatial transcriptomics datasets into the package for benchmarking purposes.&lt;/li>
&lt;li>&lt;strong>Resource Limitations:&lt;/strong> Running large-scale experiments required significant computational resources, which posed constraints on the project timeline.&lt;/li>
&lt;/ol>
&lt;hr>
&lt;h3 id="future-work">Future Work:&lt;/h3>
&lt;p>Moving forward, I plan to:&lt;/p>
&lt;ol>
&lt;li>Extend the package&amp;rsquo;s functionalities to include more datasets and imputation methods.&lt;/li>
&lt;li>Enhance the benchmarking framework for more comprehensive evaluations.&lt;/li>
&lt;li>Collaborate with other researchers to validate and improve the package&amp;rsquo;s utility in the bioinformatics community.&lt;/li>
&lt;/ol>
&lt;hr>
&lt;p>I hope you found this update informative and interesting. If you have any questions or feedback, please feel free to contact me. Thank you for your attention and support!&lt;/p></description></item><item><title>Mid Term Blog: FEP-Bench: Benchmarking for Enhanced Feature Engineering and Preprocessing in Machine Learning</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/uchicago/fep_bench/20240718-jaycezhu/</link><pubDate>Thu, 18 Jul 2024 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/uchicago/fep_bench/20240718-jaycezhu/</guid><description>&lt;h2 id="introduction">Introduction&lt;/h2>
&lt;p>Hello, I’m &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/lihaowen-jayce-zhu/">Lihaowen (Jayce) Zhu&lt;/a>, a 2024 SoR contributor for the FEP-bench project, under the mentorship of &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/yuyang-roy-huang/">Yuyang (Roy) Huang&lt;/a>. The FEP-Bench project proposes to address the significant bottlenecks encountered during this phase, particularly focusing on the challenges posed by data retrieval from data lakes and computational inefficiencies in data operations. By exploring innovative caching, prefetching, and heuristic strategies, this proposal aims to optimize the preprocessing workflow, thereby enhancing efficiency and reducing the required resources of ML projects.&lt;/p>
&lt;h2 id="motivation">Motivation&lt;/h2>
&lt;p>Our research project is based on the context of Deep Neural Networks. To train a DNN, we first need a large amount of data. All raw data must be preprocessed by a data preprocessing pipeline, which is specific to different ML tasks. As usual, in a preprocessing pipeline, the data must be loaded from the disk and converted to the correct format, transformed and augmented. And then, it can be fed into the training stage. In common ML training tasks and datasets, the data preprocessing stage can consume almost 65% of the total training time. However, compared with the fast development of computing hardware including GPUs and TPUs, the speed of data preprocessing pipelines has not been improved by a lot and cannot keep up with these hardware innovations, which leads to a bottleneck in the efficiency of Deep Neural Network training.&lt;/p>
&lt;p>The bottlenecks can be divided into 2 categories: the data side and the computation side. The data side bottleneck is mainly caused by the data transfer in the system, including data fetching, I/O bound, huge size of data, and complex data format. However, the computation side bottleneck can always happen during data preprocessing operations and data shuffling. For distributed Machine Learning training systems, gathering the distributed data can also lead to the computation side bottleneck.&lt;/p>
&lt;h2 id="current-progress">Current Progress&lt;/h2>
&lt;p>In order to improve the efficiency of the machine learning preprocessing pipeline, we first need to understand and document the preprocessing workflows commonly used in machine learning, including pipelines of Natural Language Processing, Computer Vision, and Audio datasets. As a result, for the past month, we have built up a collection of common datasets for different machine learning tasks. The dataset types include NLP, CV, Audio, Linear Regression, Video and LiDAR. The machine learning job types are collected based on the dataset types, such as sentiment analysis for NLP, and image classification for CV. The data has either a structured or unstructured format. In addition, our collection contains the following attributes:&lt;/p>
&lt;ul>
&lt;li>Data/Sample size&lt;/li>
&lt;li>Typical preprocessing operations&lt;/li>
&lt;li>Preprocessing difficulty: hard/easy&lt;/li>
&lt;li>Input splittable&lt;/li>
&lt;li>Output reusable&lt;/li>
&lt;li>CPU/GPU/IO Bound&lt;/li>
&lt;li>Dataset and preprocessing links.&lt;/li>
&lt;/ul>
&lt;p>By collecting all this data, we can gain an overview of all common preprocessing pipelines in the current machine learning research field, and build up a solid basis for the next phase of our project, which requires hard work on benchmark profiling. For example, for the Audio datasets, we focus on the LibriSpeech dataset. It contains 1000 hours of speech sampled at 16kHz, making it one of the largest publicly available datasets for speech recognition tasks. The typical preprocessing steps of the LibriSpeech dataset include feature extraction, label to integer conversion, and padding.&lt;/p>
&lt;h2 id="challenges">Challenges&lt;/h2>
&lt;p>During the first phase of the project, I met a lot of challenges as I had not been exposed to topics similar to this project. The first big problem was that I needed to learn the concepts of some machine learning tasks from scratch, such as NLP, so that I could have a better understanding of the common datasets and pipelines. Also, I needed to deeply review a lot of different preprocessing pipelines for each machine learning task, to make the table more comprehensive.&lt;/p></description></item><item><title>Midterm Blogpost: Drift Management Strategies Benchmark</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/anl/last/20240718-williamn/</link><pubDate>Thu, 18 Jul 2024 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/anl/last/20240718-williamn/</guid><description>&lt;p>Hello there! I&amp;rsquo;m William and I&amp;rsquo;m thrilled to share the progress on my project, &amp;ldquo;Developing A Comprehensive Pipeline to Benchmark Drift Management Approaches&amp;rdquo; under the mentorship of &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/ray-andrew-sinurat/">Ray Andrew Sinurat&lt;/a> and &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/sandeep-madireddy/">Sandeep Madireddy&lt;/a> under the &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre24/anl/last">LAST&lt;/a> project.&lt;/p>
&lt;h1 id="project-overview">Project Overview&lt;/h1>
&lt;p>If you&amp;rsquo;re not familiar with it, this project aims to address the issue of model aging, where machine learning (ML) models experience a decline in effectiveness over time due to environmental changes, known as drift. My goal is to design an extensible pipeline that evaluates and benchmarks the robustness of state-of-the-art algorithms in addressing these drifts.&lt;/p>
&lt;h1 id="progress">Progress&lt;/h1>
&lt;p>So far, I&amp;rsquo;ve generated various synthetic datasets, which include:&lt;/p>
&lt;ul>
&lt;li>CIRCLE: This dataset contains two features x1, x2 drawn uniformly from the interval [0, 1]. Each data point is labeled as per the condition (x1 − c1)^2 + (x2 − c2)^2 &amp;lt;= r where the center (c1, c2) and radius r of the circular decision boundary changes gradually over a period of time introducing (gradual) concept drift.
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="Circle" srcset="
/report/osre24/anl/last/20240718-williamn/circlestream_hued24f09167f45c96aadcbb5d8e5dff3c_90965_f33edae3375218d9e5b25a95221be6a3.webp 400w,
/report/osre24/anl/last/20240718-williamn/circlestream_hued24f09167f45c96aadcbb5d8e5dff3c_90965_8c85ac190035be7be37c64958f68df3c.webp 760w,
/report/osre24/anl/last/20240718-williamn/circlestream_hued24f09167f45c96aadcbb5d8e5dff3c_90965_1200x1200_fit_q75_h2_lanczos.webp 1200w"
src="https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/anl/last/20240718-williamn/circlestream_hued24f09167f45c96aadcbb5d8e5dff3c_90965_f33edae3375218d9e5b25a95221be6a3.webp"
width="760"
height="315"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/li>
&lt;li>COVCON: This 2-dimensional dataset has covariate shift and concept drift. The decision boundary at each point is given by α ∗ sin(πx1) &amp;gt; x2. We use 10000 points (100 batches, 1000 points per batch). Covariate shift is introduced by changing the location of x1 and x2 (for batch t x1 and x2). Concept drift is introduced by alternating the value of α.
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="CovCon" srcset="
/report/osre24/anl/last/20240718-williamn/covcon_hu4a191415f686125b6694a5c631bd0a53_84580_71acf32897baf4ad41a1f28aa45ddbe3.webp 400w,
/report/osre24/anl/last/20240718-williamn/covcon_hu4a191415f686125b6694a5c631bd0a53_84580_2b3b3648f56332fa89453ae08fff34a0.webp 760w,
/report/osre24/anl/last/20240718-williamn/covcon_hu4a191415f686125b6694a5c631bd0a53_84580_1200x1200_fit_q75_h2_lanczos.webp 1200w"
src="https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/anl/last/20240718-williamn/covcon_hu4a191415f686125b6694a5c631bd0a53_84580_71acf32897baf4ad41a1f28aa45ddbe3.webp"
width="760"
height="314"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/li>
&lt;li>SINE: This dataset contains two features x1, x2 drawn uniformly from the interval [0, 1]. In the first context all points below the curve y = sin(x) are classified as positive. The label for the classes are flipped after.
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="Sine" srcset="
/report/osre24/anl/last/20240718-williamn/sinestream_hu58fb0770a1ec970143181b61b6554e14_112143_9cf339d9d956964ac3129aed212bbbb4.webp 400w,
/report/osre24/anl/last/20240718-williamn/sinestream_hu58fb0770a1ec970143181b61b6554e14_112143_f77fa8ca9a78666905791587c0ea3cd5.webp 760w,
/report/osre24/anl/last/20240718-williamn/sinestream_hu58fb0770a1ec970143181b61b6554e14_112143_1200x1200_fit_q75_h2_lanczos.webp 1200w"
src="https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/anl/last/20240718-williamn/sinestream_hu58fb0770a1ec970143181b61b6554e14_112143_9cf339d9d956964ac3129aed212bbbb4.webp"
width="760"
height="317"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/li>
&lt;/ul>
&lt;p>Additionally, I&amp;rsquo;ve also curated drifting data from the Tencent I/O block trace. These datasets will be used to benchmark model performance under different drift conditions.&lt;/p>
&lt;p>The pipeline can receive a base sci-kit learn model, and evaluate their performance on these datasets prequentially. Here are some of the initial results for the performance of the models on these drifting dataset, under a never retraining and retraining, using 1 &amp;amp; 7 past windows. As you can see, model performance degrades upon encountering extreme drift.&lt;/p>
&lt;p>
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="Circle" srcset="
/report/osre24/anl/last/20240718-williamn/featured_hu314786216917ab73ec11106e3fbdbfd6_47344_cd621ffcf8e0112adfbd5a4b18eed098.webp 400w,
/report/osre24/anl/last/20240718-williamn/featured_hu314786216917ab73ec11106e3fbdbfd6_47344_70229554177ef52d038b9d63d9ddea31.webp 760w,
/report/osre24/anl/last/20240718-williamn/featured_hu314786216917ab73ec11106e3fbdbfd6_47344_1200x1200_fit_q75_h2_lanczos.webp 1200w"
src="https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/anl/last/20240718-williamn/featured_hu314786216917ab73ec11106e3fbdbfd6_47344_cd621ffcf8e0112adfbd5a4b18eed098.webp"
width="760"
height="459"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="CovCon" srcset="
/report/osre24/anl/last/20240718-williamn/covconmodel_hud438b5726b48ee443ea38ddb26d42afb_81013_71acdd86c329186013de6ffb21b90cd6.webp 400w,
/report/osre24/anl/last/20240718-williamn/covconmodel_hud438b5726b48ee443ea38ddb26d42afb_81013_252db232f127d0cb909594060e49d831.webp 760w,
/report/osre24/anl/last/20240718-williamn/covconmodel_hud438b5726b48ee443ea38ddb26d42afb_81013_1200x1200_fit_q75_h2_lanczos.webp 1200w"
src="https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/anl/last/20240718-williamn/covconmodel_hud438b5726b48ee443ea38ddb26d42afb_81013_71acdd86c329186013de6ffb21b90cd6.webp"
width="760"
height="482"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="Sine" srcset="
/report/osre24/anl/last/20240718-williamn/sinemodel_hufe9ad7a15a34440d5b75d411ad8cc905_51948_e28e854413249c9d3e580bd86e496391.webp 400w,
/report/osre24/anl/last/20240718-williamn/sinemodel_hufe9ad7a15a34440d5b75d411ad8cc905_51948_04c9aca01ba0c5693cdfe730cc25bc07.webp 760w,
/report/osre24/anl/last/20240718-williamn/sinemodel_hufe9ad7a15a34440d5b75d411ad8cc905_51948_1200x1200_fit_q75_h2_lanczos.webp 1200w"
src="https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/anl/last/20240718-williamn/sinemodel_hufe9ad7a15a34440d5b75d411ad8cc905_51948_e28e854413249c9d3e580bd86e496391.webp"
width="760"
height="479"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;h1 id="findings">Findings&lt;/h1>
&lt;p>From the experiments conducted so far, the findings are as follows:&lt;/p>
&lt;ul>
&lt;li>A model without retraining struggles to maintain performance when drift occurs.&lt;/li>
&lt;li>Retraining on data from previous drifting windows, whether abruptly (SINE) or gradually (CIRCLE), leads to poorer performance, especially evident in the retrain Window, which incorporates data up to 7 windows prior.&lt;/li>
&lt;li>However, retraining on previous data proves beneficial in cases of covariate shift (CovCon), allowing the model to better align with the evolving real-world feature distributions.&lt;/li>
&lt;/ul>
&lt;h1 id="next-steps">Next Steps&lt;/h1>
&lt;p>As the base template for the pipeline and dataset curation is done, as I move forward, my focus will be on:&lt;/p>
&lt;ul>
&lt;li>Implementing three advanced algorithms: AUE (Accuracy Updated Ensemble), MATCHMAKER, and Driftsurf, then integrating them into the pipeline.&lt;/li>
&lt;li>Enhancing the benchmarking process by adding more metrics and plots, such as training time and inference time, to better evaluate the strategies.&lt;/li>
&lt;li>Packaging the entire experiment into a Chameleon Trovi Artifact, ensuring ease of reproducibility and extension.&lt;/li>
&lt;/ul>
&lt;p>Stay tuned for my final blog as I delve deeper into this project!&lt;/p></description></item><item><title>Midterm Blogpost: HDEval's LLM Benchmarking for HDL Design</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/ucsc/livehd/20240718-ashwinbardhwaj/</link><pubDate>Thu, 18 Jul 2024 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/ucsc/livehd/20240718-ashwinbardhwaj/</guid><description>&lt;h2 id="introduction">Introduction&lt;/h2>
&lt;p>Hello! My name is &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/ashwin-bardhwaj/">Ashwin Bardhwaj&lt;/a>, an electrical engineering and computer science student based in San Diego, CA. For the past 6 weeks, I have been working closely with Professor &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/jose-renau/">Jose Renau&lt;/a> on the &lt;a href="https://github.com/masc-ucsc/hdeval" target="_blank" rel="noopener">HDEval&lt;/a> project. The aim of this project is to create multiple project sized HDL benchmarks to evaluate how well existing LLMs can generate Verilog/Chisel code. These benchmarks will include my own &amp;ldquo;golden&amp;rdquo; HDL implementation of the project as well as respective English prompts to guide the LLM. I am excited to be able to work with these tools that have the potential to become a valuable resource for HDL design. So far, I have been successful in creating the first benchmark, a pipelined 3 stage RISC-V core, as well as working through by second project, a Gameboy Emulator.&lt;/p>
&lt;h2 id="risc-v-implementation">RISC-V Implementation&lt;/h2>
&lt;p>Over this past month and a half, I have successfully completed my first benchmark which focuses on creating, modeling, and testing a pipelined 3-stage RISC-V core. The core uses the fetch, decode, and execute structure and is functional for most RV32I instructions. I synthesized and simulated my Verilog using Icarus Verilog and displayed the waveforms on GTKWave. After development, a good section of time was spent creating and tuning the English explanation of each Verilog module. After running these benchmark files through several LLM APIs, we compared the existing &amp;ldquo;golden&amp;rdquo; modules with the generated ones and noticed that more recent versions of LLMs such as GPT 4o and Claude 3 preform much better at creating syntactically correct and efficient code.&lt;/p>
&lt;p>In addition, I have also created a tool that will parse the Verilog and instruction files into the necessary json structure to then test on various models.&lt;/p>
&lt;h2 id="gameboy-emulator">Gameboy Emulator&lt;/h2>
&lt;p>I am also in the process of developing the second benchmark, which targets a Gameboy emulator. This will challenge the LLMs much more than the RISC-V project because apart from the custom CISC CPU, the model should also understand how to handle various other blocks of the hardware system including memory, picture processing unit (PPU), sound processing unit (SPU), various input/output systems like the buttons and cartridge, and interrupt handlers. As a result, it will challenge the model to understand the system as a whole when creating each individual module.&lt;/p>
&lt;h2 id="next-steps">Next Steps&lt;/h2>
&lt;p>As we continue on to the second half of the project, I will continue working on my gameboy emulator. I have already completely developed and tested the Z80-esque CPU, DMA, and interrupt handler but need to continue working on the display and sound interfaces. Also, I will also continue to evaluate and run these tests over a wider range of LLMs to get a better picture of what models and versions are best suited for HDL design as well as the direction these models are going in.&lt;/p></description></item><item><title>Halfway Through OSRE24: My Experience and Learnings</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/tum/slices/20240716-warmuth/</link><pubDate>Mon, 15 Jul 2024 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/tum/slices/20240716-warmuth/</guid><description>&lt;p>Hello there! I’m Kilian Warmuth, a computer science student from Germany. This summer, I’m part of the 2024 Summer of Reproducibility (SoR) initiative. My project, &amp;ldquo;Reproducible Experiment Workflows in SLICES/pos,&amp;rdquo; aims to enhance reproducibility in scientific research, aligning with the FAIR principles (Findable, Accessible, Interoperable, Reusable).&lt;/p>
&lt;h1 id="project-overview">Project Overview&lt;/h1>
&lt;p>The &amp;ldquo;Reproducible Experiment Workflows in SLICES/pos&amp;rdquo; project is part of the larger SLICES-RI initiative, designed to improve the reproducibility and reusability of large-scale experimental research. The project focuses on integrating the RO-Crate standard into the pos testbed to organize and document experiment results systematically. This integration will enhance the accessibility and comprehensibility of research findings, ensuring they adhere to the FAIR principles. Additionally, the project aims to improve the portability of pos experiments to the Chameleon testbed, facilitating collaboration and seamless execution across different research environments.&lt;/p>
&lt;h1 id="progress-and-challenges">Progress and Challenges&lt;/h1>
&lt;p>The first half of the project is done, marked by significant progress and learnings. My initial focus was on familiarizing myself with the pos framework and the RO-Crate standard. This foundational knowledge was crucial for the subsequent steps of restructuring the results folder and integrating automated RO-Crate generation into the pos framework.&lt;/p>
&lt;h2 id="key-achievements">Key Achievements:&lt;/h2>
&lt;ul>
&lt;li>Restructured Results Folder: The structure of the results folder has been redesigned to streamline navigation and enable systematic storage of result data.&lt;/li>
&lt;li>Automated RO-Crate Generation: Successfully integrated the basics of the RO-Crate standard into the pos framework, enabling the automated generation of comprehensive results documentation.&lt;/li>
&lt;li>Metadata Documentation: Added comprehensive documentation to the results data, including essential metadata such as author details, user scripts, and hardware information, enhancing reproducibility and interpretability.&lt;/li>
&lt;/ul>
&lt;h2 id="challenges-encountered">Challenges Encountered:&lt;/h2>
&lt;ul>
&lt;li>Balancing Automation with Flexibility: Ensuring the automated generation of RO-Crates did not compromise the flexibility required by researchers to customize their experiment documentation and mess with the complex requirements of a testbed.&lt;/li>
&lt;li>Complexity of Testbed Systems: FIntegrating the RO-Crate implementation for a complex system like a testbed has required deep dives into the code base of the testbed.&lt;/li>
&lt;/ul>
&lt;p>Despite these challenges, the progress made has been rewarding, laying a solid foundation for the next phase of the project.&lt;/p>
&lt;h1 id="learnings-and-skills-gained">Learnings and Skills Gained&lt;/h1>
&lt;p>&lt;strong>Understanding the Complexity of Testbeds&lt;/strong>: One of the key learnings from this project has been the realization that testbeds are complex systems. Despite their complexity, the process became manageable thanks to well-documented software and the invaluable support of top mentors who provided detailed answers to in-depth questions. Their guidance was crucial in navigating the challenges of the project.&lt;/p>
&lt;p>&lt;strong>Open Source Development in an Educational Environment&lt;/strong>: My experience in open source development has been enriched by working within an educational context. This skill is particularly important when adapting and simplifying code to ensure that users can follow along and gain a deeper understanding of the experiments, improving the quality of research experiments.&lt;/p>
&lt;h1 id="next-steps">Next Steps&lt;/h1>
&lt;p>As we move into the second half of this project, our primary focus will be on enhancing the portability of pos experiments to the Chameleon testbed. Key tasks include:&lt;/p>
&lt;ul>
&lt;li>Finetune RO-Crate Implementation: Continue refining the RO-Crate integration to handle the complexities of testbed systems more effectively like special edge cases.&lt;/li>
&lt;li>Enhance Portability: Refine the integration with Trovi, ensuring seamless upload and retrieval of experiment results across testbeds.&lt;/li>
&lt;li>Develop Introductory Examples: Create examples demonstrating the use of pos in various testbed environments to guide researchers.&lt;/li>
&lt;li>Execute and Analyze Experiments: Design and execute a complex network experiment on both SLICES/pos and Chameleon, validating and refining portability features.&lt;/li>
&lt;/ul>
&lt;p>These steps are crucial to achieving our goal of making pos experiments more accessible and reproducible across different research environments.&lt;/p>
&lt;h1 id="conclusion">Conclusion&lt;/h1>
&lt;p>Reflecting on the first half of my OSRE24 journey, I am incredibly grateful for the opportunity to work on the &amp;ldquo;Reproducible Experiment Workflows in SLICES/pos&amp;rdquo; project. The experience has been both challenging and rewarding, providing valuable insights into open-source development, machine learning techniques, and the creation of educational resources.&lt;/p>
&lt;p>As we move forward, I am excited about the coming weeks. The completion of the portability enhancements and the execution of complex experiments lie ahead, marking significant milestones in our project. The skills and lessons I have acquired will guide me in future endeavors.&lt;/p></description></item><item><title>Data leakage in applied ML: reproducing examples from genomics, medicine and radiology</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/nyu/data-leakage/20240701-shaivimalik/</link><pubDate>Mon, 01 Jul 2024 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/nyu/data-leakage/20240701-shaivimalik/</guid><description>&lt;p>Hello everyone! I&amp;rsquo;m Shaivi Malik, a computer science and engineering student. I am thrilled to announce that I have been selected as a Summer of Reproducibility Fellow. I will be contributing to the &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre24/nyu/data-leakage/">Data leakage in applied ML: reproducing examples of irreproducibility&lt;/a> project under the mentorship of &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/fraida-fund/">Fraida Fund&lt;/a> and &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/mohamed-saeed/">Mohamed Saeed&lt;/a>. You can find my proposal &lt;a href="https://drive.google.com/file/d/1WAsDif61O2fWgtkl75bQAnIcm2hryt8z/view?usp=sharing" target="_blank" rel="noopener">here&lt;/a>.&lt;/p>
&lt;p>This summer, we will reproduce studies from medicine, radiology and genomics. Through these studies, we&amp;rsquo;ll explore and demonstrate three types of data leakage:&lt;/p>
&lt;ol>
&lt;li>Pre-processing on train and test sets together&lt;/li>
&lt;li>Model uses features that are not legitimate&lt;/li>
&lt;li>Feature selection on training and test sets&lt;/li>
&lt;/ol>
&lt;p>For each paper, we will replicate the published results with and without the data leakage error, and present performance metrics for comparison. We will also provide explanatory materials and example questions to test understanding. All these resources will be bundled together in a dedicated repository for each paper.&lt;/p>
&lt;p>This project aims to address the need for accessible educational material on data leakage. These materials will be designed to be readily adopted by instructors teaching machine learning in a wide variety of contexts. They will be presented in a clear and easy-to-follow manner, catering to a broad range of backgrounds and raising awareness about the consequences of data leakage.&lt;/p>
&lt;p>Stay tuned for updates on my progress! You can follow me on &lt;a href="https://github.com/shaivimalik" target="_blank" rel="noopener">GitHub&lt;/a> and watch out for my upcoming blog posts.&lt;/p></description></item><item><title>FetchPipe: Data Science Pipeline for ML-based Prefetching</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/uchicago/fetchpipe/20240625-peiranqin/</link><pubDate>Tue, 25 Jun 2024 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/uchicago/fetchpipe/20240625-peiranqin/</guid><description>&lt;p>Hello, I&amp;rsquo;m &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/peiran-qin/">Peiran Qin&lt;/a>, a first-year Pre-Doctoral student in Computer Science at the University of Chicago. In this summer I will focus
working on the project &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre24/uchicago/fetchpipe/">FetchPipe: Data Science Pipeline for ML-based Prefetching&lt;/a> under the mentorship of Prof. &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/haryadi-s.-gunawi/">Haryadi S. Gunawi&lt;/a>. This is my &lt;a href="https://docs.google.com/document/d/1Bq4tulf6bd9HuKyy3mxC-LRKwe9e7YAOVNYQNJTPsys/edit#heading=h.pwfhd8ioumbq" target="_blank" rel="noopener">proposal&lt;/a>.&lt;/p>
&lt;p>Caching and prefetching are integral components of modern storage systems, aimed at reducing I/O latency by utilizing faster but less dense memory for storing data that is accessed frequently. Traditional prefetching strategies, which primarily rely on heuristic-based methods, often fall short in performance, particularly in complex scenarios. To address the complex scenarios, in recent years, machine learning solutions have emerged as a promising alternative, offering the ability to learn and predict complicated data access patterns. However, each existing ML prefetcher may bias toward different scenarios and distinct evaluation metrics. There is still a necessity to evaluate state-of-the-art machine learning based literatures comprehensively and fairly under an aligned evaluation framework and extensive performance metrics. Therefore, It becomes the motivation for me to spend my summer on this interesting project!&lt;/p></description></item><item><title>Developing an Efficient CMS for Polyphy Project</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/ucsc/polyphy/20240621-mohit/</link><pubDate>Fri, 21 Jun 2024 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/ucsc/polyphy/20240621-mohit/</guid><description>&lt;p>Hello everyone,&lt;/p>
&lt;p>My name is Mohit, and I am currently a sophomore at NIT Jalandhar. As part of the Polyphy project&amp;rsquo;s team, I am determined to make data management much easier for everyone involved. My project also aims to increase the project&amp;rsquo;s social presence.&lt;/p>
&lt;p>As part of the &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre24/ucsc/polyphy/">PolyPhy&lt;/a> my &lt;a href="https://docs.google.com/document/d/1BCG6Y-6Usz0hMo11OM5TZY5B8hKTD43wgXSq2s5OcK4/edit?usp=sharing" target="_blank" rel="noopener">proposal&lt;/a> under the mentorship of MENTOR aims to &amp;hellip;. You might wonder, why create a new CMS when we could use existing solutions like Strapi, Contentful, or WordPress? The answer lies in the specific requirements of our project, which I&amp;rsquo;ll cover in a separate blog post about the selection of the tech stack and code architecture.&lt;/p>
&lt;p>Returning to my programming journey, while the CMS is a significant part of the project, it also includes refactoring existing React code and migrating it to Next.js, among other cool tasks. The first two weeks of my project were primarily focused on this. Now, I am shifting more towards the CMS development.&lt;/p>
&lt;p>How did we start? Initially, we created a curated list of essential features needed, through discussions with my mentors. They ensured that I wouldn&amp;rsquo;t face the burden of unnecessary features, focusing instead on what was truly beneficial for both me and the project. I began by experimenting with various WYSIWYG editors such as React Quill, Tiptap, Draft.js, and Slate.&lt;/p>
&lt;p>By the end of this week, I successfully created a small working prototype of the CMS. As the coding period progresses, things are beginning to take shape, and I am really excited about creating something that will help people in the long run.&lt;/p>
&lt;p>Thank you for reading, and stay tuned for more updates!&lt;/p></description></item><item><title>Causeway: A New Approach to Web Development Teaching</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/ucsc/causeway/20240620-audsostrom/</link><pubDate>Thu, 20 Jun 2024 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/ucsc/causeway/20240620-audsostrom/</guid><description>&lt;p>As part of the &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre24/ucsc/causeway">Causeway&lt;/a> team, my &lt;a href="https://docs.google.com/document/d/e/2PACX-1vRghWCQ1QkuRPh2NDllLgEzXwVXvOXZ-8K3B32ItcrtCY19pFhKGV4x53JHGXoHsEhi1PzsOfs35Uf3/pub" target="_blank" rel="noopener">proposal&lt;/a> under the mentorship of Professor &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/david-lee/">David Lee&lt;/a> aims to enhance web development education through situated learning.&lt;/p>
&lt;p>&lt;a href="https://tech4good.soe.ucsc.edu/assets/docs/chi-2019-ca.pdf" target="_blank" rel="noopener">Causeway&lt;/a> addresses shortcomings in current online coding tutorials by offering a comprehensive approach to web development using an Angular, RxJS, NgRx, and Firebase stack. By breaking down the complex task of creating a website down into discrete chunks (micro-roles) and tracking individual progress, students can be assured they are acheiving their desired learning goals. With this project, our team hopes to demonstrate the potential of sitatuted learning – tacit knowledge picked up within a real-world context – instead of content-based learning approaches used in sites like Khan Academy and Coursera.&lt;/p>
&lt;p>Over the course of this summer, we plan on reinvigorating the pre-existing v1 platform through the addition of new features such as dashboards, quizzes, and in-depth walkthroughs of new potential projects for users to implement. The platform will also leverage the &lt;a href="https://developer.stackblitz.com/platform/api/webcontainer-api" target="_blank" rel="noopener">Stackblitz WebContainer API&lt;/a> and &lt;a href="https://firebase.google.com/docs/functions" target="_blank" rel="noopener">Firebase Cloud Functions&lt;/a> to run full applications in the browser for interactive and secured learning.&lt;/p></description></item><item><title>Unveiling Medicine Patterns: 3D Clustering with Polyphy/Polyglot</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/ucsc/polyphy/20240619-ayushsharma/</link><pubDate>Wed, 19 Jun 2024 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/ucsc/polyphy/20240619-ayushsharma/</guid><description>&lt;p>Hello! My name is Ayush and this summer I&amp;rsquo;ll be contributing to &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre24/ucsc/polyphy/">Polyphy&lt;/a> and &lt;a href="https://normand-1024.github.io/Bio-inspired-Exploration-of-Language-Embedding/" target="_blank" rel="noopener">Polyglot&lt;/a>, a GPU oriented agent-based system for reconstructing and visualizing optimal transport networks defined over sparse data. under the mentorship of &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/oskar-elek/">Oskar Elek&lt;/a> and &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/kiran-deol/">Kiran Deol&lt;/a>.&lt;/p>
&lt;p>For the reference here&amp;rsquo;s my &lt;a href="https://summerofcode.withgoogle.com/media/user/7a1cc1c971c5/proposal/gAAAAABmV3hljjurQ8HAS8PRRRZB2_c5vQ3clWisqad85y-gO7rNvpssnzqGlFeiYQkAb5qY5WDUoRKkxUoTHLLDXLwBvrAjSsRs1qNTYmMrFfsbs1aQrjo=.pdf" target="_blank" rel="noopener">proposal&lt;/a> for this project.&lt;/p>
&lt;p>Polyglot offers an immersive 3D visualization experience, enabling users to zoom, rotate, and delve into complex datasets.
My project aims to harness these capabilities to unlock hidden connections in the realm of medicine, specifically focusing on the relationships between drugs based on their shared salt compositions, rather than just their active ingredients. This approach promises to reveal intricate patterns and relationships that have the potential to revolutionize drug discovery, pharmacology, and personalized medicine.&lt;/p>
&lt;p>In this project, I will create custom embeddings for a vast dataset of over 600,000 medicines, capturing the relationships between their salt compositions. By visualizing these embeddings in Polyglot&amp;rsquo;s 3D space, researchers can identify previously unknown connections between medicines, leading to new insights and breakthroughs. The dynamic and interactive nature of Polyglot will empower researchers to explore these complex relationships in a very efficient and cool way, potentially accelerating the discovery of new drug interactions and therapeutic applications.&lt;/p>
&lt;p>I am really excited to work on this project. Keep following the blogs for further updates!.&lt;/p></description></item><item><title>Assessing the Computational Reproducibility of Jupyter Notebooks</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/depaul/20240618-nbrewer/</link><pubDate>Tue, 18 Jun 2024 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/depaul/20240618-nbrewer/</guid><description>&lt;p>Like so many authors before me, my first reproducibility study and very first academic publication started with the age-old platitude, &amp;ldquo;Reproducibility is a cornerstone of the scientific method.&amp;rdquo; My team and I participated in a competition to replicate the performance improvements promised by a paper presented at last year&amp;rsquo;s Supercomputing conference. We weren&amp;rsquo;t simply re-executing the same experiment with the same cluster; instead, we were trying to confirm that we got similar results on a different cluster with an entirely different architecture. From the very beginning, I struggled to wrap my mind around the many reasons for reproducing computational experiments, their significance, and how to prioritize them. All I knew was that there seemed to be a consensus that reproducibility is important to science and that the experience left me with more questions than answers.&lt;/p>
&lt;p>Not long after that, I started a job as a research software engineer at Purdue University, where I worked heavily with Jupyter Notebooks. I used notebooks and interactive components called widgets to create a web application, which I turned into a reusable template. Our team was enthusiastic about using Jupyter Notebooks to quickly develop web applications because the tools were accessible to the laboratory researchers who ultimately needed to maintain them. I was fortunate to receive the &lt;a href="https://bssw.io/fellows/nicole-brewer" target="_blank" rel="noopener">Better Scientific Software Fellowship&lt;/a> to develop tutorials to teach others how to use notebooks to turn their scientific workflows into web apps. I collected those and other resources and established the &lt;a href="https://www.jupyter4.science" target="_blank" rel="noopener">Jupyter4Science&lt;/a> website, a knowledgebase and blog about Jupyter Notebooks in scientific contexts. That site aims to improve the accessibility of research data and software.&lt;/p>
&lt;p>There seemed to be an important relationship between improved accessibility and reuse of research code and data and computational reproducibility, but I still had trouble articulating it. In pursuit of answers, I moved to sunny Arizona to pursue a History and Philosophy of Science degree. My research falls at the confluence of my prior experiences; I&amp;rsquo;m studying the reproducibility of scientific Jupyter Notebooks. I have learned that questions about reproducibility aren&amp;rsquo;t very meaningful without considering specific aspects such as who is doing the experiment and replication, the nature of the experimental artifacts, and the context in which the experiment takes place.&lt;/p>
&lt;p>I was fortunate to have found a mentor for the Summer of Reproducibility, &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/tanu-malik/">Tanu Malik&lt;/a>, who shares the philosophy that the burden of reproducibility should not solely rest on domain researchers who must develop other expertise. She and her lab have developed &lt;a href="https://github.com/depaul-dice/Flinc" target="_blank" rel="noopener">FLINC&lt;/a>, an application virtualization tool that improves the portability of computational notebooks. Her prior work demonstrated that FLINC provides efficient reproducibility of notebooks and takes significantly less time and space to execute and repeat notebook execution than Docker containers for the same notebooks. My work will expand the scope of this original experiment to include more notebooks to FLINC&amp;rsquo;s test coverage and show robustness across even more diverse computational tasks. We expect to show that infrastructural tools like FLINC improve the success rate of automated reproducibility.&lt;/p>
&lt;p>I&amp;rsquo;m grateful to both the Summer of Reproducibility program managers and my research mentor for this incredible opportunity to further my dissertation research in the context of meaningful collaboration.&lt;/p></description></item><item><title>Exploring Reproducibility in High-Performance Computing Publications with the Chameleon Cloud</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/tuwien/autoappendix/20240615-kkrassni/</link><pubDate>Sat, 15 Jun 2024 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/tuwien/autoappendix/20240615-kkrassni/</guid><description>&lt;p>Hello everyone,&lt;/p>
&lt;p>I&amp;rsquo;m &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/klaus-kra%C3%9Fnitzer/">Klaus Kraßnitzer&lt;/a> and am currently finishing up my Master&amp;rsquo;s degree at
the Technical University of Vienna. This summer, under the guidance of &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/sascha-hunold/">Sascha Hunold&lt;/a>,
I&amp;rsquo;m excited to dive into a project that aims to enhance reproducibility in
high-performance computing research.&lt;/p>
&lt;p>Our project, &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre24/tuwien/autoappendix/">AutoAppendix&lt;/a>, focuses on the rigorous evaluation and potential
automation of Artifact Description (AD) and Artifact Evaluation (AE) appendices
from publications to this year&amp;rsquo;s &lt;a href="https://supercomputing.org/" target="_blank" rel="noopener">Supercomputing Conference (SC)&lt;/a>. Due to a sizeable
chunk of SC publications utlizing &lt;a href="https://chameleoncloud.org/" target="_blank" rel="noopener">Chameleon Cloud&lt;/a>, a
platform known for its robust and scalable experiment setups, the project will
be focused on and creating guidelines (and
potentially, software tools) that users of the Chameleon Cloud can utilize to
make their research more easily reproducible. You can learn more about the project
and read the full proposal &lt;a href="https://drive.google.com/file/d/1J9-Z0WSIqyJpnmd_uxtEm_m4ZIO87dBH/view?usp=drive_link" target="_blank" rel="noopener">here&lt;/a>.&lt;/p>
&lt;p>My fascination with open-source development and research reproducibility was sparked during my undergraduate studies and further nurtured by my role as a teaching assistant. Hands-on projects and academic courses, like those in chemistry emphasizing precise experimental protocols, have deeply influenced my approach to computational science.&lt;/p>
&lt;h2 id="project-objectives">Project Objectives&lt;/h2>
&lt;ol>
&lt;li>&lt;strong>Analyze and Automate&lt;/strong>: Assess current AE/AD appendices submitted for SC24, focusing on their potential for automation.&lt;/li>
&lt;li>&lt;strong>Develop Guidelines&lt;/strong>: Create comprehensive guidelines to aid future SC conferences in artifact submission and evaluation.&lt;/li>
&lt;li>&lt;strong>Build Tools (Conditionally)&lt;/strong>: Develop automation tools to streamline the evaluation process.&lt;/li>
&lt;/ol>
&lt;p>The ultimate aim of the project is to work towards a more efficient, transparent, and
reproducible research environment, and I&amp;rsquo;m committed to making it simpler for
researchers to demonstrate and replicate scientific work. I look forward to
sharing insights and progress as we move forward.&lt;/p>
&lt;p>Thanks for reading, and stay tuned for more updates!&lt;/p></description></item><item><title> Reproducibility in Data Visualization</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/niu/repro-vis/20240614-aryas/</link><pubDate>Fri, 14 Jun 2024 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/niu/repro-vis/20240614-aryas/</guid><description>&lt;p>Hello! My name is &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/arya-sarkar/">Arya Sarkar&lt;/a> and I will be contributing to the research project titled &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre24/niu/repro-vis/">Reproducibility in Data Visualization&lt;/a>, with a focus on investigating and coming up with novel solutions to capture both static and dynamic visualizations from different sources. My project is titled Investigate Solutions for Capturing Visualizations and I am mentored by Prof. &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/david-koop/">David Koop&lt;/a>.&lt;/p>
&lt;p>Open-source has always piqued my interest, but often I found it hard to get started in as a junior in university. I spent a lot of time working with data visualizations but had never dived into the problem of reproducibility before diving into this project. When I saw a plethora of unique and interesting projects during the contribution phase of OSRE-2024, I was confused at the beginning. However, the more I dived into this project and understood the significance of research in this domain to ensure reproducibility, the more did I find myself getting drawn towards it. I am glad to be presented this amazing opportunity to work in the Open-source space as a researcher in reproducibility.&lt;/p>
&lt;p>This project aims to investigate, augment, and/or develop solutions to capture visualizations that appear in formats including websites and Jupyter notebooks. We have a special interest on capturing the state of interactive visualizations and preserving the user interactions required to reach a certain visualization in an interactive environment to ensure reproducibility.&lt;a href="https://drive.google.com/file/d/1SGLd37zBjnAU-eYytr7mYzfselHgxvK1/view?usp=sharing" target="_blank" rel="noopener">My proposal can be viewed here!&lt;/a>&lt;/p></description></item><item><title>Artificial Intelligence Explainability Accountability</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/ucsc/aiealab/20240614-shaburu/</link><pubDate>Fri, 14 Jun 2024 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/ucsc/aiealab/20240614-shaburu/</guid><description>&lt;p>Hey! I&amp;rsquo;m &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/sarthak-chowdharyshaburu/">Sarthak Chowdhary(Shaburu)&lt;/a>, and I am thrilled to share my incredible journey with the Open Source Program Office of UC Santa Cruz! Association as part of Google Summer of Code (GSoC) 2024. This experience marks a pivotal milestone in my career, offering me the chance to delve into an intriguing project while learning from the brightest minds in the open-source community. Allow me to guide you through my adventure thus far, from the nerve-wracking wait for results to the exhilarating commencement of the coding period.&lt;/p>
&lt;p>Before we start here&amp;rsquo;s my &lt;a href="https://drive.google.com/file/d/1BzKi0fXdqCgdK0UEG9zM56W6U5CeuyAP/view?usp=drive_link" target="_blank" rel="noopener">Proposal&lt;/a>.&lt;/p>
&lt;h2 id="pre-gsoc-application">Pre-GSoC Application&lt;/h2>
&lt;p>I had shortlisted 3 Organizations that i was working on &lt;/p>
&lt;ul>
&lt;li>OSPO UC Santa Cruz - Amplifying Research Impact Through Open Source&lt;/li>
&lt;li>CVAT.AI - Computer Vision Data Annotation for AI&lt;/li>
&lt;li>Emory University - Biomedical Research to Advance Medical Care&lt;/li>
&lt;/ul>
&lt;p>On the 1st of May, like many students eagerly anticipating the results of the Google Summer of Code (GSoC) 2024, I found myself glued to my screen, anxiously awaiting the clock to strike 11:30 PM IST. After what felt like an eternity of waiting, I finally received the email that changed everything: I had been selected for GSoC 2024 with the &lt;a href="https://ospo.ucsc.edu" target="_blank" rel="noopener">Open Source Program Office of UC Santa Cruz&lt;/a>!&lt;/p>
&lt;p>The first month of GSoC, known as the community bonding period, is for establishing rapport with the people working on the project. I researched about my mentor Dr. &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/leilani-h.-gilpin/">Leilani H. Gilpin&lt;/a> and build a good rapport with her, who is an Assistant Professor in Computer Science and Engineering and an affiliate of the Science &amp;amp; Justice Research Center at UC Santa Cruz. She is also a part of the AI group @ UCSC and leads the &lt;a href="https://aiea-lab.github.io/" target="_blank" rel="noopener">AI Explainability and Accountability (AIEA) Lab&lt;/a>. Her research focuses on the design and analysis of methods for autonomous systems to explain themselves. Her work has applications to robust decision-making, system debugging, and accountability. Her current work examines how generative models can be used in iterative XAIstress testing. She guided me through the necessary documentation and explained the Project demands and requirements in detail, which was invaluable for my project.&lt;/p>
&lt;h2 id="project">Project&lt;/h2>
&lt;p>The project aims to build a system that is capable of taking some input which will be the student’s code and explaining them their mistakes from low level syntax errors, compilation errors to high level issues such as overloaded variables.&lt;/p>
&lt;p>My &lt;a href="https://drive.google.com/file/d/1BzKi0fXdqCgdK0UEG9zM56W6U5CeuyAP/view?usp=drive_link" target="_blank" rel="noopener">Proposal&lt;/a> aims to create custom novel basic questions and take it up a notch by creating custom drivers for each problem, common drivers to detect low level errors and give baseline explanations for various error cases, combining these drivers to make a robust system and use third-party open source software (like monaco code editor - the editor of the web) where necessary. Write uniform and consistent feedback/explanations for Each coding problem while covering all the possible edge cases and a pipeline which will iterate the test cases and feedbacks. This benchmark suite will be used for testing the system.&lt;/p>
&lt;p>Additionally I plan on building an interface that has a roadmap from basics such as arrays, hashmaps to advanced topics such as trees, heap, backtracking along with progress bars and throws confetti on successful unit tests (important). These will be using the same benchmark suite that will be built under the hood. I will be utilizing Judge0 (open-source online code execution system) for the code execution and Monaco(open-source The Editor of the Web) as the code editor for this.&lt;/p>
&lt;p>&lt;strong>Project goals:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>
&lt;p>Project Objective: By the end of summer the software should be a
novel and robust tool for helping the community of beginner and
advanced programmers alike in learning programming by
hyper-focusing on the mistakes they make and using AI to explain to
them the how, what and why of their code. Provide clear and concise
explanations accompanied by actionable suggestions for debugging
and improvement.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Expected deliverables: A Robust eXplainable AI benchmark suite
which will be used extensively for the undergraduate AI courses and
possibly the Graduate courses as well. Along with anyone interested
in learning programming with the help of personalized AI.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Future work based on project: A beautiful Gamified interface that gets
people excited to learn programming which utilizes the above
benchmark suite would be awesome to build!&lt;/p>
&lt;/li>
&lt;/ul>
&lt;p>When I Started my programming journey (before ChatGPT😨) I personally encountered problems that were way above my skill set and I had no way of knowing so, which used to result in spending countless hours without proper feedback as to where I was going wrong. This project has a real impact on people in an innovative way which I wish I had access to at the start of my Programming journey, so working on it comes from a place of passion. Also this specific project will test my own understanding of programming and spending the summer solidifying it, that too under the
guidance of &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/leilani-h.-gilpin/">Leilani H. Gilpin&lt;/a> is a dream come true for me.&lt;/p></description></item><item><title>Data leakage in applied ML: reproducing examples of irreproducibility</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/nyu/data-leakage/20240614-kyrillosishak/</link><pubDate>Fri, 14 Jun 2024 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/nyu/data-leakage/20240614-kyrillosishak/</guid><description>&lt;p>Hello,&lt;/p>
&lt;p>I am Kyrillos Ishak I am happy to be part of SOR 2024, I am working on &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre24/nyu/data-leakage/">Data leakage in applied ML: reproducing examples of irreproducibility&lt;/a> project. My &lt;a href="https://drive.google.com/file/d/1u9FGQqxlPMhceKwS_NJxIhkIrQVGIp-0/view" target="_blank" rel="noopener">proposal&lt;/a> was accepted.&lt;/p>
&lt;p>I am excited to work with &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/fraida-fund/">Fraida Fund&lt;/a> and &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/mohamed-saeed/">Mohamed Saeed&lt;/a> as my mentors. The objective of the project is to develop educational resources that can be adjusted by professors/instructors to explain specific data leakage problems. This involves ensuring the reproducibility of certain research papers that contain data preprocessing issues, then fixing these issues to demonstrate how they can affect the results.&lt;/p>
&lt;p>Data leakage is a problem caused when information from outside the training dataset is used to create the model. This issue can lead to overly optimistic performance estimates and, ultimately, models that do not perform well on new, unseen data.&lt;/p>
&lt;p>Despite the importance of addressing data leakage, many people from fields not closely related to computer science, are often unfamiliar with it, even if they are aware of best practices for data preprocessing. Developing educational materials on this topic will greatly benefit them.&lt;/p>
&lt;p>I am excited to dive into the topic of data leakage in machine learning. Throughout the summer, I will be sharing regular updates and insightful blog posts on this subject. Stay tuned for more information!&lt;/p></description></item><item><title>Developing Trustworthy Large Language Models</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/ucsc/aiealab/20240514-nikhilwani/</link><pubDate>Fri, 14 Jun 2024 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/ucsc/aiealab/20240514-nikhilwani/</guid><description>&lt;p>Hi! Thanks for stopping by.&lt;/p>
&lt;p>In this first blog post of a series of three, I’d like to introduce myself, my mentor, and my project.&lt;/p>
&lt;p>My name is Nikhil. I am an ML researcher who works at the intersection of NLP, ML, and HCI. I previously worked as a Machine Learning Engineer II at &lt;a href="https://vmware.com/" target="_blank" rel="noopener">VMware&lt;/a> and spent some wonderful summers interning with ML teams at &lt;a href="https://www.nvidia.com/" target="_blank" rel="noopener">NVIDIA&lt;/a> and &lt;a href="https://www.iitb.ac.in/" target="_blank" rel="noopener">IIT Bombay&lt;/a>. I also recently graduated from the &lt;a href="https://usc.edu/" target="_blank" rel="noopener">University of Southern California (USC)&lt;/a> with &lt;a href="https://www.cs.usc.edu/academic-programs/masters/cs_ms_honors/" target="_blank" rel="noopener">honors&lt;/a> in Computer Science and a master&amp;rsquo;s thesis.&lt;/p>
&lt;p>This year at Google Summer of Code (GSoC 24), I will be working on &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre24/ucsc/aiealab/">developing trustworthy large language models&lt;/a>. I’m very grateful to be mentored by &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/leilani-h.-gilpin/">Leilani H. Gilpin&lt;/a> at the &lt;a href="https://aiea-lab.github.io/" target="_blank" rel="noopener">AIEA lab, UC Santa Cruz&lt;/a>. I truly admire the flexibility and ownership she allows me in pursuing my ideas independently within this project. Please feel free to peruse my accepted GSoC proposal &lt;a href="https://drive.google.com/drive/folders/16DHlcHGS7psoFXYc5q2L2-GOsLwIBXl1?usp=drive_link" target="_blank" rel="noopener">here&lt;/a>.&lt;/p>
&lt;p>&lt;strong>Project:&lt;/strong>
My project has a tangible outcome: An open-source, end-to-end, full-stack web app with a hybrid trustworthy LLM in the backend.&lt;/p>
&lt;p>This open-source web app will be a lightweight tool that not only has the ability to take diverse textual prompts and connect with several LLMs and a database but also the capability to gather qualitative and quantitative user feedback. Users will be able to see how this feedback affects the LLMs&amp;rsquo; responses and impacts its reasoning and explanations (xAI). The tool will be thoroughly tested to ensure that the unit tests are passing and there is complete code coverage.&lt;/p>
&lt;p>At the moment, we are investigating LLMs and making them more trustworthy in constraint satisfaction tasks like logical reasoning and misinformation detection tasks. However, our work has applicability in other areas of Responsible AI, such as Social Norms (toxicity detection and cultural insensitivity), Reliability (misinformation, hallucination, and inconsistency), Explainability &amp;amp; Reasoning (lack of interpretability, limited logical, and causal reasoning), Safety (privacy violation and violence), and Robustness (prompt attacks and distribution shifts).&lt;/p>
&lt;p>&lt;strong>Impact:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>Responsible AI research teams across industry and academia can use this as a boilerplate for their user study projects.&lt;/li>
&lt;li>Diverse PhD students and academic researchers looking to study LLM and user interaction research will find this useful.&lt;/li>
&lt;li>LLM alignment researchers and practitioners can find this resourceful as user feedback affects the inherent rewards model of the internal LLMs.&lt;/li>
&lt;li>Explainable AI (xAI) researchers can find value in the explanations that this tool generates, which reveal interpretable insights into how modern LLMs think and use their memory.
These are just a few use cases; however, there are several others that we look forward to describing in the upcoming posts.&lt;/li>
&lt;/ul>
&lt;p>This was my first blog in the series of three for the UC OSPO. Stay tuned for the upcoming blogs, which will detail my progress at the halfway mark and the final one concluding my work.&lt;/p>
&lt;p>If you find this work interesting and would love to share your thoughts, I am happy to chat! :) Feel free to connect on &lt;a href="https://www.linkedin.com/in/nikhilwani/" target="_blank" rel="noopener">LinkedIn&lt;/a> and mention that you are reaching out from this blog post.&lt;/p>
&lt;p>It is great to meet the UC OSPO community, and thanks for reading. Bye for now.&lt;/p></description></item><item><title>Enhancing Usability and Expandability of the Open Sensing Platform project</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/ucsc/osp/20240614_ahmedfalah01/</link><pubDate>Fri, 14 Jun 2024 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/ucsc/osp/20240614_ahmedfalah01/</guid><description>&lt;p>Greetings everyone,&lt;/p>
&lt;p>I am Ahmed Falah and I am delighted to be part of the 2024 Google Summer of Code program, where I am contributing to the &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre24/ucsc/osp">Open Sensing Platform project&lt;/a>.&lt;/p>
&lt;p>My &lt;a href="https://drive.google.com/file/d/1jD2BvRBaCHfiibEcR5sJKr9GWK51RxD7/view?usp=sharing" target="_blank" rel="noopener">proposal&lt;/a> was accepted, and I am fortunate to have &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/colleen-josephson/">Colleen Josephson&lt;/a> and &lt;a href="mailto:jtmadden@ucsc.edu">John Madden&lt;/a> as my mentors. The objective of my project is to enhance usability and expandability of the Open Sensing Platform, a hardware solution for deploying sensor networks in outdoor environments. This platform utilizes low-power, long-range communication to transmit data from various sensors to a visualization dashboard. While the platform effectively collects data, its configuration process requires modifying source code to make it more user-friendly. My first steps to enhance usability of the project:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Improve User Interface (UI):&lt;/strong> Develop a user-friendly interface to interact with the platform, enabling researchers to configure the device without modifying code.&lt;/li>
&lt;li>&lt;strong>Conversion of user configuration:&lt;/strong> convert user configuration data to the Protobuf format for efficient storage and transmission.&lt;/li>
&lt;/ul>
&lt;p>Additionally, I will explore updating the NVRAM functions to interact with Protobuf messages instead of directly writing/reading raw data to NVRAM. I will also implement functions to serialize user configuration data into a Protobuf message and deserialize the message back into a data structure for use within the firmware.&lt;/p>
&lt;p>I will be posting regular updates and informative blogs throughout the summer, so stay tuned!&lt;/p></description></item><item><title>Heterogeneous Graph Neural Networks for I/O Performance Bottleneck Diagnosis</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/lbl/aiio/20240614-mahdi/</link><pubDate>Fri, 14 Jun 2024 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/lbl/aiio/20240614-mahdi/</guid><description>&lt;p>Hello, I am &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/mahdi-banisharifdehkordi/">Mahdi Banisharifdehkordi&lt;/a>, a Ph.D. student in Computer Science at Iowa State University, specializing in Artificial Intelligence. This summer, I will be working on the project &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre24/lbl/aiio/">AIIO / Graph Neural Network&lt;/a> under the mentorship of &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/bin-dong/">Bin Dong&lt;/a> and Suren Byna.&lt;/p>
&lt;p>High-Performance Computing (HPC) applications often face performance issues due to I/O bottlenecks. Manually identifying these bottlenecks is time-consuming and error-prone. My project aims to enhance the AIIO framework by integrating a Graph Neural Network (GNN) model to automatically diagnose I/O performance bottlenecks at the job level. This involves developing a comprehensive data pre-processing pipeline, constructing and validating a tailored GNN model, and rigorously testing the model&amp;rsquo;s accuracy using test cases from the AIIO dataset.&lt;/p>
&lt;p>Through this project, I seek to provide a sophisticated, AI-driven approach to understanding and improving I/O performance in HPC systems, ultimately contributing to more efficient and reliable HPC applications.&lt;/p></description></item><item><title>StatWrap: Automated Reproducibility Checklists Generation</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/ucsc/statwrap/20240614-adi/</link><pubDate>Fri, 14 Jun 2024 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/ucsc/statwrap/20240614-adi/</guid><description>&lt;p>Namaste🙏🏻! I am &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/adi-akhilesh-singh/">Adi Akhilesh Singh&lt;/a>, currently pursuing a degree in Computer Science and Engineering at IIT(BHU). This summer, I will be working on the &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre24/northwestern/statwrap/">StatWrap: Automated Reproducibility Checklists Generation&lt;/a> project under the mentorship of &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/luke-rasmussen/">Luke Rasmussen&lt;/a>. You can view my &lt;a href="https://drive.google.com/file/d/1xV7eHL9lIWGKueQJxBks6OB_rcXCr8JY/view?usp=sharing" target="_blank" rel="noopener">project proposal&lt;/a> for more details.&lt;/p>
&lt;p>My project aims to integrate customizable reproducibility checklists into StatWrap, using metadata and user input to automate their generation. The goal is to enhance the reproducibility of research projects by providing researchers with structured and comprehensive checklists to ensure their work is reproducible.&lt;/p>
&lt;p>Stay tuned for updates on my progress in the coming weeks! 🚀&lt;/p></description></item><item><title>LLM Assistant for OpenROAD - Data Engineering and Testing</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/ucsd/openroad/20240613-aviral/</link><pubDate>Thu, 13 Jun 2024 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/ucsd/openroad/20240613-aviral/</guid><description>&lt;p>Hello! My name is Aviral Kaintura, and I will be contributing to &lt;a href="https://github.com/The-OpenROAD-Project/OpenROAD" target="_blank" rel="noopener">OpenROAD&lt;/a>, a groundbreaking open-source toolchain for digital integrated circuit automation (RTL to GDSII) during &lt;a href="https://summerofcode.withgoogle.com/" target="_blank" rel="noopener">GSoC 2024&lt;/a>.&lt;/p>
&lt;p>My project, &lt;a href="https://summerofcode.withgoogle.com/programs/2024/projects/J8uAFNCu" target="_blank" rel="noopener">LLM Assistant for OpenROAD - Data Engineering and Testing&lt;/a>, is jointly mentored by &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/indira-iyer/">Indira Iyer&lt;/a> and &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/jack-luar/">Jack Luar&lt;/a>.&lt;/p>
&lt;p>The aim of this project is to develop a chat assistant to improve the user experience with OpenROAD. My focus will be on developing a well-curated dataset from OpenROAD&amp;rsquo;s knowledge base. This dataset will be fundamental for another project led by &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/palaniappan-r/">Palaniappan R&lt;/a>, which involves building the chatbot&amp;rsquo;s architecture. It will be used for training and validating the model and ensuring efficient context retrieval to generate accurate user responses, aiding in troubleshooting, installation, and other common issues to reduce the maintainers&amp;rsquo; workload.&lt;/p>
&lt;p>In addition to dataset creation, I will be working on testing and evaluation. This includes developing metrics for model evaluation, incorporating both human and automated techniques.&lt;/p>
&lt;p>Our human evaluation framework will utilize chatbot feedback for valuable insights, enhancing the model and dataset. An automated batch testing application is also used to further enhance the evaluation process.&lt;/p>
&lt;p>Here is an early build of the evaluation framework.
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="Screenshots" srcset="
/report/osre24/ucsd/openroad/20240613-aviral/image_hu3257e6557164f1033894cc91760eaec1_709148_ccb0a69833aa5c774f30b616a038edd6.webp 400w,
/report/osre24/ucsd/openroad/20240613-aviral/image_hu3257e6557164f1033894cc91760eaec1_709148_25ece2ab19d666f60342ed2d6dcb217f.webp 760w,
/report/osre24/ucsd/openroad/20240613-aviral/image_hu3257e6557164f1033894cc91760eaec1_709148_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/ucsd/openroad/20240613-aviral/image_hu3257e6557164f1033894cc91760eaec1_709148_ccb0a69833aa5c774f30b616a038edd6.webp"
width="760"
height="760"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
By leveraging advanced data engineering and testing methodologies, we aim to build an assistant that combines high accuracy with optimal response times. Additionally, we will collaborate with research teams at NYU and ASU to contribute to the research on AI-based chat assistants for electronic design automation.&lt;/p>
&lt;p>I am thrilled to be part of this journey and look forward to making a meaningful impact on the OpenROAD project.&lt;/p>
&lt;p>Stay tuned for more updates on the project!&lt;/p></description></item><item><title>LLM Assistant for OpenROAD - Model Architecture and Prototype</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/ucsd/openroad/20240613-palaniappan-r/</link><pubDate>Thu, 13 Jun 2024 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/ucsd/openroad/20240613-palaniappan-r/</guid><description>&lt;p>Hi there! &lt;/p>
&lt;p>I’m &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/palaniappan-r/">Palaniappan R&lt;/a>, currently an undergraduate student at the Birla Institute of Technology &amp;amp; Science, Pilani, India.&lt;/p>
&lt;p>I&amp;rsquo;ll be working on the &lt;a href="https://summerofcode.withgoogle.com/programs/2024/projects/DSo6kvA5" target="_blank" rel="noopener">LLM Assistant for OpenROAD - Model Architecture and Prototype&lt;/a> project, under the mentorship of &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/indira-iyer/">Indira Iyer&lt;/a> and &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/jack-luar/">Jack Luar&lt;/a>. &lt;/p>
&lt;p>My project aims to develop the architecture for a chat assistant built for OpenROAD and its native flow, designed to assist beginners and experienced users by giving easy access to existing resources, offering troubleshooting assistance, and providing fast and accurate responses to common questions. I plan to do this by leveraging state-of-the-art retrieval and fine-tuning techniques.&lt;/p>
&lt;p>As part of this project, I will be working alongside another &lt;a href="https://summerofcode.withgoogle.com/programs/2024/projects/J8uAFNCu" target="_blank" rel="noopener">project&lt;/a> to build and test on a valid dataset for training and deployment. We will also be collaborating with other research teams at NYU and ASU, working on similar projects related to OpenROAD chat assistants and flow generation using Generative AI. Our primary objective is to minimize support overhead, improve user experience by reducing response times, and provide access to updated information about OpenROAD.&lt;/p>
&lt;p>Upon completion, my project will offer a viable chat assistant architecture as part of OpenROAD that benefits both the users and tool developers of OpenROAD.&lt;/p>
&lt;p>An &lt;a href="https://github.com/The-OpenROAD-Project/ORAssistant" target="_blank" rel="noopener">early prototype&lt;/a> developed along with a human evaluation framework shows promising results.
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="Architecture" srcset="
/report/osre24/ucsd/openroad/20240613-palaniappan-r/img2_hud6fda06af55d21d584ae88c38f077b08_207913_30376cbd7d90ae65683883a4dd83751d.webp 400w,
/report/osre24/ucsd/openroad/20240613-palaniappan-r/img2_hud6fda06af55d21d584ae88c38f077b08_207913_f98f5137b9b17acfa41102f49130d427.webp 760w,
/report/osre24/ucsd/openroad/20240613-palaniappan-r/img2_hud6fda06af55d21d584ae88c38f077b08_207913_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/ucsd/openroad/20240613-palaniappan-r/img2_hud6fda06af55d21d584ae88c38f077b08_207913_30376cbd7d90ae65683883a4dd83751d.webp"
width="760"
height="157"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;p>Here are some responses generated by the prototype,
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="Examples" srcset="
/report/osre24/ucsd/openroad/20240613-palaniappan-r/img1_hu1368e4ffa06e7513186f849074288e92_2440307_418c15850b5c6c2573a9082ca1a5a9dc.webp 400w,
/report/osre24/ucsd/openroad/20240613-palaniappan-r/img1_hu1368e4ffa06e7513186f849074288e92_2440307_18f9f9a9254bedf140c7ec005c7cc5b9.webp 760w,
/report/osre24/ucsd/openroad/20240613-palaniappan-r/img1_hu1368e4ffa06e7513186f849074288e92_2440307_1200x1200_fit_q75_h2_lanczos.webp 1200w"
src="https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/ucsd/openroad/20240613-palaniappan-r/img1_hu1368e4ffa06e7513186f849074288e92_2440307_418c15850b5c6c2573a9082ca1a5a9dc.webp"
width="760"
height="671"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;p>I&amp;rsquo;m excited about the potential of ORAssistant as part of the OpenROAD tool suite to accelerate innovation in EDA and chip design by utilizing open-source tools along with Generative AI.&lt;/p>
&lt;p>Stay tuned for more updates!&lt;/p></description></item><item><title>Memory Compiler in OpenROAD</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/ucsc/openroad/20240613-yashkumar3066/</link><pubDate>Thu, 13 Jun 2024 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/ucsc/openroad/20240613-yashkumar3066/</guid><description>&lt;p>Greetings! I&amp;rsquo;m Yash Kumar working on the &lt;a href="project/osre24/openroad/openroad/">OpenROAD Memory Compiler Project&lt;/a> for which my &lt;a href="https://docs.google.com/document/d/1EGxLSYzVWMtBHmT6m3QQTBA_rqJnMB9qfqR51GSb71k/edit?usp=sharing" target="_blank" rel="noopener">proposal&lt;/a> under the mentorship of &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/matt-liberty/">Matt&lt;/a> and &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/austin-rovinski/">Austin&lt;/a> aims to enhance the OpenROAD flow by integrating a DFFRAM generator that extensively uses the OpenDB database to build and layout various memory components like bits, bytes, and 32x32 configurations and more. Taking inspiration from the work of the &lt;a href="https://github.com/AUCOHL/DFFRAM" target="_blank" rel="noopener">AUCOHL repository’s DFFRAM memory compiler&lt;/a>,&lt;/p>
&lt;p>The goal is to develop a DFF/Latch-based RAM that utilizes standard cell libraries. The compiler will generate different views (HDL netlist, functional models, LEF, DEF, Timing, etc.) for specified size configurations, targeting compact design and optimal routing. The compiler should work across various PDKs satrting with Sky130. My initial works tries to test the Bit and Byte level design.&lt;/p></description></item><item><title>Optimizing Scientific Data Streaming: Developing Reproducible Benchmarks for High-Speed Memory-to-Memory Data Transfer over SciStream</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/anl/scistream/20240613-kraislaik/</link><pubDate>Thu, 13 Jun 2024 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/anl/scistream/20240613-kraislaik/</guid><description>&lt;p>Hello, I am Acheme, currently a PhD student in Computer Engineering at Clemson University. I will be working on &lt;a href="https://github.com/ucsc-ospo/ucsc-ospo.github.io/blob/main/content/project/osre24/anl/scistream/index.md" target="_blank" rel="noopener">SciStream&lt;/a>, mentored by &lt;a href="https://github.com/ucsc-ospo/ucsc-ospo.github.io/blob/main/content/authors/chungmiranda/_index.md" target="_blank" rel="noopener">Joaquin Chung&lt;/a> and &lt;a href="https://github.com/ucsc-ospo/ucsc-ospo.github.io/blob/main/content/authors/fcastro/_index.md" target="_blank" rel="noopener">Flavio Castro&lt;/a> over this summer. Here is my &lt;a href="https://docs.google.com/document/d/1w78mE484kfDmWygPCausv6aZxUQwGeI07ohCjvE3TYk" target="_blank" rel="noopener">proposal&lt;/a> - for this project.&lt;/p>
&lt;p>This project aims to develop SciStream-bench, a set of benchmarks and artifacts designed to precisely evaluate the performance of scientific streaming applications across diverse traffic patterns when running over the SciStream framework.&lt;/p>
&lt;p>I am excited to meet everyone and contribute to this project!&lt;/p></description></item><item><title>Reproducibility in Data Visualization</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/niu/repro-vis/20240613-triveni5/</link><pubDate>Thu, 13 Jun 2024 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/niu/repro-vis/20240613-triveni5/</guid><description>&lt;p>Hello everyone!&lt;/p>
&lt;p>I&amp;rsquo;m Triveni, a Master&amp;rsquo;s student in Computer Science at Northern Illinois University (NIU). When I came across the OSRE 2024 project &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre24/niu/repro-vis/">Categorize Differences in Reproduced Visualizations&lt;/a> focusing on data visualization reproducibility, I was excited because it aligned with my interest in data visualization. While my initial interest was in geospatial data visualization, the project&amp;rsquo;s goal of ensuring reliable visualizations across all contexts really appealed to me. So, I actively worked on understanding the project’s key concepts and submitted my proposal &lt;a href="https://drive.google.com/file/d/1R1c23oUC7noZo5NrUzuDbjwo0OqbkrAK/view" target="_blank" rel="noopener">My proposal can be viewed here&lt;/a> under mentorship of &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/david-koop/">David Koop&lt;/a> to join the project.&lt;/p>
&lt;h2 id="early-steps-and-challenges">Early Steps and Challenges:&lt;/h2>
&lt;p>I began working on the project on May 27th, three weeks ago. Setting up the local environment initially presented some challenges, but I persevered and successfully completed the setup process. The past few weeks have been spent exploring the complexities of reproducibility in visualizations, particularly focusing on capturing the discrepancies that arise when using different versions of libraries to generate visualizations. Working with Dr. David Koop as my mentor has been an incredible experience. Our weekly report meetings keep me accountable and focused. While exploring different algorithms and tools to compare visualizations can be challenging at times, it&amp;rsquo;s a fantastic opportunity to learn cutting-edge technologies and refine my problem-solving skills.&lt;/p>
&lt;h2 id="looking-ahead">Looking Ahead:&lt;/h2>
&lt;p>I believe this project can make a valuable contribution to the field of reproducible data visualization. By combining automated comparison tools with a user-centric interface, we can empower researchers and data scientists to make informed decisions about the impact of visualization variations. In future blog posts, I&amp;rsquo;ll share more about the specific tools and techniques being used, and how this framework will contribute to a more reliable and trustworthy approach to data visualization reproducibility.&lt;/p>
&lt;p>Stay tuned!&lt;/p>
&lt;p>I&amp;rsquo;m excited to embark on this journey and share my progress with all of you.&lt;/p></description></item><item><title>Stream Processing support for FasTensor</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/lbl/fastensor/20240613-aditya_narayan/</link><pubDate>Thu, 13 Jun 2024 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/lbl/fastensor/20240613-aditya_narayan/</guid><description>&lt;p>Hi, I&amp;rsquo;m Aditya Narayan,👋&lt;/p>
&lt;p>I&amp;rsquo;m a frequent visitor to the town square of theoretical CS, operations (Ops), and robust high-performance systems. Sometimes I indulge myself with insights on &lt;a href="https://www.science.org/doi/10.1126/science.aam9868" target="_blank" rel="noopener">Computing and Biology&lt;/a>, and other times I enjoy the accounts of minefield experiences in the &lt;a href="https://www.youtube.com/watch?v=tDacjrSCeq4" target="_blank" rel="noopener">systems world&lt;/a>. Luckily, this summer, OSRE offered an opportunity that happened to be at the perfect intersection of my interests.&lt;/p>
&lt;p>This summer, I will be working on a scientific computing library called FasTensor that offers a parallel computing structure called Stencil, widely popular in the scientific computing world to solve PDEs for Physical Simulations and Convolutions on Signals, among its many uses.
I am excited to introduce my mentors, Dr. &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/bin-dong/">Bin Dong&lt;/a> and Dr. &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/john-wu/">John Wu&lt;/a> of the &lt;a href="https://crd.lbl.gov/divisions/scidata/sdm/" target="_blank" rel="noopener">Scientific Data Management Group&lt;/a> at Lawrence Berkeley National Laboratory (LBNL). They bring invaluable expertise to the project.&lt;/p>
&lt;p>They recognized the need for a tensor processing library that provided dedicated support for big datasets with inherent structural locality, often found in the scientific computing world, which was lacking in popular open-source MapReduce or Key-Value based frameworks.&lt;/p>
&lt;p>More often than not, the operations performed on these datasets are composed of computations involving neighboring elements. This motivated the development of the FasTensor library.&lt;/p>
&lt;p>I will be working on providing a Stream Processing interface that enables online data processing of large-scale datasets as they arrive from Data Producers. The project focuses on offering rich interfaces for managing and composing streams, supporting common scientific data formats like HDF5, and integrating fault tolerance and reliability mechanisms.&lt;/p>
&lt;p>I am thrilled to work on the FasTensor project because I believe it has the potential to make a significant impact by enabling researchers to implement a rich set of computations on their big datasets in an easy and intuitive manner.&lt;/p>
&lt;p>After all, FasTensor has just one simple paradigm: A -&amp;gt; Transform(F(x), B),&lt;/p>
&lt;p>and it handles all the behind-the-scenes grunt work of handling big datasets so you can focus on your research.&lt;/p>
&lt;p>Stay tuned for updates and feel free to &lt;a href="https://github.com/BinDong314/FasTensor" target="_blank" rel="noopener">collaborate&lt;/a>!&lt;/p></description></item><item><title>Automatic reproducibility of COMPSs experiments through the integration of RO-Crate in Chameleon</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/intel/20240612-architd/</link><pubDate>Wed, 12 Jun 2024 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/intel/20240612-architd/</guid><description>&lt;p>Hello everyone
I&amp;rsquo;am Archit from India. An undergraduate student at the Indian Institute of Technology, Banaras Hindu University, IIT (BHU), Varanasi. As part of the &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre24/bsc/ro-crate-compss/">Automatic reproducibility of COMPSs experiments through the integration of RO-Crate in Chameleon&lt;/a> my &lt;a href="https://drive.google.com/file/d/1qY-uipQZPox144LD4bs05rn3islfcjky/view" target="_blank" rel="noopener">proposal&lt;/a> under mentorship of &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/raul-sirvent/">Raül Sirvent&lt;/a> aims to develop a service that facilitates the automated replication of COMPSs experiments within the Chameleon infrastructure.&lt;/p>
&lt;h2 id="about-the-project">About the project:&lt;/h2>
&lt;p>The project proposes to create a service that will have the capability to take a COMPSs crate (an artifact adhering to the RO-Crate specification) and, through analysis of the provided metadata construct a Chameleon-compatible image for replicating the experiment on the testbed.&lt;/p>
&lt;h2 id="how-it-all-started">How it all started&lt;/h2>
&lt;p>This journey began amidst our college&amp;rsquo;s cultural fest, in which I was participating, just 15 days before the proposal submission deadline. Many of my friends had been working for months to get selected for GSoC. I didn’t think I could participate this year because I was late, so I thought, &amp;ldquo;Better luck next year.&amp;rdquo; But during the fest, I kept hearing about UC OSPO and that a senior had been selected within a month. So, I was in my room when my friend told me, &amp;ldquo;What&amp;rsquo;s the worst that can happen? Just apply,&amp;rdquo; and so I did. I chose this project and wrote my introduction in Slack without knowing much. After that, it&amp;rsquo;s history. I worked really hard for the next 10 days learning about the project, making the proposal, and got selected.&lt;/p>
&lt;h2 id="first-few-weeks">First few weeks:&lt;/h2>
&lt;p>I started the project a week early from June 24, and it’s been two weeks since. The start was a bit challenging since it required setting up a lot of things on my local machine. For the past few weeks, the majority of my time has been dedicated to learning about COMPSs, RO-Crate, and Chameleon, the three technologies this project revolves around. The interaction with my mentor has also been great. From the weekly report meetings to the daily bombardment of doubts by me, he seems really helpful.
It is my first time working with Chameleon or any cloud computing software, so it can be a bit overwhelming sometimes, but it is getting better with practice.&lt;/p>
&lt;p>Stay tuned for progress in the next blog!!&lt;/p></description></item><item><title>FEP-Bench: Benchmarking for Enhanced Feature Engineering and Preprocessing in Machine Learning</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/uchicago/fep_bench/20240612-jaycezhu/</link><pubDate>Wed, 12 Jun 2024 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/uchicago/fep_bench/20240612-jaycezhu/</guid><description>&lt;p>Hello, I&amp;rsquo;m &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/lihaowen-jayce-zhu/">Lihaowen (Jayce) Zhu&lt;/a>, currently pursuing my Master of Science in Computer Science at the University of Chicago. I will be spending my
summer working on the project &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre24/uchicago/fep_bench/">FEP-Bench: Benchmarking for Enhanced Feature Engineering and Preprocessing in Machine Learning&lt;/a> under the mentorship of &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/yuyang-roy-huang/">Yuyang (Roy) Huang&lt;/a>
and &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/swami-sundararaman/">Swami Sundararaman&lt;/a>, my &lt;a href="https://docs.google.com/document/d/1ta-AgK6Dom25OingMkIR1tRzd2Yk78PZa776Wb3oFQ8/edit?usp=sharing" target="_blank" rel="noopener">proposal&lt;/a>.&lt;/p>
&lt;p>The landscape of machine learning (ML) is profoundly impacted by the initial stages of feature engineering and data preprocessing. This phase, critical for the success of ML projects, is often the most time-consuming, representing about 80% of the effort in typical ML workflows. The FEP-Bench project proposes to address the significant bottlenecks encountered during this phase, particularly focusing on the challenges posed by data retrieval from data lakes and computational inefficiencies in data operations. By exploring innovative caching, prefetching, and heuristic strategies, this proposal aims to optimize the preprocessing workflow, thereby enhancing efficiency and reducing the required resources of ML projects.&lt;/p></description></item><item><title>First Steps in Enhancing User Experience Reproducibility through TROVI Redesign</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/uchicago/chameleontroviredesign/20240612-aliciaem/</link><pubDate>Wed, 12 Jun 2024 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/uchicago/chameleontroviredesign/20240612-aliciaem/</guid><description>&lt;p>Hello! My name is &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/alicia-esquivel-morel/">Alicia Esquivel Morel&lt;/a>, and I&amp;rsquo;m a graduate research assistant at the University of Missouri – Columbia, pursuing a PhD in Computer Science. This summer, I&amp;rsquo;m working on a project to &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre24/uchicago/trovi/">improve user experience reproducibility through a redesign of TROVI&lt;/a>, as part of the Summer of Reproducibility (SoR) program. Excited to be working with two fabulous mentors; &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/kate-keahey/">Kate Keahey&lt;/a>, and &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/mark-powers/">Mark Powers&lt;/a>.&lt;/p>
&lt;p>&lt;strong>Research Reproducibility with a TROVI Redesign&lt;/strong>&lt;/p>
&lt;p>Researchers constantly face challenges replicating experiments due to limitations in current tools. TROVI, a platform designed to facilitate experiment replication, can be hindered by hard to follow interfaces and difficulties integrating code and data. This leads to confusion and frustration.&lt;/p>
&lt;p>My SoR project tackles these issues by redesigning TROVI to enhance user experience reproducibility. Imagine a user-friendly platform where uploading code, sharing data, and collaborating with colleagues becomes effortless.&lt;/p>
&lt;p>&lt;strong>The Redesign&amp;rsquo;s Goals&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Enhanced User Experience:&lt;/strong> Inspired by user-friendly platforms like Google Colab, we&amp;rsquo;ll simplify TROVI&amp;rsquo;s interface for intuitive navigation and ease of use.&lt;/li>
&lt;li>&lt;strong>Uploads and Sharing:&lt;/strong> Uploading code and data, as well as collaborating with researchers are key goals. Integration with platforms like GitHub will further streamline collaboration.&lt;/li>
&lt;li>&lt;strong>Continuous Improvement:&lt;/strong> A built-in feedback loop will allow users to provide input and suggestions, ensuring TROVI constantly evolves based on user needs.&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>The Road Ahead&lt;/strong>&lt;/p>
&lt;p>We&amp;rsquo;re at the beginning of the redesign process. In the next blog post, I&amp;rsquo;ll describe the project&amp;rsquo;s specific goals and the deliverables you can expect.&lt;/p>
&lt;p>&lt;strong>Stay tuned to see how TROVI is built for reproducible research!!&lt;/strong>&lt;/p></description></item><item><title>FSA: Benchmarking Fail-Slow Algorithms</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/uchicago/fsa-benchmarking/20240612-xikangsong/</link><pubDate>Wed, 12 Jun 2024 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/uchicago/fsa-benchmarking/20240612-xikangsong/</guid><description>&lt;p>Hi everyone! I&amp;rsquo;m Xikang, a master&amp;rsquo;s CS student at UChicago. As a part of &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre24/uchicago/failslowalgorithms/">FSA benchmarking Project&lt;/a>, I&amp;rsquo;m thrilled to be a contributor to OSRE 2024, collaborating with Kexin Pei, the assistant Professor of Computer Science at Uchicago and Ruidan, a talented PhD student at UChicago.&lt;/p>
&lt;p>This summer, I will focus on integrating some advanced ML into our RAID slowdown analysis. Our aim is to assess whether LLMs can effectively identify RAID slowdown issues and to benchmark their performance against our current machine learning algorithms. We will test the algorithms on Chameleon Cloud and benchmark them.&lt;/p>
&lt;p>Additionally, we will explore optimization techniques to enhance our pipeline and improve response quality. We hope this research will be a start point for future work, ultilizing LLMs to overcome the limitations of existing algorithms and provide a comprehensive analysis that enhances RAID and other storage system performance.&lt;/p>
&lt;p>I&amp;rsquo;m excited to work with all of you and look forward to your suggestions.
if you are interested, Here is my &lt;a href="https://docs.google.com/document/d/1KpodnahgQDNf1-05TF2BdYXiV0lT_oYEnC0oaatHRoc/edit?usp=sharing" target="_blank" rel="noopener">proposal&lt;/a>&lt;/p></description></item><item><title>ML-Powered Problem Detection in Chameleon</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/uchicago/chameleoncloud/20240612-syed/</link><pubDate>Wed, 12 Jun 2024 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/uchicago/chameleoncloud/20240612-syed/</guid><description>&lt;p>Hello, I am &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/syed-mohammad-qasim/">Syed Mohammad Qasim&lt;/a>, a PhD candidate in Electrical and Computer Engineering at Boston University. I will be spending my
summer working on the project &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre24/uchicago/ml_detect_chameleon/">ML-Powered Problem Detection in Chameleon&lt;/a> under the mentorship of &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/ayse-coskun/">Ayse Coskun&lt;/a>
and &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/michael-sherman/">Michael Sherman&lt;/a>.&lt;/p>
&lt;p>Currently, Chameleon Cloud monitors sites at the Texas Advanced Computing Center (TACC), University of Chicago,
Northwestern University, and Argonne National Lab. They collect metrics using Prometheus at each site and feed them
all to a central Mimir cluster. All the logs go to a central Loki, and Grafana is used to visualize and set alerts.
Chameleon currently collects around 3000 metrics. Manually reviewing and setting alerts on them is time-consuming
and labor-intensive. This project aims to help Chameleon operators monitor their systems more effectively and improve overall
reliability by creating an anomaly detection service that can augment the existing alerting framework.&lt;/p></description></item><item><title>OpenMLEC: Open-source MLEC implementation with HDFS on top of ZFS</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/uchicago/openmlec/202406012-jiajunmao/</link><pubDate>Wed, 12 Jun 2024 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/uchicago/openmlec/202406012-jiajunmao/</guid><description>&lt;p>Hello, I&amp;rsquo;m &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/jiajun-mao/">Jiajun Mao&lt;/a>, a BS/MS student at the University of Chicago studying Computer Science. I will be spending this summer working on the project &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre24/ornl/openmlec/">OpenMLEC: Open-source MLEC implementation with HDFS on top of ZFS&lt;/a> under the mentorship of &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/meng-wang/">Meng Wang&lt;/a>
and &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/anjus-george/">Anjus George&lt;/a>, my &lt;a href="https://docs.google.com/document/d/1nYgNlGdl0jUgW8avpu671oRpMoxaZHZPwlDfBNXRVro/edit?usp=sharing" target="_blank" rel="noopener">proposal&lt;/a>.&lt;/p>
&lt;p>How to increase data’s durability and reliability while decreasing storage cost have always been interesting topics of research. Erasure coded storage systems in recent years have been seen as strong candidates to replace replications for colder storage tiers. In the paper “Design Considerations and Analysis of Multi-Level Erasure Coding in Large-Scale Data Centers”, the authors explored using theory and simulation on how a multiple tiered erasure coded system can out-perform systems using single level erasure codes in areas such as encoding throughput and network bandwidth consumed for repair, addressing a few pain points in adopting erasure coded storage systems. I will be implementing the theoretical and simulation result of this paper by building on top of HDFS and ZFS, and benchmarking the system performance.&lt;/p>
&lt;p>The project will aim to achieve&lt;/p>
&lt;ul>
&lt;li>HDFS understanding the underlying characteristics of ZFS as the filesystem&lt;/li>
&lt;li>HDFS understanding the failure report from ZFS, and use new and special MLEC repair logic to execute parity repair&lt;/li>
&lt;li>ZFS will be able to accept repair data from HDFS to repair a suspended pool caused by catastrophic data corruption&lt;/li>
&lt;/ul></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><item><title>LAST: ML in Detecting and Addressing System Drift</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/anl/last/20240611-joanna/</link><pubDate>Tue, 11 Jun 2024 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/anl/last/20240611-joanna/</guid><description>&lt;p>Hello! I am Joanna, currently an undergraduate student studying Computer Science and Applied Mathematics and Statistics at Johns Hopkins University. I will be working on &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre24/anl/last">ML in Detecting and Addressing System Drift&lt;/a>, mentoring by &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/ray-andrew-sinurat/">Ray Andrew Sinurat&lt;/a> and &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/sandeep-madireddy/">Sandeep Madireddy&lt;/a> over this summer. Here is my &lt;a href="https://drive.google.com/file/d/10RJhuOBMjIKQSg1PklL3ukDlBHUjdt2i/view?usp=sharing" target="_blank" rel="noopener">proposal&lt;/a> for this project.&lt;/p>
&lt;p>This project aims to build a data analysis pipeline to analyze various datasets, both system and non-system, that have shown notable changes over time. The goal is to understand the characteristics of these datasets(specifically drifts), evaluate the efficacy of Aging Detection Algorithms, and identify their limitations in computer system tasks.&lt;/p>
&lt;p>I am excited to meet everyone and contribute to this project!&lt;/p></description></item><item><title>Developing a Pipeline to Benchmark Drift Management Strategies</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/anl/last/20240610-williamn/</link><pubDate>Mon, 10 Jun 2024 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/anl/last/20240610-williamn/</guid><description>&lt;p>With guidance from mentors &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/ray-andrew-sinurat/">Ray Andrew Sinurat&lt;/a> and &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/sandeep-madireddy/">Sandeep Madireddy&lt;/a> under the &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre24/anl/last">LAST&lt;/a> project, I aim to develop a pipeline to benchmark the efficacy of various drift management algorithms.&lt;/p>
&lt;p>Despite the abundance of literature on this subject, reproducibility remains a challenge due to the lack of available source code. As such, by crafting this pipeline, I aim to create standardized platform for researchers and practitioners to compare several state-of-the-art drift management approaches. Through rigorous testing and benchmarking, we seek to identify the most effective algorithms across a spectrum of drift scenarios, including gradual, sudden, and recurring drift.&lt;/p>
&lt;p>This final deliverable of this pipeline will be packaged into a Chameleon Trovi Artifact. The pipeline will also be made easily extensible to cater to additional datasets or any custom-made drift-mitigation methods. This is my &lt;a href="https://docs.google.com/document/d/1biPUKMiKrNSegPVFDIyhjKkYeyiyD4hYqQghdsaU4IE/edit?usp=sharing" target="_blank" rel="noopener">proposal&lt;/a> for the project.&lt;/p>
&lt;p>See you around!&lt;/p></description></item><item><title>Reproducing and benchmarking scalability bugs hiding in cloud systems</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/osu/scalerep/20240610-shuangliang/</link><pubDate>Mon, 10 Jun 2024 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/osu/scalerep/20240610-shuangliang/</guid><description>&lt;p>Hello there!&lt;/p>
&lt;p>I am Shuang Liang, a third-year student studying Computer and Information Science at The Ohio State University. My passion lies in cloud computing and high-performance computing, areas I have explored extensively during my academic journey. I have participated in various projects and competitions, which have honed my technical skills and deepened my interest in distributed systems.&lt;/p>
&lt;p>As part of the &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre24/osu/scalerep">ScaleRep: Reproducing and benchmarking scalability bugs hiding in cloud systems&lt;/a>, my &lt;a href="https://threadeater.github.io/files/Understanding_and_Addressing_Scalability_Bugs_in_Large_Scale_Distributed_Systems%20%281%29.pdf" target="_blank" rel="noopener">proposal&lt;/a> under the mentorship of Professor &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/yang-wang/">Yang Wang&lt;/a> and &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/bogdan-bo-stoica/">Bogdan &amp;quot;Bo&amp;quot; Stoica&lt;/a> aims to tackle the critical challenges posed by scalability bugs in systems like Cassandra, HDFS, and Hadoop. These bugs can lead to severe operational issues such as system downtime and data loss, particularly as systems scale up.&lt;/p>
&lt;p>The project goals include systematically analyzing and documenting scalability bugs, developing protocols to effectively trigger and quantify the impact of these bugs, and creating reproducible artifacts and detailed investigation scripts to aid in bug analysis.&lt;/p>
&lt;p>Our project will involve rigorous bug report analysis, reproduction of scalability bugs, and a comparative study of system behaviors before and after bug fixes. We aim to develop methodologies that enhance the reliability and performance of large-scale distributed systems, providing valuable insights and resources to the open-source community.&lt;/p>
&lt;p>Stay tuned to explore the future of reliable and scalable distributed systems!&lt;/p></description></item><item><title>BenchmarkST: Cross-Platform, Multi-Species Spatial Transcriptomics Gene Imputation Benchmarking</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/uci/benchmarkst/20240609-qianru/</link><pubDate>Sun, 09 Jun 2024 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/uci/benchmarkst/20240609-qianru/</guid><description>&lt;p>Hello! My name is Qianru, and I will be working on a project to improve spatial transcriptomics during Google Summer of Code 2024. My project, &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre24/uci/benchmarkst/">Benchmarking Gene Imputation Methods for Spatial Transcriptomics&lt;/a>, is mentored by &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/ziheng-duan/">Ziheng Duan&lt;/a> and &lt;a href="https://users.soe.ucsc.edu/~cormac/" target="_blank" rel="noopener">Cormac Flanagan&lt;/a>. The goal is to create a standard platform to evaluate methods for filling in missing gene data, which is a big challenge in spatial transcriptomics. &lt;a href="https://drive.google.com/file/d/1ydqGuuzpNgPpVUBvTiFvF1q7qV9gA_wm/view?usp=sharing" target="_blank" rel="noopener">My proposal can be viewed here!&lt;/a>&lt;/p>
&lt;p>Spatial transcriptomics lets us see where genes are active in tissues, giving us insight into how cells interact in their natural environment. However, current methods often miss some gene data, making it hard to get a complete picture. Gene imputation can help fill in these gaps.&lt;/p>
&lt;p>My project will:&lt;/p>
&lt;p>Create a benchmark dataset to standardize gene imputation tasks across different platforms, species, and organs.&lt;/p>
&lt;p>Compare various gene imputation methods to see how well they work in different scenarios.&lt;/p>
&lt;p>Develop a user-friendly Python package with tools for gene imputation to help researchers improve their data.&lt;/p>
&lt;p>I&amp;rsquo;m excited to contribute to this project and help advance the field of spatial transcriptomics by making data analysis more accurate and comprehensive.&lt;/p></description></item><item><title>ScaleRep: Reproducing and benchmarking scalability bugs hiding in cloud systems</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/osu/scalerep/20240608-imzahra/</link><pubDate>Sat, 08 Jun 2024 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/osu/scalerep/20240608-imzahra/</guid><description>&lt;p>Hi! I&amp;rsquo;m Zahra, an undergraduate at Universitas Dian Nuswantoro, Indonesia.
As part of the &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre24/osu/scalerep/">ScaleRep&lt;/a> my &lt;a href="https://drive.google.com/file/d/1Jfk7lRNIWfhFLkVHHN_ZkNQiTg4f8-xp/view?usp=sharing" target="_blank" rel="noopener">proposal&lt;/a> under the mentorship of &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/bogdan-bo-stoica/">Bogdan &amp;quot;Bo&amp;quot; Stoica&lt;/a> and &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/yang-wang/">Yang Wang&lt;/a> aims to systematically understand, characterize, and document the challenges associated with scalability bugs in large-scale distributed systems.&lt;/p>
&lt;p>ScaleRep proposes a two-fold strategy to address scalability bugs in large-scale distributed systems. First, Bug Analysis and Documentation involves studying recent scalability issues across popular open-source systems such as Cassandra, Hadoop, HDFS, Ignite, and Spark to understand bug causes, symptoms, and solutions. This includes pinpointing common challenges hindering bug reproduction and devising protocols to trigger and measure scalability bug impacts. Second, Implementation and Artifact Packaging focuses on identifying, reproducing, and documenting scalability bugs, then packaging artifacts with &lt;a href="https://chameleoncloud.org/experiment/share/" target="_blank" rel="noopener">Chameleon Trovi&lt;/a>. This method emphasizes precise bug analysis, establishing reproducible environments, and detailed documentation to ensure artifact reliability and usability.&lt;/p></description></item><item><title>Drishti</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/lbl/drishti/20240614-jaytau/</link><pubDate>Thu, 06 Jun 2024 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/lbl/drishti/20240614-jaytau/</guid><description>&lt;p>Namaste everyone! 🙏🏻&lt;/p>
&lt;p>I&amp;rsquo;m &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/joel-tony/">Joel Tony&lt;/a>, a third-year Computer Science undergraduate at BITS Pilani, Goa, India. I&amp;rsquo;m truly honored to be part of this year&amp;rsquo;s Google Summer of Code program, working with the UC OSPO organization on a project that genuinely excites me. I&amp;rsquo;m particularly grateful to be working under the mentorship of Dr. &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/jean-luca-bez/">Jean Luca Bez&lt;/a>, a Research Scientist at Lawrence Berkeley National Laboratory, and Dr. &lt;a href="https://sbyna.github.io" target="_blank" rel="noopener">Suren Byna&lt;/a>, a Full Professor at the Ohio State University. Their expertise in high-performance computing and data systems is invaluable as I tackle this project.&lt;/p>
&lt;p>My project, &amp;ldquo;&lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre24/lbl/drishti">Drishti: Visualization and Analysis of AI-based Applications&lt;/a>&amp;rdquo;, aims to extend the &lt;a href="https://github.com/hpc-io/drishti" target="_blank" rel="noopener">Drishti&lt;/a> framework to better support AI/ML workloads, focusing specifically on optimizing their Input/Output (I/O) performance. I/O refers to the data transfer between a computer&amp;rsquo;s memory and external storage devices like hard drives (HDDs) or solid-state drives (SSDs). As AI models and datasets continue to grow exponentially in size, efficient I/O management has become a critical bottleneck that can significantly impact the overall performance of these data-intensive workloads.&lt;/p>
&lt;p>Drishti is an innovative, interactive web-based framework that helps users understand the I/O behavior of scientific applications by visualizing I/O traces and highlighting bottlenecks. It transforms raw I/O data into interpretable visualizations, making performance issues more apparent. Now, I&amp;rsquo;m working to adapt these capabilities for the unique I/O patterns of AI/ML workloads.&lt;/p>
&lt;p>Through my studies in high-performance computing and working with tools like BeeGFS and Darshan, I&amp;rsquo;ve gained insights into the intricacies of I/O performance. However, adapting Drishti for AI/ML workloads presents new challenges. In traditional HPC, computing often dominates, but in the realm of AI, the tables have turned. As models grow by billions of parameters and datasets expand to petabytes, I/O has become the critical path. Training larger models or using richer datasets doesn&amp;rsquo;t just mean more computation; it means handling vastly more data. This shift makes I/O optimisation not just a performance tweak but a fundamental enabler of AI progress. By fine-tuning Drishti for AI/ML workloads, we aim to pinpoint I/O bottlenecks precisely, helping researchers streamline their data pipelines and unlock the full potential of their hardware.&lt;/p>
&lt;p>As outlined in my &lt;a href="https://docs.google.com/document/d/1zfQclXYWFswUbHuuwEU7bjjTvzS3gRCyNci08lTR3Rg/edit?usp=sharing" target="_blank" rel="noopener">proposal&lt;/a>, my tasks are threefold:&lt;/p>
&lt;ol>
&lt;li>&lt;strong>Modularize Drishti&amp;rsquo;s codebase&lt;/strong>: Currently, it&amp;rsquo;s a single 1700-line file that handles multiple functionalities. I&amp;rsquo;ll be refactoring it into focused, maintainable modules, improving readability and facilitating future enhancements.&lt;/li>
&lt;li>&lt;strong>Enable multi-trace handling&lt;/strong>: Unlike traditional HPC apps that typically generate one trace file, most AI jobs produce multiple. I&amp;rsquo;ll build a layer to aggregate these, providing a comprehensive view of the application&amp;rsquo;s I/O behavior.&lt;/li>
&lt;li>&lt;strong>Craft AI/ML-specific recommendations&lt;/strong>: Current suggestions often involve MPI-IO or HDF5, which aren&amp;rsquo;t typical in ML frameworks like PyTorch or TensorFlow. I&amp;rsquo;ll create targeted recommendations that align with these frameworks&amp;rsquo; data pipelines.&lt;/li>
&lt;/ol>
&lt;p>This summer, my mission is to make Drishti as fluent in AI/ML I/O patterns as it is in traditional HPC workloads. My goal is not just to adapt Drishti but to optimize it for the unique I/O challenges that AI/ML applications face. Whether it&amp;rsquo;s dealing with massive datasets, handling numerous small files, or navigating framework-specific data formats, we want Drishti to provide clear, actionable insights.&lt;/p>
&lt;p>From classroom theories to hands-on projects, from understanding file systems to optimizing AI workflows, each step has deepened my appreciation for the complexities and potential of high-performance computing. This GSoC project is an opportunity to apply this knowledge in a meaningful way, contributing to a tool that can significantly impact the open-source community.&lt;/p>
&lt;p>In today&amp;rsquo;s AI-driven world, the pace of innovation is often gated by I/O performance. A model that takes weeks to train due to I/O bottlenecks might, with optimized I/O, train in days—translating directly into faster iterations, more experiments, and ultimately, breakthroughs. By making I/O behavior in AI/ML applications more interpretable through Drishti, we&amp;rsquo;re not just tweaking code. We&amp;rsquo;re providing developers with the insights they need to optimize their data pipelines, turning I/O from a bottleneck into a catalyst for AI advancement.&lt;/p>
&lt;p>I look forward to sharing updates as we adapt Drishti for the AI era, focusing squarely on optimizing I/O for AI/ML workloads. In doing so, we aim to accelerate not just data transfer but the very progress of AI itself. I&amp;rsquo;m deeply thankful to Dr. Jean Luca Bez and Prof. Suren Byna for their guidance in this endeavor and to the UC OSPO and GSoC communities for this incredible opportunity.&lt;/p></description></item><item><title>Causeway: Learning Web Development Through Micro-Roles</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/ucsc/causeway/20240513-rishimondal/</link><pubDate>Mon, 03 Jun 2024 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/ucsc/causeway/20240513-rishimondal/</guid><description>&lt;p>Hello! My name is Rishi and I will be contributing to &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre24/ucsc/causeway/">Causeway&lt;/a>, a platform for learning to develop web applications using an Angular, RxJS, NgRx, and Firebase stack , during Google Summer of Code 2024. My project is &lt;a href="https://summerofcode.withgoogle.com/programs/2024/projects/wTxAXxEz" target="_blank" rel="noopener">Causeway : Improving the Core Infrastructure and Experience ! &lt;/a>, mentored by &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/david-lee/">David Lee&lt;/a>. This project aims to modernize the platform by adding various login options (Google, GitHub, email/password, passwordless) using Firebase Authentication, enhancing the landing page with an about section and improved UI, and introducing section quizzes via Firebase Firestore and Cloud Functions. It also involves developing user and learning dashboards with Angular Material UI and Firebase Cloud Functions, improving the overall UI design with application walkthroughs, providing an introductory demo for new users, incorporating generative AI features, automating deployment and monitoring with Vercel Bot, and adding contact and feedback options. These enhancements will boost user engagement, usability, and the overall learning experience. &lt;a href="https://drive.google.com/file/d/1WsojAfxLJqU-Jkozbyq-bTJmcTqBkyVy/view?usp=sharing" target="_blank" rel="noopener">My proposal can be viewed here!&lt;/a>&lt;/p>
&lt;p>Causeway is a platform for learning to develop web applications using an Angular, RxJS, NgRx, and Firebase stack. It aims to bridge the gap in online coding tutorials by providing a holistic approach to web application development, breaking down the process into a hierarchy of micro-roles. This structure offers learners a clear pathway for learning and translates into a clear process for developing an application. In the longer future, this approach will enable learners to contribute to projects by taking on micro-roles for yet-to-be-developed projects. The platform leverages the &lt;a href="https://developer.stackblitz.com/platform/api/webcontainer-api" target="_blank" rel="noopener">Stackblitz WebContainer API&lt;/a> to run full applications in the browser for interactive learning.&lt;/p></description></item><item><title>FEP-Bench: Benchmarking for Enhanced Feature Engineering and Preprocessing in Machine Learning</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre24/uchicago/fep_bench/</link><pubDate>Mon, 03 Jun 2024 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre24/uchicago/fep_bench/</guid><description>&lt;p>&lt;strong>Project Idea Description&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Topics:&lt;/strong> Storage systems, machine learning&lt;/li>
&lt;li>&lt;strong>Skills:&lt;/strong> Python, PyTorch, Bash scripting, Linux, Machine Learning modeling&lt;/li>
&lt;li>&lt;strong>Difficulty:&lt;/strong> Hard&lt;/li>
&lt;li>&lt;strong>Size:&lt;/strong> Large (350 hours)&lt;/li>
&lt;li>&lt;strong>Mentors:&lt;/strong> &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/yuyang-roy-huang/">Yuyang (Roy) Huang&lt;/a> (primary contact), &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/swami-sundararaman/">Swami Sundararaman&lt;/a>&lt;/li>
&lt;li>&lt;strong>Contributor(s):&lt;/strong> &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/lihaowen-jayce-zhu/">Lihaowen (Jayce) Zhu&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>In the realm of machine learning (ML), preprocessing of data is a critical yet often underappreciated phase, consuming approximately 80% of the time in common ML tasks. This extensive time consumption can be attributed to various challenges encountered from both data and computation perspectives.&lt;/p>
&lt;p>From the data side, one significant challenge is the slow retrieval of data from data lakes, which are storage repositories that hold a vast amount of raw data in its native format. However, the process of extracting this data can be slow, causing computation cycles to wait for data arrival and leading to delays in the entire preprocessing phase. Furthermore, the size of the data often exceeds the memory capacity of standard computing systems. This is a frequent occurrence in ML, as datasets are typically large and complex. Handling such large datasets requires sophisticated memory management techniques to ensure efficient preprocessing without overwhelming the system&amp;rsquo;s memory.&lt;/p>
&lt;p>On the computation side, a naive solution to data operations, especially aggregation, often leads to inefficiencies. These operations may require grouping a large chunk of data as a prerequisite before performing any actual computation. This grouping, without careful configuration and management, can trigger serious data shuffling, leading to extensive remote data movement when the data is distributed across various storage systems. Such data movement is not only time-consuming but also resource-intensive.&lt;/p>
&lt;p>To mitigate these challenges, there is a pressing need to design better caching, prefetching, and heuristic strategies for data preprocessing. The team aims to significantly reduce the time and resources required for preprocessing by optimizing data retrieval and computational processes.&lt;/p>
&lt;p>However, prior to the design and implementation of such a system, a systematic understanding of the preprocessing workflow is essential. Hence, throughout the program, the students will need to:&lt;/p>
&lt;ul>
&lt;li>Understand the current system used to preprocess data for ML training, for example, Hadoop or Spark.&lt;/li>
&lt;li>Collect the common datasets used for different types of ML models.&lt;/li>
&lt;li>Collect the typical operations used for preprocessing these datasets.&lt;/li>
&lt;li>Benchmark the performance in these operations under the existing frameworks under various experimental settings.&lt;/li>
&lt;li>Package the benchmark such that the team can later use it for reproduction or evaluation.&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>Project Deliverable&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>A rolodex for the commonly used dataset and corresponding preprocess operations and expected output formats/types&lt;/li>
&lt;li>A Chameleon Trovi package that preprocess the dataset with single-machine preprocessing framework like pandas&lt;/li>
&lt;li>A Chameleon Trovi package that preprocess the dataset in an existing distributed computation framework like Hadoop or Spark&lt;/li>
&lt;/ul></description></item><item><title>Enhancing h5bench with HDF5 Compression Capability</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/lbl/h5bench/20240614-henryz/</link><pubDate>Mon, 27 May 2024 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/lbl/h5bench/20240614-henryz/</guid><description>&lt;p>As part of the &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre24/lbl/h5bench">h5bench&lt;/a> project my &lt;a href="https://summerofcode.withgoogle.com/myprojects/details/n0H28Z40" target="_blank" rel="noopener">Enhencing h5bench with HDF5 Compression Capability&lt;/a> under the mentorship of Dr. &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/jean-luca-bez/">Jean Luca Bez&lt;/a> and Dr. Suren Byna aims to allow users of h5bench to incoporate compression features in their simulations by creating custom benchmarks with common scientific lossless &amp;amp; lossy compression algorithms such as SZ, SZ3, ZFP, and GZIP.&lt;/p>
&lt;p>The problem I am trying to solve is to implement multiple data compression algorithms in h5bench core access patterns through HDF5 filters. This capability should grant users the flexibility to configure the parameters and methods of compression applied to their datasets according to their specific needs and preferences. My solution primarily involves using a user-defined HDF5 filter mechanism to implement lossless and lossy compression algorithms, such as ZFP, SZ, and cuSZ. Throughout the process, I will deliver one C source code implementing compression configuration settings, one C source code implementing lossless and lossy algorithms, a set of performance reports before and after data compression in CSV and standard output files, and a technical documentation on h5bench user manual website.&lt;/p></description></item><item><title>SLICES/pos: Reproducible Experiment Workflows</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/tum/slices/20240517-warmuth/</link><pubDate>Fri, 17 May 2024 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/tum/slices/20240517-warmuth/</guid><description>&lt;p>Servus everyone!&lt;/p>
&lt;p>I&amp;rsquo;m Kilian Warmuth, currently pursuing my M.Sc. in Computer Science at the Technical University of Munich (TUM) after completing my B.Sc. in Computer Science at the same institution. Throughout my academic education, I have taken courses in Advanced Computer Networks, which have deepened my understanding and expertise in the field. I was involved in an interdisciplinary project where I created a testing toolchain for the packet generator MoonGen using the SCLICES/pos testbed. This experience provided me with extensive hands-on exposure to pos, increasing my interest in reproducible testbeds and the enhancement of pos.&lt;/p>
&lt;p>As part of the &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre24/tum/slices">SLICES/pos: Reproducible Experiment Workflows&lt;/a> project, my &lt;a href="https://1drv.ms/b/s!AkZKU_K5p7iNnQfzdH2eXFsnKfdU?e=skZmXc" target="_blank" rel="noopener">proposal&lt;/a>, under the mentorship of &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/sebastian-gallenmuller/">Sebastian Gallenmüller&lt;/a>, &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/kate-keahey/">Kate Keahey&lt;/a>, and &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/georg-carle/">Georg Carle&lt;/a>, aims to address the challenges of managing experiment results within the &lt;a href="https://www.net.in.tum.de/fileadmin/bibtex/publications/papers/gallenmueller_scholz_conext2021.pdf" target="_blank" rel="noopener">pos framework&lt;/a>.&lt;/p>
&lt;p>The project leverages the RO-Crate open standard to organize result data systematically, enhancing accessibility and comprehensibility of research findings. We aim to improve experiment documentation for the pos testbed, providing clear setup and execution instructions to ensure reproducibility. Therefore we need to simplify the dissemination of research findings by automating the creation of RO-Crates, allowing researchers to focus on experiment design without needing to be familiar with RO-Crate standards. Implementing these standards will enhance the sharing of results by automating publication processes for open repositories, promoting transparency and collaboration.&lt;/p>
&lt;p>We also aim to enhance the portability of experiments across different testbeds, with a particular focus on the Chameleon Testbed. We will develop introductory examples demonstrating how to use pos in various testbed environments. Additionally, we will design and execute a portable complex network experiment based on SLICES/pos. To validate the portability enhancements, we will perform experiments on the Chameleon testbed. Finally, we will refine the portability of pos experiments within Chameleon to ensure seamless execution.&lt;/p>
&lt;p>Stay tuned to explore the future of reproducible testbeds!&lt;/p></description></item><item><title>Hardware Hierarchical Dynamical Systems</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/ucsc/livehd/20240513-ujjwalshekhar/</link><pubDate>Tue, 14 May 2024 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/ucsc/livehd/20240513-ujjwalshekhar/</guid><description>&lt;p>As part of &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre23/ucsc/livehd">Micro Architecture Santa Cruz (MASC)&lt;/a> my &lt;a href="https://docs.google.com/document/d/1FyQfRVJ2LnPJ9bCBqiylmnc1dOaumed1LQ_N6cK5krw/edit?usp=sharing" target="_blank" rel="noopener">proposal&lt;/a> under the mentorship of &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/jose-renau/">Jose Renau&lt;/a> and &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/sakshi-garg/">Sakshi Garg&lt;/a> aims to develop a tree data structure under HHDS to replace the current one offered by &lt;a href="https://github.com/masc-ucsc/livehd/blob/34eed40f32669bdab2fbf8fbcc65492660ba40df/core/lhtree.hpp#L526" target="_blank" rel="noopener">LHTree&lt;/a>&lt;/p>
&lt;p>The tree data structure is to be optimized for typical AST traversal and queries. Some queries that are made to this tree are much more frequent than others. Thus a flattening policy will be used to optimize the tree for these queries, at the potential cost of becoming slow for the infrequent queries. The tree will be benchmarked for scalability and performance and is expected to outperform the current version of the tree. Once the implementation is complete, the tree will be integrated into the LiveHD core repository.&lt;/p></description></item><item><title>HDEval: Benchmarking LLMs that Generate Verilog/Chisel Modules From Natural Language</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/ucsc/livehd/20240611-ashwinbardhwaj/</link><pubDate>Tue, 14 May 2024 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/ucsc/livehd/20240611-ashwinbardhwaj/</guid><description>&lt;p>Hi everyone!&lt;/p>
&lt;p>I&amp;rsquo;m Ashwin Bardhwaj, currently pursuing a bachelors in Electrical Engineering and Computer Science at UC Berkeley. I was recently involved in a project to implement a secure hardware encryption enclave in Verilog. That&amp;rsquo;s why I was excited to work with the MASC group to evaluate how existing generalized LLMs (such as ChatGPT 4 or StarCoder) can generate accurate Verliog/Chisel code from English and assist in the hardware development process.&lt;/p>
&lt;p>As part of &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre23/ucsc/livehd">Micro Architecture Santa Cruz (MASC)&lt;/a> my &lt;a href="https://drive.google.com/file/d/1Fnr85lqrTs7OBohfHfSZI2K3wZU3zJm0/view?usp=sharing" target="_blank" rel="noopener">proposal&lt;/a> under the mentorship of &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/jose-renau/">Jose Renau&lt;/a> and &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/sakshi-garg/">Sakshi Garg&lt;/a> looks to create a suite of benchmark programs for &lt;a href="https://github.com/masc-ucsc/hdeval" target="_blank" rel="noopener">HDEval&lt;/a>.&lt;/p>
&lt;p>The deliverable of this project is to create multiple large HDL benchmarks along with a respective set of prompts. Using yosys to implement Logic Equivalence Check, we are able to prove through formal verification that the generated code will exhibit the same behavior as the benchmark. In addition, we can also consider the performance and resource utilization of the generated code as a metric.&lt;/p></description></item><item><title>(Re)Evaluating Artifacts for Understanding Resource Artifacts</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre24/depaul/reevaluating/</link><pubDate>Wed, 20 Mar 2024 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre24/depaul/reevaluating/</guid><description>&lt;p>&lt;strong>Project Idea Description&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Topics:&lt;/strong> Virtualization, Containerization, Profiling, Reproducibility&lt;/li>
&lt;li>&lt;strong>Skills:&lt;/strong> C and Python and DevOps experience.&lt;/li>
&lt;li>&lt;strong>Difficulty:&lt;/strong> Medium&lt;/li>
&lt;li>&lt;strong>Size:&lt;/strong> Large; 350 hours&lt;/li>
&lt;li>&lt;strong>Mentors:&lt;/strong> &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/tanu-malik/">Tanu Malik&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>This project aims to characterize computer-science related artifacts that are either submitted to conferences or deposited in reproducibility hubs such as Chameleon. We aim to characterize experiments into different types and understand reproducibility requirements of this rich data set, possibly leading to a benchmark.
We will then understand packaging requirements, especially of distributed experiments and aim to instrument a package archiver to reproduce a distributed experiment. Finally, we will use learned experiment characteristics to develop a classifier that will determine alternative resources where experiment can be easily reproduced.&lt;/p>
&lt;p>&lt;strong>Project Deliverable&lt;/strong>
Specific Tasks include:
A pipeline consisting of a set of scripts to characterize artifacts.
Packaged artifacts and an analysis report with open-sourced data about the best guidelines to package using Chameleon.
A classifier system based on artifact and resource characteristics.&lt;/p></description></item><item><title>Auto Appendix</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre24/tuwien/autoappendix/</link><pubDate>Mon, 11 Mar 2024 14:48:10 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre24/tuwien/autoappendix/</guid><description>&lt;p>The SC Conference Series, a leading forum on High Performance Computing (HPC), supports scientific rigor through an enhanced reproducibility of accepted papers.
To that end, all manuscripts submitted to the SC Technical Papers program must contain an Artifact Description.
Authors of accepted papers may request reproducibility badges, for which an Appendix describing the
Artifact Evaluation is required.&lt;/p>
&lt;p>In recent years, &lt;a href="https://www.chameleoncloud.org" target="_blank" rel="noopener">Chameleon&lt;/a> has facilitated SC&amp;rsquo;s reproducibility initiative by enabling authors to develop and share computational, reproducible artifacts through the Chameleon cloud.
The Chameleon platform helps authors and reviewers to easily share computational artifacts,
which are included in the papers&amp;rsquo; artifact appendices.&lt;/p>
&lt;p>The proposed project aims to assess all AD/AE appendices submitted for reproducibility badge requests. This evaluation will focus on AD/AE appendices that utilized the Chameleon cloud as the execution platform, examining their potential for automation.
Our aim is to evaluate the feasibility of fully automating various components of the appendices.
Students will engage directly with the chairs of the SC24 Reproducibility Initiative in this effort.&lt;/p>
&lt;h3 id="advancing-sc-conference-artifact-reproducibility-via-automation">&lt;strong>Advancing SC Conference Artifact Reproducibility via Automation&lt;/strong>&lt;/h3>
&lt;ul>
&lt;li>&lt;strong>Topics&lt;/strong>: &lt;code>Reproducibility&lt;/code> &lt;code>Reproducible Research&lt;/code> &lt;code>Artifact Evaluation&lt;/code> &lt;code>Open Science&lt;/code>&lt;/li>
&lt;li>&lt;strong>Skills&lt;/strong>: HPC, Cloud computing, Chameleon, MPI, OpenMP, CUDA&lt;/li>
&lt;li>&lt;strong>Difficulty&lt;/strong>: Difficult&lt;/li>
&lt;li>&lt;strong>Size&lt;/strong>: Large&lt;/li>
&lt;li>&lt;strong>Mentors:&lt;/strong> &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/sascha-hunold/">Sascha Hunold&lt;/a>&lt;/li>
&lt;li>&lt;strong>Tasks&lt;/strong>:
&lt;ul>
&lt;li>Perform an analysis of the current limitations of AD/AE appendices submitted for Artifact Evaluation.&lt;/li>
&lt;li>Re-run the computational artifacts to identify areas for enhancement, with a primary objective of achieving full automation of Artifact Evaluation using the Chameleon cloud.&lt;/li>
&lt;li>Evaluate the existing automation capabilities of the Chameleon cloud.&lt;/li>
&lt;li>Develop a set of recommendations for structuring Computational Artifacts, aimed at benefiting future SC conferences.&lt;/li>
&lt;/ul>
&lt;/li>
&lt;/ul></description></item><item><title>ML-Powered Problem Detection in Chameleon</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre24/uchicago/ml_detect_chameleon/</link><pubDate>Wed, 06 Mar 2024 16:33:57 -0600</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre24/uchicago/ml_detect_chameleon/</guid><description>&lt;p>Today’s Continuous Integration/Continuous Development (CI/CD) trends encourage
rapid design of software using a wide range of software components, followed by
frequent updates that are immediately deployed on the cloud. The complexity of
cloud systems along with the component diversity and break-neck pace of
development amplify the difficulty in identifying or fixing problems related to
performance, resilience, and security. Furthermore, existing approaches that
rely on human experts—e.g., methods involving manually-written
rules/scripts—have limited applicability to modern CI/CD processes, as they are
fragile, costly, and often not scalable. Consequently, there is growing
interest in applying machine learning (ML) based methods for identifying
vulnerabilities in code, non-compliant or otherwise problematic software, and
resilience problems in systems and networks. However, despite some success
stories in applying AI for cloud operations (e.g., in resource management),
much of cloud operations still rely on human-centric methods, which require
updates as the cloud undergoes CI/CD cycles. The goal of this summer project is
to explore methods of automation for the Chameleon Cloud to enable faster
detection and diagnosis of problems. Overall, the project will contribute to an
overarching vision of building an infrastructure that collects and synthesizes
cross-layer data from large-scale cloud systems, applying ML-powered methods to
automate cloud ops, and, further, making this data available to researchers
through coherent APIs and analytics engines.&lt;/p>
&lt;p>Currently, Chameleon uses runbooks as manual guides for operational tasks,
including routine maintenance and troubleshooting. However, these traditional
runbooks often fall short in dynamic and fast-paced CI/CD environments, as they
lack the flexibility to adapt to changes in software versions, deployment
configurations, and the unique challenges of emerging issues. To overcome these
challenges, the project will leverage ML to automate anomaly detection based on
telemetry data collected from Chameleon Cloud&amp;rsquo;s monitoring frameworks. This
method will not only facilitate rapid identification of performance anomalies
but also enable automated generation of runbooks. These runbooks can then offer
operators actionable steps to resolve issues efficiently, thereby making the
anomaly mitigation process more efficient. Furthermore, this approach supports
the automatic creation of targeted runbooks for newly generated support
tickets, enhancing response times and system reliability.&lt;/p>
&lt;p>Time-permitting, using a collection of automated runbooks (each targeting a
specific problem), we will analyze support tickets, common problems, and their
frequency to offer insights and suggestions to help roadmapping for Chameleon
Cloud to offer the best return on investment on fixing problems.&lt;/p>
&lt;p>A key aspect of this summer project is enhancing the reproducibility of
experiments in the cloud and improving data accessibility. We plan to design
infrastructures and APIs so that the telemetry data that is essential for
anomaly detection and automated runbooks is systematically documented and made
available. We also aim to collect and share insights and modules on applying ML
for cloud operations, including ML pipelines, data labeling strategies, data
preprocessing techniques, and feature engineering. By sharing these insights,
we aim to promote best practices and support reproducible experiments on public
clouds, thus fostering future ML-based practices within the Chameleon Cloud
community and beyond. Time permitting, we will explore applying lightweight
privacy-preserving approaches on telemetry data as well.&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Topics&lt;/strong>: &lt;code>Machine Learning&lt;/code>, &lt;code>Anomaly Detection&lt;/code>, &lt;code>Automated Runbooks&lt;/code>, &lt;code>Telemetry Data&lt;/code>&lt;/li>
&lt;li>&lt;strong>Skills&lt;/strong>:
&lt;ul>
&lt;li>Proficiency in Machine Learning: Understanding of ML algorithms for anomaly detection and automation.&lt;/li>
&lt;li>Cloud Computing Knowledge: Familiarity with CI/CD environments and cloud architectures.&lt;/li>
&lt;li>Programming Skills: Proficiency in languages such as Python, especially in cloud and ML contexts.&lt;/li>
&lt;li>Data Analysis: Ability to analyze telemetry data using data analytics tools and libraries.&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>&lt;strong>Difficulty&lt;/strong>: Hard&lt;/li>
&lt;li>&lt;strong>Size&lt;/strong>: Large&lt;/li>
&lt;li>&lt;strong>Mentors:&lt;/strong> &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/michael-sherman/">Michael Sherman&lt;/a>&lt;/li>
&lt;/ul></description></item><item><title>ReproNB: Reproducibility of Interactive Notebook Systems</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre24/depaul/repronb/</link><pubDate>Mon, 26 Feb 2024 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre24/depaul/repronb/</guid><description>&lt;p>&lt;strong>Project Idea Description&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Topics:&lt;/strong> HPC, MPI, distributed systems&lt;/li>
&lt;li>&lt;strong>Skills:&lt;/strong> C++, Python&lt;/li>
&lt;li>&lt;strong>Difficulty:&lt;/strong> Difficult&lt;/li>
&lt;li>&lt;strong>Size:&lt;/strong> Large; 350 hours&lt;/li>
&lt;li>&lt;strong>Mentors:&lt;/strong> &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/tanu-malik/">Tanu Malik&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>Notebooks have gained wide popularity in scientific computing. A notebook is both a web-based interactive front- end to program workflows and a lightweight container for sharing code and its output. Reproducing notebooks in different target environments, however, is a challenge. Notebooks do not share the computational environment in which they are executed. Consequently, despite being shareable they are often not reproducible. We have developed &lt;a href="https://github.com/depaul-dice/Flinc" target="_blank" rel="noopener">FLINC&lt;/a> (see also &lt;a href="https://dice.cs.depaul.edu/pdfs/pubs/C31.pdf" target="_blank" rel="noopener">eScience'22 paper&lt;/a>) to address this problem. However, it currently does not support all forms of experiments, especially those relating to HPC experiments. In this project we will extend FLINC to HPC experiments. This will involve using recording and replaying mechanisms such as &lt;a href="https://kento.github.io/code/" target="_blank" rel="noopener">ReMPI&lt;/a> and &lt;a href="https://rr-project.org/" target="_blank" rel="noopener">rr&lt;/a> within FLINC.&lt;/p>
&lt;p>&lt;strong>Project Deliverable&lt;/strong>&lt;/p>
&lt;p>The project deliverable will be a set of HPC experiments that are packaged with FLINC and available on Chamaeleon.&lt;/p></description></item><item><title>SciStream-Rep: An Artifact for Reproducible Benchmarks of Scientific Streaming Applications</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre24/anl/scistream/</link><pubDate>Mon, 26 Feb 2024 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre24/anl/scistream/</guid><description>&lt;p>&lt;a href="https://github.com/scistream/scistream-proto" target="_blank" rel="noopener">SciStream&lt;/a> is a framework and toolkit that attempts to tackle the problem of enabling high-speed(+100Gbps), memory-to-memory data streaming in scientific environments. This task is particularly challenging because data producers (e.g., data acquisition applications on scientific instruments, simulations on supercomputers) and consumers (e.g., data analysis applications) may be in different security domains and thus require bridging of those domains. Furthermore, either producers, consumers, or both may lack external network connectivity and thus require traffic forwarding proxies. If you want to learn more, please take a look at our &lt;a href="https://dl.acm.org/doi/abs/10.1145/3502181.3531475" target="_blank" rel="noopener">HPDC'22 paper&lt;/a>.&lt;/p>
&lt;h3 id="scistream-rep-an-artifact-for-reproducible-benchmarks-of-scientific-streaming-applications">SciStream-Rep: An Artifact for Reproducible Benchmarks of Scientific Streaming Applications&lt;/h3>
&lt;p>&lt;strong>Project Idea Description:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Topics&lt;/strong>: Network Performance Testing, Benchmarking, Data Streaming, Reproducibility&lt;/li>
&lt;li>&lt;strong>Skills&lt;/strong>: Python, Scripting, Linux, Containers, Networking, benchmark tools&lt;/li>
&lt;li>&lt;strong>Difficulty&lt;/strong>: Medium&lt;/li>
&lt;li>&lt;strong>Size&lt;/strong>: Large (350) hours&lt;/li>
&lt;li>&lt;strong>Mentors:&lt;/strong> &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/joaquin-chung/">Joaquin Chung&lt;/a>, &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/flavio-castro/">Flavio Castro&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>This project focuses on expanding the scope of testing SciStream’s architecture by incorporating a variety of traffic patterns based on real scientific applications. The goal is to understand how different traffic patterns influence the performance of memory-to-memory data streaming in scientific scenarios by creating artifacts for reproducible experiments. Additionally, the project will explore the use of different forwarding elements, such as Nginx and HAProxy, to assess their impact on data streaming efficiency and security.&lt;/p>
&lt;p>Reproducibility is especially difficult in shared network environments such as Chameleon and FABRIC testbeds. We can expect similar results for two exact same experiments, only when the network condition (external to our traffic) is similar for both experiments. By creating reproducible artifacts for Chameleon and FABRIC, we can build statistical confidence in the measured results by multiple repetitions from other researchers.&lt;/p>
&lt;p>The Specific Tasks of the Project Include:&lt;/p>
&lt;ul>
&lt;li>Developing a set of benchmarks to measure the performance of scientific streaming applications across a broader range of traffic patterns.&lt;/li>
&lt;li>Creating a set of artifacts for generating traffic patterns typical of data streaming applications.&lt;/li>
&lt;li>Deploying various forwarding elements within the SciStream architecture for the Chameleon and FABRIC testbeds.&lt;/li>
&lt;li>Compiling a best practices document detailing the optimal configurations for Scistream.&lt;/li>
&lt;/ul>
&lt;h3 id="scistream-lb-a-dynamic-load-balancing-solution-using-programmable-network-devices">Scistream-LB: A Dynamic Load Balancing Solution Using Programmable network devices&lt;/h3>
&lt;p>&lt;strong>Project Idea Description:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Topics&lt;/strong>: Network Performance Testing, Data Streaming, Reproducibility, Programmable Data Planes&lt;/li>
&lt;li>&lt;strong>Skills&lt;/strong>: Python/Scripting, Linux, Docker/Containers, Networking fundamentals, Experience with OpenFlow/P4 programming&lt;/li>
&lt;li>&lt;strong>Difficulty&lt;/strong>: Difficult&lt;/li>
&lt;li>&lt;strong>Size&lt;/strong>: Large (350) hours&lt;/li>
&lt;li>&lt;strong>Mentors:&lt;/strong> &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/joaquin-chung/">Joaquin Chung&lt;/a>, &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/flavio-castro/">Flavio Castro&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>The aim of this project is to create a specialized forwarding element using OpenFlow (OF) or P4 programming languages, tailored to enhance the SciStream data plane. This new development seeks to enable a more flexible and hardware-based (and therefore more efficient) alternative to conventional software-based forwarding mechanisms like NGINX or HAProxy, specifically designed to support the needs of high-performance data streaming environments for scientific applications. The OF/P4 forwarding elements will be packaged as artifacts for reproducibility experiments in Chameleon and FABRIC testbeds. Reproducibility is especially difficult in shared network environments such as Chameleon and FABRIC testbeds. We can expect similar results for two exact same experiments, only when the network condition (external to our traffic) is similar for both experiments. By creating reproducible artifacts for Chameleon and FABRIC, we can build statistical confidence in the measured results by multiple repetitions from other researchers.&lt;/p>
&lt;p>Specific tasks of the project include:&lt;/p>
&lt;ul>
&lt;li>Design and implementation of an OF/P4-based forwarding element that can be seamlessly integrated with the data plane of SciStream’s architecture.&lt;/li>
&lt;li>Forwarding logic that supports efficient and secure memory-to-memory data streaming.&lt;/li>
&lt;li>A set of benchmarks for evaluating the new forwarding element against traditional options, focusing on improvements in throughput, latency, and security.&lt;/li>
&lt;li>An investigation on the potential advantages of programmable network elements for detailed control over data streaming paths and security configurations.&lt;/li>
&lt;li>A package of the newly developed forwarding elements as artifacts for reproducibility experiments in Chameleon and FABRIC testbeds.&lt;/li>
&lt;/ul></description></item><item><title>Chameleon Trovi Redesign</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre24/uchicago/trovi/</link><pubDate>Wed, 21 Feb 2024 13:43:55 -0600</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre24/uchicago/trovi/</guid><description>&lt;p>&lt;a href="https://www.chameleoncloud.org/experiment/share" target="_blank" rel="noopener">Trovi&lt;/a> on
&lt;a href="https://www.chameleoncloud.org" target="_blank" rel="noopener">Chameleon&lt;/a> is an open-source service designed
to significantly enhance the &lt;a href="https://wordpress.cels.anl.gov/nimbusproject/wp-content/uploads/sites/116/2023/08/Reproducibility_On_Chameleon-3.pdf" target="_blank" rel="noopener">practical
reproducibility&lt;/a>
of computer science research. By allowing Chameleon users to upload, share, and
access packaged experiments and other research artifacts, Trovi aims to
streamline the process of replicating and building upon existing studies. This
capability is crucial in the scientific community, where the ability to
accurately reproduce research results is as fundamental to validating,
critiquing, and extending scientific findings as reading papers. The importance
of Trovi lies in its potential to serve as a centralized hub that facilitates
the exchange of valuable research outputs, promotes transparency, and fosters
collaboration among researchers. By improving the ease with which experiments
can be replicated and data can be shared, Trovi supports the advancement of
knowledge and innovation in the field of computer science, making it an
essential tool for researchers seeking to contribute to the development of
reproducible and robust scientific research.&lt;/p>
&lt;p>This project will focus on the evolution of Trovi. It will aim to enhance Trovi
as a tool to advance practical reproducibility in CS research. Students will
evaluate the most important use cases and enabling features necessary to
enhance Trovi&amp;rsquo;s functionality and user experience. With these design insights,
students will then create a robust interface that allows researchers to
integrate experiment code and data easily as packaged artifacts, similar to the
user-friendly design of Google Colab, and build off other users&amp;rsquo; artifacts to
create novel experiments, similar to the design of GitHub. Furthermore,
students will create comprehensive documentation with valuable insights into
what works well and what requires improvement, creating a dynamic feedback loop
to guide the ongoing redesign process. Lastly, students will actively
participate in designing webinars, creating and posting video tutorials, and
organizing academic events at the University of Chicago to showcase the work on
Trovi. This multifaceted project ensures a well-rounded experience and fosters
a collaborative learning environment.&lt;/p>
&lt;p>Each of the project ideas below focuses on a different aspect of the overall
goal to enhance Trovi as a tool for advancing practical reproducibility in
CS research. They are designed to offer a comprehensive approach,
from technical development to community engagement, ensuring a well-rounded
enhancement of the service.&lt;/p>
&lt;h3 id="user-interface-redesign-for-experiment-artifacts-sharing">&lt;strong>User Interface Redesign for Experiment Artifacts Sharing&lt;/strong>&lt;/h3>
&lt;ul>
&lt;li>&lt;strong>Topics&lt;/strong>: &lt;code>User Interface Design&lt;/code> &lt;code>User Experience&lt;/code> &lt;code>Web Development&lt;/code>&lt;/li>
&lt;li>&lt;strong>Skills&lt;/strong>: HTML/CSS, JavaScript, UX design principles&lt;/li>
&lt;li>&lt;strong>Difficulty&lt;/strong>: Moderate to Hard&lt;/li>
&lt;li>&lt;strong>Size&lt;/strong>: Medium to Large&lt;/li>
&lt;li>&lt;strong>Mentors:&lt;/strong> &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/mark-powers/">Mark Powers&lt;/a>&lt;/li>
&lt;li>&lt;strong>Tasks&lt;/strong>:
&lt;ul>
&lt;li>Conduct user research to understand the needs and pain points of current
and potential Trovi users.&lt;/li>
&lt;li>Design wireframes and prototypes that incorporate user feedback and aim to
simplify the process of uploading, sharing, and reusing research artifacts.&lt;/li>
&lt;li>Implement the frontend redesign using a modern web framework to ensure
responsiveness and ease of use.&lt;/li>
&lt;/ul>
&lt;/li>
&lt;/ul>
&lt;h3 id="packaged-artifacts-integration-system">&lt;strong>Packaged Artifacts Integration System&lt;/strong>&lt;/h3>
&lt;ul>
&lt;li>&lt;strong>Topics&lt;/strong>: &lt;code>Cloud Computing&lt;/code> &lt;code>Data Management&lt;/code> &lt;code>Web APIs&lt;/code>&lt;/li>
&lt;li>&lt;strong>Skills&lt;/strong>: Python, RESTful APIs, Docker, Git&lt;/li>
&lt;li>&lt;strong>Difficulty&lt;/strong>: Hard&lt;/li>
&lt;li>&lt;strong>Size&lt;/strong>: Large&lt;/li>
&lt;li>&lt;strong>Mentors:&lt;/strong> &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/mark-powers/">Mark Powers&lt;/a>&lt;/li>
&lt;li>&lt;strong>Tasks&lt;/strong>:
&lt;ul>
&lt;li>Develop a system that allows users to easily package and upload their
experimental code and data to Trovi.&lt;/li>
&lt;li>Create a standardized format or set of guidelines for packaging experiments
to ensure consistency and ease of use.&lt;/li>
&lt;li>Implement API endpoints that enable automated uploads, downloads, and
integration with other tools like GitHub or Zenodo.&lt;/li>
&lt;li>Test the system with real-world experiments to ensure reliability and ease
of integration.&lt;/li>
&lt;/ul>
&lt;/li>
&lt;/ul>
&lt;h3 id="community-engagement-and-educational-materials">&lt;strong>Community Engagement and Educational Materials&lt;/strong>&lt;/h3>
&lt;ul>
&lt;li>&lt;strong>Topics&lt;/strong>: &lt;code>Educational Technology&lt;/code> &lt;code>Community Building&lt;/code> &lt;code>Content Creation&lt;/code>&lt;/li>
&lt;li>&lt;strong>Skills&lt;/strong>: Video Editing, Public Speaking, Event Planning&lt;/li>
&lt;li>&lt;strong>Difficulty&lt;/strong>: Moderate&lt;/li>
&lt;li>&lt;strong>Size&lt;/strong>: Medium&lt;/li>
&lt;li>&lt;strong>Mentors:&lt;/strong> &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/mark-powers/">Mark Powers&lt;/a>&lt;/li>
&lt;li>&lt;strong>Tasks&lt;/strong>:
&lt;ul>
&lt;li>Design and organize webinars that introduce Trovi and its new features to
the research community.&lt;/li>
&lt;li>Create engaging video tutorials that guide users through the process of
using Trovi for their research needs.&lt;/li>
&lt;li>Develop comprehensive documentation that covers both basic and advanced use
cases, troubleshooting, and tips for effective collaboration using Trovi.&lt;/li>
&lt;li>Organize academic events, such as workshops or hackathons, that encourage
the use of Trovi for collaborative research projects.&lt;/li>
&lt;/ul>
&lt;/li>
&lt;/ul>
&lt;h3 id="feedback-loop-and-continuous-improvement-system">&lt;strong>Feedback Loop and Continuous Improvement System&lt;/strong>&lt;/h3>
&lt;ul>
&lt;li>&lt;strong>Topics&lt;/strong>: &lt;code>Software Engineering&lt;/code> &lt;code>Data Analysis&lt;/code> &lt;code>User Feedback&lt;/code>&lt;/li>
&lt;li>&lt;strong>Skills&lt;/strong>: Python, SQL, Data Visualization, Web Development&lt;/li>
&lt;li>&lt;strong>Difficulty&lt;/strong>: Moderate&lt;/li>
&lt;li>&lt;strong>Size&lt;/strong>: Medium&lt;/li>
&lt;li>&lt;strong>Mentors:&lt;/strong> &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/mark-powers/">Mark Powers&lt;/a>&lt;/li>
&lt;li>&lt;strong>Tasks&lt;/strong>:
&lt;ul>
&lt;li>Implement a system within Trovi for collecting, storing, and analyzing user
feedback and usage data.&lt;/li>
&lt;li>Develop dashboards that visualize feedback trends and identify areas for
improvement.&lt;/li>
&lt;li>Create mechanisms for users to easily report bugs, request features, and
offer suggestions for the platform.&lt;/li>
&lt;li>Use the collected data to prioritize development efforts and continuously
update the platform based on user needs and feedback.&lt;/li>
&lt;/ul>
&lt;/li>
&lt;/ul></description></item><item><title>Data leakage in applied ML: reproducing examples of irreproducibility</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre24/nyu/data-leakage/</link><pubDate>Wed, 21 Feb 2024 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre24/nyu/data-leakage/</guid><description>&lt;ul>
&lt;li>&lt;strong>Topics:&lt;/strong> applied machine learning, data leakage, reproducibility&lt;/li>
&lt;li>&lt;strong>Skills:&lt;/strong> Python, data analysis, machine learning&lt;/li>
&lt;li>&lt;strong>Difficulty:&lt;/strong> Medium&lt;/li>
&lt;li>&lt;strong>Size:&lt;/strong> Large (350 hours)&lt;/li>
&lt;li>&lt;strong>Mentors:&lt;/strong> &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/fraida-fund/">Fraida Fund&lt;/a> and &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/mohamed-saeed/">Mohamed Saeed&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>Project Idea Description&lt;/strong>&lt;/p>
&lt;p>Data leakage &lt;a href="https://www.cell.com/patterns/pdfExtended/S2666-3899%2823%2900159-9" target="_blank" rel="noopener">has been identified&lt;/a> as a major cause of irreproducibility of a paper&amp;rsquo;s findings, when machine learning techniques are applied to problems in science. Data leakage includes errors such as:&lt;/p>
&lt;ul>
&lt;li>pre-processing before splitting into training/test sets&lt;/li>
&lt;li>feature selection before splitting into training/test sets&lt;/li>
&lt;li>duplicated data points in both training and test sets&lt;/li>
&lt;li>temporal leakage (e.g. shuffled K-fold cross validation with temporal data)&lt;/li>
&lt;li>group leakage (e.g. shuffled K-fold cross validation with data that has group structure)&lt;/li>
&lt;/ul>
&lt;p>and leads to an overly optimistic evaluation of model performance, such that the finding may no longer be the same when the error is corrected.&lt;/p>
&lt;p>Despite the seriousness of this problem, data leakage is often not covered in introductory machine learning courses, and many users of machine learning across varied science domains are unaware of it. Even those who have learned &amp;ldquo;rules&amp;rdquo; for avoiding data leakage (e.g. &amp;ldquo;never do feature selection on the test set&amp;rdquo;) may not understand the reasons for these &amp;ldquo;rules&amp;rdquo;, and how important they are for ensuring that the final result is valid and reproducible.&lt;/p>
&lt;p>The goal of this project is to create &lt;em>learning materials&lt;/em> demonstrating how instances of data leakage invalidate a result. These materials should be easily adoptable by instructors teaching machine learning in a wide variety of contexts, including those teaching a non-CS audience. To achieve this, the project proposes to re-implement published results that have been affected by data leakage, and package these implementations along with supporting material in a format suitable for use in classrooms and by independent learners. For each &amp;ldquo;irreproducible result&amp;rdquo;, the &amp;ldquo;package&amp;rdquo; should include -&lt;/p>
&lt;ul>
&lt;li>a re-implementation of the original result&lt;/li>
&lt;li>an explanation of the data leakage problem affecting the result, with an implementation of a &amp;ldquo;toy example&amp;rdquo; on synthetic data&lt;/li>
&lt;li>a re-implementation of the result without the data analysis error, to show how the finding is affected&lt;/li>
&lt;li>and examples of exam or homework questions that an instructor adopting this package may use to assess understanding.&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>Writing a successful proposal for this project&lt;/strong>&lt;/p>
&lt;p>A good proposal for this project should include, for at least a few &amp;ldquo;types&amp;rdquo; of data leakage mentioned above -&lt;/p>
&lt;ul>
&lt;li>a specific published result that could be used as an exemplar (you may find ideas among the review papers listed &lt;a href="https://reproducible.cs.princeton.edu/#rep-failures" target="_blank" rel="noopener">here&lt;/a>)&lt;/li>
&lt;li>a brief description of the details of the experiment that will reproduce that result (e.g. what data is used, what machine learning technique is used, what are the hyperparameters used for training)&lt;/li>
&lt;li>and an explanation of why this result is suitable for this use (it uses a publicly available dataset, a machine learning technique that is familiar and accessible to students in an introductory course, the paper has sufficient detail to reproduce the result, etc.)&lt;/li>
&lt;/ul>
&lt;p>The contributor will need to create learning materials that are written in a clear, straightforward, and concise manner, without unncessary jargon. The proposal should show evidence of the contributor&amp;rsquo;s writing abilities.&lt;/p>
&lt;p>&lt;strong>Github link&lt;/strong>&lt;/p>
&lt;p>There is no pre-existing Git repository for this project - at the beginning of the summer, the contributor will create a new repository in the &lt;a href="https://github.com/teaching-on-testbeds/" target="_blank" rel="noopener">Teaching on Testbeds&lt;/a> organization, and the project materials will &amp;ldquo;live&amp;rdquo; there.&lt;/p>
&lt;p>To get a sense of the type of code you would be writing, here is an example of a learning module related to data leakage (however, it is not in the format described above): &lt;a href="https://colab.research.google.com/github/ffund/ml-notebooks/blob/master/notebooks/4-linear-regression-case-study-part-2.ipynb" target="_blank" rel="noopener">Beauty in the Classroom&lt;/a>&lt;/p>
&lt;p>&lt;strong>Project Deliverables&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>&amp;ldquo;Packages&amp;rdquo; of learning materials for teaching about common types of data leakage&lt;/li>
&lt;li>&lt;a href="https://chameleoncloud.org/experiment/share/" target="_blank" rel="noopener">Trovi&lt;/a> artifacts for &amp;ldquo;playing back&amp;rdquo; each of the &amp;ldquo;packages&amp;rdquo;&lt;/li>
&lt;/ul></description></item><item><title>Evaluating congestion controls past and future</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre24/nyu/congestion-control/</link><pubDate>Wed, 21 Feb 2024 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre24/nyu/congestion-control/</guid><description>&lt;ul>
&lt;li>&lt;strong>Topics:&lt;/strong> computer networks, congestion control, reproducibility&lt;/li>
&lt;li>&lt;strong>Skills:&lt;/strong> Python, Bash scripting, Linux, computer network performance evaluation&lt;/li>
&lt;li>&lt;strong>Difficulty:&lt;/strong> Medium&lt;/li>
&lt;li>&lt;strong>Size:&lt;/strong> Large (350 hours)&lt;/li>
&lt;li>&lt;strong>Mentors:&lt;/strong> &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/fraida-fund/">Fraida Fund&lt;/a> and &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/ashutosh-srivastava/">Ashutosh Srivastava&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>Project Idea Description&lt;/strong>&lt;/p>
&lt;p>In computer networks, congestion control protocols play an outsize role in determining our experience with networked applications. New congestion control algorithms are regularly proposed by researchers to improve throughput and latency performance, adapt to new types of networks, and align more closely with the needs of new applications.&lt;/p>
&lt;p>However, our understanding of the benefits of a new congestion control protocol depends to a large extent on the evaluation - the network topology, the network delay and throughput, the type of flow, the type of competing traffic - and there is no single standard way to evaluate a congestion control protocol. The &lt;a href="https://pantheon.stanford.edu/static/pantheon/documents/pantheon-paper.pdf" target="_blank" rel="noopener">Pantheon&lt;/a> project (which is no longer supported) sought to fill this gap somewhat and address the problem of reproducibility of congestion control results, but their approach is not easily adapted to evaluation scenarios representative of new types of applications or networks. Nor is it capable of representing the evaluation scenarios in most published results related to congestion control.&lt;/p>
&lt;p>The goal of this project, therefore is to create an evaluation suite for congestion control protocols that can be used to reproduce existing congestion control results in the academic literature, &lt;em>and&lt;/em> to evaluate new protocols under similar evaluation conditions, &lt;em>and&lt;/em> to be easily extended to new scenarios. An &amp;ldquo;evaluation scenario&amp;rdquo; includes:&lt;/p>
&lt;ul>
&lt;li>a Python notebook to realize the network topology on the FABRIC and/or Chameleon testbed, and configure the network characteristics,&lt;/li>
&lt;li>scripts to generate the data flow(s) needed for the evaluation,&lt;/li>
&lt;li>and scripts to capture data from the experiment and visualize the results.&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>Writing a successful proposal for this project&lt;/strong>&lt;/p>
&lt;p>To write a good proposal for this project, you should review the most influential papers on TCP congestion control, and especially those related to TCP protocols that are available in the Linux kernel.&lt;/p>
&lt;p>Use your findings to explain what your proposed evaluation suite will include (what network topologies, what flow generators), and justify this with reference to the academic literature. Also indicate which &lt;em>specific results&lt;/em> you expect to be able to reproduce using this suite (e.g. include figures from influential papers showing evaluation results! with citation, of course).&lt;/p>
&lt;p>You can also take advantage of existing open source code that reproduces a congestion control result, e.g. &lt;a href="https://github.com/sdatta97/imcbbrrepro" target="_blank" rel="noopener">Replication: When to Use and When Not to Use BBR&lt;/a>, or &lt;a href="https://github.com/ashutoshs25/bbr-dominance-experiments" target="_blank" rel="noopener">Some of the Internet may be heading towards BBR dominance: an experimental study&lt;/a>.&lt;/p>
&lt;p>&lt;strong>Github link&lt;/strong>&lt;/p>
&lt;p>There is no pre-existing Git repository for this project - at the beginning of the summer, the contributor will create a new repository for this project.&lt;/p>
&lt;p>&lt;strong>Project Deliverables&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>&amp;ldquo;Packages&amp;rdquo; of evaluation scenarios that can be used to evaluate a congestion control algorithm implemented in the Linux kernel&lt;/li>
&lt;li>&lt;a href="https://chameleoncloud.org/experiment/share/" target="_blank" rel="noopener">Trovi&lt;/a> artifacts for realizing each evaluation scenario on Chameleon&lt;/li>
&lt;/ul></description></item><item><title>Automatic reproducibility of COMPSs experiments through the integration of RO-Crate in Chameleon</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre24/bsc/ro-crate-compss/</link><pubDate>Mon, 19 Feb 2024 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre24/bsc/ro-crate-compss/</guid><description>&lt;ul>
&lt;li>&lt;strong>Topics:&lt;/strong> Provenance, reproducibility, standards, image creation&lt;/li>
&lt;li>&lt;strong>Skills:&lt;/strong> Python, JSON, Bash scripting, Linux, image creation and deployment&lt;/li>
&lt;li>&lt;strong>Difficulty:&lt;/strong> Medium&lt;/li>
&lt;li>&lt;strong>Size:&lt;/strong> Large (350 hours)&lt;/li>
&lt;li>&lt;strong>Mentors:&lt;/strong> &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/raul-sirvent/">Raül Sirvent&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>Project Idea Description&lt;/strong>&lt;/p>
&lt;p>The &lt;a href="https://compss.bsc.es/" target="_blank" rel="noopener">COMPSs programming model&lt;/a> provides an interface for the programming of a
sequential application that is transformed in a workflow that, thanks to the COMPSs runtime, is later
scheduled in the available computing resources. Programming is enabled for different languages through
the use of bindings: Java, C/C++ and Python (named PyCOMPSs).
COMPSs is able to generate &lt;a href="https://compss-doc.readthedocs.io/en/stable/Sections/05_Tools/04_Workflow_Provenance.html" target="_blank" rel="noopener">Workflow Provenance information&lt;/a>
after the execution of an experiment. The generated artifact (code + data + recorded metadata)
enables the sharing of results through the use of tools such as the &lt;a href="https://workflowhub.eu/" target="_blank" rel="noopener">WorkflowHub portal&lt;/a>,
that provides the capacity of generating a DOI of the results to include them as permanent references
in scientific papers.&lt;/p>
&lt;p>The format of the metadata generated in COMPSs experiments follows the &lt;a href="https://www.researchobject.org/ro-crate/" target="_blank" rel="noopener">RO-Crate specification&lt;/a>,
and, more specifically, two &lt;a href="https://www.researchobject.org/ro-crate/profiles.html" target="_blank" rel="noopener">profiles&lt;/a>:
the Workflow and Workflow Run Crate profiles. This metadata enables not only the sharing of results, but also their
reproducibility.&lt;/p>
&lt;p>This project proposes the creation of a service that enables the automatic reproducibility of COMPSs experiments
in the Chameleon infrastructure. The service will be able to get a COMPSs crate (artifact that follows the RO-Crate
specification), and, by parsing the available metadata, build a Chameleon compatible image for reproducing the
experiment in the testbed. Small modifications to the COMPSs RO-Crate are foreseen (i.e. the inclusion of third party
software required by the application).&lt;/p>
&lt;p>&lt;strong>Project Deliverables&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>Study the different environments and specifications (COMPSs, RO-Crate, Chameleon, Trovi, &amp;hellip;).&lt;/li>
&lt;li>Design the most appropriate integration, considering all the elements involved.&lt;/li>
&lt;li>Integrate PyCOMPSs basic experiments reproducibility in Chameleon.&lt;/li>
&lt;li>Integrate PyCOMPSs complex experiments reproducibility in Chameleon (i.e. with third party software dependencies).&lt;/li>
&lt;/ul></description></item><item><title>BenchmarkST: Cross-Platform, Multi-Species Spatial Transcriptomics Gene Imputation Benchmarking</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre24/uci/benchmarkst/</link><pubDate>Sat, 17 Feb 2024 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre24/uci/benchmarkst/</guid><description>&lt;ul>
&lt;li>&lt;strong>Topics:&lt;/strong> bioinformatics, spatial transcriptomics, gene imputation, benchmarking, cross-platform/species analysis&lt;/li>
&lt;li>&lt;strong>Skills:&lt;/strong>
&lt;ul>
&lt;li>&lt;strong>Programming Languages:&lt;/strong>
&lt;ul>
&lt;li>Proficient in Python and/or R, commonly used in bioinformatics.&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>&lt;strong>Data Analysis:&lt;/strong>
&lt;ul>
&lt;li>Experience with statistical data analysis and machine learning models.&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>&lt;strong>Bioinformatics Knowledge (not required but preferred):&lt;/strong>
&lt;ul>
&lt;li>Proficiency in bioinformatics and computational biology.&lt;/li>
&lt;li>Familiarity with spatial transcriptomics datasets and platforms.&lt;/li>
&lt;/ul>
&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>&lt;strong>Difficulty:&lt;/strong> Advanced&lt;/li>
&lt;li>&lt;strong>Size:&lt;/strong> Large (350 hours). Given the scope of integrating multi-platform, multi-species datasets and the complexity of benchmarking gene imputation methods, this project is substantial. It requires extensive data preparation, analysis, and validation phases, making it suitable for a larger time investment.&lt;/li>
&lt;li>&lt;strong>Mentors:&lt;/strong> &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/ziheng-duan/">Ziheng Duan&lt;/a> (contact person)&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>Project Idea Description&lt;/strong>&lt;/p>
&lt;p>The orchestration of cellular life is profoundly influenced by the precise control of gene activation and silencing across different spatial and temporal contexts. Understanding these complex spatiotemporal gene expression patterns is vital for advancing our knowledge of biological processes, from development and disease progression to adaptation. While single-cell RNA sequencing (scRNA-seq) has revolutionized our ability to profile gene expression across thousands of cells simultaneously, its requirement for cell dissociation strips away the critical spatial context, limiting our comprehension of cellular interactions within their native environments. Recent strides in spatial transcriptomics have started to bridge this gap by enabling spatially resolved gene expression measurements at single-cell or even sub-cellular resolutions. These advancements offer unparalleled opportunities to delineate the intricate tapestry of gene expression within tissues, shedding light on the dynamic interactions between cells and their surroundings.&lt;/p>
&lt;p>Despite these technological advances, a significant challenge remains: the datasets generated by spatial transcriptomic technologies are often incomplete, marred by missing gene expression values due to various technical and biological constraints. This limitation severely impedes our ability to fully interpret these rich datasets and extract meaningful insights from them. Gene imputation emerges as a pivotal solution to this problem, aiming to fill in these missing data points, thereby enhancing the resolution, quality, and interpretability of spatial transcriptomic datasets.&lt;/p>
&lt;p>Recognizing the critical importance of this task, there is a pressing need for a unified benchmarking platform that can facilitate the evaluation and comparison of gene imputation methods across a diverse array of samples, spanning multiple sampling platforms, species, and organs. Currently, the bioinformatics and spatial transcriptomics fields lack such a standardized framework, hindering progress and innovation. To address this gap, our project aims to establish a comprehensive gene imputation dataset that encompasses a wide range of conditions and parameters. We intend to reproduce known methods and assess their efficacy, providing a solid and reproducible foundation for future advancements in this domain.&lt;/p>
&lt;p>&lt;strong>Project Deliverable&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>A comprehensive, preprocessed benchmark dataset that spans multiple sampling platforms, species, and organs, aimed at standardizing gene imputation tasks in spatial transcriptomics.&lt;/li>
&lt;li>An objective comparison of state-of-the-art gene imputation methodologies, enhancing the understanding of their performance and applicability across diverse biological contexts.&lt;/li>
&lt;li>A user-friendly Python package offering a suite of gene imputation tools, designed to fulfill the research needs of the spatial transcriptomics community by improving data completeness and reproducibility.&lt;/li>
&lt;/ul></description></item><item><title>ScaleRep: Reproducing and benchmarking scalability bugs hiding in cloud systems</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre24/osu/scalerep/</link><pubDate>Sat, 10 Feb 2024 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre24/osu/scalerep/</guid><description>&lt;p>&lt;strong>Topics:&lt;/strong> Distributed systems, Scalability, Bug analysis, Bug reproducibility&lt;br>
&lt;strong>Skills:&lt;/strong> Java, Python, bash scripting, perf, Linux internals&lt;br>
&lt;strong>Difficulty:&lt;/strong> Hard&lt;br>
&lt;strong>Size:&lt;/strong> Large (350 hours)&lt;br>
&lt;strong>Mentors:&lt;/strong> &lt;strong>&lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/bogdan-bo-stoica/">Bogdan &amp;quot;Bo&amp;quot; Stoica&lt;/a> (contact person)&lt;/strong>, &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/yang-wang/">Yang Wang&lt;/a>&lt;/p>
&lt;p>&lt;strong>Project Idea Description&lt;/strong>&lt;/p>
&lt;p>Large-scale distributed systems are integral to the infrastructure of a wide range of applications and services.
The continuous evolution of these systems requires ongoing efforts to address inherent faults which span a variety of issues including availability, consistency, concurrency, configuration, durability, error-handling, integrity, performance, and security.
Recent developments in the field and the rise of cloud computing have been marked by a notable increase in the scale at which such systems operate.&lt;/p>
&lt;p>This increase in scale introduces specific challenges, particularly in terms of system reliability and performance.
As distributed systems expand beyond single machines, addressing the growing demands for computation, memory and storage becomes more difficult.
This underlying complexity leads to the emergence of scalability bugs — defects that surface in large-scale deployments, yet do not reveal themselves in a small-scale setting.&lt;/p>
&lt;p>To better understand scalability bugs, we set out to investigate a set of scalability issues documented over the last 5 years from 10 popular open-source large-scale systems.
These bugs have led to significant operational challenges, such as system downtime, reduced responsiveness, data loss, and data corruption.
Moreover, addressing them required extensive collaboration and problem-solving efforts among engineers and bug reporters, with discussions often spanning a month or more.&lt;/p>
&lt;p>We observed that traditional bug finding techniques are insufficient for detecting scalability bugs since these defects are triggered by a mixture of scale-related aspects not properly investigated by previous approaches.
These characteristics include the number of components involved, the system load and workload size, the reliability of recovery protocols, and the magnitude of intermediate failures.
Although previous research examined some of these aspects, it has typically done so either in isolation (individually), or without providing a comprehensive understanding of the fundamental bug patterns, symptoms, root causes, fixes, and, more importantly, how easily these bugs can be reproduced in-house.&lt;/p>
&lt;p>Therefore, the main goal of this project is to systematically understand, characterize, and document the challenges associated with scalability bugs, at-large.
Our approach is twofold: first, to analyze scalability bugs in terms of reproducibility, and second, to develop methodologies for triggering them and measuring their impact.
Specifically, we aim to:&lt;/p>
&lt;ol>
&lt;li>Provide detailed accounts of bug reproduction experiences for a diverse set of recently reported scalability bugs from our benchmark applications;&lt;/li>
&lt;li>Identify specific challenges that prevent engineers from reproducing certain scalability bugs and investigate how prevalent these obstacles are;&lt;/li>
&lt;li>Create a suite of protocols to effectively trigger and quantify the impact of scalability bugs, facilitating their investigation in smaller-scale environments.&lt;/li>
&lt;/ol>
&lt;p>&lt;strong>Project Deliverable&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>A set of Trovi replayable artifacts enabling other researchers to easily reproduce scalability bugs for our benchmark applications;&lt;/li>
&lt;li>A set of Jupyter notebook scripts allowing to conveniently replay each step in our investigation;&lt;/li>
&lt;li>A detailed breakdown of the challenges faced when reproducing scalability bugs and how these obstacles differ from those related to more “traditional” types of bugs.&lt;/li>
&lt;/ul></description></item><item><title>GPEC: An Open Emulation Platform to Evaluate GPU/ML Workloads on Erasure Coding Storage</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre24/lanl/gpec/</link><pubDate>Thu, 08 Feb 2024 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre24/lanl/gpec/</guid><description>&lt;p>&lt;strong>Project Idea Description&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Topics:&lt;/strong> Storage Systems, Machine Learning, Erasure Coding&lt;/li>
&lt;li>&lt;strong>Skills:&lt;/strong> C/C++, Python, PyTorch, Bash scripting, Linux, Erasure Coding, Machine Learning&lt;/li>
&lt;li>&lt;strong>Difficulty:&lt;/strong> Hard&lt;/li>
&lt;li>&lt;strong>Size:&lt;/strong> Large (350 hours)&lt;/li>
&lt;li>&lt;strong>Mentors:&lt;/strong> &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/meng-wang/">Meng Wang&lt;/a> (primary contact), &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/john-bent/">John Bent&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>Large-scale data centers store immense amounts of user data across a multitude of disks, necessitating redundancy strategies like erasure coding (EC) to safeguard against disk failures. Numerous research efforts have sought to assess the performance and durability of various erasure coding approaches, including single-level erasure coding, locally recoverable coding, and multi-level erasure coding.&lt;/p>
&lt;p>Despite its widespread adoption, a significant research gap exists regarding the performance of large-scale erasure-coded storage systems when exposed to machine learning (ML) workloads. While conventional practice often leans towards replication for enhanced performance, this project seeks to explore whether cost-effective erasure encoding can deliver comparable performance. In this context, several fundamental questions remain unanswered, including:
Can a typical erasure-coded storage system deliver sufficient throughput for ML training tasks?
Can an erasure-coded storage system maintain low-latency performance for ML training and inference workloads?
How does disk failure and subsequent repair impact the throughput and latency of ML workloads?
What influence do various erasure coding design choices, such as chunk placement strategies and repair methods, have on the aforementioned performance metrics?&lt;/p>
&lt;p>To address these questions, the most straightforward approach would involve running ML workloads on large-scale erasure coded storage systems within HPC data centers. However, this presents challenges for researchers and students due to limited access to expensive GPUs and distributed storage systems, especially when dealing with large-scale evaluations. Consequently, there is a need for a cost-effective evaluation platform.&lt;/p>
&lt;p>The objective of this project is to develop an open-source platform that facilitates cheap and reproducible evaluations of erasure-coded storage systems concerning ML workloads. This platform consists of two key components:
GPU Emulator: This emulator is designed to simulate GPU performance for ML workloads. Development of the GPU emulator is near completion.
EC Emulator: This emulator is designed to simulate the performance characteristics of erasure-coded storage systems. It is still in the exploratory phase and requires further development.&lt;/p>
&lt;p>The student&amp;rsquo;s responsibilities will include documenting the GPU emulator, progressing the development of the EC emulator, and packaging the experiments to ensure easy reproducibility. It is anticipated that this platform will empower researchers and students to conduct cost-effective and reproducible evaluations of large-scale erasure-coded storage systems in the context of ML workloads.&lt;/p>
&lt;p>&lt;strong>Project Deliverable&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>Build an EC emulator to emulate the performance characteristics of large-scale erasure-coded storage systems&lt;/li>
&lt;li>Incorporate the EC emulator into ML workloads and GPU emulator&lt;/li>
&lt;li>Conduct reproducible experiments to evaluate the performance of erasure-coded storage systems in the context of ML workloads&lt;/li>
&lt;li>Publish a Trovi artifact shared on Chameleon Cloud and a GitHub repository with open-source code&lt;/li>
&lt;/ul></description></item><item><title>Turn on, Tune in, Listen up: Maximizing Side-Channel Recovery in Cross-Platform Time-to-Digital Converters</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre24/ucsc/turnontunein/</link><pubDate>Thu, 08 Feb 2024 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre24/ucsc/turnontunein/</guid><description>&lt;p>&lt;a href="https://github.com/KastnerRG/PL-Sensors" target="_blank" rel="noopener">Turn on, Tune in, Listen Up&lt;/a> Is an open-source framework for implementing voltage flucturation sensors in FPGA devices for use in side-channel security research. Side-channels are an ever present hardware security threat. The reconfigurability of FPGAs significantly broadens the side-channel attack surface in many cloud heterogeneous systems. We have developed a highly tunable side-channel sensor, which significantly improves side-channel attack time and resolution in multiple contexts. Concurrent users sharing the same device may attack one another through the power side-channel (&lt;a href="https://dl.acm.org/doi/abs/10.1145/3543622.3573193" target="_blank" rel="noopener">check out our paper&lt;/a>), while consecutive users may attack one another through measurement of the physical wear-out state of the FPGA device (&lt;a href="https://arxiv.org/abs/2303.17881" target="_blank" rel="noopener">check out our paper&lt;/a>). We have demonstrated these attack surfaces on both Intel (Altera) and AMD (Xilinx) platforms. Currently, our open-sourced sensor design and side-channel analysis flow is limited to AMD devices. We are seeking CSE/CS/CE/ECE researchers interested in FPGA design, heterogeneous computing and/or hardware security to combine our Intel and AMD side-channel sensors into a unified attack framework and comparing capabilities between vendors.&lt;/p>
&lt;h3 id="open-source-sensor-repository-updates">Open-source sensor repository updates&lt;/h3>
&lt;ul>
&lt;li>&lt;strong>Topics:&lt;/strong> &lt;code>Hardware security&lt;/code>, &lt;code>cloud security&lt;/code>, &lt;code>heterogeneous computing&lt;/code>, &lt;code>temporal and spatial side-channels&lt;/code>&lt;/li>
&lt;li>&lt;strong>Skills:&lt;/strong> Experience with GitHub, FPGA development (AMD or Intel), and Python&lt;/li>
&lt;li>&lt;strong>Difficulty:&lt;/strong> Moderate&lt;/li>
&lt;li>&lt;strong>Size:&lt;/strong> Large (350 hours)&lt;/li>
&lt;li>&lt;strong>Mentors:&lt;/strong> &lt;a href="mailto:drichmond@ucsc.edu">Dustin Richmond&lt;/a>, &lt;a href="mailto:tsheaves@ucdavis.edu">Tyler Sheaves&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>Update existing open-source voltage fluctuation sensor to support both AMD and Intel devices. Currently our repository exclusively supports AMD FPGAs. We have added new features to our sensor and have demonstrated an implementation on Intel. We would like to consolidate this work into a unified repository containing side-channel analysis demonstrations using open-source target benchmark designs.&lt;/p>
&lt;p>Specific tasks:&lt;/p>
&lt;ul>
&lt;li>Adapt existing tooling scripts to support multiple vendor tool flows.&lt;/li>
&lt;li>Adapt existing test infrastructure to target multiple SoC-type FPGA platforms (i.e. DE10-Nano, Pynq Z2, etc.).&lt;/li>
&lt;li>Evaluate cross-platform sensor architecture on a collection of benchmark designs. Demonstrate each benchmark using a cross-platform unified side-channel analysis framework.&lt;/li>
&lt;li>Draw a comparison between sensor implementations on different architectures.&lt;/li>
&lt;/ul></description></item><item><title>Artificial Intelligence Explainability Accountability</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre24/ucsc/aiealab/</link><pubDate>Wed, 07 Feb 2024 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre24/ucsc/aiealab/</guid><description>&lt;h2 id="trustworthy-logical-reasoning-large-language-models--llms">Trustworthy Logical Reasoning Large Language Models (LLMs)&lt;/h2>
&lt;p>Logical LLMs is a project to translate the output from large language models (LLM) into a logic-based programming language (prolog) to detect inconsistencies and hallucinations automatically . The goals of this project would be to build a user interface for users to be able to give feedback which can be incorporated into the system. The project goal is to create a trustworthy hybrid open-source LLM tool that can learn from user feedback and explain its mistakes.&lt;/p>
&lt;h3 id="collect-hallucinations-and-facts">Collect Hallucinations and Facts&lt;/h3>
&lt;ul>
&lt;li>&lt;strong>Topics&lt;/strong>: AI/ML, data collection, logic, user interfaces&lt;/li>
&lt;li>&lt;strong>Skills&lt;/strong>: javascript, html, python, bash, git&lt;/li>
&lt;li>&lt;strong>Difficulty&lt;/strong>: Easy/Moderate&lt;/li>
&lt;li>&lt;strong>Size&lt;/strong>: Large&lt;/li>
&lt;li>&lt;strong>Mentors&lt;/strong>: &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/leilani-h.-gilpin/">Leilani H. Gilpin&lt;/a> (and a PhD student TBD).&lt;/li>
&lt;/ul>
&lt;h3 id="specific-tasks">Specific Tasks&lt;/h3>
&lt;ul>
&lt;li>Run queries in an LLM API with various prompts.&lt;/li>
&lt;li>Create a user interface system that collects user feedback in a web
browser.&lt;/li>
&lt;li>Create a pipeline for storing the user data in a common format that
can be shared in our database.&lt;/li>
&lt;li>Document the tool for future maintenance.&lt;/li>
&lt;/ul>
&lt;h2 id="explaining-failures-in-autograding">Explaining failures in autograding&lt;/h2>
&lt;p>The eXplainable autograder (XAutograder) is a tool for autograding student coding assignments, while providing personalized explanations or feedback. The goal of this project is to create an introductory set of coding assignment with explanations of wrong answers. This benchmark suite will be used for testing our system. The project goal is to create a dynamic autograding system that can learn from student&amp;rsquo;s code and explain their mistakes&lt;/p>
&lt;h3 id="design-introductory-questions-and-explanations">Design introductory questions and explanations&lt;/h3>
&lt;ul>
&lt;li>&lt;strong>Topics&lt;/strong>: AI/ML, AI for education, XAI (Explainable AI_&lt;/li>
&lt;li>&lt;strong>Skills&lt;/strong>: python, git&lt;/li>
&lt;li>&lt;strong>Difficulty&lt;/strong>: Moderate&lt;/li>
&lt;li>&lt;strong>Size&lt;/strong>: Large&lt;/li>
&lt;li>&lt;strong>Mentors&lt;/strong>: &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/leilani-h.-gilpin/">Leilani H. Gilpin&lt;/a> (and a PhD student TBD).&lt;/li>
&lt;/ul>
&lt;h3 id="specific-tasks">Specific Tasks&lt;/h3>
&lt;ul>
&lt;li>Design 5-10 basic programming questions (aggregated from online,
other courses, etc).&lt;/li>
&lt;li>Create tests of correctness (unit tests), and a testing framework
which can input a set of answers, and provide a final assessment&lt;/li>
&lt;li>Create a set of baseline explanations for various error cases, e.g.,
out of bounds error, syntax error, etc.&lt;/li>
&lt;li>Create a pipeline for iterating on the test cases and/or explanation
feedback.&lt;/li>
&lt;li>Document the tool for future maintenance.&lt;/li>
&lt;/ul></description></item><item><title>Causeway: Learning Web Development Through Micro-Roles</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre24/ucsc/causeway/</link><pubDate>Wed, 07 Feb 2024 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre24/ucsc/causeway/</guid><description>&lt;p>&lt;a href="https://tech4good-causeway.web.app/#/tutorial/quarter-goals?c=01-quarter-goals-component&amp;amp;r=01-component-elements&amp;amp;s=01-intro-to-causeway" target="_blank" rel="noopener">Causeway&lt;/a> is a platform for learning to develop web applications using an Angular, RxJS, NgRx, and Firebase stack. Most online coding tutorials focus on covering the technical syntax or features of a language or framework, which means that new developers don’t have great resources for building a holistic picture of how everything they learn connects to actually developing a complex web application. Causeway breaks down the process of developing a web application into a hierarchy of micro-roles which provides learners with a clear pathway for learning that also translates to a clear process for developing an application. In the longer future, this would also enable learners to easily contribute to projects as they learn through taking on micro-roles for yet-to-be-developed projects. The platform uses the &lt;a href="https://developer.stackblitz.com/platform/api/webcontainer-api" target="_blank" rel="noopener">Stackblitz WebContainer API&lt;/a> to run full applications in the browser for interactive learning.&lt;/p>
&lt;p>Thus far, we have developed a version of the platform that walks learners through the process of developing presentational components of a web application as well as smart components / containers that contain multiple presentational components and are responsible for fetching data from the backend and handling events and updates to the database. This content is still using Angular 13 and needs to be updated to Angular 17, as well as to make some improvements in our use of RxJS, NgRx, and Firebase. We’d also like to extend the content in multiple ways including: 1) extending the walkthrough to more components and containers besides the single example we have, ideally in a way that covers a complete application, and 2) extending beyond components and containers to cover defining database entities and relationships. We’d also like to develop a learning dashboard where users can see the different micro-roles and lessons that they’ve completed or that are upcoming for the project they are working on.&lt;/p>
&lt;h3 id="causeway--improving-the-core-infrastructure-and-experience">Causeway / Improving the Core Infrastructure and Experience&lt;/h3>
&lt;p>The proposed work includes updating the platform and the example infrastructure within the platform to the latest version of Angular and other associated libraries, implementing and testing logging and analytics, implementing a learning dashboard for users, and time permitting, creating new modules to cover defining database entities and relationships. Both roles will also contribute to running usability studies and documenting the platform so that it can be open-sourced.&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Topics:&lt;/strong> Web Development, Educational Technologies, Angular&lt;/li>
&lt;li>&lt;strong>Skills:&lt;/strong> Web development experience, HTML, CSS, Javascript, Angular, RxJS, NgRx, Firebase&lt;/li>
&lt;li>&lt;strong>Difficulty:&lt;/strong> Medium to Hard&lt;/li>
&lt;li>&lt;strong>Size:&lt;/strong> Large (350 hours)&lt;/li>
&lt;li>&lt;strong>Mentors:&lt;/strong> &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/david-lee/">David Lee&lt;/a>&lt;/li>
&lt;/ul>
&lt;h3 id="causeway--extend-the-learning-scope-and-experience">Causeway / Extend the Learning Scope and Experience&lt;/h3>
&lt;p>The proposed work includes extending the component and container walkthroughs to cover a complete interactive application. This means writing a separate simple application, and organizing the code required to do so into units of work organized by our micro-role structure. Both roles will also contribute to running usability studies and documenting the platform so that it can be open-sourced.&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Topics:&lt;/strong> Web Development, Educational Technologies, Angular&lt;/li>
&lt;li>&lt;strong>Skills:&lt;/strong> Web development experience, HTML, CSS, Javascript, Angular, RxJS, NgRx, Firebase&lt;/li>
&lt;li>&lt;strong>Difficulty:&lt;/strong> Medium&lt;/li>
&lt;li>&lt;strong>Size:&lt;/strong> Large (350 hours)&lt;/li>
&lt;li>&lt;strong>Mentors:&lt;/strong> &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/david-lee/">David Lee&lt;/a>&lt;/li>
&lt;/ul></description></item><item><title>LAST: Let’s Adapt to System Drift</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre24/anl/last/</link><pubDate>Wed, 07 Feb 2024 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre24/anl/last/</guid><description>&lt;p>&lt;strong>Project Idea Description&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Topics:&lt;/strong> Computer systems, machine learning&lt;/li>
&lt;li>&lt;strong>Skills:&lt;/strong> Python, PyTorch, Bash scripting, Linux, Data Science and Machine Learning&lt;/li>
&lt;li>&lt;strong>Difficulty:&lt;/strong> Hard&lt;/li>
&lt;li>&lt;strong>Size:&lt;/strong> Large (350 hours)&lt;/li>
&lt;li>&lt;strong>Mentors:&lt;/strong> &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/ray-andrew-sinurat/">Ray Andrew Sinurat&lt;/a> (primary contact), &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/sandeep-madireddy/">Sandeep Madireddy&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>The performance of computer systems is constantly evolving, a natural outcome of updating hardware, improving software, and encountering hardware quirks over time. At the same time, machine learning (ML) models are becoming increasingly popular. They are being used widely to address various challenges in computer systems, notably in speeding up decision-making. This speed is vital for a quick and flexible response, essential for meeting service-level agreements (SLAs). Yet, an interesting twist has emerged: like the computer systems they aid, ML models also experience a kind of &amp;ldquo;aging.&amp;rdquo; This results in a gradual decline in their effectiveness, a consequence of changes in their operating environment.&lt;/p>
&lt;p>The phenomenon of model &amp;ldquo;aging&amp;rdquo; is a ubiquitous occurrence across various domains, not limited merely to computer systems. This process of aging can significantly impact the performance of a model, emphasizing the critical importance of early detection mechanisms to maintain optimal functionality. In light of this, numerous strategies have been formulated to mitigate the aging of models. However, the generalizability and effectiveness of these strategies across diverse domains, particularly in computer systems, remain largely unexplored. This research aims to bridge this gap by designing and implementing a comprehensive data analysis pipeline. The primary objective is to evaluate the efficacy of various strategies through a comparative analysis, focusing on their performance in detecting and addressing model aging. To achieve a better understanding of this issue, the research will address the following pivotal questions:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Data-Induced Model Aging&lt;/strong>: What specific variations within the data can precipitate the aging of a model? Understanding the nature and characteristics of data changes that lead to model deterioration is crucial for developing effective prevention and mitigation strategies.&lt;/li>
&lt;li>&lt;strong>Efficacy of Aging Detection Algorithms&lt;/strong>: How proficient are the current algorithms in identifying the signs of model aging? Assessing the accuracy and reliability of these algorithms will provide insights into their practical utility in real-world scenarios.&lt;/li>
&lt;li>&lt;strong>Failure Points in Detection&lt;/strong>: In what scenarios or under what data conditions do the aging detection mechanisms fail? Identifying the limitations and vulnerabilities of these algorithms is vital for refining their robustness and ensuring comprehensive coverage.&lt;/li>
&lt;li>&lt;strong>Scalability and Responsiveness&lt;/strong>: How do these algorithms perform in terms of robustness and speed, particularly when subjected to larger datasets? Evaluating the scalability and responsiveness of the algorithms will determine their feasibility and effectiveness in handling extensive and complex datasets, a common characteristic in computer systems.&lt;/li>
&lt;/ul>
&lt;p>To better understand and prevent issues related to model performance, our approach involves analyzing various datasets, both system and non-system, that have shown notable changes over time. We aim to apply machine learning (ML) models to these datasets to assess the effects of these changes on model performance. Our goal is to leverage more advanced ML techniques to create new algorithms that address these challenges effectively. This effort is expected to contribute significantly to the community, enhancing the detection of model aging and improving model performance in computer systems.&lt;/p>
&lt;p>&lt;strong>Project Deliverable&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>Run pipeline on several computer systems and non-computer systems dataset&lt;/li>
&lt;li>A Trovi artifact for data preprocessing and model training shared on Chameleon Cloud&lt;/li>
&lt;li>A GitHub repository containing the pipeline source code&lt;/li>
&lt;/ul></description></item><item><title>Reproducibility in Data Visualization</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre24/niu/repro-vis/</link><pubDate>Tue, 06 Feb 2024 15:00:00 -0500</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre24/niu/repro-vis/</guid><description>&lt;p>At the heart of evaluating reproducibility is a judgment about whether
two results are indeed
the same. This can be complicated in the context of data visualization due to
rapidly evolving technology and differences in how users perceive the results.
First, due to the rapid evolution of libraries including web technologies,
visualizations created in the past may look different when rendered in the future.
Second, as the goal of data visualization is communicating data to people,
different people may perceive visualizations in a different way.
Thus, when a reproduced visualization does not exactly match the original, judging
whether they are &amp;ldquo;similar enough&amp;rdquo; is complicated by these factors. For example,
changes in a colormap may be deemed minor by a computer but could lead people to different
understandings of the data. The goals of this research are to capture visualizations in a way that
allows their reproducibility to be evaluated and to develop methods to categorize the differences
when a reproduced visualization differs from the original.&lt;/p>
&lt;h3 id="investigate-solutions-for-capturing-visualizations">Investigate Solutions for Capturing Visualizations&lt;/h3>
&lt;ul>
&lt;li>&lt;strong>Topics:&lt;/strong> Reproducibility, Data Visualization&lt;/li>
&lt;li>&lt;strong>Skills:&lt;/strong> Python and/or JavaScript, Data Visualization Tools&lt;/li>
&lt;li>&lt;strong>Difficulty:&lt;/strong> Moderate&lt;/li>
&lt;li>&lt;strong>Size:&lt;/strong> Medium or Large (175 or 350 hours)&lt;/li>
&lt;li>&lt;strong>Mentors:&lt;/strong> &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/david-koop/">David Koop&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>The goal of this project is to investigate, augment, and/or develop solutions to capture
visualizations that appear in formats including websites and Jupyter notebooks.
In &lt;a href="https://github.com/simprov/simprov" target="_blank" rel="noopener">past work&lt;/a>, we implemented methods
to capture thumbnails as users interacted with visualizations. Other solutions
can be used to capture interactive visualizations. We wish to understand
the feasibility of recording such visualizations and their utility in
evaluating reproducibility in the future.&lt;/p>
&lt;h5 id="specific-tasks">Specific tasks:&lt;/h5>
&lt;ul>
&lt;li>Evaluate tools for capturing static visualizations on the web&lt;/li>
&lt;li>Investigate tools for capturing dynamic visualizations on the web&lt;/li>
&lt;li>Investigate how data including code or metadata can be captured with visualizations&lt;/li>
&lt;li>Augment or develop tools to aid in capturing reproducible visualizations&lt;/li>
&lt;/ul>
&lt;h3 id="categorize-differences-in-reproduced-visualizations">Categorize Differences in Reproduced Visualizations&lt;/h3>
&lt;ul>
&lt;li>&lt;strong>Topics:&lt;/strong> Reproducibility, Data Visualization&lt;/li>
&lt;li>&lt;strong>Skills:&lt;/strong> Python and/or JavaScript, Data Visualization Tools&lt;/li>
&lt;li>&lt;strong>Difficulty:&lt;/strong> Moderate/Hard&lt;/li>
&lt;li>&lt;strong>Size:&lt;/strong> Medium or Large (175 or 350 hours)&lt;/li>
&lt;li>&lt;strong>Mentors:&lt;/strong> &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/david-koop/">David Koop&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>The goal of this project is to organize types of differences in reproduced visualizations and create tools to detect them. Publications and computational notebooks record renderings of visualizations.
When they also include the code to reproduce the visualization, we can
regenerate them in order to compare them. Often, the reproduced visualization does
not match the original (see examples in this &lt;a href="https://arxiv.org/abs/2308.06894" target="_blank" rel="noopener">manuscript&lt;/a>).
This project seeks to categorize the types of differences
that can occur in order and start understanding how they impact judgments of reproducibility.&lt;/p>
&lt;h5 id="specific-tasks-1">Specific tasks:&lt;/h5>
&lt;ul>
&lt;li>Evaluate and/or develop tools to compare two visualizations&lt;/li>
&lt;li>Evaluate the utility of artificial intelligence solutions&lt;/li>
&lt;li>Organize and categorize the detected differences&lt;/li>
&lt;li>Develop tools to determine the types or categories of differences present in two visualizations&lt;/li>
&lt;/ul></description></item><item><title>FSA: Benchmarking Fail-Slow Algorithms</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre24/uchicago/failslowalgorithms/</link><pubDate>Tue, 06 Feb 2024 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre24/uchicago/failslowalgorithms/</guid><description>&lt;p>&lt;strong>Project Idea Description&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Topics:&lt;/strong> Storage systems, machine learning&lt;/li>
&lt;li>&lt;strong>Skills:&lt;/strong> Python, PyTorch, Bash scripting, Linux, Machine Learning modeling&lt;/li>
&lt;li>&lt;strong>Difficulty:&lt;/strong> Hard&lt;/li>
&lt;li>&lt;strong>Size:&lt;/strong> Large (350 hours)&lt;/li>
&lt;li>&lt;strong>Mentors:&lt;/strong> &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/ruidan-li/">Ruidan Li&lt;/a> (primary contact), &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/kexin-pei/">Kexin Pei&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>In the realm of modern applications, achieving not only low but also predictable response times is a critical requirement. Performance instability, even when it amounts to just a few milliseconds of delay, can result in violations of Service Level Objectives (SLOs). Redundancy at the RAID group level provides a layer of protection; however, the early identification of potential slowdowns or failures is paramount in minimizing their impact on overall system latency.&lt;/p>
&lt;p>Fail-Slow represents a unique type of fault within storage systems, characterized by the system&amp;rsquo;s ability to continue functioning while progressively deteriorating – its performance significantly drops below expected levels. Notably, fail-slow conditions are responsible for a considerable share of latency tails. Detecting fail-slow faults is particularly challenging, as they can be easily masked by the normal fluctuations in performance. Consequently, the identification of fail-slow faults is a critical area of research, demanding meticulous attention.&lt;/p>
&lt;p>Several strategies have been developed to address the fail-slow issue, yet the question of their broad applicability remains. We plan to implement and assess various existing fail-slow detection algorithms, examining their strengths and weaknesses. Our analysis will concentrate on key questions:&lt;/p>
&lt;p>How promptly can the algorithm identify a fail-slow symptom?
What methods does the algorithm employ to accurately distinguish fail-slow incidents, thereby minimizing false negatives?
Through what approach does the algorithm achieve the right sensitivity level to keep false positives in check?&lt;/p>
&lt;p>This evaluation aims to shed light on the effectiveness of current methodologies in detecting fail-slow faults, crucial for enhancing system reliability and performance.&lt;/p>
&lt;p>Building upon our evaluation of several fail-slow detection algorithms, our objective is to harness advanced machine learning (ML) models to develop a novel algorithm. This initiative seeks to address and potentially compensate for the identified weaknesses in existing methodologies. By focusing on the critical aspects of early detection, accurate differentiation, and optimal sensitivity, we aim to create a solution that reduces both false negatives and false positives, thereby enhancing overall system reliability. This approach represents a strategic effort to not only advance the current state of fail-slow detection but also to contribute significantly to the resilience and performance of storage systems.&lt;/p>
&lt;p>&lt;strong>Project Deliverable&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>A Trovi artifact for the existing Fail-Slow detection algorithms on Chameleon Cloud&lt;/li>
&lt;li>A GitHub repository containing the full evaluation result&lt;/li>
&lt;li>A Google Colab notebook for quick replay&lt;/li>
&lt;/ul></description></item><item><title>Open Sensing Platform (OSP)</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre24/ucsc/osp/</link><pubDate>Mon, 05 Feb 2024 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre24/ucsc/osp/</guid><description>&lt;h2 id="open-sensing-platform-i-software-to-enable-large-scale-outdoor-sensor-networks">Open Sensing Platform I: Software to enable large scale outdoor sensor networks&lt;/h2>
&lt;p>
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="Data Visualization Dashboard" srcset="
/project/osre24/ucsc/osp/osp1_huda3c1d46887767e16b865c47973b8288_360491_2d797937cbe25a879de96b44cb5c65b3.webp 400w,
/project/osre24/ucsc/osp/osp1_huda3c1d46887767e16b865c47973b8288_360491_baae6484e015277af7b09e866b6869f5.webp 760w,
/project/osre24/ucsc/osp/osp1_huda3c1d46887767e16b865c47973b8288_360491_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre24/ucsc/osp/osp1_huda3c1d46887767e16b865c47973b8288_360491_2d797937cbe25a879de96b44cb5c65b3.webp"
width="760"
height="759"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Topics:&lt;/strong> Data Visualization, Backend, Web Development, UI/UX, Analytics&lt;/li>
&lt;li>&lt;strong>Skills:&lt;/strong>
&lt;ul>
&lt;li>&lt;em>Required:&lt;/em> React, Javascript, Python, SQL, Git&lt;/li>
&lt;li>&lt;em>Nice to have:&lt;/em> Flask, Docker, CI/CD, AWS, Authentication&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>&lt;strong>Difficulty:&lt;/strong> Medium&lt;/li>
&lt;li>&lt;strong>Size:&lt;/strong> Large (350 hours)&lt;/li>
&lt;li>&lt;strong>Mentors:&lt;/strong> &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/colleen-josephson/">Colleen Josephson&lt;/a>, &lt;a href="mailto:jtmadden@ucsc.edu">John Madden&lt;/a>, &lt;a href="mailto:awu70@ucsc.edu">Aaron Wu&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>Open Sensing Platform (OSP) is a new initiative expanding from our prior project DirtViz, a data visualization web platform for monitoring microbial fuel cell sensors (see &lt;a href="https://github.com/jlab-sensing/DirtViz" target="_blank" rel="noopener">GitHub&lt;/a>). The mission is to scale up the current platform to support other researchers or citizen scientists in integrating their novel sensing hardware or microbial fuel cell sensors for monitoring and data analysis. Examples of the types of sensors currently deployed are sensors measuring soil moisture, temperature, current, and voltage in outdoor settings. The focus of the software half of the project involves building upon our existing visualization web platform, and adding additional features to support the mission. A live version of the website is available &lt;a href="https://dirtviz.jlab.ucsc.edu/" target="_blank" rel="noopener">here&lt;/a>.&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Deliverables:&lt;/strong>
&lt;ul>
&lt;li>Create a system for remote collaborators/citizen scientists to set up their sensors and upload securely, eg. designing user flow to create sensors&lt;/li>
&lt;li>Craft an intuitive navigation system so that data from deployment sites around the world can be easily viewed, eg. designing experience/system to locate deployment sites.&lt;/li>
&lt;li>Refine our web-based visualization tools to add additional features for users to analyze collected data, eg. lazy loading out-of-range data or caching queried data.&lt;/li>
&lt;li>Document the tool thoroughly for future maintenance&lt;/li>
&lt;/ul>
&lt;/li>
&lt;/ul>
&lt;h2 id="open-sensing-platform-ii-hardware-to-enable-large-scale-outdoor-sensor-networks">Open Sensing Platform II: Hardware to enable large scale outdoor sensor networks&lt;/h2>
&lt;p>
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="Hardware" srcset="
/project/osre24/ucsc/osp/featured_hu6708254effb609c97dc781c926e4aea5_3805876_b844f987d1fd7b63009c6d2a89b9dcf2.webp 400w,
/project/osre24/ucsc/osp/featured_hu6708254effb609c97dc781c926e4aea5_3805876_3199ed5510eaff77a8cf1f93ae26f10d.webp 760w,
/project/osre24/ucsc/osp/featured_hu6708254effb609c97dc781c926e4aea5_3805876_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre24/ucsc/osp/featured_hu6708254effb609c97dc781c926e4aea5_3805876_b844f987d1fd7b63009c6d2a89b9dcf2.webp"
width="760"
height="521"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Topics:&lt;/strong> Embedded system, wireless communication, low-power remote sensing&lt;/li>
&lt;li>&lt;strong>Skills:&lt;/strong>
&lt;ul>
&lt;li>&lt;em>Required:&lt;/em> C/C++, Git, Github, Platformio&lt;/li>
&lt;li>&lt;em>Nice to have:&lt;/em> PCB design and debugging experience, STM32 HAL, ESP32 Arduino, protobuf, python, knowledge of standard communication protocols (I2C, SPI, and UART)&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>&lt;strong>Difficulty:&lt;/strong> Hard&lt;/li>
&lt;li>&lt;strong>Size:&lt;/strong> Large (350 hours)&lt;/li>
&lt;li>&lt;strong>Mentors:&lt;/strong> &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/colleen-josephson/">Colleen Josephson&lt;/a>, &lt;a href="mailto:jtmadden@ucsc.edu">John Madden&lt;/a>, &lt;a href="mailto:sgtaylor@ucsc.edu">Stephen Taylor&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>The Open Sensing Platform hardware aims to be a general purpose hardware platform for outdoor sensing (e.g. agriculture, ecological monitoring, etc.). The typical use case involves a sensor deployment in an agricultural field, remotely uploading measurements without interfering with farming operations. The current hardware revision (&lt;a href="https://github.com/jlab-sensing/soil_power_sensor" target="_blank" rel="noopener">Soil Power Sensor&lt;/a>) was originally designed for monitoring power output of microbial fuel cells using high fidelity voltage and current measurement channels, as well as auxiliary sensors such as the SDI-12 &lt;a href="https://metergroup.com/products/teros-12/" target="_blank" rel="noopener">TEROS-12 soil moisture sensor&lt;/a>. The primary activities of this project will involve low-level firmware design and implementation, but may also incorporate hardware design revisions if necessary. We are looking to expand functionality to other external sensors, as well as optimize for power consumption, via significant firmware design activities.&lt;/p>
&lt;p>Long-range, low-power wireless communication is achieved through a LoRa capable STM32 microcontroller with in-lab experiments using an ESP32 microcontroller to enable the simpler WiFi interface. Both wireless interfaces communicate upload measurements to our data visualization dashboard, &lt;strong>Open Sensing Platform I&lt;/strong>. The combined goal across both of these projects is to create a system that enables researchers to test and evaluate novel sensing solutions. We are looking to make the device usable to a wide range of researchers which may not have a background in electronics, so are interested in design activities that enhance user friendliness.&lt;/p>
&lt;p>In total there will be 2-4 people working on the hardware with progress being tracked on GitHub. Broader project planning is tracked through a Jira board. We intend to have weekly meetings to provide updates on current issue progress along with assigning tasks. Please reach out to &lt;a href="mailto:jtmadden@ucsc.edu">John Madden&lt;/a> if there are any questions or specific ideas for the project.&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Deliverables:&lt;/strong> Contribution via commits to the GitHub repository with documentation on completed work. A changelog of contributions to the firmware.&lt;/li>
&lt;/ul></description></item><item><title>OpenMLEC: Open-source MLEC implementation with HDFS on top of ZFS</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre24/ornl/openmlec/</link><pubDate>Mon, 05 Feb 2024 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre24/ornl/openmlec/</guid><description>&lt;p>&lt;strong>Project Idea Description&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Topics:&lt;/strong> Storage Systems, Erasure Coding&lt;/li>
&lt;li>&lt;strong>Skills:&lt;/strong> C/C++, Java, Bash scripting, Linux, HDFS, ZFS, Erasure Coding&lt;/li>
&lt;li>&lt;strong>Difficulty:&lt;/strong> Hard&lt;/li>
&lt;li>&lt;strong>Size:&lt;/strong> Large (350 hours)&lt;/li>
&lt;li>&lt;strong>Mentors:&lt;/strong> &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/meng-wang/">Meng Wang&lt;/a> (&lt;a href="mailto:wangm12@uchicago.edu">Main contact person&lt;/a>) and Anjus George&lt;/li>
&lt;/ul>
&lt;p>Multi-Level Erasure Coding (MLEC), which performs erasure coding at both network and local levels, has seen large deployments in practice. Our recent research work has shown that MLEC can provide high durability with higher encoding throughput and less repair network traffic compared to other erasure coding methods. This makes MLEC particularly appealing for large-scale data centers, especially high-performance computing (HPC) systems.&lt;/p>
&lt;p>However, current MLEC systems often rely on straightforward design choices, such as Clustered/Clustered (C/C) chunk placement and the Repair-All (RALL) method for catastrophic local failures. Our recent simulations [1] have revealed the potential benefits of more complex chunk placement strategies like Clustered/Declustered (C/D), Declustered/Clustered (D/C), and Declustered/Declustered (D/D). Additionally, advanced repair methods such as Repair Failed Chunks Only (RFCO), Repair Hybrid (RHYB), and Repair Minimum (RMIN) have shown promise for improving durability and performance according to our simulations. Despite promising simulation results, these optimized design choices have not been implemented in real systems.&lt;/p>
&lt;p>In this project, we propose to develop open-source MLEC implementations in real systems, offering a range of design choices from simple to complex. Our approach leverages ZFS for local-level erasure coding and HDFS for network-level erasure coding, supporting both clustered and declustered chunk placement at each level. The student&amp;rsquo;s responsibilities include setting up HDFS on top of ZFS, configuring various MLEC chunk placements (e.g., C/D, D/C, D/D), and implementing advanced repair methods within HDFS and ZFS. The project will culminate in reproducible experiments to evaluate the performance of MLEC systems under different design choices.&lt;/p>
&lt;p>We will open-source our code and aim to provide valuable insights to the community on optimizing erasure-coded systems. Additionally, we will provide comprehensive documentation of our work and share Trovi artifacts on Chameleon Cloud to facilitate easy reproducibility of our experiments.&lt;/p>
&lt;p>[1] Meng Wang, Jiajun Mao, Rajdeep Rana, John Bent, Serkay Olmez, Anjus George, Garrett Wilson Ransom, Jun Li, and Haryadi S. Gunawi. Design Considerations and Analysis of Multi-Level Erasure Coding in Large- Scale Data Centers. In The International Conference for High Performance Computing, Networking, Storage and Analysis (SC ’23), 2023.&lt;/p>
&lt;p>&lt;strong>Project Deliverable&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>Open-source MLEC implementations with a diverse range of design choices.&lt;/li>
&lt;li>Configuration setup for HDFS on top of ZFS, supporting various MLEC chunk placements.&lt;/li>
&lt;li>Implementation of advanced repair methods within HDFS and ZFS.&lt;/li>
&lt;li>Reproducible experiments to assess the performance of MLEC systems across distinct design choices.&lt;/li>
&lt;li>Comprehensive documentation of the project and the provision of shared Trovi artifacts on Chameleon Cloud for ease of reproducibility.&lt;/li>
&lt;/ul></description></item><item><title>EdgeRep: Reproducing and benchmarking edge analytic systems</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre24/uchicago/edgerep/</link><pubDate>Fri, 02 Feb 2024 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre24/uchicago/edgerep/</guid><description>&lt;ul>
&lt;li>&lt;strong>Topics:&lt;/strong> video analytics, machine learning&lt;/li>
&lt;li>&lt;strong>Skills:&lt;/strong> Python, PyTorch, Bash scripting, Linux, Machine Learning modeling&lt;/li>
&lt;li>&lt;strong>Difficulty:&lt;/strong> Medium&lt;/li>
&lt;li>&lt;strong>Size:&lt;/strong> Large (350 hours)&lt;/li>
&lt;li>&lt;strong>Mentors:&lt;/strong> &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/yuyang-roy-huang/">Yuyang (Roy) Huang&lt;/a> (contact person), &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/junchen-jiang/">Junchen Jiang&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>Project Idea Description&lt;/strong>&lt;/p>
&lt;p>With the flourishing of ideas like smart cities and smart manufacturing, a
massive number of edge devices (e.g., traffic or security cameras,
thermometers, flood sensors, etc.) are deployed and connected to the network.
These devices collect and analyze data across space and time, aiding
stakeholders like city governments and manufacturers in optimizing their plans
and operations. However, the sheer number of edge devices and the large amount
of communication among the devices and central servers raises significant
challenges in how to manage and schedule resources. This includes network
bandwidth between the devices and computing power on both edge devices and bare
metal servers, all to maintain the reliable service capability of running
applications.&lt;/p>
&lt;p>Moreover, given the limited resources available to edge devices, there&amp;rsquo;s an
emerging trend to reduce average compute and/or bandwidth usage. This is
achieved by leveraging the uneven distribution of interesting events with
respect to both time and space in the input data. This, in turn, introduces
further challenges in provisioning and managing the amount of resources
available to edge devices. The resource demands of running applications can
greatly depend on the input data, which is both dynamic and unpredictable.&lt;/p>
&lt;p>Keeping these challenges in mind, the team previously designed and implemented
a dynamic resource manager capable of understanding the applications and making
decisions based on this understanding at runtime. However, such a resource
manager has only been tested with a limited number and types of video analytic
applications. Thus, through the OSRE24 project, we aim to:&lt;/p>
&lt;ul>
&lt;li>Collect a wide range of videos to form a comprehensive video dataset&lt;/li>
&lt;li>Reproduce other state-of-art self-adaptive video analytic applications&lt;/li>
&lt;li>Package the dataset as well as the application to publish them on Chameleon
Trovi site&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>Project Deliverable&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>Collect a wide range of videos to form a comprehensive video dataset&lt;/li>
&lt;li>Reproduce other state-of-art self-adaptive video analytic applications&lt;/li>
&lt;li>Package the dataset as well as the application to publish them on Chameleon
Trovi site&lt;/li>
&lt;/ul></description></item><item><title>FEP-Bench: Benchmarks for understanding featuring engineering and preprocessing bottlenecks</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre24/ibm/fep-bench/</link><pubDate>Fri, 02 Feb 2024 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre24/ibm/fep-bench/</guid><description>&lt;ul>
&lt;li>&lt;strong>Topics:&lt;/strong> storage system, scheduling, distributed system, machine learning&lt;/li>
&lt;li>&lt;strong>Skills:&lt;/strong> Python, PyTorch, Bash scripting, Linux, Machine Learning modeling&lt;/li>
&lt;li>&lt;strong>Difficulty:&lt;/strong> Hard&lt;/li>
&lt;li>&lt;strong>Size:&lt;/strong> Large (350 hours)&lt;/li>
&lt;li>&lt;strong>Mentors:&lt;/strong> &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/yuyang-roy-huang/">Yuyang (Roy) Huang&lt;/a> (contact person), &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/swami-sundararaman/">Swami Sundararaman&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>Project Idea Description&lt;/strong>&lt;/p>
&lt;p>In the realm of machine learning (ML), preprocessing of data is a critical yet
often underappreciated phase, consuming approximately 80% of the time in common
ML tasks. This extensive time consumption can be attributed to various
challenges encountered from both data and computation perspectives.&lt;/p>
&lt;p>From the data side, one significant challenge is the slow retrieval of data
from data lakes, which are storage repositories that hold a vast amount of raw
data in its native format. However, the process of extracting this data can be
slow, causing computation cycles to wait for data arrival and leading to delays
in the entire preprocessing phase. Furthermore, the size of the data often
exceeds the memory capacity of standard computing systems. This is a frequent
occurrence in ML, as datasets are typically large and complex. Handling such
large datasets requires sophisticated memory management techniques to ensure
efficient preprocessing without overwhelming the system&amp;rsquo;s memory.&lt;/p>
&lt;p>On the computation side, a naive solution to data operations, especially
aggregation, often leads to inefficiencies. These operations may require
grouping a large chunk of data as a prerequisite before performing any actual
computation. This grouping, without careful configuration and management, can
trigger serious data shuffling, leading to extensive remote data movement when
the data is distributed across various storage systems. Such data movement is
not only time-consuming but also resource-intensive.&lt;/p>
&lt;p>To mitigate these challenges, there is a pressing need to design better
caching, prefetching, and heuristic strategies for data preprocessing. The team
aims to significantly reduce the time and resources required for preprocessing
by optimizing data retrieval and computational processes.&lt;/p>
&lt;p>However, prior to the design and implementation of such a system, a systematic
understanding of the preprocessing workflow is essential. Hence, throughout the
program, the students will need to:&lt;/p>
&lt;ul>
&lt;li>Understand the current system used to preprocess data for ML training, for
example, Hadoop or Spark.&lt;/li>
&lt;li>Collect the common datasets used for different types of ML models.&lt;/li>
&lt;li>Collect the typical operations used for preprocessing these datasets.&lt;/li>
&lt;li>Benchmark the performance in these operations under the existing frameworks
under various experimental settings.&lt;/li>
&lt;li>Package the benchmark such that the team can later use it for reproduction or
evaluation.&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>Project Deliverable&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>Understand the current system used to preprocess data for ML training, for
example, Hadoop or Spark.&lt;/li>
&lt;li>Collect the common datasets used for different types of ML models.&lt;/li>
&lt;li>Collect the typical operations used for preprocessing these datasets.&lt;/li>
&lt;li>Benchmark the performance in these operations under the existing frameworks
under various experimental settings.&lt;/li>
&lt;li>Package the benchmark such that the team can later use it for reproduction or evaluation.&lt;/li>
&lt;/ul></description></item><item><title>FetchPipe: Data Science Pipeline for ML-based Prefetching</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre24/uchicago/fetchpipe/</link><pubDate>Fri, 02 Feb 2024 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre24/uchicago/fetchpipe/</guid><description>&lt;p>&lt;strong>Project Idea Description&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Topics:&lt;/strong> Storage systems, machine learning&lt;/li>
&lt;li>&lt;strong>Skills:&lt;/strong> C/C++, Python, PyTorch, Bash scripting, Linux, Machine Learning modeling&lt;/li>
&lt;li>&lt;strong>Difficulty:&lt;/strong> Hard&lt;/li>
&lt;li>&lt;strong>Size:&lt;/strong> Large (350 hours)&lt;/li>
&lt;li>&lt;strong>Mentors:&lt;/strong> &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/daniar-h.-kurniawan/">Daniar H. Kurniawan&lt;/a> (primary contact), Haryadi Gunawi&lt;/li>
&lt;/ul>
&lt;p>The contemporary landscape of high-performance servers, particularly those designed for data centers and AI/ML training, prominently features solid-state drives (SSDs) and spinning disks (HDDs) as primary storage devices. These components play a crucial role in shaping overall system performance, underscoring the importance of addressing and minimizing Input/Output (I/O) latency. This is particularly crucial given the widespread adoption of hybrid storage systems, where caching and prefetching strategies are instrumental in optimizing storage performance. Caching involves using faster but less dense memory to store frequently accessed data, while prefetching aims to reduce latency by fetching data from slower memory to cache before it is needed. Although both caching and prefetching present valid challenges, our primary emphasis is on the prefetching problem due to the inherent difficulty in predicting future access.&lt;/p>
&lt;p>Traditional prefetchers, dating back 1-2 decades, heavily rely on predefined rules for prefetching based on LBA access sequences, limiting their adaptability to complex scenarios. For instance, the read-ahead prefetcher is confined to prefetching the next data item within a file for faster sequential access. Addressing this limitation, recent advancements include learning-based methods, such as Long Short-Term Memory (LSTM) techniques like DeepPrefetcher and Delta LSTM, which model the LBA delta to cover a broader range of LBAs. However, they are still struggling to achieve high accuracy when the workload pattern changes drastically. Although there are some sophisticated prefetchers capable of learning complex I/O access patterns using Graph structure, they face challenges in their deployment due to the computational cost.&lt;/p>
&lt;p>In this project, our goal is to provide an end-to-end data science pipeline to empower the research on ML-based prefetchers. We believe that this pipeline is crucial for fostering active collaboration between the ML community and storage systems researchers. This collaboration aims to optimize existing ML-based prefetching solutions. Specifically, we will provide the dataset for training/testing and some samples of ML-based models that can further be developed by the community. Furthermore, we will also provide a setup for evaluating the ML model when deployed in storage systems.&lt;/p>
&lt;p>&lt;strong>Project Deliverable&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>Compile I/O traces from various open traces and open systems.&lt;/li>
&lt;li>Develop a pipeline for building ML-based prefetching solutions.&lt;/li>
&lt;li>Build a setup to evaluate the model in a real hybrid storage system.&lt;/li>
&lt;li>Publish a Trovi artifact shared on Chameleon Cloud and a GitHub repository&lt;/li>
&lt;/ul></description></item><item><title>Reproducible Performance Benchmarking for Genomics Workflows on HPC Cluster</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre24/uga/genomicswf/</link><pubDate>Fri, 02 Feb 2024 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre24/uga/genomicswf/</guid><description>&lt;p>&lt;strong>Project Idea description&lt;/strong>&lt;/p>
&lt;p>We aim to characterize the performance of genomic workflows on HPC clusters by conducting two research activities using a broad set of state-of-the-art genomic applications and open-source datasets.&lt;/p>
&lt;p>&lt;strong>Performance Benchmarking and Characterizing Genomic Workflows:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Topics&lt;/strong>: High Performance Computing (HPC), Data Analysis, Scientific Workflows&lt;/li>
&lt;li>&lt;strong>Skills&lt;/strong>: Linux, Python, Bash Scripting, Data Science Toolkit, Kubernetes, Container Orchestration, Genomics Applications (e.g. BWA, FastQC, Picard, GATK, STAR)&lt;/li>
&lt;li>&lt;strong>Difficulty&lt;/strong>: Medium&lt;/li>
&lt;li>&lt;strong>Size&lt;/strong>: Large (350 hours)&lt;/li>
&lt;li>&lt;strong>Mentor(s):&lt;/strong> &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/in-kee-kim/">In Kee Kim&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>In this activity, students will perform comprehensive performance measurements of genomic data processing on HPC clusters using state-of-the-art applications, workflows, and real-world datasets. They will collect and package datasets for I/O, memory, and compute utilization using industry-standard tools and best practices. Measurement will be done using Kubernetes container orchestration on a multi-node cluster to achieve scalability, with either custom-made metrics collection system or integration of existing industry standard tools. (e.g. Prometheus).&lt;/p>
&lt;p>&lt;strong>Quantifying Performance Interference and Assessing Their Impact on Workflow Execution Time:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Topics&lt;/strong>: Machine Learning, Data Analysis, and Scientific Workflows and Computations&lt;/li>
&lt;li>&lt;strong>Skills&lt;/strong>: Linux, Python, Bash Scripting, Data Science Toolkit, Kubernetes, Container Orchestration&lt;/li>
&lt;li>&lt;strong>Difficulty&lt;/strong>: Difficult&lt;/li>
&lt;li>&lt;strong>Size&lt;/strong>: Medium (175 hours)&lt;/li>
&lt;li>&lt;strong>Mentor(s):&lt;/strong> &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/in-kee-kim/">In Kee Kim&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>In this activity, students will measure the slowdown of various applications due to resource contention (e.g. CPU and I/O). Students will analyze whether an application is compute-bound, I/O bound, or both, then analyze the correlation between resource utilization and execution time. Following that, students will assess the impact of per-application slowdown to the slowdown of a whole workflow. To the best of our knowledge, this will be the first study which systematically quantifies per-application interference when running genomics workflow on an HPC cluster.&lt;/p>
&lt;p>For both subprojects, all experiments will also be conducted in a reproducible manner (e.g., as a Trovi package or Chameleon VM images), and all code will be open-sourced (e.g., shared on a public Github repo).&lt;/p>
&lt;p>&lt;strong>Project Deliverable&lt;/strong>:&lt;/p>
&lt;p>A Github repository and/or Chameleon VM image containing source code for application executions &amp;amp; metrics collection.
Jupyter notebooks and/or Trovi artifacts containing analysis and mathematical models for application resource utilization &amp;amp; the effects of data quality.&lt;/p></description></item><item><title>LiveHD</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre24/ucsc/livehd/</link><pubDate>Thu, 01 Feb 2024 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre24/ucsc/livehd/</guid><description>&lt;p>The goals is to enable a more productive flow where the ASIC/FPGA designer can
work with multiple hardware description languages like CHISEL, Pyrope, or
Verilog.&lt;/p>
&lt;p>There are several projects, some compiler infrastructure around
&lt;a href="https://github.com/masc-ucsc/livehd" target="_blank" rel="noopener">LiveHD&lt;/a>. Others around how to interface
LLMs to improve chip design productivity.&lt;/p>
&lt;p>There are the following projects available:&lt;/p>
&lt;ul>
&lt;li>Slang with LiveHD&lt;/li>
&lt;li>Hardware Hierarchical Dynamic Structures (hdds)&lt;/li>
&lt;li>HDLEval for LLMs&lt;/li>
&lt;li>C++ Profiler Optimizer with LLMs&lt;/li>
&lt;li>Decompiler from Assembly to C++ with LLMs&lt;/li>
&lt;/ul>
&lt;h2 id="slang-with-livehd">Slang with LiveHD&lt;/h2>
&lt;h3 id="project-idea">Project Idea&lt;/h3>
&lt;p>&lt;a href="https://github.com/MikePopoloski/slang" target="_blank" rel="noopener">slang&lt;/a> is one of the best open source
Verilog front-ends available. &lt;a href="https://github.com/masc-ucsc/livehd" target="_blank" rel="noopener">LiveHD&lt;/a>
uses slang, but only a subset of Verilog is supported. The goal is to add more slang features.&lt;/p>
&lt;h3 id="project-deliverable">Project Deliverable&lt;/h3>
&lt;p>The slang/LiveHD interface creates LiveHD IR (LNAST IR). The plan is to keep
extending the translation to support more features. This is a project that
allows small steps. The goal is to support all Verilog 2001, and potentially
some System Verilog features.&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Topics:&lt;/strong> SysteVerilog, Compilers&lt;/li>
&lt;li>&lt;strong>Skills Needed:&lt;/strong> Knowledge of Verilog, C++17, some compiler background.&lt;/li>
&lt;li>&lt;strong>Difficulty:&lt;/strong> Medium&lt;/li>
&lt;li>&lt;strong>Size:&lt;/strong> Large&lt;/li>
&lt;li>&lt;strong>Mentor:&lt;/strong> &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/jose-renau/">Jose Renau&lt;/a>, &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/sakshi-garg/">Sakshi Garg&lt;/a>&lt;/li>
&lt;/ul>
&lt;h2 id="hardware-hierarchical-dynamic-structures-hdds">Hardware Hierarchical Dynamic Structures (hdds)&lt;/h2>
&lt;h3 id="project-idea-1">Project Idea&lt;/h3>
&lt;p>&lt;a href="https://github.com/masc-ucsc/hhds" target="_blank" rel="noopener">hdds&lt;/a> aims to build efficient tree and
graph data structures commonly used by hardware compilers. A key difference is
the hierarchical nature, and patterns.&lt;/p>
&lt;h3 id="project-deliverable-1">Project Deliverable&lt;/h3>
&lt;p>There are 2 main components: Graph and Tree.&lt;/p>
&lt;p>For each, there is a hierarchical implementation that allows to connect tree/graphs in a hieararchy.
For example, a graph can call another graph with input and outputs like a Verilog module calls other Verilog modules.&lt;/p>
&lt;p>Both classes should have iterators for traversing in topological sort.&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Topics:&lt;/strong> Data structures for compilers&lt;/li>
&lt;li>&lt;strong>Skills Needed:&lt;/strong> Data structures, C++17&lt;/li>
&lt;li>&lt;strong>Difficulty:&lt;/strong> Medium&lt;/li>
&lt;li>&lt;strong>Size:&lt;/strong> Large&lt;/li>
&lt;li>&lt;strong>Mentor:&lt;/strong> &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/jose-renau/">Jose Renau&lt;/a>, &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/sakshi-garg/">Sakshi Garg&lt;/a>&lt;/li>
&lt;/ul>
&lt;h2 id="hdleval-for-llms">HDLEval for LLMs&lt;/h2>
&lt;h3 id="project-idea-2">Project Idea&lt;/h3>
&lt;p>LLMs can be used to create new hardware. The goal of this project is to create multiple prompts
so that LLM/compiler designers can have examples to improve their flows.&lt;/p>
&lt;h3 id="project-deliverable-2">Project Deliverable&lt;/h3>
&lt;p>The idea is to create many sample projects where a &amp;ldquo;input&amp;rdquo; creates a Verilog artifact. The specification should not assume Verilog as output because other HDLs like Chisel could be used.&lt;/p>
&lt;p>The goal is to create many sample circuits that are realistic and practical. The description can have&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Topics:&lt;/strong> Verilog, LLMs&lt;/li>
&lt;li>&lt;strong>Skills Needed:&lt;/strong> Verilog or Chisel&lt;/li>
&lt;li>&lt;strong>Difficulty:&lt;/strong> Low&lt;/li>
&lt;li>&lt;strong>Size:&lt;/strong> Small or medium&lt;/li>
&lt;li>&lt;strong>Mentor:&lt;/strong> &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/jose-renau/">Jose Renau&lt;/a>&lt;/li>
&lt;/ul>
&lt;h2 id="c-profiler-optimizer-with-llms">C++ Profiler Optimizer with LLMs&lt;/h2>
&lt;h3 id="project-idea-3">Project Idea&lt;/h3>
&lt;p>Fine-tune, and/or RAG, a LLM to leverage profiling tools so that it can provide
code optimization recommendations for C++ and possibly Rust code.&lt;/p>
&lt;h3 id="project-deliverable-3">Project Deliverable&lt;/h3>
&lt;p>Create a Python package (poetry?) called aiprof that analyzes the execution of a C++ or Rust program and
provide code change recommendations to improve performance.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">aiprof ./binary
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>aiprof uses perf tools but also other tools like redspy, zerospy, and loadspy
to find problematic code areas and drive the GPT optimizer.&lt;/p>
&lt;p>The plan is to find several examples of transformations to have a database so
that a model like CodeLlama or mixtral can be fine-tuned with code optimization
recomendations.&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Topics:&lt;/strong> C++, perf tools&lt;/li>
&lt;li>&lt;strong>Skills Needed:&lt;/strong> C++17, Linux performance counters&lt;/li>
&lt;li>&lt;strong>Difficulty:&lt;/strong> Medium&lt;/li>
&lt;li>&lt;strong>Size:&lt;/strong> Large&lt;/li>
&lt;li>&lt;strong>Mentor:&lt;/strong> &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/jose-renau/">Jose Renau&lt;/a>&lt;/li>
&lt;/ul>
&lt;h2 id="decompiler-from-assembly-to-c-with-llms">Decompiler from Assembly to C++ with LLMs&lt;/h2>
&lt;h3 id="project-idea-4">Project Idea&lt;/h3>
&lt;p>There are several decompilers from assembly to C like ghidra and retdec. The idea is to enhance
both outputs to feed an LLM to generate nicer C++ code.&lt;/p>
&lt;h3 id="project-deliverable-4">Project Deliverable&lt;/h3>
&lt;p>ghidra and retdec generate C code out of assembly. The idea is to start with
these tools as baseline, but feed it to a LLM to generate C++ code instead of
plain C.&lt;/p>
&lt;p>Create a Python package (poetry?) called aidecomp that integrates both
decompilers. It allows to target C or C++17.&lt;/p>
&lt;p>To check that the generated code is compatible with the function translated, a
fuzzer could be used. This allows aidecomp to iterate the generation if the
generated code is not equivalent.&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Topics:&lt;/strong> C++, decompilers&lt;/li>
&lt;li>&lt;strong>Skills Needed:&lt;/strong> C++17&lt;/li>
&lt;li>&lt;strong>Difficulty:&lt;/strong> Medium&lt;/li>
&lt;li>&lt;strong>Size:&lt;/strong> Large&lt;/li>
&lt;li>&lt;strong>Mentor:&lt;/strong> &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/jose-renau/">Jose Renau&lt;/a>&lt;/li>
&lt;/ul></description></item><item><title>Drishti</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre24/lbl/drishti/</link><pubDate>Tue, 30 Jan 2024 10:15:00 -0700</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre24/lbl/drishti/</guid><description>&lt;p>&lt;a href="https://github.com/hpc-io/drishti" target="_blank" rel="noopener">Drishti&lt;/a> is a novel interactive web-based analysis framework to visualize I/O traces, highlight bottlenecks, and help understand the I/O behavior of scientific applications. Drishti aims to fill the gap between the trace collection, analysis, and tuning phases. The framework contains an interactive I/O trace analysis component for end-users to visually inspect their applications&amp;rsquo; I/O behavior, focusing on areas of interest and getting a clear picture of common root causes of I/O performance bottlenecks. Based on the automatic detection of I/O performance bottlenecks, our framework maps numerous common and well-known bottlenecks and their solution recommendations that can be implemented by users.&lt;/p>
&lt;h3 id="drishti--server-side-visualization-service">Drishti / Server-side Visualization Service&lt;/h3>
&lt;p>The proposed work will include investigating and building server-side solutions to support the visualization of larger I/O traces and logs, while integrating with the existing analysis, reports, and recommendations.&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Topics:&lt;/strong> &lt;code>I/O&lt;/code> &lt;code>HPC&lt;/code> &lt;code>visualization&lt;/code>, &lt;code>performance analysis&lt;/code>&lt;/li>
&lt;li>&lt;strong>Skills:&lt;/strong> Python, HTML/CSS, JavaScript&lt;/li>
&lt;li>&lt;strong>Difficulty:&lt;/strong> Moderate&lt;/li>
&lt;li>&lt;strong>Size:&lt;/strong> Large (350 hours)&lt;/li>
&lt;li>&lt;strong>Mentors:&lt;/strong> &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/jean-luca-bez/">Jean Luca Bez&lt;/a> and &lt;a href="mailto:sbyna@lbl.gov">Suren Byna&lt;/a>&lt;/li>
&lt;/ul>
&lt;h3 id="drishti--visualization-and-analysis-of-ai-based-applications">Drishti / Visualization and Analysis of AI-based Applications&lt;/h3>
&lt;p>Drishti to handle metrics from non-MPI applications, specifically, AI/ML codes and applications. This work entails adapting the existing framework, heuristics, and recommendations to support metrics collected from AI/ML workloads.&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Topics:&lt;/strong> &lt;code>I/O&lt;/code> &lt;code>HPC&lt;/code> &lt;code>AI&lt;/code> &lt;code>visualization&lt;/code>, &lt;code>performance analysis&lt;/code>&lt;/li>
&lt;li>&lt;strong>Skills:&lt;/strong> Python, AI, performance profiling&lt;/li>
&lt;li>&lt;strong>Difficulty:&lt;/strong> Moderate&lt;/li>
&lt;li>&lt;strong>Size:&lt;/strong> Large (350 hours)&lt;/li>
&lt;li>&lt;strong>Mentors:&lt;/strong> &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/jean-luca-bez/">Jean Luca Bez&lt;/a> and &lt;a href="mailto:sbyna@lbl.gov">Suren Byna&lt;/a>&lt;/li>
&lt;/ul></description></item><item><title>h5bench</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre24/lbl/h5bench/</link><pubDate>Tue, 30 Jan 2024 10:15:00 -0700</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre24/lbl/h5bench/</guid><description>&lt;p>&lt;a href="https://github.com/hpc-io/h5bench" target="_blank" rel="noopener">h5bench&lt;/a> is a suite of parallel I/O benchmarks or kernels representing I/O patterns that are commonly used in HDF5 applications on high performance computing systems. h5bench measures I/O performance from various aspects, including the I/O overhead, and observed I/O rate.&lt;/p>
&lt;p>Parallel I/O is a critical technique for moving data between compute and storage subsystems of supercomputers. With massive amounts of data produced or consumed by compute nodes, high-performant parallel I/O is essential. I/O benchmarks play an important role in this process; however, there is a scarcity of I/O benchmarks representative of current workloads on HPC systems. Toward creating representative I/O kernels from real-world applications, we have created h5bench, a set of I/O kernels that exercise HDF5 I/O on parallel file systems in numerous dimensions. Our focus on HDF5 is due to the parallel I/O library&amp;rsquo;s heavy usage in various scientific applications running on supercomputing systems. The various tests benchmarked in the h5bench suite include I/O operations (read and write), data locality (arrays of basic data types and arrays of structures), array dimensionality (1D arrays, 2D meshes, 3D cubes), I/O modes (synchronous and asynchronous). h5bench measurements can be used to identify performance bottlenecks and their root causes and evaluate I/O optimizations. As the I/O patterns of h5bench are diverse and capture the I/O behaviors of various HPC applications, this study will be helpful to the broader supercomputing and I/O community.&lt;/p>
&lt;h3 id="h5bench--reporting-and-enhancing">h5bench / Reporting and Enhancing&lt;/h3>
&lt;p>The proposed work will include standardizing and enhancing the reports generated by the suite, and integrate additional I/O kernels (e.g., HACC-IO).&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Topics:&lt;/strong> &lt;code>I/O&lt;/code> &lt;code>HPC&lt;/code> &lt;code>benchmarking&lt;/code>&lt;/li>
&lt;li>&lt;strong>Skills:&lt;/strong> Python, C/C++, good communicator&lt;/li>
&lt;li>&lt;strong>Difficulty:&lt;/strong> Moderate&lt;/li>
&lt;li>&lt;strong>Size:&lt;/strong> Large (350 hours)&lt;/li>
&lt;li>&lt;strong>Mentors:&lt;/strong> &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/jean-luca-bez/">Jean Luca Bez&lt;/a> and &lt;a href="mailto:sbyna@lbl.gov">Suren Byna&lt;/a>&lt;/li>
&lt;/ul>
&lt;h3 id="h5bench--compression">h5bench / Compression&lt;/h3>
&lt;p>The proposed work will focus on including compression capabilities into the h5bench core access patterns through HDF5 filters.&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Topics:&lt;/strong> &lt;code>I/O&lt;/code> &lt;code>HPC&lt;/code> &lt;code>benchmarking&lt;/code>, &lt;code>compression&lt;/code>&lt;/li>
&lt;li>&lt;strong>Skills:&lt;/strong> C/C++, Python, HDF5&lt;/li>
&lt;li>&lt;strong>Difficulty:&lt;/strong> Moderate&lt;/li>
&lt;li>&lt;strong>Size:&lt;/strong> Large (350 hours)&lt;/li>
&lt;li>&lt;strong>Mentors:&lt;/strong> &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/jean-luca-bez/">Jean Luca Bez&lt;/a> and &lt;a href="mailto:sbyna@lbl.gov">Suren Byna&lt;/a>&lt;/li>
&lt;/ul></description></item><item><title>StatWrap</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre24/northwestern/statwrap/</link><pubDate>Wed, 24 Jan 2024 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre24/northwestern/statwrap/</guid><description>&lt;p>&lt;a href="https://sites.northwestern.edu/statwrap/" target="_blank" rel="noopener">StatWrap&lt;/a> is a free and open-source assistive, non-invasive discovery and inventory tool to document research projects. It inventories project assets (e.g., code files, data files, manuscripts, documentation) and organizes information without additional input from the user. It also provides structure for users to add searchable and filterable notes connected to files to help communicate metadata about intent and analysis steps.&lt;/p>
&lt;p>At its core, StatWrap helps investigators identify and track changes in a research project as it evolves - which may affect reproducibility. For example: (1) people on the project can change over time, so processes may not be consistently executed due to transitions in employment; (2) data changes over time, due to accruing additional cases, adding new variables, or correcting mistakes in existing data; (3) software (e.g. used for data preparation and statistical analysis) evolves as it is edited, improved, and optimized; and (4) software can break or produce different results due to changes &amp;lsquo;under the hood&amp;rsquo; such as updates to statistical packages, compilers, or interpreters. StatWrap passively and actively documents these changes to support reproducibility.&lt;/p>
&lt;p>Additional information:&lt;/p>
&lt;ul>
&lt;li>&lt;a href="https://sites.northwestern.edu/statwrap/" target="_blank" rel="noopener">StatWrap home&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://github.com/stattag/statwrap" target="_blank" rel="noopener">StatWrap code (GitHub)&lt;/a>&lt;/li>
&lt;/ul>
&lt;h3 id="reproducibility-checklists">Reproducibility Checklists&lt;/h3>
&lt;ul>
&lt;li>&lt;strong>Topics&lt;/strong>: &lt;code>reproducibility&lt;/code>, &lt;code>user interface&lt;/code>, &lt;code>checklists&lt;/code>&lt;/li>
&lt;li>&lt;strong>Skills&lt;/strong>: JavaScript, React&lt;/li>
&lt;li>&lt;strong>Difficulty&lt;/strong>: Medium&lt;/li>
&lt;li>&lt;strong>Size&lt;/strong>: Large (350 hours)&lt;/li>
&lt;li>&lt;strong>Mentor&lt;/strong>: &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/luke-rasmussen/">Luke Rasmussen&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>This goal of this project is to develop support within StatWrap to generate customizable reproducibility checklists. The developer will use the metadata and user input collected by StatWrap to automatically generate checklists. This functionality will allow investigators to automatically generate a document indicating what practices they&amp;rsquo;ve followed to support reproducibility. Part of the project will involve surveying proposed reproducibility checklists and considering what to implement in StatWrap. This work will take a systematic approach to documenting reproducibility, much like PRISMA checklists for systematic reviews or CONSORT checklists for clinical trials.&lt;/p>
&lt;p>The specific tasks of the project include:&lt;/p>
&lt;ul>
&lt;li>Identify candidate reproducibility checklists to use as guides&lt;/li>
&lt;li>Create the data structure for configuring reproducibility checklists&lt;/li>
&lt;li>Display the reproducibility checklist in the user interface&lt;/li>
&lt;li>Store responses and comments to the checklist as provided by the user&lt;/li>
&lt;li>Generate a reproducibility checklist report from StatWrap&lt;/li>
&lt;/ul></description></item><item><title>OpenROAD - An Open-Source, Autonomous RTL-GDSII Flow for Chip Design</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre24/openroad/openroad/</link><pubDate>Mon, 22 Jan 2024 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre24/openroad/openroad/</guid><description>&lt;p>The &lt;a href="https://theopenroadproject.org" target="_blank" rel="noopener">OpenROAD&lt;/a> project is a non-profit project, originally funded by DARPA with the aim of creating open-source EDA tools; an Autonomous flow from RTL-GDSII that completes &amp;lt; 24 hrs, to lower cost and boost innovation in IC design. This project is now supported by &lt;a href="precisioninno.com">Precision Innovations&lt;/a>.&lt;/p>
&lt;p>OpenROAD massively scales and supports EWD (Education and Workforce Development) and supports a broad ecosystem making it a vital tool that supports a rapidly growing Semiconductor Industry.&lt;/p>
&lt;p>OpenROAD is the fastest onramp to gain knowledge, skills and create pathways for great career opportunities in chip design. You will develop important software and hardware design skills by contributing to these interesting projects. You will also have the opportunity to work with mentors from the OpenROAD project and other industry experts.&lt;/p>
&lt;p>We welcome a diverse community of designers, researchers, enthusiasts, software engineers and entrepreneurs to use and contribute to OpenROAD and make a far-reaching impact in the rapidly growing, global Semiconductor Industry.&lt;/p>
&lt;h3 id="create-openroad-tutorials-and-videos">Create OpenROAD Tutorials and Videos&lt;/h3>
&lt;ul>
&lt;li>&lt;strong>Topics&lt;/strong>: &lt;code>Documentation&lt;/code>, &lt;code>Tutorials&lt;/code>, &lt;code>Videos&lt;/code>, &lt;code>VLSI design basics&lt;/code>&lt;/li>
&lt;li>&lt;strong>Skills&lt;/strong>: Video/audio recording and editing, training and education&lt;/li>
&lt;li>&lt;strong>Difficulty&lt;/strong>: Medium&lt;/li>
&lt;li>&lt;strong>Size&lt;/strong>: Large (350 hours)&lt;/li>
&lt;li>&lt;strong>Mentor&lt;/strong>: &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/indira-iyer/">Indira Iyer&lt;/a>, &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/vitor-bandeira/">Vitor Bandeira&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>Create short videos for training and course curriculum highlighting key features and flows in &lt;a href="https://github.com/The-OpenROAD-Project/OpenROAD-flow-scripts" target="_blank" rel="noopener">OpenROAD-flow-scripts&lt;/a>.&lt;/p>
&lt;h3 id="improve-the-openroad-autotuner-flow-and-documentation">Improve the OpenROAD AutoTuner Flow and documentation&lt;/h3>
&lt;ul>
&lt;li>&lt;strong>Topics&lt;/strong>: &lt;code>OpenROAD-flow-scripts&lt;/code>, &lt;code>AutoTuner&lt;/code>, &lt;code>Design Exploration&lt;/code>&lt;/li>
&lt;li>&lt;strong>Skills&lt;/strong>: Knowledge of ML for hyperparameter tuning, Cloud-based computation, Basic VLSI design and tools knowledge, python, C/C++&lt;/li>
&lt;li>&lt;strong>Difficulty&lt;/strong>: Medium&lt;/li>
&lt;li>&lt;strong>Size&lt;/strong>: Large (350 hours)&lt;/li>
&lt;li>&lt;strong>Mentor&lt;/strong>: &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/vitor-bandeira/">Vitor Bandeira&lt;/a>, &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/indira-iyer/">Indira Iyer&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>Test, analyze and enhance the &lt;a href="https://openroad-flow-scripts.readthedocs.io/en/latest/user/InstructionsForAutoTuner.html" target="_blank" rel="noopener">AutoTuner&lt;/a> to improve usability, documentation and QoR. The Autotuner is an important tool in the OpenROAD flow - &lt;a href="https://github.com/The-OpenROAD-Project/OpenROAD-flow-scripts" target="_blank" rel="noopener">OpenROAD-flow-scripts&lt;/a> for Chip design exploration that significantly reduces design time. You will use state-of-the-art ML tools to test the current tool exhaustively for good PPA (performance, power, area) results. You will also update existing documentation to reflect any changes to the tool and flow.&lt;/p>
&lt;h3 id="implement-a-memory-compiler-in-the-openroad-flow">Implement a memory compiler in the OpenROAD Flow&lt;/h3>
&lt;ul>
&lt;li>&lt;strong>Topics&lt;/strong>: &lt;code>OpenROAD-flow-scripts&lt;/code>, &lt;code>Memory Compiler&lt;/code>,&lt;/li>
&lt;li>&lt;strong>Skills&lt;/strong>: Basic VLSI design and tools knowledge, python, tcl, C/C++, memory design a plus&lt;/li>
&lt;li>&lt;strong>Difficulty&lt;/strong>: Medium&lt;/li>
&lt;li>&lt;strong>Size&lt;/strong>: Medium (175 hours)&lt;/li>
&lt;li>&lt;strong>Mentor&lt;/strong>: &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/matt-liberty/">Matt Liberty&lt;/a>, &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/austin-rovinski/">Austin Rovinski&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>Implement a memory compiler as part of the OpenROAD flow to improve the placement and layout efficiency of large, memory-intensive designs. You will start with an existing code base to develop this feature: &lt;a href="https://github.com/The-OpenROAD-Project-staging/OpenROAD/tree/dffram" target="_blank" rel="noopener">https://github.com/The-OpenROAD-Project-staging/OpenROAD/tree/dffram&lt;/a>
This is another option: &lt;a href="https://github.com/AUCOHL/DFFRAM" target="_blank" rel="noopener">https://github.com/AUCOHL/DFFRAM&lt;/a>
Enhance code to support DFFRAM support for the OpenROAD native flow, &lt;a href="https://github.com/The-OpenROAD-Project/OpenROAD-flow-scripts" target="_blank" rel="noopener">OpenROAD-flow-scripts&lt;/a>.&lt;/p>
&lt;h3 id="integrate-a-tcl-and-python-linter">Integrate a tcl and python linter&lt;/h3>
&lt;ul>
&lt;li>&lt;strong>Topics&lt;/strong>: &lt;code>Linting&lt;/code>, &lt;code>Workflow&lt;/code>&lt;/li>
&lt;li>&lt;strong>Skills&lt;/strong>: tcl, python, linting&lt;/li>
&lt;li>&lt;strong>Difficulty&lt;/strong>: Easy&lt;/li>
&lt;li>&lt;strong>Size&lt;/strong>: Small (90 hours)&lt;/li>
&lt;li>&lt;strong>Mentor&lt;/strong>: &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/vitor-bandeira/">Vitor Bandeira&lt;/a>, &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/austin-rovinski/">Austin Rovinski&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>Integrate a tcl and python linter for tools in OpenROAD and &lt;a href="https://github.com/The-OpenROAD-Project/OpenROAD-flow-scripts" target="_blank" rel="noopener">OpenROAD-flow-scripts&lt;/a> to enforce error checking, style and best practices.&lt;/p>
&lt;h3 id="llm-assistant-for-openroad---create-model-architecture-and-prototype">LLM assistant for OpenROAD - Create Model Architecture and Prototype&lt;/h3>
&lt;ul>
&lt;li>&lt;strong>Topics&lt;/strong>: &lt;code>Large Language Model&lt;/code>, &lt;code>Machine Learning&lt;/code>, &lt;code>Model Architecture&lt;/code>, &lt;code>Model Deployment&lt;/code>&lt;/li>
&lt;li>&lt;strong>Skills&lt;/strong>: large language model engineering, prompt engineering, fine-tuning&lt;/li>
&lt;li>&lt;strong>Difficulty&lt;/strong>: Medium&lt;/li>
&lt;li>&lt;strong>Size&lt;/strong>: Medium (175 hours)&lt;/li>
&lt;li>&lt;strong>Mentor&lt;/strong>: &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/indira-iyer/">Indira Iyer&lt;/a>, &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/jack-luar/">Jack Luar&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>This project involves the creation of a conversational assistant designed around &lt;a href="https://github.com/The-OpenROAD-Project/OpenROAD" target="_blank" rel="noopener">OpenROAD&lt;/a> to answer user queries. You will be working in tandem with members of the OpenROAD team and other researchers to deliver a final deployable prototype. You will focus on the design and implementation of modular LLM architectures. You will be experimenting through different architectures and justifying which approach works the best on our domain-specific data. Open to proposals from all levels of ML practitioners.&lt;/p>
&lt;h3 id="llm-assistant-for-openroad---data-engineering-and-testing">LLM assistant for OpenROAD - Data Engineering and testing&lt;/h3>
&lt;ul>
&lt;li>&lt;strong>Topics&lt;/strong>: &lt;code>Large Language Model&lt;/code>, &lt;code>Machine Learning&lt;/code>, &lt;code>Data Engineering&lt;/code>, &lt;code>Model Deployment&lt;/code>, &lt;code>Testing&lt;/code>&lt;/li>
&lt;li>&lt;strong>Skills&lt;/strong>: large language model engineering, prompt engineering, fine-tuning&lt;/li>
&lt;li>&lt;strong>Difficulty&lt;/strong>: Medium&lt;/li>
&lt;li>&lt;strong>Size&lt;/strong>: Medium (175 hours)&lt;/li>
&lt;li>&lt;strong>Mentor&lt;/strong>: &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/indira-iyer/">Indira Iyer&lt;/a>, &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/jack-luar/">Jack Luar&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>This project involves the creation of a conversational assistant designed around &lt;a href="https://github.com/The-OpenROAD-Project/OpenROAD" target="_blank" rel="noopener">OpenROAD&lt;/a> to answer user queries. You will be working in tandem with members of the OpenROAD team and other researchers to deliver a final deployable prototype. This project will focus on the data engineering portion of the project. This may include: training pipelines specifically tailored for fine-tuning LLM models, data annotation, preprocessing and augmentation. Open to proposals from all levels of ML practitioners.&lt;/p>
&lt;h3 id="create-unit-tests-for-openroad-tools">Create Unit tests for OpenROAD tools&lt;/h3>
&lt;ul>
&lt;li>&lt;strong>Topics&lt;/strong>: &lt;code>OpenROAD-flow-scripts&lt;/code>, &lt;code>unit testing&lt;/code>&lt;/li>
&lt;li>&lt;strong>Skills&lt;/strong>: Basic VLSI design and tools knowledge, python, tcl, C/C++, Github&lt;/li>
&lt;li>&lt;strong>Difficulty&lt;/strong>: Medium&lt;/li>
&lt;li>&lt;strong>Size&lt;/strong>: Medium ( 175 hours)&lt;/li>
&lt;li>&lt;strong>Mentor&lt;/strong>: &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/vitor-bandeira/">Vitor Bandeira&lt;/a>, &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/indira-iyer/">Indira Iyer&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>You will build unit tests to test specific features of the OpenROAD tool which will become part of the regression test. Here is an example of a test for UPF support: &lt;a href="https://github.com/The-OpenROAD-Project/OpenROAD/blob/master/test/upf/mpd_aes.upf" target="_blank" rel="noopener">https://github.com/The-OpenROAD-Project/OpenROAD/blob/master/test/upf/mpd_aes.upf&lt;/a>.
This is a great way to learn VLSI flow basics and the art of testing them for practical applications.&lt;/p></description></item><item><title>StatTag: Connecting statistical software to Microsoft Word</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre24/northwestern/stattag/</link><pubDate>Mon, 22 Jan 2024 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre24/northwestern/stattag/</guid><description>&lt;p>StatTag is a free, &lt;a href="https://github.com/stattag" target="_blank" rel="noopener">open-source&lt;/a> software plug-in for conducting reproducible research. It facilitates the creation of dynamic documents using Microsoft Word documents and statistical software, such as Stata, SAS, R, and Python. Users can use StatTag to embed statistical output (estimates, tables and figures) into a Word document and then with one click individually or collectively update output with a call to the statistical program.&lt;/p>
&lt;p>What makes StatTag different from other tools for creating dynamic documents is that it allows for statistical code to be edited directly from Microsoft Word. Using StatTag means that modifications to a dataset or analysis no longer require transcribing or re-copying results into a manuscript or table.&lt;/p>
&lt;p>StatTag works by interpreting specially formatted comments (&amp;ldquo;tags&amp;rdquo;) within a code file. StatTag then reads the code file, executes the code through the corresponding language interpreter, formats the results, and inserts them into the Word document as a field.&lt;/p>
&lt;p>There are versions of StatTag for both Microsoft Windows and macOS. Proposed projects here are specific to the Microsoft Windows version, which is developed in the C# programming language.&lt;/p>
&lt;p>&lt;strong>Additional Information:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>&lt;a href="https://sites.northwestern.edu/stattag/" target="_blank" rel="noopener">StatTag homepage&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://github.com/stattag" target="_blank" rel="noopener">StatTag on GitHub&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://pubmed.ncbi.nlm.nih.gov/33215069/" target="_blank" rel="noopener">Welty et al., &amp;ldquo;Facilitating reproducible research through direct connection of data analysis with manuscript preparation: StatTag for connecting statistical software to Microsoft Word&amp;rdquo;&lt;/a>&lt;/li>
&lt;/ul>
&lt;h3 id="support-additional-programming-languages">Support Additional Programming Languages&lt;/h3>
&lt;ul>
&lt;li>Topics: &lt;code>reproducibility&lt;/code>, &lt;code>statistics&lt;/code>&lt;/li>
&lt;li>Skills: C# and one of: MATLAB, Octave, SQL, Julia&lt;/li>
&lt;li>Difficulty: Medium&lt;/li>
&lt;li>Size: Medium or large (175 or 350 hours)&lt;/li>
&lt;li>Mentor: &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/luke-rasmussen/">Luke Rasmussen&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>Following the same structure used for other language support in StatTag, develop support for a new programming language (suggested languages are provided, but applicants can propose others). This will include:&lt;/p>
&lt;ul>
&lt;li>Creating a Parser class to support StatTag-specific interpretation of results (e.g., identifying a line of code that is writing to a CSV file, then loading that CSV file)&lt;/li>
&lt;li>Creating an Automation class that manages communication with the supported programming language&amp;rsquo;s interpreter. Python support uses a Jupyter kernel, and both SAS and Stata support invoke DLLs directly.&lt;/li>
&lt;li>Integrating the language into the UI (e.g., allowing it to be a valid code file, adding the icon for the code file to the UI)&lt;/li>
&lt;li>Additional setup/configuration as needed (e.g., SQL support would require secure configuration for connecting to the databse server).&lt;/li>
&lt;/ul>
&lt;p>Develop unit tests to demonstrate code is functioning. Create test scripts in the implemented language to exercise and demonstrate end-to-end execution.&lt;/p>
&lt;h3 id="process-tags-in-jupyter-notebooks">Process Tags in Jupyter Notebooks&lt;/h3>
&lt;ul>
&lt;li>Topics: &lt;code>reproducibility&lt;/code>, &lt;code>jupyter&lt;/code>&lt;/li>
&lt;li>Skills: C#, Jupyter Notebooks, Python&lt;/li>
&lt;li>Difficulty: Medium&lt;/li>
&lt;li>Size: Medium (175 hours)&lt;/li>
&lt;li>Mentor: &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/luke-rasmussen/">Luke Rasmussen&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>StatTag uses&lt;/p>
&lt;p>StatTag currently has support for Python, and utilizes the Jupyter kernel to interact with Python. However, we currently do not fully support processing StatTag &amp;rsquo;tags&amp;rsquo; in a Jupyter notebook.&lt;/p>
&lt;p>Following the same structure used for RMarkdown integration in StatTag, develop support for Jupyter Notebooks in StatTag. StatTag should be able to:&lt;/p>
&lt;ul>
&lt;li>Take as input one or more Jupyter Notebooks&lt;/li>
&lt;li>Confirm that the Jupyter Notebook uses Python&lt;/li>
&lt;li>Identify StatTag formatted tags within the notebook&lt;/li>
&lt;li>Pass relevant code to the Python processor already implemented in StatTag&lt;/li>
&lt;/ul>
&lt;p>In addition, develop unit tests to demonstrate code is functioning as intended. Create test Jupyter Notebooks to exercise and demonstrate end-to-end execution.&lt;/p></description></item><item><title>AIIO / Graph Neural Network</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre24/lbl/aiio/</link><pubDate>Wed, 17 Jan 2024 10:15:56 -0700</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre24/lbl/aiio/</guid><description>&lt;p>[AIIO] (&lt;a href="https://github.com/hpc-io/aiio" target="_blank" rel="noopener">https://github.com/hpc-io/aiio&lt;/a>) revolutionizes the way for users to automatically tune the I/O performance of applications on HPC systems. It currently works on linear regression models but has more opportunities to work on heterogeneous data, such as programming info. This requires extending the linear regression model to more complex models, such as heterogeneous graph neural networks. The proposed work will include developing the graph neural work-based model to predict the I/O performance and interpretation.&lt;/p>
&lt;h3 id="aiio--graph-neural-network">AIIO / Graph Neural Network&lt;/h3>
&lt;ul>
&lt;li>&lt;strong>Topics&lt;/strong>: AIIO/Graph Neural Network`&lt;/li>
&lt;li>&lt;strong>Skills&lt;/strong>: Python, Github, Machine Learning&lt;/li>
&lt;li>&lt;strong>Difficulty&lt;/strong>: Difficult&lt;/li>
&lt;li>&lt;strong>Size&lt;/strong>: Large (350 hours)&lt;/li>
&lt;li>&lt;strong>Mentor&lt;/strong>: &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/bin-dong/">Bin Dong&lt;/a>, Suren Byna&lt;/li>
&lt;/ul>
&lt;p>The Specific tasks of the project include:&lt;/p>
&lt;ul>
&lt;li>Develop the data pre-processing pipeline to convert I/O logs into formats which are required by the Graph Neural Network&lt;/li>
&lt;li>Build and test the Graph Neural Network to model the I/O performance for HPC applications.&lt;/li>
&lt;li>Test and evaluate the accuracy of the Graph Neural Network with test cases from AIIO&lt;/li>
&lt;/ul></description></item><item><title>FasTensor / Stream Processing</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre24/lbl/fastensor/</link><pubDate>Wed, 17 Jan 2024 10:15:56 -0700</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre24/lbl/fastensor/</guid><description>&lt;p>[FasTensor] (&lt;a href="https://github.com/BinDong314/FasTensor" target="_blank" rel="noopener">https://github.com/BinDong314/FasTensor&lt;/a>) is a generic tensor processing engine with scalability from single nodes to thousands of nodes on HPC. FasTensor supports applications from traditional SQL query to complex DFT solver in scientific applications. It has a 1000X performance advantage over MapReduce and Spark in supporting generic data processing functions on tensor structure. In this project, we propose to expand FasTensor with streaming functionality to support online data processing. Specifically, participants of this project will develop a stream endpoint for retrieving live data output from applications, such as DAS. The stream endpoint performs the function to maintain the pointer of data, which could be a n-dimensional subset of a tensor.&lt;/p>
&lt;h3 id="fastensor--stream-processing">FasTensor / Stream Processing&lt;/h3>
&lt;ul>
&lt;li>&lt;strong>Topics&lt;/strong>: &lt;code>FasTensor/Streaming Processing&lt;/code>&lt;/li>
&lt;li>&lt;strong>Skills&lt;/strong>: C++, github&lt;/li>
&lt;li>&lt;strong>Difficulty&lt;/strong>: Difficult&lt;/li>
&lt;li>&lt;strong>Size&lt;/strong>: Large (350 hours)&lt;/li>
&lt;li>&lt;strong>Mentor&lt;/strong>: &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/bin-dong/">Bin Dong&lt;/a>, &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/john-wu/">John Wu&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>The Specific tasks of the project include:&lt;/p>
&lt;ul>
&lt;li>Building a mock workflow based on our DAS application (&lt;a href="https://github.com/BinDong314/DASSA" target="_blank" rel="noopener">https://github.com/BinDong314/DASSA&lt;/a>) to test stream processing. The mock workflow comprises a data producer, which generates DAS data, and a data consumer, which processes the data.&lt;/li>
&lt;li>Developing a Stream Endpoint (e.g., I/O driver) to iteratively read dynamically increasing data from a directory. The stream endpoint essentially includes open, read, and write functions, and a pointer to remember current file pointer.&lt;/li>
&lt;li>Integrating the Stream Endpoint into the FasTensor library.&lt;/li>
&lt;li>Evaluating the performance of the mock workflow with the new Stream Endpoint.&lt;/li>
&lt;li>Documenting the execution mechanism.&lt;/li>
&lt;/ul></description></item><item><title>SLICES/pos: Reproducible Experiment Workflows</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre24/tum/slices/</link><pubDate>Sat, 06 Jan 2024 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre24/tum/slices/</guid><description>&lt;p>&lt;a href="https://www.slices-ri.eu/" target="_blank" rel="noopener">SLICES-RI&lt;/a> is a european research initiative aiming to create a digital research infrastructure providing an experimental platform for the upcoming decades.
One of the main goals of this initiative is the creation of fully reproducible experiments.
The SLICES research infrastructure will consist of different experiment sites focusing on different research domains such as AI experiments, Cloud and HPC-driven experiments, or investigations on wireless networks.&lt;/p>
&lt;p>To achieve reproducibility, the research group on network architectures and services of the Technical University of Munich develops the &lt;a href="https://dl.acm.org/doi/10.1145/3485983.3494841" target="_blank" rel="noopener">SLICES plain orchestrating service (SLICES/pos)&lt;/a>.
This framework supports a fully automated structured experiment workflow.
The structure of this workflow acts as a template for the design of experiments.
Users that adhere to this template will create inherently reproducible experiments, a feature we call reproducible-by-design.&lt;/p>
&lt;p>The SLICES/pos framework currently exists in two versions:
(1) A fully-managed pos deployment, that uses the SLICES/pos framework to manage the entire testbed and (2) a hosted SLICES/pos deployment.
The hosted SLICES/pos deployment is a temporary deployment that runs inside existing testbeds such as &lt;a href="https://chameleoncloud.org/" target="_blank" rel="noopener">Chameleon&lt;/a> or &lt;a href="https://cloudlab.us/" target="_blank" rel="noopener">CloudLab&lt;/a>.&lt;/p>
&lt;p>&lt;strong>Additional Information:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>&lt;a href="https://dl.acm.org/doi/10.1145/3485983.3494841" target="_blank" rel="noopener">plain orchestrating service&lt;/a>&lt;/li>
&lt;/ul>
&lt;h3 id="support-additional-programming-languages">Support Additional Programming Languages&lt;/h3>
&lt;ul>
&lt;li>Topics: &lt;code>reproducibility&lt;/code>, &lt;code>statistics&lt;/code>&lt;/li>
&lt;li>Skills: Python&lt;/li>
&lt;li>Difficulty: Medium&lt;/li>
&lt;li>Size: Large (350 hours)&lt;/li>
&lt;li>Mentor: &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/sebastian-gallenmuller/">Sebastian Gallenmüller&lt;/a>, &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/georg-carle/">Georg Carle&lt;/a>, and &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/kate-keahey/">Kate Keahey&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>Design a set of basic examples that demonstrate the usage of pos that can be executed on the SLICES/pos testbed in Munich and the Chameleon testbed.
This set of basic examples acts as a demonstration of pos&amp;rsquo; capabilities and as a tutorial for new users.
Based on these introductory examples, a more complex experiment shall be designed and executed, demonstrating the portability of the experiments between testbeds.
This experiment involves the entire experiment workflow consisting of the setup and configuration of the testbed infrastructure, the collection of measurement results, and finally, their evaluation and publication.
Multiple results of this experiment shall be created on different testbeds and hardware configurations.
The results of the experiments will differ depending on the different hardware platforms on which the experiment was executed.
These results shall be evaluated and analyzed to find a common connection between the different result sets of the experiments.&lt;/p>
&lt;ul>
&lt;li>Create introductory examples demonstrating the usage of pos&lt;/li>
&lt;li>Design and create a portable complex network experiment based on SLICES/pos&lt;/li>
&lt;li>Execute the experiment on different testbeds (Chameleon, SLICES/pos testbed)&lt;/li>
&lt;li>Analysis of reproduced experiment&lt;/li>
&lt;li>Automated analysis of experimental results&lt;/li>
&lt;li>Deduction of a model describing the fundamental connections between different experiment executions&lt;/li>
&lt;/ul></description></item><item><title>Static Python Perf: Measuring the Cost of Sound Gradual Types</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre24/uutah/static-python-perf/</link><pubDate>Sat, 06 Jan 2024 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre24/uutah/static-python-perf/</guid><description>&lt;p>Gradual typing is a solution to the longstanding tension between typed and
untyped languages: let programmers write code in any flexible language (such
as Python), equip the language with a suitable type system that can describe
invariants in part of a program, and use run-time checks to ensure soundness.&lt;/p>
&lt;p>For now, though, the cost of run-time checks can be enormous.
Order-of-magnitude slowdowns are common. This high cost is a main reason why
TypeScript is unsound by design &amp;mdash; its types are not trustworthy in order
to avoid run-time costs.&lt;/p>
&lt;p>Recently, a team at Meta built a gradually-typed variant of Python called
(&lt;em>drumroll&lt;/em>) Static Python. They report an incredible 4% increase in CPU
efficiency at Instagram thanks to the sound types in Static Python. This
kind of speedup is unprecedented.&lt;/p>
&lt;p>Other languages may want to follow the Static Python approach to gradual types,
but there are big reasons to doubt the Instagram numbers:&lt;/p>
&lt;ul>
&lt;li>the experiment code is closed source, and&lt;/li>
&lt;li>the experiment itself is not easily reproducible (even for Instagram!).&lt;/li>
&lt;/ul>
&lt;p>Static Python needs a rigorous, reproducible performance evaluation to test
whether it is indeed a fundamental advance for gradual typing.&lt;/p>
&lt;p>Related Work:&lt;/p>
&lt;ul>
&lt;li>Gradual Soundness: Lessons from Static Python
&lt;a href="https://programming-journal.org/2023/7/2/" target="_blank" rel="noopener">https://programming-journal.org/2023/7/2/&lt;/a>&lt;/li>
&lt;li>Producing Wrong Data Without Doing Anything Obviously Wrong!
&lt;a href="https://users.cs.northwestern.edu/~robby/courses/322-2013-spring/mytkowicz-wrong-data.pdf" target="_blank" rel="noopener">https://users.cs.northwestern.edu/~robby/courses/322-2013-spring/mytkowicz-wrong-data.pdf&lt;/a>&lt;/li>
&lt;li>On the Cost of Type-Tag Soundness
&lt;a href="https://users.cs.utah.edu/~blg/resources/pdf/gm-pepm-2018.pdf" target="_blank" rel="noopener">https://users.cs.utah.edu/~blg/resources/pdf/gm-pepm-2018.pdf&lt;/a>&lt;/li>
&lt;/ul>
&lt;h3 id="design-and-run-an-experiment">Design and Run an Experiment&lt;/h3>
&lt;ul>
&lt;li>Topics: &lt;code>performance&lt;/code>, &lt;code>cluster computing&lt;/code>, &lt;code>statistics&lt;/code>&lt;/li>
&lt;li>Skills: Python AST parsing, program generation, scripting, measuring performance&lt;/li>
&lt;li>Difficulty: Medium&lt;/li>
&lt;li>Size: Medium (175 hours)&lt;/li>
&lt;li>Mentor: &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/ben-greenman/">Ben Greenman&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>Design an experiment that covers the space of gradually-typed Static Python programs
in a fair way. Since every variable in a program can have up to 3 different types,
there are easily 3^20 possibilities in small programs &amp;mdash; far too many to measure
exhaustively.&lt;/p>
&lt;p>Run the experiment on an existing set of benchmarks using a cluster such as CloudLab.
Manage the cluster machines across potentially dozens of reservations and combine
the results into one comprehensive view of Static Python performance.&lt;/p>
&lt;h3 id="derive-benchmarks-from-python-applications">Derive Benchmarks from Python Applications&lt;/h3>
&lt;ul>
&lt;li>Topics: &lt;code>types&lt;/code>, &lt;code>optimization&lt;/code>, &lt;code>benchmark design&lt;/code>&lt;/li>
&lt;li>Skills: Python&lt;/li>
&lt;li>Difficulty: Medium&lt;/li>
&lt;li>Size: Small to Large&lt;/li>
&lt;li>Mentor: &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/ben-greenman/">Ben Greenman&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>Build or find realistic Python applications, equip them with rich types,
and modify them to run a meaningful performance benchmark. Running a benchmark
should produce timing information, and the timing should not be significantly
influenced by random variables, I/O actions, or system events.&lt;/p></description></item><item><title>PolyPhy</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre24/ucsc/polyphy/</link><pubDate>Mon, 01 Jan 2024 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre24/ucsc/polyphy/</guid><description>&lt;p>&lt;a href="https://github.com/PolyPhyHub/PolyPhy" target="_blank" rel="noopener">PolyPhy&lt;/a> is a GPU oriented agent-based system for reconstructing and visualizing &lt;em>optimal transport networks&lt;/em> defined over sparse data. Rooted in astronomy and inspired by nature, we have used an early prototype called &lt;a href="https://github.com/CreativeCodingLab/Polyphorm" target="_blank" rel="noopener">Polyphorm&lt;/a> to reconstruct the &lt;a href="https://youtu.be/5ILwq5OFuwY" target="_blank" rel="noopener">Cosmic web&lt;/a> structure, but also to discover network-like patterns in natural language data. You can see an instructive overview of PolyPhy in our &lt;a href="https://elek.pub/workshop_cross2022.html" target="_blank" rel="noopener">workshop&lt;/a> and more details about our research &lt;a href="https://elek.pub/projects/Rhizome-Cosmology" target="_blank" rel="noopener">here&lt;/a>.&lt;/p>
&lt;p>Under the hood, PolyPhy uses a richer 3D scalar field representation of the reconstructed network, instead of a typical discrete representation like a graph or a mesh. The ultimate purpose of PolyPhy is to become a toolkit for a range of specialists across different disciplines: astronomers, neuroscientists, data scientists and even artists and designers. PolyPhy aspires to be a tool for discovering connections between different disciplines by creating quantitatively comparable structural analytics.&lt;/p>
&lt;h3 id="polyphy-web-presence">PolyPhy Web Presence&lt;/h3>
&lt;ul>
&lt;li>&lt;strong>Topics:&lt;/strong> &lt;code>Web Development&lt;/code> &lt;code>UX&lt;/code> &lt;code>Social Media&lt;/code>&lt;/li>
&lt;li>&lt;strong>Skills:&lt;/strong> full stack web development, Javascript, good communicator&lt;/li>
&lt;li>&lt;strong>Difficulty:&lt;/strong> Challenging&lt;/li>
&lt;li>&lt;strong>Size:&lt;/strong> Large (350 hours)&lt;/li>
&lt;li>&lt;strong>Mentors:&lt;/strong> &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/oskar-elek/">Oskar Elek&lt;/a>, &lt;a href="mailto:ez@nmsu.edu">Ezra Huscher&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>The online presentation of a software project is without a doubt one of the core ingredients of its success. This project aims to develop a sustainable web presentce for PolyPhy, catering to interested contributors, active collaborators, and users alike.&lt;/p>
&lt;p>Specific tasks:&lt;/p>
&lt;ul>
&lt;li>Closely work with the mentors on understanding the context of the project and its detailed requirements in preparation of the proposal.&lt;/li>
&lt;li>Port the existing &lt;a href="https://polyphy.io" target="_blank" rel="noopener">website&lt;/a> into a more modern Javascript framework (such as Next.js) that provides a user-friendly CMS and admin interface.&lt;/li>
&lt;li>Update the contents of the website with new information from the repository &lt;a href="https://github.com/CreativeCodingLab/Polyphorm" target="_blank" rel="noopener">repository page&lt;/a> as well as other sources as directed by the mentors.&lt;/li>
&lt;li>Develop a simple functional system for posting updates about the project to selected social media and other communication platforms (LinkedIn, Twitter/X or Mastodon, mailing list) which will also be reflected on the website.&lt;/li>
&lt;li>Optional: improve the UX of the website where needed.&lt;/li>
&lt;li>Optional: implement website analytics (visitor stats etc).&lt;/li>
&lt;/ul>
&lt;h3 id="data-visualization-and-analysis-with-polyphypolyglot">Data Visualization and Analysis with PolyPhy/Polyglot&lt;/h3>
&lt;ul>
&lt;li>&lt;strong>Topics:&lt;/strong> &lt;code>Data Science&lt;/code> &lt;code>Data Visualization&lt;/code> &lt;code>Point Clustering&lt;/code> &lt;code>3D&lt;/code> &lt;code>Neural Embeddings&lt;/code>&lt;/li>
&lt;li>&lt;strong>Skills:&lt;/strong> data science, Python, Javascript, statistics, familiarity with AI and latent embedding spaces a big plus&lt;/li>
&lt;li>&lt;strong>Difficulty:&lt;/strong> Challenging&lt;/li>
&lt;li>&lt;strong>Size:&lt;/strong> Large (350+ hours)&lt;/li>
&lt;li>&lt;strong>Mentors:&lt;/strong> &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/oskar-elek/">Oskar Elek&lt;/a>, &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/kiran-deol/">Kiran Deol&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>The aim of this project is to explore a novel data-scientific usecase using PolyPhy and its associated web visualization interface &lt;a href="https://github.com/PolyPhyHub/PolyGlot" target="_blank" rel="noopener">PolyGlot&lt;/a>. The contributor is expected to identify a dataset they are already well familiar with, and that fits the application scope of the PolyPhy/PolyGlot tooling: a complex point cloud arising from a 3D or a higher dimensional process which will benefit from latent pattern identification and a subsequent visual as well as quantitative analysis. The contributor needs to have the rights for using the dataset - either by owning the copyright or via the open-source nature of the data.&lt;/p>
&lt;p>&lt;strong>Specific tasks:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>Closely work with the mentors on understanding the context of the project and its detailed requirements in preparation of the proposal.&lt;/li>
&lt;li>Become acquainted with the tooling (PolyPhy, PolyGlot) prior to the start of the project period.&lt;/li>
&lt;li>Document the nature of the target dataset and define the complete data pipeline with assistance of the mentors, including the specific analytic tasks and objectives.&lt;/li>
&lt;li>Implement the data pipeline in PolyPhy and PolyGlot.&lt;/li>
&lt;li>Document the process and resulting findings in a publicly available report.&lt;/li>
&lt;/ul></description></item><item><title>Writing a blog about your OSRE 2024 project</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/ucsc/admin/20231006-admin/</link><pubDate>Fri, 06 Oct 2023 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre24/ucsc/admin/20231006-admin/</guid><description>&lt;p>As last year, the Organization Admins will be asking students and contributors to provide regular status updates which will help us better highlight the work you are doing and track activities within our OSRE projects. These progress reports will also form the basis of blog reports prepared by students in the course of their summer. Blog reports should include links to proposals, presentations, reports, and an overview of the student&amp;rsquo;s experience.&lt;/p>
&lt;p>Your experience is invaluable for future OSRE candidates and for improving the program every year.&lt;/p>
&lt;h2 id="size-and-content">Size and content&lt;/h2>
&lt;p>Keep it short and crisp. Include a short description of your project, a link to your project proposal, and, later in the program, links to the GSoC reports you provided.&lt;/p>
&lt;h2 id="making-a-pull-request-for-your-blog">Making a pull request for your blog&lt;/h2>
&lt;ul>
&lt;li>
&lt;p>Fork the &lt;a href="https://github.com/ucsc-ospo/ucsc-ospo.github.io" target="_blank" rel="noopener">git repository&lt;/a>&lt;/p>
&lt;/li>
&lt;li>
&lt;p>If you haven&amp;rsquo;t already done so, add your profile using &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/osredocs/formentors/#instructions-for-adding-a-mentor">these instructions&lt;/a>&lt;/p>
&lt;ul>
&lt;li>&lt;strong>IMPORTANT&lt;/strong>: Under &lt;code>user_groups:&lt;/code> add &lt;code>- 2024 Contributors&lt;/code> (as opposed to any of the two mentor groups)&lt;/li>
&lt;li>The short bio and any other information goes below the frontmatter&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>
&lt;p>Post your blog&lt;/p>
&lt;ul>
&lt;li>Add &lt;code>/content/report/osre24/ORGANIZATION/PROJECTNAME/DATE-USERNAME/index.md&lt;/code>&lt;/li>
&lt;li>Add a frontmatter to &lt;code>index.md&lt;/code>, using the labels below&lt;/li>
&lt;li>Blog text goes below the frontmatter&lt;/li>
&lt;li>In that same directory include a picture and call it &lt;code>featured.png&lt;/code> (also supports &lt;code>.jpg&lt;/code>, &lt;code>.jpeg&lt;/code>)&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>
&lt;p>Commit to your fork and make a pull request and &lt;a href="mailto:ospo-info-group@ucsc.edu/">email OSRE Admins&lt;/a> (currently: Stephanie Lieggi, Carlos Maltzahn).&lt;/p>
&lt;/li>
&lt;/ul>
&lt;h3 id="example-frontmatter-and-text-body">Example frontmatter and text body&lt;/h3>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">---
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">title: &amp;#34;YOUR TITLE&amp;#34;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">subtitle: &amp;#34;YOUR SUBTITLE (OPTIONAL)&amp;#34;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">summary:
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">authors:
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> - USERNAME1
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> - USERNAME2
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">tags: [&amp;#34;osre24&amp;#34;]
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">categories: []
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">date: YYYY-MM-DD
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">lastmod: YYYY-MM-DD
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">featured: false
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">draft: false
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"># Featured image
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"># To use, add an image named `featured.jpg/png` to your page&amp;#39;s folder.
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"># Focal points: Smart, Center, TopLeft, Top, TopRight, Left, Right, BottomLeft, Bottom, BottomRight.
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">image:
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> caption: &amp;#34;&amp;#34;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> focal_point: &amp;#34;&amp;#34;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> preview_only: false
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">---
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">As part of the [PROJECTNAME](/project/osre24/ORGANIZATION/PROJECTNAME) my [proposal](https://...) under the mentorship of MENTOR aims to ...
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div></description></item></channel></rss>