<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>osre25 | UCSC OSPO</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/tag/osre25/</link><atom:link href="https://deploy-preview-1007--ucsc-ospo.netlify.app/tag/osre25/index.xml" rel="self" type="application/rss+xml"/><description>osre25</description><generator>Wowchemy (https://wowchemy.com)</generator><language>en-us</language><lastBuildDate>Wed, 05 Nov 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>osre25</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/tag/osre25/</link></image><item><title>Final Report for Smart Environments</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre25/uchicago/smart_environments/20251105-sam_huang/</link><pubDate>Wed, 05 Nov 2025 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre25/uchicago/smart_environments/20251105-sam_huang/</guid><description>&lt;h2 id="introduction">Introduction&lt;/h2>
&lt;p>The process of creating the necessary software environment for code to run is a significant challenge in software development. Given a piece of open-source software intended for research, setting up the environmental dependencies to run the software could take significant manual effort. Existing automation methods struggle due to the complexity of managing diverse languages, dependencies, and hardware. In Smart Environments, I have created ENVAGENT, a general multi-agent framework designed to automate the construction of executable environments for reproducing research prototypes from top-tier conferences and journals. While reproducibility has become a growing concern in the research community, the process of setting up environments remains time-consuming, error-prone, and often poorly documented.&lt;/p>
&lt;p>To assess this capability, a new benchmark, ENVBENCH, was created, containing 54 popular projects across seven languages. Results show ENVAGENT dramatically improves environment construction compared to current agents (+16.2%). Furthermore, the system shows initial promise in dynamically adjusting cloud-based hardware resources based on the code’s needs.&lt;/p>
&lt;p>
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="EnvGym Cover" srcset="
/report/osre25/uchicago/smart_environments/20251105-sam_huang/cover_hue02fdf353b4e99cf1af213026c4f6804_1815797_30e3b2194be140fa608780847e6c7fa1.webp 400w,
/report/osre25/uchicago/smart_environments/20251105-sam_huang/cover_hue02fdf353b4e99cf1af213026c4f6804_1815797_d39b2369b5df80ffa715197c993f0681.webp 760w,
/report/osre25/uchicago/smart_environments/20251105-sam_huang/cover_hue02fdf353b4e99cf1af213026c4f6804_1815797_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre25/uchicago/smart_environments/20251105-sam_huang/cover_hue02fdf353b4e99cf1af213026c4f6804_1815797_30e3b2194be140fa608780847e6c7fa1.webp"
width="760"
height="760"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;h2 id="method">Method&lt;/h2>
&lt;h3 id="envagent">EnvAgent&lt;/h3>
&lt;p>The EnvAgent I created during my time at OSRE utilizes a multi-agent workflow to automatically build software execution environments. The process is structured into three phases: preparation, construction, and refinement.&lt;/p>
&lt;p>Phase 1 (Preparation): Specialized agents collect information about the software repository – its structure, relevant files, and the host system’s hardware specifications (CPU, memory, etc.). This data is then used by a planning agent to generate a detailed, step-by-step instruction set for creating a functional Dockerfile.&lt;/p>
&lt;p>Phase 2 (Construction): Two agents work in tandem: one generates or modifies the Dockerfile based on the plan, while the other executes the Dockerfile within an isolated container, capturing any errors.&lt;/p>
&lt;p>Phase 3 (Refinement): A final agent analyzes the container execution data, identifying areas for improvement in the Dockerfile. This process repeats until a stable, executable environment is achieved.&lt;/p>
&lt;p>To improve efficiency, EnvAgent incorporates rule-based tools for predictable tasks like directory setup and log management, reducing the need for complex agent reasoning. This combination of intelligent agents and automated routines (&amp;ldquo;scaffolding&amp;rdquo;) ensures a robust and adaptive system.&lt;/p>
&lt;h3 id="enveval-benchmark">EnvEval Benchmark&lt;/h3>
&lt;p>In addition to the agent, one significant contribution is the manual curation of a benchmark that measures the quality of generated environments. EnvEval is a benchmark specifically designed to assess environment setup qualities across 54 carefully curated open-source repositories. They are chosen from both Chameleon reproducible artifacts and Multi-SWE-bench dataset. EnvEval contains json rubrics that can be used to automatically determine the quality of constructed environments.&lt;/p>
&lt;p>Each rubric is divided into three parts, corresponding to three major objectives that a successfully constructed environment should have:&lt;/p>
&lt;ol>
&lt;li>Structure: Checks for basic directory structure, file presence, and environment variables.&lt;/li>
&lt;li>Configuration: Asks the question &amp;ldquo;Is this configured?&amp;rdquo;, checks for whether dependencies have been correctly configured.&lt;/li>
&lt;li>Functionality: Asks the question &amp;ldquo;Is this usable?&amp;rdquo;, runs actual tests to see if the functionalities are present.&lt;/li>
&lt;/ol>
&lt;p>There are many tests in each category, and their weights are adjusted based on their importance.&lt;/p>
&lt;h2 id="evaluation">Evaluation&lt;/h2>
&lt;p>Baseline Systems:&lt;/p>
&lt;p>The study compared EnvAgent to two established automated code generation systems: one utilizing Anthropic’s advanced reasoning models and the other employing OpenAI’s code-focused models. These systems were chosen for their strong performance in creating software code and their prevalence in automated engineering processes. Both baselines were given full access to the target software repositories and complete details about the host system’s hardware.&lt;/p>
&lt;p>Evaluation Metrics:&lt;/p>
&lt;p>The performance of EnvAgent was assessed using three key metrics. These included the ability to create working environments, the quality of those environments, and a single combined score. Results showed EnvAgent significantly outperformed the baselines, achieving a 33.91% improvement in the final overall score – reaching 74.01, which was higher than the best baseline score of 30.10. This suggests EnvAgent produced both more functional environments and ensured greater accuracy through extensive testing.&lt;/p>
&lt;h2 id="conclusion">Conclusion&lt;/h2>
&lt;p>The process of creating the necessary software environments for code agents is a major hurdle in scaling up research and development. Currently, this task relies heavily on manual labor. To address this, a new system, ENVAGENT, was created to automatically build these environments using intelligent agents and by understanding dependencies. A new benchmark, ENVBENCH, was also developed to assess this system’s effectiveness. Preliminary results demonstrate a significant improvement – ENVAGENT achieved a 33.91% increase in success rates compared to existing automated agents, representing a substantial step towards more efficient and reproducible research.&lt;/p>
&lt;h1 id="thank-you">Thank you!&lt;/h1>
&lt;p>Autofill&lt;/p>
&lt;p>;
20251105-Sam_Huang&lt;/p></description></item><item><title>Final Blog: Rectilinear Floorplans in OpenROAD</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre25/openroad/20251022-gschaitanya/</link><pubDate>Wed, 22 Oct 2025 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre25/openroad/20251022-gschaitanya/</guid><description>&lt;h1 id="final-progress-enabling-rectilinear-floorplanning-in-openroad">Final Progress: Enabling Rectilinear Floorplanning in OpenROAD&lt;/h1>
&lt;p>Hello! I&amp;rsquo;m excited to share my final progress on implementing &lt;strong>rectilinear (polygonal) die support&lt;/strong> in OpenROAD&amp;rsquo;s floorplanning flow as part of Google Summer of Code 2025. Under the guidance of my mentors Eder Monteiro and Augusto Berndt, we&amp;rsquo;ve made significant strides in extending OpenROAD to handle non-rectangular die shapes.&lt;/p>
&lt;p>Here&amp;rsquo;s a link to my original &lt;a href="https://summerofcode.withgoogle.com/programs/2025/projects/mcv3Hbgk" target="_blank" rel="noopener">proposal&lt;/a>&lt;/p>
&lt;h2 id="project-overview">Project Overview&lt;/h2>
&lt;p>This project aims to add support for rectilinear floorplans in OpenROAD, an open-source EDA tool used for digital chip design. Currently, OpenROAD only supports rectangular floorplans, which limits its use in modern designs that often require more complex shapes, especially in advanced packaging, chiplet architectures, and 3D ICs.&lt;/p>
&lt;p>The project enables users to define floorplans using arbitrary rectilinear shapes made of $90^{\circ}$ corners. It involves three main components:&lt;/p>
&lt;ol>
&lt;li>Accepting polygonal input during floorplan setup&lt;/li>
&lt;li>Generating standard cell rows and routing tracks that follow the shape boundaries&lt;/li>
&lt;li>Updating pin placement logic to work with irregular outlines&lt;/li>
&lt;/ol>
&lt;p>By enabling these capabilities, OpenROAD becomes more flexible and suitable for real-world designs where blocks may need to fit together like puzzle pieces. This can lead to better area utilization and potentially shorter interconnects.&lt;/p>
&lt;p>The core challenge is maintaining robustness and backward compatibility while introducing this major new feature that touches multiple aspects of the design flow.&lt;/p>
&lt;h2 id="pull-requests-made">Pull Requests made&lt;/h2>
&lt;ol>
&lt;li>&lt;strong>Support for Rectilinear dies in PPL (Pin Placement)&lt;/strong> - &lt;a href="https://github.com/The-OpenROAD-Project/OpenROAD/pull/8182" target="_blank" rel="noopener">https://github.com/The-OpenROAD-Project/OpenROAD/pull/8182&lt;/a>&lt;/li>
&lt;li>&lt;strong>Support for Rectilinear dies in IFP (Init Floorplan)&lt;/strong> - &lt;a href="https://github.com/The-OpenROAD-Project/OpenROAD/pull/7893" target="_blank" rel="noopener">https://github.com/The-OpenROAD-Project/OpenROAD/pull/7893&lt;/a>&lt;/li>
&lt;/ol>
&lt;h2 id="key-contributions">Key Contributions&lt;/h2>
&lt;h3 id="phase-1-init-floorplan-ifp-module-support">Phase 1: Init Floorplan (IFP) Module Support&lt;/h3>
&lt;p>The first half of the project focused on adding support for rectilinear floorplans in the IFP (Init Floorplan) module. This foundational work established the infrastructure for handling non-rectangular die shapes.&lt;/p>
&lt;h4 id="1-polygonal-die-definition">1. Polygonal Die Definition&lt;/h4>
&lt;ul>
&lt;li>Implemented support for accepting polygon vertices as input to define rectilinear die shapes.&lt;/li>
&lt;li>Modified the TCL interfaces to accept a list of vertices of the rectilinear die in the &lt;code>-die_area&lt;/code> and &lt;code>-core_area&lt;/code> parameters and automatically switch to rectilinear flow.&lt;/li>
&lt;li>Developed validation logic to ensure polygons are rectilinear and valid.&lt;/li>
&lt;/ul>
&lt;h4 id="2-standard-cell-row-generation">2. Standard Cell Row Generation&lt;/h4>
&lt;ul>
&lt;li>Developed a scanline-based algorithm to generate standard cell rows that conform to complex polygonal boundaries.&lt;/li>
&lt;li>The algorithm sweeps horizontally across the die area and identifies valid row regions within the polygon.&lt;/li>
&lt;li>Routing Track generation logic could directly be used for rectilinear die shapes.&lt;/li>
&lt;/ul>
&lt;h4 id="3-testing-and-validation">3. Testing and Validation&lt;/h4>
&lt;ul>
&lt;li>Created comprehensive test cases for L-shaped, T-shaped, and other rectilinear configurations for floorplan creation and row generation.&lt;/li>
&lt;li>Ensured backward compatibility with rectangular floorplans.&lt;/li>
&lt;li>Added error handling for edge cases like invalid polygon specifications.&lt;/li>
&lt;/ul>
&lt;h3 id="demo-u-shaped-die-row-generation">Demo: U-Shaped Die Row Generation&lt;/h3>
&lt;p>One of our test cases involved generating rows for a U-shaped die. Here is a snapshot from the OpenROAD GUI displaying perfectly laid out rows:
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="U-shaped die with rows" srcset="
/report/osre25/openroad/20251022-gschaitanya/image_hu80377f8ad0fd7dd8cd93ba071f99d204_15398_f3394946aa9b2cf0185fac9d5ffdf4fd.webp 400w,
/report/osre25/openroad/20251022-gschaitanya/image_hu80377f8ad0fd7dd8cd93ba071f99d204_15398_b6ce6605882583b9dc669d52f2b53a54.webp 760w,
/report/osre25/openroad/20251022-gschaitanya/image_hu80377f8ad0fd7dd8cd93ba071f99d204_15398_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre25/openroad/20251022-gschaitanya/image_hu80377f8ad0fd7dd8cd93ba071f99d204_15398_f3394946aa9b2cf0185fac9d5ffdf4fd.webp"
width="760"
height="495"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;hr>
&lt;h3 id="phase-2-pin-placement-ppl-module-support">Phase 2: Pin Placement (PPL) Module Support&lt;/h3>
&lt;h4 id="1-core-data-structure-migration">1. Core Data Structure Migration&lt;/h4>
&lt;ul>
&lt;li>Leveraged the &lt;code>odb::Line&lt;/code> class instead of the simple &lt;code>Edge&lt;/code> enum (which only handled 4 rectangular edges) to store edge data of rectilinear dies. This allows the system to handle an arbitrary number of polygon edges.&lt;/li>
&lt;li>This required refactoring nearly every function in the pin placement pipeline, as the &lt;code>Edge&lt;/code> enum was deeply embedded throughout the codebase.&lt;/li>
&lt;li>The new representation is more flexible and can handle N-sided polygons while maintaining clean abstractions.&lt;/li>
&lt;/ul>
&lt;h4 id="2-pin-slot-calculation">2. Pin Slot Calculation&lt;/h4>
&lt;ul>
&lt;li>Rewrote the &lt;code>defineSlots()&lt;/code> function family to work with polygon edges while maintaining compatibility with existing die shapes.&lt;/li>
&lt;li>Ensured slots are generated only within valid polygon boundaries.&lt;/li>
&lt;/ul>
&lt;h4 id="3-pin-orientation-algorithm">3. Pin Orientation Algorithm&lt;/h4>
&lt;ul>
&lt;li>One of the most challenging aspects was determining the correct orientation for pins on polygon edges. For rectangular dies, this is trivial, but for complex, concave polygons, it&amp;rsquo;s non-trivial.&lt;/li>
&lt;li>Leveraged the ray tracing algorithm to determine the correct pin orientations. The algorithm casts rays from edge midpoints to determine which side faces the interior of the polygon.&lt;/li>
&lt;li>This ensures pins are correctly oriented and handles complex cases like concave polygons.&lt;/li>
&lt;/ul>
&lt;h4 id="4-hungarian-matching-and-simulated-annealing-for-polygons">4. Hungarian Matching and Simulated Annealing for Polygons&lt;/h4>
&lt;ul>
&lt;li>Successfully extended both Hungarian Matching and Simulated Annealing to work with rectilinear dies as well as regular dies.&lt;/li>
&lt;li>The flow now checks if the provided die is rectilinear and intelligently switches the flow accordingly.&lt;/li>
&lt;/ul>
&lt;h3 id="demo-t-shaped-die-pin-placement">Demo: T-Shaped Die Pin Placement&lt;/h3>
&lt;p>The image below shows pins placed on a rectilinear, T-shaped die:
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="T-shaped die with pins" srcset="
/report/osre25/openroad/20251022-gschaitanya/image2_hu0558c466ce478ba1d69fc985aeae3534_180817_26615c6c73756a52625bd26c654c700b.webp 400w,
/report/osre25/openroad/20251022-gschaitanya/image2_hu0558c466ce478ba1d69fc985aeae3534_180817_1981460f13704d5672a3f98115464651.webp 760w,
/report/osre25/openroad/20251022-gschaitanya/image2_hu0558c466ce478ba1d69fc985aeae3534_180817_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre25/openroad/20251022-gschaitanya/image2_hu0558c466ce478ba1d69fc985aeae3534_180817_26615c6c73756a52625bd26c654c700b.webp"
width="760"
height="563"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;hr>
&lt;h2 id="code-quality">Code Quality&lt;/h2>
&lt;ul>
&lt;li>Followed OpenROAD coding standards and conventions&lt;/li>
&lt;li>Comprehensive error handling and validation&lt;/li>
&lt;li>Extensive code reviews with multiple rounds of refinements&lt;/li>
&lt;li>Well-documented functions and algorithms&lt;/li>
&lt;/ul>
&lt;h2 id="testing-and-validation">Testing and Validation&lt;/h2>
&lt;ul>
&lt;li>Created multiple test cases covering various rectilinear shapes&lt;/li>
&lt;li>Regression testing to ensure backward compatibility&lt;/li>
&lt;li>Edge case handling (concave polygons, tight geometries, etc.)&lt;/li>
&lt;li>Integration testing with downstream OpenROAD flows&lt;/li>
&lt;/ul>
&lt;h2 id="future-work">Future Work&lt;/h2>
&lt;ul>
&lt;li>Supporting constraints for pin placement in PPL - currently in progress&lt;/li>
&lt;li>Improved GUI support for viewing and editing polygonal floorplans&lt;/li>
&lt;li>Further optimizing algorithms for very large polygons&lt;/li>
&lt;/ul>
&lt;h2 id="acknowledgements">Acknowledgements&lt;/h2>
&lt;p>I would like to thank my mentors, Eder Monteiro and Augusto Berndt for their patience, support and guidance throughout the project. Thanks to Stephanie and the entire UC OSPO team as well as Google Summer of Code for providing me with this incredible opportunity.&lt;/p></description></item><item><title>Scenic-RoboSuite Integration: Building the First Working Prototype</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre25/ucsc/scenic/20250929-sahil-tgs/</link><pubDate>Mon, 29 Sep 2025 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre25/ucsc/scenic/20250929-sahil-tgs/</guid><description>&lt;p>I&amp;rsquo;m &lt;a href="https://sahiltgs.super.site/" target="_blank" rel="noopener">Sahil&lt;/a>, presenting the first working prototype of the Scenic-RoboSuite integration. This &lt;a href="https://sahiltgs.super.site/gsoc/uc-ospo-proposal" target="_blank" rel="noopener">project&lt;/a> is being mentored by &lt;a href="https://ucsc-ospo.github.io/author/daniel-fremont/" target="_blank" rel="noopener">Daniel Fremont&lt;/a> and &lt;a href="https://ucsc-ospo.github.io/author/eric-vin/" target="_blank" rel="noopener">Eric Vin&lt;/a>.&lt;/p>
&lt;p>After months of development, we have achieved a functional prototype of the &lt;a href="https://scenic-lang.org/" target="_blank" rel="noopener">Scenic&lt;/a>-&lt;a href="https://robosuite.ai/" target="_blank" rel="noopener">RoboSuite&lt;/a> interface. Researchers can now write basic declarative robotic manipulation scenarios in Scenic that execute with physics simulation in RoboSuite. While still in development, the prototype demonstrates the feasibility and potential of bridging probabilistic scenario generation with detailed robot control.&lt;/p>
&lt;h2 id="major-achievements">Major Achievements&lt;/h2>
&lt;h3 id="mjcf-xml-injection">MJCF XML Injection&lt;/h3>
&lt;p>The interface introduces direct MJCF XML support, allowing Scenic to build RoboSuite-native manipulable objects from raw XML definitions. Users can define custom objects with complex mesh geometries, textures, and physics properties directly in their Scenic scenarios:&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">dragon_xml = &amp;#39;&amp;#39;&amp;#39;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&amp;lt;mujoco&amp;gt;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &amp;lt;asset&amp;gt;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &amp;lt;mesh file=&amp;#34;dragon.stl&amp;#34; scale=&amp;#34;0.01 0.01 0.01&amp;#34;/&amp;gt;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &amp;lt;texture file=&amp;#34;dragon_texture.png&amp;#34;/&amp;gt;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &amp;lt;/asset&amp;gt;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &amp;lt;worldbody&amp;gt;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &amp;lt;body name=&amp;#34;object&amp;#34;&amp;gt;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &amp;lt;geom mesh=&amp;#34;dragon_mesh&amp;#34; type=&amp;#34;mesh&amp;#34;/&amp;gt;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &amp;lt;/body&amp;gt;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &amp;lt;/worldbody&amp;gt;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&amp;lt;/mujoco&amp;gt;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&amp;#39;&amp;#39;&amp;#39;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">dragon = new CustomObject with mjcfXml dragon_xml
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>The system automatically handles collision geometry generation, joint creation for physics, and asset file resolution.&lt;/p>
&lt;h3 id="complex-mesh-object-support">Complex Mesh Object Support&lt;/h3>
&lt;p>Import and manipulate arbitrary 3D models (STL, OBJ) with automatic mesh repair and texture mapping. The interface resolves file paths relative to Scenic files, copies assets to temporary directories for MuJoCo, and converts textures (JPG to PNG) when needed. This enables using custom robotic tools, industrial parts, or any 3D model in manipulation scenarios.&lt;/p>
&lt;h3 id="custom-arena-definition">Custom Arena Definition&lt;/h3>
&lt;p>Define complete custom environments using MJCF XML, extending beyond RoboSuite&amp;rsquo;s built-in arenas:&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">custom_arena = new CustomArena with arenaXml localPath(&amp;#34;warehouse.xml&amp;#34;)
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>This allows creating specialized workspaces, factory floors, or research-specific environments while maintaining full physics simulation.&lt;/p>
&lt;h3 id="multi-robot-support">Multi-Robot Support&lt;/h3>
&lt;p>The interface handles multiple robots operating in the same workspace:&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">robot1 = new Panda at (-0.5, 0, 0)
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">robot2 = new UR5e at (0.5, 0, 0)
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">table = new Table at (0, 0, 0.425)
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Each robot maintains independent control and can execute coordinated or individual behaviors.&lt;/p>
&lt;h3 id="built-in-manipulation-behaviors">Built-in Manipulation Behaviors&lt;/h3>
&lt;p>Ready-to-use behaviors for immediate testing and development:&lt;/p>
&lt;ul>
&lt;li>&lt;code>MoveToPosition&lt;/code> - Precise end-effector positioning&lt;/li>
&lt;li>&lt;code>PickObject&lt;/code> - Automated grasping with approach and closure&lt;/li>
&lt;li>&lt;code>LiftToHeight&lt;/code> - Controlled lifting to target heights&lt;/li>
&lt;li>&lt;code>PickAndLift&lt;/code> - Complete pick-and-place sequence&lt;/li>
&lt;/ul>
&lt;p>These behaviors use Operational Space Control (OSC) for intuitive 3D movement commands.&lt;/p>
&lt;h3 id="extended-environment-configuration">Extended Environment Configuration&lt;/h3>
&lt;p>The interface extends RoboSuite&amp;rsquo;s configurability through Scenic&amp;rsquo;s parameter system:&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">param controller_config = {&amp;#39;type&amp;#39;: &amp;#39;OSC_POSITION&amp;#39;, &amp;#39;impedance&amp;#39;: &amp;#39;low&amp;#39;}
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">param camera_view = &amp;#39;robot0_eye_in_hand&amp;#39;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">param lite_physics = True # Faster simulation for testing
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="example-probabilistic-pick-and-place">Example: Probabilistic Pick-and-Place&lt;/h2>
&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">model scenic.simulators.robosuite.model
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"># Randomly position cube on table
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">table = new Table at (0.6, 0, 0.425)
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">cube = new Box on table,
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> with color (1, 0, 0, 1),
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> with position (Uniform(-0.2, 0.2), Uniform(-0.2, 0.2), _)
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"># Robot adapts to random cube position
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">behavior AdaptivePickup():
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> do PickAndLift(cube, height=1.1)
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">ego = new Panda at (0, 0, 0),
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> with behavior AdaptivePickup()
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Each scenario run generates a different cube position, testing the robot&amp;rsquo;s adaptive capabilities.&lt;/p>
&lt;h2 id="challenges-overcome">Challenges Overcome&lt;/h2>
&lt;h3 id="understanding-dual-architecture-paradigms">Understanding Dual Architecture Paradigms&lt;/h3>
&lt;p>RoboSuite and Scenic operate on fundamentally different principles. RoboSuite builds environments imperatively through MuJoCo XML composition, expecting complete scene specification upfront. Scenic generates scenes probabilistically through constraint solving, requiring geometric knowledge before simulation. Bridging these required developing a two-pass system where we first extract geometry from a temporary RoboSuite environment, update Scenic&amp;rsquo;s understanding, then create the final simulation. This architectural mismatch touched every aspect of the integration, from object creation to property updates.&lt;/p>
&lt;h3 id="discovering-and-extending-manipulationenv">Discovering and Extending ManipulationEnv&lt;/h3>
&lt;p>RoboSuite&amp;rsquo;s documentation focuses on using pre-built tasks, not creating custom environments. Through extensive source code analysis, we discovered that &lt;code>ManipulationEnv&lt;/code> was the key - it accepts robots as configuration while allowing customizable arenas and objects as components. This class became our foundation, but required significant extension. We implemented &lt;code>ScenicManipulationEnv&lt;/code> to intercept Scenic&amp;rsquo;s object configurations, handle dynamic arena selection (EmptyArena vs MultiTableArena based on scene content), and manage the complex initialization sequence where robots, arenas, and objects must be assembled in specific order for MuJoCo compilation.&lt;/p>
&lt;h3 id="xml-to-3d-mesh-pipeline">XML to 3D Mesh Pipeline&lt;/h3>
&lt;p>Converting MJCF XML to usable 3D meshes proved complex. MuJoCo uses XML to describe geometry, but Scenic needs actual mesh data for collision checking. We built a multi-stage pipeline: First, &lt;code>ElementTree&lt;/code> parses the XML to extract mesh references and primitive definitions. Then, we handle two paths - for mesh files, we load STL/OBJ files with trimesh and apply XML-specified transformations; for primitives (boxes, cylinders), we generate meshes programmatically. The challenge intensified with composite objects - a table might have a box tabletop and four cylinder legs. We developed &lt;code>ComponentExtractor&lt;/code> to analyze the MuJoCo scene graph, identify related geometries through naming patterns and hierarchy, and export each component as a separate GLB file with proper world transforms preserved.&lt;/p>
&lt;h3 id="file-path-resolution-discrepancies">File Path Resolution Discrepancies&lt;/h3>
&lt;p>Scenic and RoboSuite handle file paths completely differently. Scenic uses &lt;code>localPath()&lt;/code> for paths relative to the scenario file, while RoboSuite expects paths relative to its package structure or absolute paths. MJCF XML compounds this - mesh references can be relative to the XML file location, not the calling code. We implemented a sophisticated path resolution system: detect whether paths come from embedded XML (relative to Scenic file) or external XML files (relative to XML location), copy all referenced assets (meshes, textures) to temporary directories accessible to MuJoCo, and handle texture format conversion (JPG to PNG) when needed. This system transparently manages assets whether they&amp;rsquo;re in the Scenic project, RoboSuite package, or absolute paths, making the interface truly portable.&lt;/p>
&lt;h2 id="impact-and-applications">Impact and Applications&lt;/h2>
&lt;p>This bridge enables:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Research&lt;/strong>: Generate diverse manipulation scenarios for robot learning algorithms&lt;/li>
&lt;li>&lt;strong>Testing&lt;/strong>: Validate robotic systems against probabilistic task variations&lt;/li>
&lt;li>&lt;strong>Development&lt;/strong>: Rapid prototyping of manipulation tasks without manual scene setup&lt;/li>
&lt;li>&lt;strong>Education&lt;/strong>: Teach robotics concepts through declarative scenario specification&lt;/li>
&lt;/ul>
&lt;p>The integration makes complex robotic simulations accessible through Scenic&amp;rsquo;s intuitive language while preserving RoboSuite&amp;rsquo;s detailed physics and control capabilities.&lt;/p>
&lt;h2 id="documentation-and-resources">Documentation and Resources&lt;/h2>
&lt;p>The project includes:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>example scenarios&lt;/strong> demonstrating all features&lt;/li>
&lt;li>&lt;strong>Comprehensive STATUS.md&lt;/strong> tracking working features and known issues&lt;/li>
&lt;li>&lt;strong>Technical documentation&lt;/strong> in &lt;code>docs/&lt;/code> covering architecture and troubleshooting&lt;/li>
&lt;li>&lt;strong>Mesh extraction utilities&lt;/strong> for pre-processing and caching&lt;/li>
&lt;/ul>
&lt;h2 id="current-status-and-future-work">Current Status and Future Work&lt;/h2>
&lt;p>This prototype demonstrates that the Scenic-RoboSuite bridge is viable and functional. Basic features are working reliably:&lt;/p>
&lt;ul>
&lt;li>Single-robot manipulation scenarios execute successfully&lt;/li>
&lt;li>MJCF XML injection creates custom objects&lt;/li>
&lt;li>Pick-and-place behaviors operate consistently&lt;/li>
&lt;li>Multi-robot support functions in controlled scenarios&lt;/li>
&lt;/ul>
&lt;p>However, significant work remains:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Stability improvements&lt;/strong>: Some features work intermittently and need refinement&lt;/li>
&lt;li>&lt;strong>Velocity tracking&lt;/strong>: Full implementation awaits framework updates&lt;/li>
&lt;li>&lt;strong>Multi-robot coordination&lt;/strong>: Advanced synchronization primitives needed&lt;/li>
&lt;li>&lt;strong>Performance optimization&lt;/strong>: Mesh extraction and caching can be streamlined&lt;/li>
&lt;li>&lt;strong>Extended testing&lt;/strong>: More diverse scenarios and edge cases need validation&lt;/li>
&lt;/ul>
&lt;p>The prototype serves as a proof of concept, showing that probabilistic scenario specification can successfully drive physics-based robot simulation. The architecture is sound, the core features function, and the path forward is clear.&lt;/p>
&lt;h2 id="conclusion">Conclusion&lt;/h2>
&lt;p>This working prototype of the Scenic-RoboSuite integration represents significant progress toward bridging probabilistic programming with robotic simulation. We&amp;rsquo;ve successfully demonstrated that declarative scenario specification can control detailed physics simulation, opening new possibilities for robotic system development and testing.&lt;/p>
&lt;p>While not yet production-ready, the prototype provides a solid foundation for future development. Researchers can begin experimenting with basic manipulation scenarios, developers can test the interface with their use cases, and the community can contribute to making this bridge more robust and feature-complete.&lt;/p>
&lt;p>The challenges overcome - from understanding dual architectures to implementing XML-to-mesh pipelines - have resulted in a functional system that validates our approach. This prototype proves that Scenic&amp;rsquo;s elegant scenario language and RoboSuite&amp;rsquo;s detailed physics can work together, setting the stage for a powerful new tool in robotics research and development.&lt;/p></description></item><item><title>Final Report — RAG-ST: Retrieval-Augmented Generation for Spatial Transcriptomics</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre25/uci/rag-st/09302025-zeyu/</link><pubDate>Sun, 28 Sep 2025 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre25/uci/rag-st/09302025-zeyu/</guid><description>&lt;p>Hello! I’m Zeyu Zou! I have been contributing to the &lt;strong>RAG-ST: Retrieval-Augmented Generation for Spatial Transcriptomics&lt;/strong> project under the mentorship of Ziheng Duan. My project focuses on developing a framework that predicts spatial gene expression from histology images by combining vision encoders with single-cell RNA-seq references. The goal is to make spatial transcriptomics more affordable, interpretable, and scalable for the research community.&lt;/p>
&lt;h2 id="introduction">Introduction&lt;/h2>
&lt;p>RAG-ST is designed to reduce the cost and complexity of spatial transcriptomics by leveraging existing histology images and scRNA-seq priors. This work integrates computer vision with retrieval-augmented generation to improve prediction accuracy and interpretability.&lt;/p>
&lt;h2 id="methods">Methods&lt;/h2>
&lt;p>The project used a two-stage pipeline:&lt;/p>
&lt;ol>
&lt;li>&lt;strong>Vision encoder&lt;/strong> (ResNet50/ViT) to map histology patches to cell type distributions.&lt;/li>
&lt;li>&lt;strong>Retrieval-augmented generation&lt;/strong> guided by scRNA-seq profiles to predict gene expression.&lt;/li>
&lt;/ol>
&lt;p>Datasets included &lt;strong>HEST-1K&lt;/strong> (paired histology and expression) and &lt;strong>CellxGene Census&lt;/strong> as the reference database. Training and evaluation pipelines were implemented in PyTorch.&lt;/p>
&lt;h2 id="results">Results&lt;/h2>
&lt;ul>
&lt;li>Implemented a complete pipeline from histology preprocessing to expression prediction.&lt;/li>
&lt;li>Achieved higher correlation scores (Pearson/Spearman) and lower errors (MSE/MAE) compared to baseline models.&lt;/li>
&lt;li>Produced spatial gene expression maps with interpretable retrieval traces and attention weights.&lt;/li>
&lt;li>Released open-source code, preprocessing scripts, and analysis notebooks for reproducibility.&lt;/li>
&lt;/ul>
&lt;h2 id="future-work">Future Work&lt;/h2>
&lt;ul>
&lt;li>Extend experiments to additional tissues (lung, liver, tumor samples).&lt;/li>
&lt;li>Test cross-dataset generalization and robustness.&lt;/li>
&lt;li>Explore integration into clinical pathology workflows for affordable spatial inference.&lt;/li>
&lt;/ul>
&lt;h2 id="acknowledgments">Acknowledgments&lt;/h2>
&lt;p>Thanks to my mentor Ziheng Duan, the UC OSPO team, the HEST-1K dataset contributors, and the CellxGene Census project. This work was conducted under OSRE 2025.&lt;/p>
&lt;h2 id="links">Links&lt;/h2>
&lt;ul>
&lt;li>Repository: &lt;a href="https://github.com/ZeyuZou/rag-st" target="_blank" rel="noopener">https://github.com/ZeyuZou/rag-st&lt;/a>&lt;/li>
&lt;li>Preprint: &lt;em>RAG-ST: Retrieval-Augmented Generation for Spatial Transcriptomics&lt;/em> (bioRxiv, 2025)&lt;/li>
&lt;/ul></description></item><item><title>Final Update: Building Intelligent Observability for NRP</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre25/ucsd/seam/intelligent-observability/20250925-manish-reddy/</link><pubDate>Thu, 25 Sep 2025 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre25/ucsd/seam/intelligent-observability/20250925-manish-reddy/</guid><description>&lt;p>I&amp;rsquo;m excited to share the completion of my OSRE 2025 project, &amp;ldquo;&lt;em>Intelligent Observability for NRP: A GenAI Approach&lt;/em>&amp;rdquo; and the significant learning journey it has been. We&amp;rsquo;ve successfully developed a novel InfoAgent architecture that delivers on our core goal: building an ML-powered service for NRP that analyzes monitoring data, detects anomalies, and provides trustworthy GenAI explanations.&lt;/p>
&lt;h2 id="how-our-novel-infoagent-architecture-advances-the-observability-mission">How Our Novel InfoAgent Architecture Advances the Observability Mission&lt;/h2>
&lt;p>Through extensive development and testing, I&amp;rsquo;ve learned tremendously about building production-ready AI systems and have implemented a novel InfoAgent architecture that orchestrates our specialized agents:&lt;/p>
&lt;h3 id="1-prometheus-metrics-analysis-agent">1. Prometheus Metrics Analysis Agent&lt;/h3>
&lt;ul>
&lt;li>&lt;strong>Function&lt;/strong>: Continuously ingests and processes NRP&amp;rsquo;s Prometheus metrics&lt;/li>
&lt;li>&lt;strong>Progress&lt;/strong>: Fully implemented data pipelines handling multiple metric types with optimized latency&lt;/li>
&lt;li>&lt;strong>Purpose&lt;/strong>: Provides the foundation for anomaly detection by establishing normal behavior baselines&lt;/li>
&lt;/ul>
&lt;h3 id="2-query-refinement-agent-croq">2. Query Refinement Agent (CROQ)&lt;/h3>
&lt;ul>
&lt;li>&lt;strong>Function&lt;/strong>: Clarifies ambiguous metrics or patterns before generating explanations&lt;/li>
&lt;li>&lt;strong>Progress&lt;/strong>: Completed implementation of Conformal Revision of Questions for disambiguation&lt;/li>
&lt;li>&lt;strong>Purpose&lt;/strong>: Ensures explanations address the right system behaviors (e.g., distinguishing CPU saturation from memory pressure)&lt;/li>
&lt;li>&lt;strong>Deliverable Impact&lt;/strong>: Successfully improved accuracy of GenAI explanations by eliminating misinterpretations&lt;/li>
&lt;/ul>
&lt;h3 id="3-explanation-generation-agent-ais">3. Explanation Generation Agent (AIS)&lt;/h3>
&lt;ul>
&lt;li>&lt;strong>Function&lt;/strong>: Creates human-readable explanations and root-cause analysis&lt;/li>
&lt;li>&lt;strong>Progress&lt;/strong>: Finalized the Automated Information Seeker with a complete Plan→Validate→Execute→Assess→Revise cycle&lt;/li>
&lt;li>&lt;strong>Purpose&lt;/strong>: Transforms technical anomalies into actionable insights for operators&lt;/li>
&lt;li>&lt;strong>Deliverable Impact&lt;/strong>: Delivers GenAI explanations with uncertainty quantification&lt;/li>
&lt;/ul>
&lt;h2 id="completed-integration-the-novel-infoagent-pipeline">Completed Integration: The Novel InfoAgent Pipeline&lt;/h2>
&lt;p>We&amp;rsquo;ve successfully integrated all agents into a unified observability pipeline that represents our novel contribution:&lt;/p>
&lt;ol>
&lt;li>&lt;strong>Data Collection&lt;/strong>: Prometheus metrics → Analysis Agent (comprehensive metrics support)&lt;/li>
&lt;li>&lt;strong>Anomaly Detection&lt;/strong>: With statistical confidence bounds using conformal prediction&lt;/li>
&lt;li>&lt;strong>Query Refinement&lt;/strong>: Resolving ambiguities before explanation&lt;/li>
&lt;li>&lt;strong>Explanation Generation&lt;/strong>: Human-readable analysis with uncertainty awareness&lt;/li>
&lt;li>&lt;strong>Feedback Loop&lt;/strong>: System learning from operator interactions (implemented and tested)&lt;/li>
&lt;/ol>
&lt;h2 id="hardware-testing-results">Hardware Testing Results&lt;/h2>
&lt;p>This project taught me valuable lessons about optimizing AI workloads on specialized hardware. We successfully tested our observability framework on Qualcomm Cloud AI 100 Ultra hardware:&lt;/p>
&lt;ul>
&lt;li>Achieved significant performance improvements over baseline CPU implementation&lt;/li>
&lt;li>Successfully ported and optimized GLM-4.5 for observability-specific tasks&lt;/li>
&lt;li>Validated that specialized AI hardware significantly enhances real-time anomaly detection&lt;/li>
&lt;/ul>
&lt;h2 id="learning-journey-and-novel-contributions">Learning Journey and Novel Contributions&lt;/h2>
&lt;p>Throughout OSRE 2025, I&amp;rsquo;ve learned extensively about:&lt;/p>
&lt;ol>
&lt;li>Building hierarchical agent coordination systems for complex reasoning&lt;/li>
&lt;li>Implementing conformal prediction for trustworthy AI outputs&lt;/li>
&lt;li>Creating self-correcting explanation pipelines&lt;/li>
&lt;li>Developing adaptive learning systems from operator feedback&lt;/li>
&lt;/ol>
&lt;p>The novel InfoAgent architecture demonstrates promising results in our testing environment, with evaluation metrics and benchmarks still being refined as work in progress.&lt;/p>
&lt;h2 id="ongoing-work-continuing-beyond-osre">Ongoing Work: Continuing Beyond OSRE&lt;/h2>
&lt;p>While OSRE 2025 is concluding, I&amp;rsquo;m actively continuing to contribute to this project:&lt;/p>
&lt;ol>
&lt;li>Preparing the InfoAgent framework for open-source release with comprehensive documentation&lt;/li>
&lt;li>Running extended evaluation tests on the Nautilus platform (work in progress)&lt;/li>
&lt;li>Writing a research paper detailing our novel architecture&lt;/li>
&lt;li>Creating tutorials to help others implement intelligent observability&lt;/li>
&lt;/ol>
&lt;p>&lt;strong>Project Updates and Code&lt;/strong>: You can follow my ongoing contributions and access the latest code at &lt;a href="https://mreddy10.pages.nrp-nautilus.io/gsocnrp/" target="_blank" rel="noopener">https://mreddy10.pages.nrp-nautilus.io/gsocnrp/&lt;/a>&lt;/p>
&lt;h2 id="acknowledgments">Acknowledgments&lt;/h2>
&lt;p>I&amp;rsquo;m deeply grateful to my lead mentor &lt;strong>Mohammad Firas Sada&lt;/strong> for his exceptional guidance throughout this transformative learning experience. His insights have been invaluable in helping me develop the novel InfoAgent architecture and navigate the complexities of building production-ready AI systems.&lt;/p>
&lt;p>The OSRE 2025 program has been an incredible journey of growth and discovery. I&amp;rsquo;ve learned not just how to build AI systems, but how to make them trustworthy, explainable, and genuinely useful for real-world operations. The novel InfoAgent architecture we&amp;rsquo;ve developed serves the original mission: creating an intelligent observability tool that helps NRP operators solve problems faster and keep complex research systems running smoothly.&lt;/p>
&lt;p>I&amp;rsquo;m excited to continue contributing to this project and look forward to seeing how the community adopts and extends these ideas. Check out my contributions and ongoing updates at &lt;a href="https://mreddy10.pages.nrp-nautilus.io/gsocnrp/" target="_blank" rel="noopener">https://mreddy10.pages.nrp-nautilus.io/gsocnrp/&lt;/a>!&lt;/p></description></item><item><title>[Final] Building PeerSky’s Extensions System</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre25/ucsc/peersky/2025-09-22-6cobi/</link><pubDate>Tue, 23 Sep 2025 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre25/ucsc/peersky/2025-09-22-6cobi/</guid><description>&lt;p>Hi everyone, I’m Hanzhong Liu. Over the summer I worked on building the &lt;code>peersky://extensions&lt;/code> system for &lt;a href="https://github.com/p2plabsxyz/peersky-browser" target="_blank" rel="noopener">PeerSky browser&lt;/a>, a decentralized and privacy-first browser built on Electron.&lt;/p>
&lt;p>This post is my final GSoC 2025 update — covering how the extensions manager was designed, the security model behind IPC, the UI for managing extensions, and what’s next for PeerSky.&lt;/p>
&lt;h2 id="project-overview">Project Overview&lt;/h2>
&lt;p>The new extensions system makes PeerSky behave like a modern browser: you can install extensions from the Chrome Web Store or from local files, enable/disable them, update or uninstall, and interact with their toolbar actions through a puzzle-menu UI.&lt;/p>
&lt;h3 id="key-design-goals">Key Design Goals&lt;/h3>
&lt;ul>
&lt;li>Secure preload-based API exposure via &lt;code>contextBridge&lt;/code>&lt;/li>
&lt;li>Support for preinstalled, Web Store, and local packages&lt;/li>
&lt;li>Toolbar integration with pin/unpin support (up to six)&lt;/li>
&lt;li>Robust validation: MV3-only, size caps, zip-slip prevention&lt;/li>
&lt;/ul>
&lt;p>
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img src="./peersky-extensions-management.png" alt="Extensions Management" loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;h2 id="highlights">Highlights&lt;/h2>
&lt;h3 id="preinstalled-mv3s">Preinstalled MV3s&lt;/h3>
&lt;p>PeerSky now ships with three trusted extensions out of the box:&lt;/p>
&lt;ul>
&lt;li>Dark Reader&lt;/li>
&lt;li>Linguist (web page translator)&lt;/li>
&lt;li>uBlock Origin Lite&lt;/li>
&lt;/ul>
&lt;p>They remain installed by default but can be disabled at any time. This ensures users always have a working baseline without needing to browse an extension store.&lt;/p>
&lt;h3 id="electron-integration">Electron Integration&lt;/h3>
&lt;p>Instead of injecting scripts, the system uses &lt;strong>preload + IPC&lt;/strong>. Each operation is routed through validated IPC channels:&lt;/p>
&lt;ul>
&lt;li>&lt;code>listExtensions&lt;/code>, &lt;code>installFromWebStore&lt;/code>, &lt;code>toggleExtension&lt;/code>, etc.&lt;/li>
&lt;li>All methods are scoped to &lt;code>peersky://extensions&lt;/code> only.&lt;/li>
&lt;li>Rate limiting and size caps are enforced per renderer.&lt;/li>
&lt;/ul>
&lt;p>This design makes the surface auditable and prevents privilege leaks.&lt;/p>
&lt;h3 id="toolbar--puzzle-menu">Toolbar &amp;amp; Puzzle Menu&lt;/h3>
&lt;p>Browser actions appear in a puzzle menu and can be pinned for quick access:&lt;/p>
&lt;ul>
&lt;li>Up to six pins are allowed&lt;/li>
&lt;li>Pinned state persists across sessions.&lt;/li>
&lt;li>Popups (e.g., for translators or wallets) open in isolated windows, with OAuth flows preserved via popup guards.&lt;/li>
&lt;/ul>
&lt;h3 id="security-highlights">Security Highlights&lt;/h3>
&lt;ul>
&lt;li>Installs capped at &lt;strong>60 MB&lt;/strong>, with early rejection on oversized payloads&lt;/li>
&lt;li>&lt;strong>5 installs/minute&lt;/strong> per renderer to prevent abuse&lt;/li>
&lt;li>ZIP/CRX extraction hardened against path traversal&lt;/li>
&lt;li>MV3 required; permissions validated at install with warnings for risky hosts&lt;/li>
&lt;li>Web Store installs use Google-signed CRX verification via &lt;code>electron-chrome-web-store&lt;/code>&lt;/li>
&lt;/ul>
&lt;h2 id="example-installing-from-the-web-store">Example: Installing from the Web Store&lt;/h2>
&lt;p>Adding a new extension is simple:&lt;/p>
&lt;ol>
&lt;li>Paste a Chrome Web Store URL or ID into the install bar.&lt;/li>
&lt;li>PeerSky downloads and validates the CRX.&lt;/li>
&lt;li>On success, the extension appears in the grid with toggle, update, and remove options.&lt;/li>
&lt;/ol>
&lt;h2 id="reflection">Reflection&lt;/h2>
&lt;p>This project was both challenging and rewarding. Designing an extension system meant grappling with security, IPC design, and user experience at the same time. I learned to think carefully about security management, UI/UX positioning, and design APIs that are auditable.&lt;/p>
&lt;p>I’m grateful to my mentor Akhilesh Thite and the UC OSPO team for their guidance and feedback. Their support pushed me to make deliberate technical decisions and communicate them clearly.&lt;/p>
&lt;p>You can explore the project here:
&lt;a href="https://github.com/p2plabsxyz/peersky-browser" target="_blank" rel="noopener">https://github.com/p2plabsxyz/peersky-browser&lt;/a>&lt;/p></description></item><item><title>Final Report : Streamlining Reproducible Machine Learning Research with Automated MLOps Workflows</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre25/nyu/mlops/09182025-alghali/</link><pubDate>Thu, 18 Sep 2025 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre25/nyu/mlops/09182025-alghali/</guid><description>&lt;h1 id="final-report-applying-mlops-to-overcome-reproducibility-barriers-in-ml">Final Report: Applying MLOps to Overcome Reproducibility Barriers in ML&lt;/h1>
&lt;p>
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="Generating project" srcset="
/report/osre25/nyu/mlops/09182025-alghali/image1_hu9510d428e5a70e6f0fb80fd1f824e093_949203_8793561656181f829e3597ae957831b0.webp 400w,
/report/osre25/nyu/mlops/09182025-alghali/image1_hu9510d428e5a70e6f0fb80fd1f824e093_949203_c1f605866d28e52418a2120d1e90b899.webp 760w,
/report/osre25/nyu/mlops/09182025-alghali/image1_hu9510d428e5a70e6f0fb80fd1f824e093_949203_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre25/nyu/mlops/09182025-alghali/image1_hu9510d428e5a70e6f0fb80fd1f824e093_949203_8793561656181f829e3597ae957831b0.webp"
width="760"
height="447"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;h2 id="background">Background&lt;/h2>
&lt;p>Hello! I’m Ahmed Alghali, and this is my final report the project &lt;a href="https://ucsc-ospo.github.io/project/osre25/nyu/mlops/" target="_blank" rel="noopener">&lt;strong>Applying MLOps to Overcome Reproducibility Barriers in ML&lt;/strong>&lt;/a> under the mentorship of Professor &lt;a href="https://ucsc-ospo.github.io/author/fraida-fund/" target="_blank" rel="noopener">Fraida Fund&lt;/a> and &lt;a href="https://ucsc-ospo.github.io/author/mohamed-saeed/" target="_blank" rel="noopener">Mohamed Saeed&lt;/a>.&lt;/p>
&lt;p>This project aims to address the &lt;strong>reproducibility problem&lt;/strong> in machine learning—both in core ML research and in applications to other areas of science.&lt;/p>
&lt;p>The focus is on making large-scale ML experiments &lt;strong>reproducible on &lt;a href="https://www.chameleoncloud.org/" target="_blank" rel="noopener">Chameleon Cloud&lt;/a>&lt;/strong>. To do this; we developed &lt;a href="https://github.com/A7med7x7/ReproGen" target="_blank" rel="noopener">&lt;strong>ReproGen&lt;/strong>&lt;/a>, a template generator that produces ready-to-use, reproducible ML training workflows. The goal: is to make the cloud easy for researchers setting up experiments without the worry about the complexity involved in stitching everything together.&lt;/p>
&lt;hr>
&lt;h2 id="progress-since-mid-report">Progress Since Mid-Report&lt;/h2>
&lt;h3 id="migration-from-cookiecutter-to-copier">Migration from Cookiecutter to Copier&lt;/h3>
&lt;p>we initially used &lt;a href="https://www.cookiecutter.io/" target="_blank" rel="noopener">Cookiecutter&lt;/a> for template generation as a templating engine, but it lacked features we were interested in (e.g., conditional questions). we switched to &lt;a href="https://copier.readthedocs.io/en/stable/" target="_blank" rel="noopener">Copier&lt;/a>, which provides more flexibility and better matches our use case.&lt;/p>
&lt;h3 id="support-for-multiple-setup-modes">Support for Multiple Setup Modes&lt;/h3>
&lt;p>We now offer &lt;strong>two setup modes&lt;/strong>, designed to serve both beginners and users who want advanced options/customization:&lt;/p>
&lt;ul>
&lt;li>
&lt;p>&lt;strong>Basic Mode&lt;/strong> – minimal prompts (project name, repository link, framework).&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Advanced Mode&lt;/strong> – detailed control (compute site, GPU type, CUDA version, storage site, etc.).&lt;/p>
&lt;/li>
&lt;/ul>
&lt;p>this ensures accessibility for new users, while still enabling fine-grained control for users.
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="prompting" srcset="
/report/osre25/nyu/mlops/09182025-alghali/image2_hu192805bf2f3285f5d80677238d9527e7_1255822_c0169673360dadfbcd30a72263676479.webp 400w,
/report/osre25/nyu/mlops/09182025-alghali/image2_hu192805bf2f3285f5d80677238d9527e7_1255822_416b0bbcc859df3cd794d760ce0308c8.webp 760w,
/report/osre25/nyu/mlops/09182025-alghali/image2_hu192805bf2f3285f5d80677238d9527e7_1255822_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre25/nyu/mlops/09182025-alghali/image2_hu192805bf2f3285f5d80677238d9527e7_1255822_c0169673360dadfbcd30a72263676479.webp"
width="760"
height="448"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;h3 id="automated-credential-generation">Automated Credential Generation&lt;/h3>
&lt;p>previously, users had to manually generate application credentials (via Horizon OpenStack UI). now, we provide scripts that can generate two types of credentials programmatically—&lt;strong>Swift&lt;/strong> and &lt;strong>EC2&lt;/strong>—using &lt;strong>Chameleon JupyterHub credentials&lt;/strong> with &lt;code>python-chi&lt;/code> and the &lt;code>openstack-sdk&lt;/code> client.&lt;/p>
&lt;h3 id="automatic-readmemd-generation">Automatic README.md Generation&lt;/h3>
&lt;p>each generated project includes a &lt;strong>customized README.md&lt;/strong>, containing setup guidance and commands tailored to the user’s configuration.&lt;/p>
&lt;h3 id="bug-fixes-and-ux-enhancements">Bug Fixes and UX Enhancements&lt;/h3>
&lt;p>Alongside major features, we implemented numerous smaller changes and fixes to improve the reliability and user experience of the tool.&lt;/p>
&lt;hr>
&lt;h2 id="deliverables">Deliverables&lt;/h2>
&lt;ul>
&lt;li>
&lt;p>&lt;a href="https://github.com/A7med7x7/ReproGen" target="_blank" rel="noopener">&lt;strong>ReproGen GitHub Repository&lt;/strong>&lt;/a>: source code for the template generator.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;a href="https://github.com/A7med7x7/ReproGen/tree/mlflow-replay" target="_blank" rel="noopener">&lt;strong>mlflow-replay branch&lt;/strong>&lt;/a>: explore a past experiment, artifacts, and logged insights.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;a href="https://github.com/A7med7x7/ReproGen/tree/training-demo" target="_blank" rel="noopener">&lt;strong>LLM-Demo branch&lt;/strong>&lt;/a>: hands-on demo to track fine-tuning of an LLM using infrastructure generated by ReproGen.&lt;/p>
&lt;/li>
&lt;/ul>
&lt;hr>
&lt;h2 id="next-steps">Next Steps&lt;/h2>
&lt;ol>
&lt;li>
&lt;p>&lt;strong>Compatibility Matrix&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>the tool and the generated setup both depend on software dependencies that required paying attention to compatibility. in all level Hardware, OS, Drivers, Computing Platforms, core and 3rd-party libraries. writing a documentation as a start to help future debugging and adding pieces without breaking what is there. .&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Maintain Docker Images&lt;/strong>&lt;/p>
&lt;p>so far we have a cpu and GPU docker images for multiple most frequently used framework.&lt;/p>
&lt;ul>
&lt;li>&lt;strong>CPU based image&lt;/strong>: for data science workload (Scikit-Learn)&lt;/li>
&lt;li>&lt;strong>GPU-Nvidia Variant&lt;/strong>: for Deep Learning workload on Nvidia Machines (Pytorch, Lightning, TensorFlow)&lt;/li>
&lt;li>&lt;strong>GPU-AMD Variant&lt;/strong>: for Deep Learning workload on AMD Machines (Pytorch, Lightning, TensorFlow)
adding more variants for more frameworks + Enhancing the experience of the existing images is recommended.&lt;/li>
&lt;/ul>
&lt;/li>
&lt;/ol>
&lt;hr>
&lt;h2 id="reflection">Reflection&lt;/h2>
&lt;p>When I first joined SoR 2025, I had a problem crystallizing the idea of how I can practically achieve reproducibility and package a tool that would maximizes the chance of reproducing experiment build using it. throughout the journey my mentors took me under their wings and helped me to understand the &lt;strong>reproducibility challenges in ML&lt;/strong>, my Mentor Professor &lt;a href="https://ucsc-ospo.github.io/author/fraida-fund/" target="_blank" rel="noopener">Fraida Fund&lt;/a> wrote materials that saved me a lot of time to familiarize my self with the &lt;a href="chameleoncloud.org">testbed&lt;/a>,important Linux tools and commands, and even getting to have hand on practice how &lt;a href="https://teaching-on-testbeds.github.io/mltrain-chi/" target="_blank" rel="noopener">large model training&lt;/a> happen with MLflow tracking server system is done in the cloud. and &lt;a href="https://ucsc-ospo.github.io/author/mohamed-saeed/" target="_blank" rel="noopener">Mohamed Saeed&lt;/a>. who took the time reviewing my presentation pushing me to do my best. I&amp;rsquo;m forever thankful in the way they shaped the project and my personal growth. this hands-on experience help me viewing &lt;strong>MLOps , cloud APIs, and workflow design&lt;/strong> in different lenses, and I’m proud to have contributed a tool that can simplify help reproducible research for others.&lt;/p></description></item><item><title>Final Report: CarbonCast — An end-to-end consumption-based Carbon Intensity Forecasting service</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre25/ucsc/carboncast/20250915-tanushsavadi/</link><pubDate>Mon, 15 Sep 2025 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre25/ucsc/carboncast/20250915-tanushsavadi/</guid><description>&lt;p>Hi everyone—this is my final report for &lt;strong>CarbonCast&lt;/strong>, mentored by &lt;strong>Professor Abel Souza&lt;/strong>. Back in June, my goal was simple to say and harder to pull off: help people &lt;strong>see&lt;/strong> when the grid is cleaner and make it easy to act on that information. Over the summer I turned CarbonCast from a research prototype into something you can open, click, and rely on: a containerized backend, a clean API, and a fast, friendly map UI.&lt;/p>
&lt;h2 id="background">Background&lt;/h2>
&lt;p>CarbonCast forecasts the &lt;strong>carbon intensity&lt;/strong> of electricity (gCO₂e/kWh) using grid data and weather. Earlier versions were accurate but difficult to run and even harder to use outside a research context. My OSRE focus was to make CarbonCast usable for real people: provide a standard API, build a web UI that feels responsive, and package everything so it starts quickly and keeps itself healthy.&lt;/p>
&lt;h2 id="goals">Goals&lt;/h2>
&lt;p>I centered the work around four goals. First, I wanted to &lt;strong>ship an end-to-end containerized stack&lt;/strong>—data collection, validation, storage, API, and UI—that someone else could run without digging through my notes. Second, I aimed to &lt;strong>expand coverage&lt;/strong> beyond a handful of regions so the map would be genuinely useful. Third, I needed to &lt;strong>make it reliable&lt;/strong>, with retries, monitoring, and graceful fallbacks so the system could run for weeks without babysitting. Finally, I wanted to &lt;strong>lay the groundwork for a consumption-based signal&lt;/strong>, because imports from neighboring regions also shape a region’s true emissions picture.&lt;/p>
&lt;h2 id="what-i-built">What I built&lt;/h2>
&lt;p>By the end of the program, CarbonCast runs as a &lt;strong>containerized backend + API + web app&lt;/strong> that you can bring up with Docker. The pipelines now reach &lt;strong>85+ regions&lt;/strong>, and the UI currently exposes &lt;strong>58+&lt;/strong> while we finish integrating the rest. The API offers straightforward endpoints for current conditions and multi-day views, plus region metadata so clients can discover what’s available. The UI presents an &lt;strong>interactive choropleth map&lt;/strong> with a side panel for the &lt;strong>energy mix&lt;/strong> and a simple &lt;strong>timeline&lt;/strong> to move between past, now, and the next few days. To keep things feeling snappy, I tuned caching so “now” data updates quickly while historical and forecast views load instantly from cache. I also added a small &lt;strong>“mission control” dashboard&lt;/strong> that shows what updated, what failed, and how the system recovered, which makes maintenance far less mysterious.&lt;/p>
&lt;h2 id="how-it-works">How it works&lt;/h2>
&lt;p>Fresh weather and grid data arrive on a regular schedule. The system checks each file for sanity, stores it, and serves it through a clean API. The React app calls that API and paints the map. Hovering reveals regional details; clicking opens a richer panel with the energy mix and trends; the timeline lets you scrub through hours naturally. In short, the path is &lt;strong>fresh data → API → map&lt;/strong>, and each step is designed to be obvious and quick.&lt;/p>
&lt;p>Behind the scenes, I extended the existing Django backend with a &lt;strong>SQLite path&lt;/strong> so the UI works out of the box on a laptop. For production, you can point the same code at Postgres or MySQL without changing the UI. This choice made local testing easy while leaving room for scale later.&lt;/p>
&lt;h2 id="highlights">Highlights&lt;/h2>
&lt;p>A few moments stand out. The first time the dashboard flipped from red to green on its own—after the system retried through a wave of timeouts—was a turning point. Clicking across the map and getting instant responses because the right data was cached felt great too. And packaging everything so another person can run it without asking me for help might be the biggest quality-of-life win for future contributors.&lt;/p>
&lt;h2 id="challenges">Challenges&lt;/h2>
&lt;p>The first big hurdle was &lt;strong>refactoring the old vanilla-JS interface&lt;/strong>. The original UI worked, but it was dated and hard to extend. I rebuilt it as a modern React + TypeScript app with a cleaner component structure and a fresh look—think &lt;strong>glassmorphic panels&lt;/strong>, readable color scales, and a layout that feels consistent on both laptops and smaller screens. Moving to this design system made the codebase far easier to maintain, theme, and iterate on.&lt;/p>
&lt;p>The next challenge was &lt;strong>performance under real-time load&lt;/strong>. With dozens of regions updating, it was easy to hit API limits and make the UI feel jittery. I solved this by adding a smart &lt;strong>caching layer&lt;/strong> with short, volatility-aware timeouts, request de-duplication, and background prefetching. That combination dramatically reduced round-trips, essentially &lt;strong>eliminated rate-limit hits&lt;/strong>, and made the map feel responsive even as you scrub through time. The result is a UI that can handle many simultaneous updates &lt;strong>without hiccups&lt;/strong>.&lt;/p>
&lt;p>Finally, there were plenty of &lt;strong>stubborn UI bugs&lt;/strong>. Some regions wouldn’t color even when data was available, certain charts refused to render, and a few elements flickered or never showed up. Most of this came down to learning &lt;strong>React state management&lt;/strong> in a real project: taming race conditions, canceling in-flight requests when users navigate, and making sure state only updates when fresh data actually arrives. Fixing those issues taught me a lot about how maps re-paint, how charts expect their data, and how to keep components simple enough that they behave the way users expect.&lt;/p>
&lt;h2 id="what-didnt-make-the-cut-yet">What didn’t make the cut (yet)&lt;/h2>
&lt;p>I designed—but did not finish—&lt;strong>per-region plug-in models&lt;/strong> so each grid can use the approach that fits it best. We decided to ship a stable, deployable service first and reserve that flexibility work for the next phase. The design is written down and ready to build.&lt;/p>
&lt;h2 id="links-and-resources">Links and resources:&lt;/h2>
&lt;ul>
&lt;li>&lt;strong>Project page:&lt;/strong> &lt;a href="project/osre25/ucsc/carboncast/">CarbonCast&lt;/a>&lt;/li>
&lt;li>&lt;strong>Proposal:&lt;/strong> &lt;a href="https://ucsc-ospo.github.io/report/osre25/ucsc/carboncast/20250710-tanushsavadi/" target="_blank" rel="noopener">https://ucsc-ospo.github.io/report/osre25/ucsc/carboncast/20250710-tanushsavadi/&lt;/a>&lt;/li>
&lt;li>&lt;strong>Midterm blog:&lt;/strong> &lt;a href="https://ucsc-ospo.github.io/report/osre25/ucsc/carboncast/20250803-tanushsavadi/" target="_blank" rel="noopener">https://ucsc-ospo.github.io/report/osre25/ucsc/carboncast/20250803-tanushsavadi/&lt;/a>&lt;/li>
&lt;li>&lt;strong>Backend/API (branch):&lt;/strong> &lt;a href="https://github.com/carbonfirst/CarbonCast/tree/django_apis_sqlite" target="_blank" rel="noopener">https://github.com/carbonfirst/CarbonCast/tree/django_apis_sqlite&lt;/a>&lt;/li>
&lt;li>&lt;strong>Frontend/UI:&lt;/strong> &lt;a href="https://github.com/carbonfirst/CarbonCastUI/tree/main" target="_blank" rel="noopener">https://github.com/carbonfirst/CarbonCastUI/tree/main&lt;/a>&lt;/li>
&lt;/ul>
&lt;h2 id="whats-next">What’s next&lt;/h2>
&lt;p>My next steps are clear. I want to finish the &lt;strong>per-region model plug-ins&lt;/strong> so grids can bring their own best forecasting logic. I also plan to carry the &lt;strong>consumption-based&lt;/strong> signal end-to-end, including imports and interconnects surfaced directly in the UI. Finally, I’ll harden the system for production by enabling auth and throttling and by moving to a production-grade database where appropriate.&lt;/p>
&lt;h2 id="thank-you">Thank you&lt;/h2>
&lt;p>Huge thanks to &lt;strong>Professor Abel Souza&lt;/strong> for steady mentorship and to the &lt;strong>OSRE&lt;/strong> community for thoughtful feedback. The most rewarding part of this summer was watching a research idea become something people can &lt;strong>click on—and use&lt;/strong> to make cleaner choices.&lt;/p></description></item><item><title>Final Report: A Systematic Investigation into the Reproducibility of RAG Systems</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre25/pnnl/llm_rag_reproducibility/20250905-wbq321/</link><pubDate>Fri, 05 Sep 2025 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre25/pnnl/llm_rag_reproducibility/20250905-wbq321/</guid><description>&lt;p>I&amp;rsquo;m Baiqiang, and this is the final report for the &lt;a href="https://ucsc-ospo.github.io/project/osre25/pnnl/llm_rag_reproducibility/" target="_blank" rel="noopener">Enhancing Reproducibility in RAG Frameworks for Scientific Workflows&lt;/a> project, mentored by Luanzheng &amp;ldquo;Lenny&amp;rdquo; Guo and Dongfang Zhao. This project successfully developed a novel framework to quantitatively measure reproducibility in AI systems, yielding several surprising and impactful results.&lt;/p>
&lt;h3 id="the-challenge-the-need-for-systematic-measurement">The Challenge: The Need for Systematic Measurement&lt;/h3>
&lt;p>Retrieval-Augmented Generation (RAG) is a cornerstone of AI for science, but its reliability is often compromised by non-determinism. While this issue was a known concern, a fundamental challenge was the lack of standardized tools and methodologies to systematically measure and quantify the sources of this inconsistency. Without a rigorous way to analyze the problem, it was difficult to move beyond ad-hoc tests and establish the true root causes, hindering the development of truly trustworthy AI systems for science.&lt;/p>
&lt;h3 id="our-contribution-the-reprorag-framework">Our Contribution: The ReproRAG Framework&lt;/h3>
&lt;p>To address this gap, the central contribution of this project is &lt;strong>ReproRAG&lt;/strong>, a comprehensive, open-source benchmarking framework. ReproRAG is designed to systematically investigate sources of uncertainty across the entire RAG pipeline by:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Isolating Variables:&lt;/strong> It allows for controlled experiments on embedding models, numerical precision, retrieval algorithms, hardware configurations (CPU/GPU), and distributed execution environments.&lt;/li>
&lt;li>&lt;strong>Quantifying Uncertainty:&lt;/strong> It employs a suite of metrics—including Exact Match Rate, Jaccard Similarity, and Kendall&amp;rsquo;s Tau—to precisely measure the impact of each variable on the final retrieved results.&lt;/li>
&lt;/ul>
&lt;h3 id="key-findings-a-new-hierarchy-of-uncertainty">Key Findings: A New Hierarchy of Uncertainty&lt;/h3>
&lt;p>Our large-scale empirical study using ReproRAG challenged common assumptions and established a clear hierarchy of what actually impacts reproducibility.&lt;/p>
&lt;ol>
&lt;li>
&lt;p>&lt;strong>Core Algorithms Are Not the Problem:&lt;/strong> Our most surprising finding is that modern retrieval libraries like FAISS are perfectly reproducible out-of-the-box. Across all tested index types (including approximate ones like HNSW and IVF) and execution environments (single-node CPU/GPU and multi-node distributed systems), we achieved perfect run-to-run reproducibility (1.000 scores on all metrics) when environmental factors like random seeds were controlled. This falsifies the common hypothesis that approximate nearest neighbor algorithms are a primary source of randomness.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Embedding Model Choice is a Dominant Source of Variation:&lt;/strong> We found that the choice of the embedding model is a dominant factor driving result variation. When comparing outputs from different state-of-the-art models (BGE, E5, Qwen) for the same query, the agreement was very low (e.g., Overlap Coefficient of ~0.43-0.54). This means a scientific conclusion drawn with one model may not be reproducible with another, as they are fundamentally &amp;ldquo;seeing&amp;rdquo; different evidence.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Environmental Factors Introduce Measurable &amp;ldquo;Drift&amp;rdquo;:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Numerical Precision:&lt;/strong> Changing floating-point precision (e.g., FP32 vs. FP16) was a guaranteed source of variation, but it caused a small and quantifiable &amp;ldquo;embedding drift&amp;rdquo; rather than chaotic changes.&lt;/li>
&lt;li>&lt;strong>Data Insertion:&lt;/strong> Incrementally adding new data to an index caused a predictable &amp;ldquo;displacement&amp;rdquo; of old results, not a re-shuffling. The relative ranking of the remaining original documents was perfectly stable (Kendall&amp;rsquo;s Tau of 1.000).&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Common Determinism Flags Can Be Ineffective:&lt;/strong> Our tests showed that popular software-level controls, like &lt;code>cudnn.deterministic&lt;/code> flags in PyTorch, had no observable effect on the output of modern transformer-based embedding models. This underscores the necessity of empirical validation over assuming that framework settings work as advertised.&lt;/p>
&lt;/li>
&lt;/ol>
&lt;h3 id="conclusion">Conclusion&lt;/h3>
&lt;p>This project successfully shifted the focus of the RAG reproducibility problem. The key challenge is not to fix supposedly &amp;ldquo;random&amp;rdquo; algorithms, but to rigorously control the entire experimental environment. We delivered &lt;strong>ReproRAG&lt;/strong>, a framework that empowers researchers to do just that. Our findings provide actionable insights for the community: efforts to improve reproducibility should focus less on the retrieval algorithms themselves and more on disciplined management of embedding models, data versioning, and numerical precision.&lt;/p></description></item><item><title>Optimizing and Benchmarking GPU Collective Communication of PyLops-MPI with NCCL</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre25/lbl/pylops-mpi/20250905-tharit/</link><pubDate>Fri, 05 Sep 2025 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre25/lbl/pylops-mpi/20250905-tharit/</guid><description>&lt;h1 id="enabling-nccl-gpu-gpu-communication-in-pylops-mpi---google-summer-of-code-project-2025---part-2">Enabling NCCL GPU-GPU Communication in PyLops-MPI - Google Summer of Code Project (2025) - Part 2&lt;/h1>
&lt;p>Hello all! 👋 This is Tharit again. I want to share this blog post about my Part 2 of Google Summer of Code projects. In case you miss it, you can take a look at &lt;a href="https://ucsc-ospo.github.io/report/osre25/lbl/pylops-mpi/20250723-tharit/" target="_blank" rel="noopener">Part1&lt;/a> as well. Without further introduction, these following supports were added since last time.&lt;/p>
&lt;ul>
&lt;li>
&lt;h3 id="complex-number-support-pr-148httpsgithubcompylopspylops-mpipull148">Complex Number Support &lt;a href="https://github.com/PyLops/pylops-mpi/pull/148" target="_blank" rel="noopener">PR #148&lt;/a>&lt;/h3>
&lt;/li>
&lt;/ul>
&lt;p>&lt;em>Between this PR and the previous PR, there are lots of debugging and testing to make sure that all existing &lt;code>MPILinearOperator&lt;/code> works under NCCL as they do with &lt;code>mpi4py&lt;/code> PR &lt;a href="https://github.com/PyLops/pylops-mpi/pull/141" target="_blank" rel="noopener">#141&lt;/a>, &lt;a href="https://github.com/PyLops/pylops-mpi/pull/142" target="_blank" rel="noopener">#142&lt;/a> &lt;a href="https://github.com/PyLops/pylops-mpi/pull/145" target="_blank" rel="noopener">#145&lt;/a>&lt;/em>&lt;/p>
&lt;p>Most of the PyLops-MPI users are scientists and engineers working on the scientific problems - and most of the scientific problem involves complex numbers (Fourier Transform touches many things). &lt;em>NCCL does not support the complex number out-of-the-box&lt;/em>.&lt;/p>
&lt;p>It turned out that adding complex-number support was not the big issue. The complex number is simply the contiguous array of, says, &lt;code>float64&lt;/code>. Unlike typical &lt;code>float64&lt;/code>, one element of &lt;code>complex128&lt;/code> number is then represented by two &lt;code>float64&lt;/code>. Things get more complicate if we start to talk about the complex number arithmatic. Luckily, &lt;a href="https://docs.nvidia.com/deeplearning/nccl/user-guide/docs/api/types.html#c.ncclRedOp_t" target="_blank" rel="noopener">NCCL semantics&lt;/a> only supports &lt;em>element-wise&lt;/em> &lt;code>ncclSum&lt;/code>, &lt;code>ncclProd&lt;/code>, &lt;code>ncclMin&lt;/code>, &lt;code>ncclMax&lt;/code>, &lt;code>ncclAvg&lt;/code>. Wrapping element-wise operations for complex number is straightforward.&lt;/p>
&lt;p>The change to PyLops-MPI &lt;code>_nccl.py&lt;/code> itself is minimal. We simply added the function below and this hides the complexity of buffer-size management from users.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="k">def&lt;/span> &lt;span class="nf">_nccl_buf_size&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">buf&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">count&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="kc">None&lt;/span>&lt;span class="p">):&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s2">&amp;#34;&amp;#34;&amp;#34; Get an appropriate buffer size according to the dtype of buf
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s2"> if buf.dtype in [&amp;#39;complex64&amp;#39;, &amp;#39;complex128&amp;#39;]:
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s2"> return 2 * count if count else 2 * buf.size
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s2"> else:
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s2"> return count if count else buf.size
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>The conceptual is quite simple. But mechanically, to get it right in the general case required some extensive bug fixing, particularly in the call to &lt;code>_allgather &lt;/code>as noted earlier in the &amp;ldquo;Core Change&amp;rdquo; section. The array needs some preprocessing (to align with NCCL semantics) and post-processing so that the result from Pylops-MPI’s NCCL allgather matches with the PyLops-MPI allgather. This is because Pylops-MPI must be able to switch between &lt;code>mpi4py&lt;/code> and NCCL seamlessly from the user&amp;rsquo;s perspective. To make it concrete, here is how we do the &lt;code>_allgather()&lt;/code> with NCCL&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl"> &lt;span class="k">def&lt;/span> &lt;span class="nf">_allgather&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="bp">self&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">send_buf&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">recv_buf&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="kc">None&lt;/span>&lt;span class="p">):&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s2">&amp;#34;&amp;#34;&amp;#34;Allgather operation
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s2"> &amp;#34;&amp;#34;&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">if&lt;/span> &lt;span class="n">deps&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">nccl_enabled&lt;/span> &lt;span class="ow">and&lt;/span> &lt;span class="bp">self&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">base_comm_nccl&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">if&lt;/span> &lt;span class="nb">isinstance&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">send_buf&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="nb">tuple&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="nb">list&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="nb">int&lt;/span>&lt;span class="p">)):&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">return&lt;/span> &lt;span class="n">nccl_allgather&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="bp">self&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">base_comm_nccl&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">send_buf&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">recv_buf&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">else&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">send_shapes&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="bp">self&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">base_comm&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">allgather&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">send_buf&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">shape&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 class="n">padded_send&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">padded_recv&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">_prepare_nccl_allgather_inputs&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">send_buf&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">send_shapes&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">raw_recv&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">nccl_allgather&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="bp">self&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">base_comm_nccl&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">padded_send&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">recv_buf&lt;/span> &lt;span class="k">if&lt;/span> &lt;span class="n">recv_buf&lt;/span> &lt;span class="k">else&lt;/span> &lt;span class="n">padded_recv&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">return&lt;/span> &lt;span class="n">_unroll_nccl_allgather_recv&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">raw_recv&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">padded_send&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">shape&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">send_shapes&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1"># &amp;lt; snip - MPI allgather &amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>&lt;strong>After this feature was added, the PyLops-MPI with NCCL now catches up with its original MPI implementation, i.e., the test coverage is now the same 306 tests passed !&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>
&lt;h3 id="benchmark-instrumentation-pr-157httpsgithubcompylopspylops-mpipull157">Benchmark Instrumentation &lt;a href="https://github.com/PyLops/pylops-mpi/pull/157" target="_blank" rel="noopener">PR #157&lt;/a>&lt;/h3>
&lt;/li>
&lt;/ul>
&lt;p>Profiling distributed GPU operations is critical to understanding performance bottlenecks. To make this easier, we added a &lt;em>lightweight benchmark instrumentation&lt;/em> framework in PyLops-MPI. The goal was to allow developers to mark execution points in a function and collect timing information for these markers.&lt;/p>
&lt;p>The core of the implementation is a &lt;code>@benchmark decorator&lt;/code>. Inside a decorated function, developers can call &lt;code>mark(label)&lt;/code> to record the time at specific points. After the function completes, the timings are reported in a human-readable format. This design is inspired by C++-style instrumentation, letting developers place markers directly in the code where they are most informative.&lt;/p>
&lt;p>But because we are in Python, to handle nested function calls, we collect the timing information as a stack (bottom-up call graph) and parse the result at the end of the decorated function. Here&amp;rsquo;s is the illustration:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="nd">@benchmark&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">def&lt;/span> &lt;span class="nf">outer_func_with_mark&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">par&lt;/span>&lt;span class="p">):&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">mark&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34;Outer func start&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">inner_func_with_mark&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">par&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="c1"># &amp;lt;- this does `dot` and is also decorated&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">dist_arr&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">DistributedArray&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">global_shape&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="n">par&lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="s1">&amp;#39;global_shape&amp;#39;&lt;/span>&lt;span class="p">],&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">partition&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="n">par&lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="s1">&amp;#39;partition&amp;#39;&lt;/span>&lt;span class="p">],&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">dtype&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="n">par&lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="s1">&amp;#39;dtype&amp;#39;&lt;/span>&lt;span class="p">],&lt;/span> &lt;span class="n">axis&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="n">par&lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="s1">&amp;#39;axis&amp;#39;&lt;/span>&lt;span class="p">])&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">dist_arr&lt;/span> &lt;span class="o">+&lt;/span> &lt;span class="n">dist_arr&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">mark&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34;Outer func ends&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>The text output is&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">[decorator]outer_func_with_mark: total runtime: 0.001206 s
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> [decorator]inner_func_with_mark: total runtime: 0.000351 s
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> Begin array constructor--&amp;gt;Begin dot: 0.000026 s
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> Begin dot--&amp;gt;Finish dot: 0.000322 s
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> Outer func start--&amp;gt;Outer func ends: 0.001202 s
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Benchmarking is controlled via the environment variable &lt;code>BENCH_PYLOPS_MPI&lt;/code>. It defaults to &lt;code>1&lt;/code> (enable) but can be set to &lt;code>0&lt;/code> to skip benchmarking for clean output. &lt;strong>This means users can leave the decorated code unchanged and disable the benchmark through the environment variable&lt;/strong>. This is inspired by the C++ debug flag set during the compilation. Moreover, careful attention had to be made on concurrency issue of benchmarking because the time is recorded by CPU while the NCCL issues the operation in an async manner to CUDA stream &lt;a href="https://github.com/PyLops/pylops-mpi/pull/163" target="_blank" rel="noopener">PR #163&lt;/a> is an example of this.&lt;/p>
&lt;ul>
&lt;li>
&lt;h3 id="benchmark-result">Benchmark Result&lt;/h3>
&lt;/li>
&lt;/ul>
&lt;p>This was the moment of truth. Our 12-week hardwork would be judged by a set of hard cold numbers. Our expectation was that&lt;/p>
&lt;ul>
&lt;li>If the system does not have proprietary NVLink for GPU-GPU communication but is NCCL-compatible, the communication using &lt;code>CuPy + NCCL&lt;/code> should still be faster than &lt;code>NumPy + MPI&lt;/code> (and possibly&lt;code>CuPy + MPI&lt;/code>) in PyLops-MPI i.e., there should be a benefit from using NCCL from communication-related optimizations enabled by this project.&lt;/li>
&lt;/ul>
&lt;p>The result below was from NCSA UIUC Delta system &lt;a href="https://docs.ncsa.illinois.edu/systems/delta/en/latest/user_guide/architecture.html" target="_blank" rel="noopener">4-Way NVIDIA A40 GPU&lt;/a> (no NVLink) with the &lt;code>allreduce&lt;/code> operation.&lt;/p>
&lt;p align="center">
&lt;img width="400" height="300" alt="image" src="https://gist.github.com/user-attachments/assets/b139e63d-11ed-47f4-95f8-5e86bed26312" />
&lt;/p>
&lt;p>That meets our expection. One thing to note here is: we see that actually the &lt;code>CuPy + MPI&lt;/code> communication being slower than the &lt;code>NumPy + MPI&lt;/code>. This is because the current implementation of PyLops-MPI uses non-buffered calls of &lt;code>mpi4py&lt;/code> - see detail &lt;a href="https://mpi4py.readthedocs.io/en/stable/tutorial.html" target="_blank" rel="noopener">here&lt;/a>. The choice was made due to its simplicity as it allowed send and receiving generic Python object wrapped in a &lt;code>list&lt;/code> and thus allowed fast development process. However, These require the memory copy from GPU to CPU, do communication, and copy memory from CPU to GPU (pickle protocol) - see our discussion with &lt;code>mpi4py&lt;/code> community &lt;a href="https://github.com/mpi4py/mpi4py/discussions/657" target="_blank" rel="noopener">here&lt;/a>. This leads us to “Things left to do” section (later).&lt;/p>
&lt;ul>
&lt;li>If the system has an NVLink for GPU-GPU communication, we will be able to see a significant gain in performance of PyLops-MPI with NCCL.&lt;/li>
&lt;/ul>
&lt;p>The result below is also from NCSA UIUC Delta system &lt;a href="https://docs.ncsa.illinois.edu/systems/delta/en/latest/user_guide/architecture.html" target="_blank" rel="noopener">8-Way NVIDIA H200 GPU&lt;/a> (with NVLink) but we only use 4 GPUs to compare with previous result. This is also with the &lt;code>allreduce&lt;/code> operation.&lt;/p>
&lt;p align="center">
&lt;img width="400" height="300" alt="image" src="https://gist.github.com/user-attachments/assets/b3d83547-b9af-4b1c-87c0-ace2302eb140" />
&lt;/p>
&lt;p>Here we unleash the true power of NCCL and its infrasture as you can see that &lt;strong>the bandwidth of PyLops-MPI with NCCL is 800x of the MPI implementation !&lt;/strong>. It may not make much sense to compare the number with &lt;code>NumPy+MPI&lt;/code> because there is drastic hardware infrastructure upgrade involved.&lt;/p>
&lt;p>To top things off, we also ran the experiment trying to saturate the communication with the array size going up to 32 GB in total. We can see that we have the linear scaling i.e. time vs. data size grows linearly.&lt;/p>
&lt;p align="center">
&lt;img width="400" height="300" alt="image" src="https://gist.github.com/user-attachments/assets/e5a95fdc-8db7-4caf-925f-256f504603bc" />
&lt;/p>
&lt;p>Finally, we ran an experiment with the application of &lt;a href="https://wiki.seg.org/wiki/Least-squares_migration" target="_blank" rel="noopener">Least-squares Migration&lt;/a>, which is an iterative inversion scheme:&lt;/p>
&lt;ul>
&lt;li>Each iteration applies a forward &lt;code>A&lt;/code> and an adjoint &lt;code>A.T&lt;/code> operation to form residuals and gradients.&lt;/li>
&lt;li>A gradient accumulation requires a global reduction across processes with &lt;code>allreduce&lt;/code>.
Note that the computation is not trivial and so the total run-time of CPU and GPU is not fairly comparable (notice that in H200, the CuPy+MPI is not the slowest anymore). But we want to give the idea of how things piece together in the real application.&lt;/li>
&lt;/ul>
&lt;div align="center">
&lt;img width="400" height="300" alt="kirchA40"
src="https://gist.github.com/user-attachments/assets/46c3a76a-20a3-40c3-981e-6e1c4acecb49" />
&lt;img width="400" height="300" alt="kirchhoff_h200"
src="https://gist.github.com/user-attachments/assets/1439304a-8f78-4640-a78b-ba37238b26e6" />
&lt;/div>
&lt;h3 id="the-impact-of-this-gsoc-project-is-clear">The impact of this GSoC project is clear:&lt;/h3>
&lt;p>With our NCCL-enabled PyLops-MPI,&lt;/p>
&lt;ul>
&lt;li>if you don&amp;rsquo;t have access to the state-of-the-art infrastructure, PyLops-MPI with NCCL can still 10x the communication bandwith (A40 case)&lt;/li>
&lt;li>if you do, we allow you to get the most out of the system (H200 case).&lt;/li>
&lt;/ul>
&lt;p>And the best thing is to use NCCL with PyLops-MPI, it requires minimal code change as shown in this &lt;a href="https://github.com/PyLops/pylops-mpi/blob/main/tutorials_nccl/lsm_nccl.py" target="_blank" rel="noopener">LSM Tutorial&lt;/a> and illustrated below. Only two change require from the code that run on MPI: the array must be allocated in GPU and nccl has to be passed to the &lt;code>DistributedArray&lt;/code>. And that&amp;rsquo;s it !&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="n">nccl_comm&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">pylops_mpi&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">utils&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">_nccl&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">initialize_nccl_comm&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"># &amp;lt;snip - same set-up as running with MPI&amp;gt;&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">lsm&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">LSM&lt;/span>&lt;span class="p">(&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1"># &amp;lt;snip&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">cp&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">asarray&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">wav&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">astype&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">np&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">float32&lt;/span>&lt;span class="p">)),&lt;/span> &lt;span class="c1"># Copy to GPU&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1"># &amp;lt;snip&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">engine&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s2">&amp;#34;cuda&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">dtype&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="n">np&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">float32&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;span class="line">&lt;span class="cl">&lt;span class="n">lsm&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">Demop&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">trav_srcs&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">cp&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">asarray&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">lsm&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">Demop&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">trav_srcs&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">astype&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">np&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">float32&lt;/span>&lt;span class="p">))&lt;/span> &lt;span class="c1"># Copy to GPU&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">lsm&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">Demop&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">trav_recs&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">cp&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">asarray&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">lsm&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">Demop&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">trav_recs&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">astype&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">np&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">float32&lt;/span>&lt;span class="p">))&lt;/span> &lt;span class="c1"># Copy to GPU&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">x0&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">pylops_mpi&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">DistributedArray&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">VStack&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">shape&lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="mi">1&lt;/span>&lt;span class="p">],&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">partition&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="n">pylops_mpi&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">Partition&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">BROADCAST&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">base_comm_nccl&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="n">nccl_comm&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="c1"># Explicitly pass nccl communicator&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">engine&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s2">&amp;#34;cupy&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="c1"># Must use CuPy&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># &amp;lt;snip - the rest is the same&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="things-left-to-do">Things left to do&lt;/h3>
&lt;ul>
&lt;li>CUDA-Aware MPI: As we pointed out in the A40 experiment that current implementation of PyLops-MPI use non-buffered calls of &lt;code>mpi4py&lt;/code> and thus introduces the memory copying from GPU to CPU. We aim to optimize this by introducing the buffered calls. However, this is not a trivial task because some of the MPI-related code was developed based on the semantics that the communication return the &lt;code>list&lt;/code> object while the buffered call will return the array instead.&lt;/li>
&lt;/ul></description></item><item><title>Wrapping Up KALLM</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre25/ucsc/kallm/20250830-dentonjc/</link><pubDate>Wed, 03 Sep 2025 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre25/ucsc/kallm/20250830-dentonjc/</guid><description>&lt;p>Large language models today look complicated, but if you peel back the layers, most of what you see is old technology: stacks of linear transformations. The Transformer architecture, the engine behind GPTs and their cousins, is often described as revolutionary. Yet the majority of its parameters are standard linear layers, the same kind of matrix multiplications you would find in a simple multilayer perceptron from the 1980s. For years these layers have gone unchallenged. They are fast, they scale, and they work. But maybe the time has come to ask: &lt;em>can we do better than linear?&lt;/em>&lt;/p>
&lt;p>This project explored exactly that. Instead of leaving those layers untouched, we tried replacing them with a more mathematically structured alternative: &lt;strong>Kolmogorov–Arnold Networks (KANs)&lt;/strong>. The result is a working language model—SmolLM2, a 135-million-parameter Transformer—where the final feedforward blocks no longer consist of brute-force linear weights, but of compact polynomial-based functions. And the striking fact is that performance remained within the baseline range. Smaller KANs managed to match larger linear layers, showing that smarter mathematics can stand shoulder to shoulder with the workhorse of deep learning.&lt;/p>
&lt;h2 id="transformers">Transformers&lt;/h2>
&lt;p>To understand the significance, let’s revisit what a Transformer actually is.&lt;br>
A Transformer block has two main components: attention and feedforward. The attention mechanism computes how each word in a sentence relates to every other word. That is the clever part, and it is what made Transformers famous. But once attention finishes its work, the output is passed into a feedforward network. And this feedforward network is essentially two large linear layers, stacked with a nonlinearity between them.&lt;/p>
&lt;p>Now stacking thirty such blocks yields a complete model like SmolLM2. Look at the parameter counts and you see a pattern: attention is not the main consumer. It’s the feedforward layers. They dominate memory and computation, making them the primary target for efficiency gains.&lt;/p>
&lt;h2 id="what-are-kolmogorovarnold-networks">What Are Kolmogorov–Arnold Networks?&lt;/h2>
&lt;p>So what happens if, instead of a giant matrix multiplication, we try something more structured? Enter Kolmogorov–Arnold Networks.&lt;/p>
&lt;p>KANs are built on a mathematical theorem from the mid-20th century, which proved that any multivariate function can be decomposed into sums of univariate functions. Instead of mixing all inputs together at once, you treat each input dimension separately, applying a small nonlinear function, and then recombine. The beauty is that these univariate functions can be simple but expressive—like splines or polynomials—and yet, when summed, they approximate very complex mappings.&lt;/p>
&lt;p>Think of a KAN layer as a set of individual univariate modules. Each one takes a single variable, bends it according to a chosen basis (polynomials, splines, etc.), and then all those bent versions are added up to produce the output. The richness of the final function depends on two factors:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Choice of basis&lt;/strong>: You can bend with Chebyshev polynomials, with Legendre polynomials, with B-splines, or with other families.&lt;/li>
&lt;li>&lt;strong>Degree&lt;/strong>: This is how many bends you allow. A degree-1 polynomial is just a line. Degree-2 can capture curves. Higher degrees capture higher-order oscillatory components.&lt;/li>
&lt;/ul>
&lt;p>A Chebyshev polynomial of the second kind, degree 2, is one such basis. Unlike a simple quadratic, it has roots and oscillations that make it particularly good at spanning function space efficiently. This efficiency explains its favorable performance in our experiments: low degree means fewer parameters, but Chebyshev’s properties let it approximate more than you might expect from so few numbers.&lt;/p>
&lt;h2 id="why-small-can-beat-big">Why Small Can Beat Big&lt;/h2>
&lt;p>Linear layers require many parameters because they treat every input–output mapping as arbitrary. KANs assume smoothness: each input passes through a compact polynomial basis before recombination. This structure captures useful patterns with fewer parameters.&lt;/p>
&lt;p>A degree-2 Chebyshev basis, for example, encodes curvature and oscillation efficiently. While a linear layer of the same size must spend parameters to approximate these effects, the polynomial basis includes them inherently. The result is comparable expressivity with fewer parameters. In language tasks where patterns are often smooth or compositional, this structured efficiency translates into competitive accuracy at lower cost.&lt;/p>
&lt;h2 id="baselines-modifications-and-comparisons">Baselines, Modifications, and Comparisons&lt;/h2>
&lt;p>Here’s what we actually tested, in plain language:&lt;/p>
&lt;ol>
&lt;li>&lt;strong>The untouched baseline&lt;/strong>: a pretrained SmolLM2, with all thirty blocks intact.&lt;/li>
&lt;li>&lt;strong>Linear restart&lt;/strong>: the same pretrained model, but the last five feedforward modules were thrown away and replaced with freshly initialized linear ones. These then had to be trained again.&lt;/li>
&lt;li>&lt;strong>KAN replacement&lt;/strong>: again, take the pretrained model, cut off the last five feedforward modules, and put in new KAN modules instead—specifically, Chebyshev of the second kind, degree 2.&lt;/li>
&lt;/ol>
&lt;p>In all three cases, the backbone of the model—the embeddings, the attention layers, and the first twenty-five blocks—was left untouched. Only the tail was modified. This design allowed us to test transfer learning: would the pretrained parts of the model still play nicely with the new pieces? The answer is yes. The attention layers and other linear projections adapted seamlessly, proving that KANs can be swapped in without destabilizing the whole system.&lt;/p>
&lt;p>Training was done on &lt;strong>smol-smoltalk&lt;/strong> dataset, a small-scale dialogue corpus used for both pretraining and fine-tuning. After training, all models were evaluated on the same subset of &lt;strong>BIG-Bench Hard&lt;/strong> tasks.&lt;/p>
&lt;!--
## How Evaluation Works
The evaluation was not a casual check; it mirrored the structure of the Open LLM Leaderboard, but focused only on the core tasks relevant to dialogue and reasoning (since our training data did not include STEM problems, for example). Each task consists of prompts with clear expected answers: multiple choice, classification, or reasoning questions.
To evaluate, each model is placed in a simulated conversation. The prompt is fed in, the model generates a response, and that response is parsed. If the task is multiple choice, the evaluation extracts which option the model chose, checking against the gold label. If the task is free-form, the answer is normalized—lowercased, punctuation stripped, articles removed—so that small differences in formatting do not count as mistakes. The comparison is then exact. Each task contributes an accuracy score, and the final performance is the average over all selected tasks.
This method ensures consistency. Models cannot bluff with verbose text. They must produce the right short answer. That makes the results directly comparable, and it stresses the reasoning capabilities rather than the stylistic flourishes of the model.
-->
&lt;h2 id="results">Results&lt;/h2>
&lt;p>The baseline was the pretrained SmolLM2 without modification. It achieved an average accuracy of 22.5%, using 134M parameters. This experiment has a single measurement because no training was applied. The rest of the experiments was done using 3 random seeds.&lt;/p>
&lt;p>When retrained with linear replacements, the model reached an average accuracy of 43.8%, with 46M trainable parameters (only last 5 blocks are active) and 5.87 GB VRAM total usage.&lt;/p>
&lt;p>Replacing the last five feedforward blocks with Kolmogorov–Arnold Networks produced an average accuracy of 44.1%, with 39M parameters and 5.86 GB VRAM usage. The memory consumption of KAN layers is a subject that requires further optimization.&lt;/p>
&lt;p>In short, KANs matched or slightly exceeded the reinitialized linear baseline in accuracy, while using fewer parameters and slightly less memory. This demonstrates that structured polynomial layers can substitute for large linear layers without degrading reasoning performance.&lt;/p>
&lt;h2 id="why-transfer-learning-works-so-well">Why Transfer Learning Works So Well&lt;/h2>
&lt;p>One of the surprising outcomes is how cleanly the pretrained Transformer integrates with KANs. Remember: only the feedforward modules in the last five blocks were replaced. All the other linear layers—embedding projections, attention queries, keys, and values, output heads—remained untouched. They continue to function as before. The new KAN blocks slot right in, adapt during training, and the system as a whole behaves coherently.&lt;/p>
&lt;p>That tells us something important. The standard Transformer does not depend on linearity per se in those positions. What it depends on is a nonlinear transformation with enough expressive power. KANs provide that power, just in a different mathematical form. Which means: any pretrained Transformer can, in principle, be retrofit with KANs in the feedforward slots, no need to start from scratch.&lt;/p>
&lt;h2 id="looking-ahead-mixing-polynomial-bases">Looking Ahead: Mixing Polynomial Bases&lt;/h2>
&lt;p>So far we only tested one family, Chebyshev-2. But the architecture is more general. Each KAN block can in fact host multiple polynomial families in &lt;strong>parallel&lt;/strong>, or stack them in &lt;strong>sequence&lt;/strong>.&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Parallel&lt;/strong>: imagine splitting the input across several channels, each processed by a different basis. The outputs are then recombined. This way, one basis covers the smooth global structure, while another captures edge effects or oscillations.&lt;/li>
&lt;li>&lt;strong>Sequential&lt;/strong>: here, the output of one polynomial transformation becomes the input of another. You can think of it as layering function approximations, where the second basis corrects the limitations of the first. For example, a spline might give you piecewise smoothness, then a Chebyshev layer on top could adjust the global shape.&lt;/li>
&lt;/ul>
&lt;p>Both strategies were implemented and promise to extract more expressivity per parameter. Instead of simply making the networks bigger, we can make them &lt;em>smarter&lt;/em>, combining the strengths of different mathematical families. That will be the focus of future work.&lt;/p>
&lt;h2 id="conclusion">Conclusion&lt;/h2>
&lt;p>The main lesson is this: language models do not need to be built entirely from massive linear matrices. By replacing just a handful of those matrices with compact Kolmogorov–Arnold modules, we achieved the same reasoning accuracy with fewer parameters and less memory. Transfer learning works cleanly. The architecture adapts. And the door is now open to rethink what belongs inside a Transformer block.&lt;/p>
&lt;p>KANs are not just a theoretical curiosity. They are practical, efficient, and compatible with modern large language models. This project showed that replacing linear with polynomial is not only possible, it is competitive. The next step is to push combinations, explore scaling, and see just how far this mathematical alternative can take us.&lt;/p>
&lt;!--
## Bonus 1: Testing KANs as LoRA Replacement (Negative result)
We wanted to test if a degree-2 Chebyshev KAN could replace LoRA’s A and B or act as a nonlinear adapter and still match or beat LoRA at the same or smaller rank. In LoRA, A and B are the two small matrices that make the low-rank update: A maps input features down to a rank-r space, B maps that rank-r space back to output features, and their product BA is a constant ΔW that you add to the frozen weight and can merge at inference. We compared five variants at rank 2 and tracked best accuracy: standard LoRA on the final layer (lora_fc 32.03%), a mergeable KAN that generates A and B from Chebyshev bases over indices (11.69%), a linear low-rank conv adapter (81.86%), the same conv adapter with a SiLU in between (84.80%), and a KAN conv adapter (10.76%). The mergeable KAN lost to standard LoRA, and the KAN conv adapter lagged well behind both the linear and the SiLU controls. Conclusion: in this setup KAN did not deliver LoRA-level accuracy at smaller rank.
## Bonus 2 KAN Layers with LoRA for Domain Transfer (Negative result)
We tested if KANs (Cheby2, degree-2) adapt with LoRA as well as a plain linear MLP when moving from CIFAR-10 to CIFAR-100. We first trained both models on CIFAR-10, then froze them, added LoRA (rank 8) on the hidden layers and a new classifier, and matched the number of trainable parameters (~96k) for a fair test. Both models improved on CIFAR-100, but the linear MLP learned faster and reached higher accuracy (18.02% vs 23.10%). So, in this setup LoRA is less effective for KAN layers than for linear layers.
--></description></item><item><title>Final Report: MPI Appliance for HPC Research on Chameleon</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre25/uchicago/mpi/20250901-rohan-babbar/</link><pubDate>Mon, 01 Sep 2025 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre25/uchicago/mpi/20250901-rohan-babbar/</guid><description>&lt;p>Hi Everyone, This is my final report for the project I completed during my summer as a &lt;a href="https://ucsc-ospo.github.io/sor/" target="_blank" rel="noopener">Summer of Reproducibility (SOR)&lt;/a> student.
The project, titled &amp;ldquo;&lt;a href="https://ucsc-ospo.github.io/project/osre25/uchicago/mpi/" target="_blank" rel="noopener">MPI Appliance for HPC Research in Chameleon&lt;/a>,&amp;rdquo; was undertaken in collaboration with Argonne National Laboratory
and the Chameleon Cloud community. The project was mentored by &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/ken-raffenetti/">Ken Raffenetti&lt;/a> and was completed over the summer.
This blog details the work and outcomes of the project.&lt;/p>
&lt;h2 id="background">Background&lt;/h2>
&lt;p>Message Passing Interface (MPI) is the backbone of high-performance computing (HPC), enabling efficient scaling across thousands of
processing cores. However, reproducing MPI-based experiments remains challenging due to dependencies on specific library versions,
network configurations, and multi-node setups.&lt;/p>
&lt;p>To address this, we introduce a reproducibility initiative that provides standardized MPI environments on the Chameleon testbed.
This is set up as a master–worker MPI cluster. The master node manages tasks and communication, while the worker nodes do the computations.
All nodes have the same MPI libraries, software, and network settings, making experiments easier to scale and reproduce.&lt;/p>
&lt;h2 id="objectives">Objectives&lt;/h2>
&lt;p>The aim of this project is to create an MPI cluster that is reproducible, easily deployable, and efficiently configurable.&lt;/p>
&lt;p>The key objectives of this project were:&lt;/p>
&lt;ol>
&lt;li>
&lt;p>Pre-built MPI Images: Create ready-to-use images with MPI and all dependencies installed.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Automated Cluster Configuration: Develop Ansible playbooks to configure master–worker communication, including host setup, SSH key distribution, and MPI configuration across nodes.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Cluster Orchestration: Develop orchestration template to provision resources and invoke Ansible playbooks for automated cluster setup.&lt;/p>
&lt;/li>
&lt;/ol>
&lt;h2 id="implementation-strategy-and-deliverables">Implementation Strategy and Deliverables&lt;/h2>
&lt;h3 id="openstack-image-creation">Openstack Image Creation&lt;/h3>
&lt;p>The first step was to create a standardized pre-built image, which serves as the base image for all nodes in the cluster.&lt;/p>
&lt;p>Some important features of the image include:&lt;/p>
&lt;ol>
&lt;li>Built on Ubuntu 22.04 for a stable base environment.&lt;/li>
&lt;li>&lt;a href="https://spack.io/" target="_blank" rel="noopener">Spack&lt;/a> + Lmod integration:
&lt;ul>
&lt;li>Spack handles reproducible, version-controlled installations of software packages.&lt;/li>
&lt;li>Lmod (Lua Modules) provides a user-friendly way to load/unload software environments dynamically.&lt;/li>
&lt;li>Together, they allow users to easily switch between MPI versions, libraries, and GPU toolkits&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>&lt;a href="https://github.com/pmodels/mpich" target="_blank" rel="noopener">MPICH&lt;/a> and &lt;a href="https://github.com/open-mpi/ompi" target="_blank" rel="noopener">OpenMPI&lt;/a> pre-installed for standard MPI support and can be loaded/unloaded.&lt;/li>
&lt;li>Three image variants for various HPC workloads: CPU-only, NVIDIA GPU (CUDA 12.8), and AMD GPU (ROCm 6.4.2).&lt;/li>
&lt;/ol>
&lt;p>These images have been published and are available in the Chameleon Cloud Appliance Catalog:&lt;/p>
&lt;ul>
&lt;li>&lt;a href="https://chameleoncloud.org/appliances/127/" target="_blank" rel="noopener">MPI and Spack for HPC (Ubuntu 22.04)&lt;/a> - CPU Only&lt;/li>
&lt;li>&lt;a href="https://chameleoncloud.org/appliances/130/" target="_blank" rel="noopener">MPI and Spack for HPC (Ubuntu 22.04 - CUDA)&lt;/a> - NVIDIA GPU (CUDA 12.8)&lt;/li>
&lt;li>&lt;a href="https://chameleoncloud.org/appliances/131/" target="_blank" rel="noopener">MPI and Spack for HPC (Ubuntu 22.04 - ROCm)&lt;/a> - AMD GPU (ROCm 6.4.2)&lt;/li>
&lt;/ul>
&lt;h3 id="cluster-configuration-using-ansible">Cluster Configuration using Ansible&lt;/h3>
&lt;p>The next step is to create scripts/playbooks to configure these nodes and set up an HPC cluster.
We assigned specific roles to different nodes in the cluster and combined them into a single playbook to configure the entire cluster automatically.&lt;/p>
&lt;p>Some key steps the playbook performs:&lt;/p>
&lt;ol>
&lt;li>Configure /etc/hosts entries for all nodes.&lt;/li>
&lt;li>Mount Manila NFS shares on each node.&lt;/li>
&lt;li>Generate an SSH key pair on the master node and add the master’s public key to the workers’ authorized_keys.&lt;/li>
&lt;li>Scan worker node keys and update known_hosts on the master.&lt;/li>
&lt;li>(Optional) Manage software:
&lt;ul>
&lt;li>Install new compilers with Spack&lt;/li>
&lt;li>Add new Spack packages&lt;/li>
&lt;li>Update environment modules to recognize them&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>Create a hostfile at /etc/mpi/hostfile.&lt;/li>
&lt;/ol>
&lt;p>The code is publicly available and can be found on the GitHub repository: &lt;a href="https://github.com/rohanbabbar04/MPI-Spack-Experiment-Artifact" target="_blank" rel="noopener">https://github.com/rohanbabbar04/MPI-Spack-Experiment-Artifact&lt;/a>&lt;/p>
&lt;h3 id="orchestration">Orchestration&lt;/h3>
&lt;p>With the image now created and deployed, and the Ansible scripts ready for cluster configuration, we put everything
together to orchestrate the cluster deployment.&lt;/p>
&lt;p>This can be done in two primary ways:&lt;/p>
&lt;h4 id="python-chijupyter--ansible">Python CHI(Jupyter) + Ansible&lt;/h4>
&lt;p>&lt;a href="https://github.com/ChameleonCloud/python-chi" target="_blank" rel="noopener">Python-CHI&lt;/a> is a python library designed to facilitate interaction with the Chameleon testbed. Often used within environments like Jupyter notebooks.&lt;/p>
&lt;p>This setup can be put up as:&lt;/p>
&lt;ol>
&lt;li>Create leases, launch instances, and set up shared storage using python-chi commands.&lt;/li>
&lt;li>Automatically generate inventory.ini for Ansible based on launched instances.&lt;/li>
&lt;li>Run Ansible playbook programmatically using &lt;code>ansible_runner&lt;/code>.&lt;/li>
&lt;li>Outcome: fully configured, ready-to-use HPC cluster; SSH into master to run examples.&lt;/li>
&lt;/ol>
&lt;p>If you would like to see a working example, you can view it in the &lt;a href="https://chameleoncloud.org/experiment/share/7424a8dc-0688-4383-9d67-1e40ff37de17" target="_blank" rel="noopener">Trovi example&lt;/a>&lt;/p>
&lt;h4 id="heat-orchestration-template">Heat Orchestration Template&lt;/h4>
&lt;p>Heat Orchestration Template(HOT) is a YAML based configuration file. Its purpose is to define/create a stack to automate
the deployment and configuration of OpenStack cloud resources.&lt;/p>
&lt;p>&lt;strong>Challenges&lt;/strong>&lt;/p>
&lt;p>We faced some challenges while working with Heat templates and stacks in particular in Chameleon Cloud&lt;/p>
&lt;ol>
&lt;li>&lt;code>OS::Nova::Keypair&lt;/code>(new version): In the latest OpenStack version, the stack fails to launch if the &lt;code>public_key&lt;/code> parameter is not provided for the keypair,
as auto-generation is no longer supported.&lt;/li>
&lt;li>&lt;code>OS::Heat::SoftwareConfig&lt;/code>: Deployment scripts often fail, hang, or time out, preventing proper configuration of nodes and causing unreliable deployments.&lt;/li>
&lt;/ol>
&lt;p>
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="Heat Approach" srcset="
/report/osre25/uchicago/mpi/20250901-rohan-babbar/heatapproach_hua2bf48ad20dec386c348c909fcaf7111_39548_05fca9fb65271d31e3fd79f2e7b58a53.webp 400w,
/report/osre25/uchicago/mpi/20250901-rohan-babbar/heatapproach_hua2bf48ad20dec386c348c909fcaf7111_39548_19399eb0dbf598de84852723f8d60783.webp 760w,
/report/osre25/uchicago/mpi/20250901-rohan-babbar/heatapproach_hua2bf48ad20dec386c348c909fcaf7111_39548_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre25/uchicago/mpi/20250901-rohan-babbar/heatapproach_hua2bf48ad20dec386c348c909fcaf7111_39548_05fca9fb65271d31e3fd79f2e7b58a53.webp"
width="760"
height="235"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;p>To tackle these challenges, we designed an approach that is both easy to implement and reproducible. First, we launch instances
by provisioning master and worker nodes using the HOT template in OpenStack. Next, we set up a bootstrap node, install Git and Ansible,
and run an Ansible playbook from the bootstrap node to configure the master and worker nodes, including SSH, host communication, and
MPI setup. The outcome is a fully configured, ready-to-use HPC cluster, where users can simply SSH into the master node to run examples.&lt;/p>
&lt;p>Users can view/use the template published in the Appliance Catalog: &lt;a href="https://chameleoncloud.org/appliances/132/" target="_blank" rel="noopener">MPI+Spack Bare Metal Cluster&lt;/a>.
For example, a demonstration of how to pass parameters is available on &lt;a href="https://chameleoncloud.org/experiment/share/7424a8dc-0688-4383-9d67-1e40ff37de17" target="_blank" rel="noopener">Trovi&lt;/a>.&lt;/p>
&lt;h2 id="conclusion">Conclusion&lt;/h2>
&lt;p>In conclusion, this work demonstrates a reproducible approach to building and configuring MPI clusters on the Chameleon testbed. By using standardized images,
Ansible automation, and Orchestration Templates, we ensure that every node is consistently set up, reducing manual effort and errors. The artifact, published on Trovi,
makes the entire process transparent, reusable, and easy to implement, enabling users/researchers to reliably recreate and extend the cluster environment for their own
experiments.&lt;/p>
&lt;h2 id="future-work">Future Work&lt;/h2>
&lt;p>Maintaining these images and possibly creating a script to reproduce MPI and Spack on a different image base environment.&lt;/p></description></item><item><title>Final Update(Mid-Term -> Final): MPI Appliance for HPC Research on Chameleon</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre25/uchicago/mpi/20250831-rohan-babbar/</link><pubDate>Sun, 31 Aug 2025 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre25/uchicago/mpi/20250831-rohan-babbar/</guid><description>&lt;p>Hi everyone! This is my final update, covering the progress made every two weeks from the midterm to the end of the
project &lt;a href="https://ucsc-ospo.github.io/project/osre25/uchicago/mpi/" target="_blank" rel="noopener">MPI Appliance for HPC Research on Chameleon&lt;/a>, developed
in collaboration with Argonne National Laboratory and the Chameleon Cloud community.
This blog follows up on my earlier post, which you can find &lt;a href="https://ucsc-ospo.github.io/report/osre25/uchicago/mpi/20250803-rohan-babbar/" target="_blank" rel="noopener">here&lt;/a>.&lt;/p>
&lt;h3 id="-july-29--august-11-2025">🔧 July 29 – August 11, 2025&lt;/h3>
&lt;p>With the CUDA- and MPI-Spack–based appliances published, we considered releasing another image variant (ROCm-based) for AMD GPUs.
This will be primarily used in CHI@TACC, which provides AMD GPUs. We have successfully published a new image on Chameleon titled &lt;a href="https://chameleoncloud.org/appliances/131/" target="_blank" rel="noopener">MPI and Spack for HPC (Ubuntu 22.04 - ROCm)&lt;/a>,
and we also added an example to demonstrate its usage.&lt;/p>
&lt;h3 id="-august-12--august-25-2025">🔧 August 12 – August 25, 2025&lt;/h3>
&lt;p>With the examples now available on Trovi for creating an MPI cluster using Ansible and Python-CHI, my next step was to experiment with stack orchestration using Heat Orchestration Templates (HOT) on OpenStack Chameleon Cloud.
This turned out to be more challenging due to a few restrictions:&lt;/p>
&lt;ol>
&lt;li>&lt;strong>OS::Nova::Keypair (new version)&lt;/strong>: In the latest OpenStack version, the stack fails to launch if the public_key parameter is not provided for the keypair, as auto-generation is no longer supported.&lt;/li>
&lt;li>&lt;strong>OS::Heat::SoftwareConfig&lt;/strong>: Deployment scripts often fail, hang, or time out, preventing proper configuration of nodes and causing unreliable deployments.&lt;/li>
&lt;/ol>
&lt;p>To address these issues, we adopted a new strategy for configuring and creating the MPI cluster: using a temporary bootstrap node.&lt;/p>
&lt;p>In simple terms, the workflow of the Heat template is:&lt;/p>
&lt;ol>
&lt;li>Provision master and worker nodes via the HOT template on OpenStack.&lt;/li>
&lt;li>Launch a bootstrap node, install Git and Ansible on it, and then run an Ansible playbook from the bootstrap node to configure the master and worker nodes. This includes setting up SSH, host communication, and the MPI environment.&lt;/li>
&lt;/ol>
&lt;p>This provides an alternative method for creating an MPI cluster.&lt;/p>
&lt;p>We presented this work on August 26, 2025, to the Chameleon Team and the Argonne MPICH Team. The project was very well received.&lt;/p>
&lt;p>Stay tuned for my final report on this work, which I’ll be sharing in my next blog post.&lt;/p></description></item><item><title>[Final Blog] Distrobench: Distributed Protocol Benchmark</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre25/umass/edge-replication/20250830-panjisri/</link><pubDate>Sat, 30 Aug 2025 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre25/umass/edge-replication/20250830-panjisri/</guid><description>&lt;h2 id="introduction">Introduction&lt;/h2>
&lt;p>This is the final blog for our contribution to the &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre25/umass/edge-replication/">Open Testbed for Reproducible Evaluation of Replicated Systems at the Edges&lt;/a> project under the mentorship of &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/fadhil-kurnia/">Fadhil Kurnia&lt;/a> for the OSRE program.&lt;/p>
&lt;p>&lt;a href="https://github.com/fadhilkurnia/distro" target="_blank" rel="noopener">Distrobench&lt;/a> is a framework to evaluate the performance of replication/coordination protocols for distributed systems. This framework standardizes benchmarking by allowing different protocols to be tested under an identical workload, and supports both local and remote deployment of the protocols. The frameworks tested are restricted under a key-value store application and are categorized under different &lt;a href="https://jepsen.io/consistency/models" target="_blank" rel="noopener">consistency models&lt;/a>, programming languages, and persistency (whether the framework stores its data in-memory or on-disk).&lt;/p>
&lt;p>All the benchmark results are stored in a &lt;code>data.json&lt;/code> file which can be viewed through a webpage we have provided. A user can clone the git repository, benchmark different protocols on their own machine or in a cluster of remote machines, then view the results locally. We also provided a &lt;a href="https://distrobench.org" target="_blank" rel="noopener">webpage&lt;/a> that shows our own benchmark results which ran on 3 Amazon EC2 t2.micro instances.&lt;br>
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="" srcset="
/report/osre25/umass/edge-replication/20250830-panjisri/image_hu785d614b38f6808c04fc85bf3c31eb36_153748_2eb41220c4287bdc730b38c76a5643f8.webp 400w,
/report/osre25/umass/edge-replication/20250830-panjisri/image_hu785d614b38f6808c04fc85bf3c31eb36_153748_789a9a55850eed73f3a681f8423873cf.webp 760w,
/report/osre25/umass/edge-replication/20250830-panjisri/image_hu785d614b38f6808c04fc85bf3c31eb36_153748_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre25/umass/edge-replication/20250830-panjisri/image_hu785d614b38f6808c04fc85bf3c31eb36_153748_2eb41220c4287bdc730b38c76a5643f8.webp"
width="760"
height="381"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;h2 id="how-to-run-a-benchmark-on-distrobench">How to run a benchmark on Distrobench&lt;/h2>
&lt;p>Before running a benchmark using Distrobench, the protocol that will be benchmarked must first be built. This is to allow the script to initialize the protocol instance for local benchmark or to send the binaries into the remote machine. The remote machine running the protocol does not need to store the code for the protocol implementations, but does require dependencies for running that specific protocol such as Java, Docker, rsync, etc. The following are commands used to build the &lt;a href="https://github.com/ailidani/paxi" target="_blank" rel="noopener">ailidani/paxi&lt;/a> project which does not need any additional dependency to be run inside of a remote machine:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-sh" data-lang="sh">&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Clone the Distrobench repository &lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">git clone git@github.com:fadhilkurnia/distro.git
&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"># Clone the Paxi repository and build the binary &lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nb">cd&lt;/span> distro/sut/ailidani.paxi
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">git clone git@github.com:ailidani/paxi.git
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nb">cd&lt;/span> paxi/bin/
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">./build.sh
&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"># Go back to the Distrobench root directory &amp;amp; run python script &lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nb">cd&lt;/span> ../../../..
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">python main.py
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>By default, the script will start 3 local instances of a Paxi protocol implementation that the user chose through the CLI. The user can modify the number of running instances and whether or not it is deployed locally or in a remote machine by changing the contents of the &lt;code>.env&lt;/code> file inside the root directory. The following is the contents of the default .env file:&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">NUM_OF_NODES=3
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">SSH_KEY=ssh-key.pem
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">REMOTE_USERNAME=ubuntu
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">PUBLIC_IP1=127.0.0.1
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">PUBLIC_IP2=127.0.0.1
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">PUBLIC_IP3=127.0.0.1
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">PRIVATE_IP1=127.0.0.1
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">PRIVATE_IP2=127.0.0.1
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">PRIVATE_IP3=127.0.0.1
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">CLIENT_IP=127.0.0.1
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">OUTPUT=data.json
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>When running a remote benchmark, a ssh-key should also be added in the root directory to allow the use of ssh and rsync from within the python script. All machines must also allow TCP connection through port 2000-2300 and port 3000-3300 because that would be the port range for communication between the running instances as well as for the YCSB benchmark. Running the benchmark requires the use of at least 3 nodes because it is the minimum number of nodes to support most protocols (5 nodes recommended).&lt;/p>
&lt;p>To view the benchmark result in the web page locally, move &lt;code>data.json&lt;/code> into the &lt;code>docs/&lt;/code> directory and run &lt;code>python -m http.server 8000&lt;/code>. The page is then accessible through &lt;code>http://localhost:8000&lt;/code>.&lt;/p>
&lt;h2 id="deep-dive-on-how-distrobench-works">Deep dive on how Distrobench works&lt;/h2>
&lt;p>The following is the project structure of the Distrobench repository:&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">distro/
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">├── main.py // Main python script for running benchmark
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">├── data.json // Output file for main.py
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">├── README.md
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">├── .env // Config for running the benchmark
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">├── docs/
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">│ ├── index.html // Web page to show benchmark results
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">│ ├── data.json // Output file displayed by web page
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">│ ├── README.md
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">├── src/
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">│ ├── utils/
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">│ └── ycsb/ // Submodule for YCSB
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">└── sut/ // Systems under test
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> ├── ailidani.paxi/
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> └── run.py // Protocol-specific benchmark script called by main.py
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> ├── apache.zookeeper/
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> ├── etcd-io.etcd/
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> ├── fadhilkurnia.xdn/
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> ├── holipaxos-artifect.holipaxos/
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> ├── otoolep.hraftd/
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> └── tikv.tikv/
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>&lt;code>main.py&lt;/code> will automatically detect directories inside &lt;code>sut/&lt;/code> and will call the main function inside &lt;code>run.py&lt;/code>. The following is the structure of &lt;code>run.py&lt;/code> written in pseudocode style:&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">FUNCTION main(run_ycsb: Function, nodes: List of Nodes, ssh: Dictionary)
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> node_data = map_ip_port(nodes)
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> SWITCH user\_input
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> CASE 0:
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> start()
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> RETURN
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> CASE 1:
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> stop()
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> RETURN
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> CASE 2:
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> client_data = []
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> FOR EACH item IN node_data
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> ADD item.client_addr TO client_data
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> END FOR
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> run_ycsb(client_data)
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> RETURN
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> END SWITCH
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">END FUNCTION
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">FUNCTION start()
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> // Start the protocol instance (local or remote)
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">END FUNCTION
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">FUNCTION stop()
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> // Stop the protocol instance (local or remote)
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">END FUNCTION
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">FUNCTION map_ip_port(nodes: List of Nodes) -&amp;gt; List of Dictionary
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> // Generate port numbers based on the protocol requirements
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">END FUNCTION
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>The .env file provides both public and private IP addresses to add versatility when running a remote benchmark. Private IP is used for communication between remote machines if they are under the same network group. In the case of our own benchmark, four t2.micro EC2 instances are deployed under the same network group. Three of them are used to run the protocol and the fourth machine acts as the YCSB client. It is possible to use your local machine as the YCSB client instead of through another remote machine by specifying &lt;code>CLIENT_IP&lt;/code> in the .env file as &lt;code>127.0.0.1&lt;/code>. The decision to use the remote machine as the YCSB client is made to reduce the impact of network latency between the client and the protocol servers to a minimum.&lt;/p>
&lt;p>The main tasks of the &lt;code>start()&lt;/code> function can be broken down into the following:&lt;/p>
&lt;ol>
&lt;li>Generate custom configuration files for each remote machine instance (May differ between implementations. Some implementations does not require a config file because they support flag parameters out of the box, others require multiple configuration files for each instance)&lt;/li>
&lt;li>rsync binaries into the remote machine (If running a remote benchmark)&lt;/li>
&lt;li>Start the instances&lt;/li>
&lt;/ol>
&lt;p>The &lt;code>stop()&lt;/code> function is a lot simpler since it only kills the process running the protocol and optionally removes the copied binary files in the remote machine. The &lt;code>run_ycsb()&lt;/code> function passed onto &lt;code>run.py&lt;/code> is defined in &lt;code>main.py&lt;/code> and currently supports two types of workload:&lt;/p>
&lt;ol>
&lt;li>Read-heavy: A single-client workload with 95% read and 5% update (write) operations&lt;/li>
&lt;li>Update-heavy: A single-client workload with 50% read and 50% update (write) operations&lt;/li>
&lt;/ol>
&lt;p>A new workload can be added inside the &lt;code>src/ycsb/workloads&lt;/code> directory. Both workloads above only run 1000 operations for the benchmark which may not be enough operations to properly evaluate the performance of the protocols. It should also be noted that while YCSB does support a &lt;code>scan&lt;/code> operation, it is never used for our benchmark because none of our tested protocols implement this operation.&lt;/p>
&lt;h3 id="how-to-implement-a-new-protocol-in-distrobench">How to implement a new protocol in Distrobench&lt;/h3>
&lt;p>Adding a new protocol to distrobench requires implementing two main components: a Python integration script (&lt;code>run.py&lt;/code>) and a YCSB database binding for benchmarking.&lt;/p>
&lt;ol>
&lt;li>
&lt;p>Create the protocol directory structure&lt;/p>
&lt;ul>
&lt;li>Create a new directory under &lt;code>sut/&lt;/code> using format &lt;code>yourrepo.yourprotocol/.&lt;/code>&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>
&lt;p>Write &lt;code>run.py&lt;/code> integration&lt;/p>
&lt;ul>
&lt;li>
&lt;p>Put script inside yourrepo.yourprotocol/ directory&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Must have the &lt;code>main(run_ycsb, nodes, ssh)&lt;/code> function.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Add start/stop/benchmark menu options&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Handle local (127.0.0.1) and remote deployment&lt;/p>
&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>
&lt;p>Create YCSB client&lt;/p>
&lt;ul>
&lt;li>Make Java class extending YCSB&amp;rsquo;s DB class&lt;/li>
&lt;li>Put inside &lt;code>src/ycsb/yourprotocol/src/main/java/site/ycsb/yourprotocol&lt;/code>&lt;/li>
&lt;li>Implement &lt;code>read()&lt;/code>, &lt;code>insert()&lt;/code>, &lt;code>update()&lt;/code>, &lt;code>delete()&lt;/code> methods&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>
&lt;p>Register your client&lt;/p>
&lt;ul>
&lt;li>Register your client to &lt;code>src/pom.xml&lt;/code>, &lt;code>src/ycsb/bin/binding.properties&lt;/code>, and &lt;code>src/ycsb/bin/ycsb&lt;/code>.&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>
&lt;p>Build and test&lt;/p>
&lt;ul>
&lt;li>Run &lt;code>cd src/ycsb &amp;amp;&amp;amp; mvn clean package&lt;/code>&lt;/li>
&lt;li>Run python &lt;code>main.py&lt;/code>&lt;/li>
&lt;li>Select your protocol and test it&lt;/li>
&lt;/ul>
&lt;/li>
&lt;/ol>
&lt;h2 id="protocols-which-have-been-tested">Protocols which have been tested&lt;/h2>
&lt;p>Distrobench has tested 20 different distributed consensus protocols across 7 different implementation projects.&lt;/p>
&lt;ol>
&lt;li>
&lt;p>&lt;a href="https://github.com/ailidani/paxi" target="_blank" rel="noopener">ailidani/paxi&lt;/a>&lt;/p>
&lt;ul>
&lt;li>Programming Language : Go&lt;/li>
&lt;li>Persistency : On-Disk&lt;/li>
&lt;li>Consistency Model : Linearizability, Eventual&lt;/li>
&lt;li>Protocol : Paxos, EPaxos, SDpaxos, WPaxos, ABD, chain, VPaxos, WanKeeper, KPaxos, Paxos_groups, Dynamo, Blockchain, M2Paxos, HPaxos.&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>
&lt;p>&lt;a href="https://github.com/apache/zookeeper" target="_blank" rel="noopener">apache/zookeeper&lt;/a>&lt;/p>
&lt;ul>
&lt;li>Programming Language : Java&lt;/li>
&lt;li>Persistency : On-Disk&lt;/li>
&lt;li>Consistency Model : Linearizability + Primary Integrity&lt;/li>
&lt;li>Protocol : Zookeeper implements ZAB (Zookeper Atomic Broadcast)&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>
&lt;p>&lt;a href="https://github.com/etcd-io/etcd" target="_blank" rel="noopener">etcd-io/etcd&lt;/a>&lt;/p>
&lt;ul>
&lt;li>Programming Language : Go&lt;/li>
&lt;li>Persistency : On-Disk&lt;/li>
&lt;li>Consistency Model : Linearizability&lt;/li>
&lt;li>Protocol : Raft&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>
&lt;p>&lt;a href="https://github.com/fadhilkurnia/xdn" target="_blank" rel="noopener">fadhilkurnia/xdn&lt;/a>&lt;/p>
&lt;ul>
&lt;li>Programming Language : Java, Rust&lt;/li>
&lt;li>Persistency : On-Disk&lt;/li>
&lt;li>Consistency Model : Linearizability, Linearizability + Primary Integrity&lt;/li>
&lt;li>Protocol : Gigapaxos&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>
&lt;p>&lt;a href="https://github.com/Zhiying12/holipaxos-artifect" target="_blank" rel="noopener">Zhiying12/holipaxos-artifect&lt;/a>&lt;/p>
&lt;ul>
&lt;li>Programming Language : Go, Rust&lt;/li>
&lt;li>Persistency : On-Disk&lt;/li>
&lt;li>Consistency Model : Linearizability&lt;/li>
&lt;li>Protocol : Holipaxos, Omnipaxos, Multipaxos&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>
&lt;p>&lt;a href="https://github.com/otoolep/hraftd" target="_blank" rel="noopener">otoolep/hraftd&lt;/a>&lt;/p>
&lt;ul>
&lt;li>Programming Language : Go&lt;/li>
&lt;li>Persistency : On-Disk&lt;/li>
&lt;li>Consistency Model : Linearizability&lt;/li>
&lt;li>Protocol : Raft&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>
&lt;p>&lt;a href="https://github.com/tikv/tikv" target="_blank" rel="noopener">tikv/tikv&lt;/a>&lt;/p>
&lt;ul>
&lt;li>Programming Language : Rust&lt;/li>
&lt;li>Persistency : On-Disk&lt;/li>
&lt;li>Consistency Model : Linearizability&lt;/li>
&lt;li>Protocol : Raft&lt;/li>
&lt;/ul>
&lt;/li>
&lt;/ol>
&lt;h2 id="challenges">Challenges&lt;/h2>
&lt;ul>
&lt;li>When attempting to benchmark HoliPaxos, the main challenge was handling versions that rely on persistent storage with RocksDB. Since some implementations are written in Go, it was necessary to find compatible versions of RocksDB and gRocksDB (for example, RocksDB 10.5.1 works with gRocksDB 1.10.2). Another difficulty was that RocksDB is resource-intensive to compile, and in our project we did not have sufficient CPU capacity on the remote machine to build RocksDB and run remote benchmarks.&lt;/li>
&lt;li>Some projects did not compile successfully at first and required minor modifications to run.&lt;/li>
&lt;/ul>
&lt;h2 id="conclusion-and-future-improvements">Conclusion and future improvements&lt;/h2>
&lt;p>The current benchmark result shows the performance of all the mentioned protocols by throughput and benchmark runtime. The results are subject to revisions because it may not reflect the best performance for the protocols due to unoptimized deployment script. We are also planning to switch to a more powerful EC2 machine because t2.micro does not have enough resources to support the use of RocksDB as well as TiKV.&lt;/p>
&lt;p>In the near future, additional features will be added to Distrobench such as:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Multi-Client Support:&lt;/strong> The YCSB client will start multiple clients which will send requests in parallel to different servers in the group.&lt;/li>
&lt;li>&lt;strong>Commit Versioning:&lt;/strong> Allows the labelling of all benchmark results with the commit hash of the protocol&amp;rsquo;s repository version. This allows comparing different versions of the same project.&lt;/li>
&lt;li>&lt;strong>Adding more Primary-Backup, Sequential, Causal, and Eventual consistency protocols:&lt;/strong> Implementations with support for a consistency model other than linearizability and one that provides an existing key-value store application are notoriously difficult to find.&lt;/li>
&lt;li>&lt;strong>Benchmark on node failure&lt;/strong>&lt;/li>
&lt;li>&lt;strong>Benchmark on the addition of a new node&lt;/strong>&lt;/li>
&lt;/ul></description></item><item><title>Final Blog:Improving Usability and Performance in cc-snapshot</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre25/uchicago/cc-snapshot/20250824-zahratm/</link><pubDate>Sun, 24 Aug 2025 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre25/uchicago/cc-snapshot/20250824-zahratm/</guid><description>&lt;p>My name is Zahra Temori, and I&amp;rsquo;m thrilled to collaborate with mentor Paul Marshall during this summer on the cc-snapshot project.&lt;/p>
&lt;h2 id="introduction">Introduction&lt;/h2>
&lt;p>Reproducibility is an important concept in high performance computing and research. It ensures that experiments can be repeated, validated, and extended with confidence. Achieving a reproducible environment requires identical software stacks, with the exact same dependencies, and configuration. The Chameleon Cloud testbed provides the cc-snapshot tool to support reproducibility by capturing the complete state of a running system. This allows researchers to rerun experiments exactly as before, share setups among each other, and avoid potential environmental issues such as missing dependencies or version mismatches. In this work, we explore how to enhance snapshotting as a reproducible method and make it an effective strategy for HPC research.&lt;/p>
&lt;h2 id="key-achievements">Key Achievements&lt;/h2>
&lt;p>The project was divided into two phases.The first phase focused on usability, reorganizing the tool, and expanding its capabilities. The second phase was benchmarking to evaluate alternative image formats and compression methods to improve snapshotting performance.&lt;/p>
&lt;ol>
&lt;li>
&lt;p>&lt;strong>Usability Enhancements:&lt;/strong>
The original snapshotting tool had challenges including a limited command line, tightly coupled logic, and minimal testing support, which made it difficult for users to interact with and developers to maintain. To enhance the command line interface, we added a flag to disable automatic updates, giving users more control over when to pull the latest version. We also added a dry-run flag to simulate actions before running a snapshot, allowing developers to test and run safely. Moreover, we implemented support for a custom source path, enabling snapshots of specific directories. This helps developers test smaller directories rather than full snapshots, which can be more complicated when testing functionalities.
To improve maintainability, we refactored the codebase into five modular functions, allowing developers to make future changes more easily. In addition, we added automated tests with GitHub Actions to validate new and existing features and ensure that changes work as expected.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Performance Optimization:&lt;/strong>
The default format and compression on snapshotting was Qcow2 with zlib, which often resulted in long snapshot creation time. To address this performance issue, we benchmarked other alternatives such as QCOW2 with zstd compression, and RAW with no compression. We also chose three images of varying sizes: small 4.47 GiB, medium 7.62 GiB, and large 12.7 GiB. The medium size image was user created to demonstrate the snapshotting and compression works for both Chameleon-supported images and user-created images.&lt;/p>
&lt;/li>
&lt;/ol>
&lt;p>&lt;strong>Results:&lt;/strong>
We ran each image with different compression methods and recorded four key metrics: creation time, upload time, boot time, and final image size. We calculated the overall time of each compression method from experiments on three different image sizes to evaluate which performed better. The results revealed that zstd compression reduced the creation time around 80.6% across the three image sizes. The upload time for zstd was nearly equal to the zlib method, while RAW images, due to no compression and larger size, uploaded much slower compared to images compressed with zlib and zstd. The boot time was nearly the same across all images, confirming that zlib and zstd take about the same time to uncompress, while RAW images take longer to boot due to large size. Our work suggested that QCOW2 with zstd compression should be used instead of QCOW2 with zlib compression when creating a snapshot. This enables researchers to generate and share reproducible environments faster.&lt;/p>
&lt;h2 id="conclusion-and-future-work">Conclusion and Future Work&lt;/h2>
&lt;p>Snapshotting is a practical way to support reproducibility in HPC, but to be effective, it should be easy to use and fast enough for real research workflows. Our results show that using zstd compression can drop the snapshot creation time by over 80% compared to the common default zlib compression, without affecting upload or boot performance. Looking ahead, we plan to integrate zstd , try it on more workloads and image types, and explore ways to improve snapshotting for even greater speedups and reliable results.&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/ChameleonCloud/cc-snapshot/tree/reproducibility-improvements" target="_blank" rel="noopener">CC-SNAPSHOT GitHub Repository&lt;/a>.&lt;/li>
&lt;/ul></description></item><item><title>End-term Blog: StatWrap: Cross-Project Searching and Classification using Local Indexing</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre25/northwestern/statwrap/20250823-debangi29/</link><pubDate>Sat, 23 Aug 2025 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre25/northwestern/statwrap/20250823-debangi29/</guid><description>&lt;p>
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="Heading" srcset="
/report/osre25/northwestern/statwrap/20250823-debangi29/image0_hu69efae69f006c4366342bdc2ded8b248_187729_f9e5e16b2001b9950ad995b2c786abc9.webp 400w,
/report/osre25/northwestern/statwrap/20250823-debangi29/image0_hu69efae69f006c4366342bdc2ded8b248_187729_27bc4379277ab462935158b3db96d992.webp 760w,
/report/osre25/northwestern/statwrap/20250823-debangi29/image0_hu69efae69f006c4366342bdc2ded8b248_187729_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre25/northwestern/statwrap/20250823-debangi29/image0_hu69efae69f006c4366342bdc2ded8b248_187729_f9e5e16b2001b9950ad995b2c786abc9.webp"
width="760"
height="392"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;h1 id="introduction">&lt;strong>Introduction&lt;/strong>&lt;/h1>
&lt;p>Hello everyone!&lt;br>
I am Debangi Ghosh from India, an undergraduate student at the Indian Institute of Technology (IIT) BHU, Varanasi. As part of the &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre25/northwestern/statwrap/">StatWrap: Cross-Project Searching and Classification using Local Indexing&lt;/a> project, my &lt;a href="https://drive.google.com/file/d/1dxyBP2oMJwYDCKyIWzr465zNmm6UWtnI/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/luke-rasmussen/">Luke Rasmussen&lt;/a>, focuses on developing a full-text search service within the StatWrap user interface. This involves evaluating different search libraries and implementing a classification system to distinguish between active and past projects.&lt;/p>
&lt;h1 id="about-the-project">&lt;strong>About the Project&lt;/strong>&lt;/h1>
&lt;p>As part of the project, I am working on enhancing the usability of StatWrap by enabling efficient cross-project search capabilities. The goal is to make it easier for researchers to discover relevant projects, notes, and assets across both current and archived work, using information that is either user-entered or passively collected by StatWrap.&lt;/p>
&lt;p>Given the sensitivity of the data involved, one of the key requirements is that all indexing and search operations must be performed locally. To address this, my responsibilities include:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Evaluating open-source search libraries&lt;/strong> suitable for local indexing and retrieval&lt;/li>
&lt;li>&lt;strong>Building the full-text search functionality&lt;/strong> directly into the StatWrap UI to allow seamless querying across projects&lt;/li>
&lt;li>&lt;strong>Ensuring reliability&lt;/strong> through the development of unit tests and comprehensive system testing&lt;/li>
&lt;li>&lt;strong>Implementing a classification system&lt;/strong> to label projects as “Active,” “Pinned,” or “Past” within the user interface&lt;/li>
&lt;/ul>
&lt;p>This project offers a great opportunity to work at the intersection of software development, information retrieval, and user-centric design—while contributing to research reproducibility and collaboration within scientific workflows.&lt;/p>
&lt;h1 id="deliverables">&lt;strong>Deliverables&lt;/strong>&lt;/h1>
&lt;p>The project has reached the end of its scope after 12 weeks of work. Here&amp;rsquo;s a breakdown:&lt;/p>
&lt;h2 id="1-descriptive-comparison-of-open-source-libraries">&lt;strong>1. Descriptive Comparison of Open-Source Libraries&lt;/strong>&lt;/h2>
&lt;p>Compared various open-source search libraries based on evaluation criteria such as &lt;strong>indexing speed, search speed, memory usage, typo tolerance, fuzzy searching, partial matching, full-text queries, contextual search, Boolean support, exact word match, installation ease, maintenance, documentation&lt;/strong>, and &lt;strong>developer experience&lt;/strong>. Decided upon the weights to assign to each of the features and point out the best library to use. According to our weights assigned,
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="Evaluation" srcset="
/report/osre25/northwestern/statwrap/20250823-debangi29/image1_hu63c79919752d2305350a1cb96819590d_110608_4b5e863d88146124b333878508147eff.webp 400w,
/report/osre25/northwestern/statwrap/20250823-debangi29/image1_hu63c79919752d2305350a1cb96819590d_110608_c2220a56c480048842e8b750cc2ca56f.webp 760w,
/report/osre25/northwestern/statwrap/20250823-debangi29/image1_hu63c79919752d2305350a1cb96819590d_110608_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre25/northwestern/statwrap/20250823-debangi29/image1_hu63c79919752d2305350a1cb96819590d_110608_4b5e863d88146124b333878508147eff.webp"
width="760"
height="603"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;p>These results are after tuning the hyperparameters to give the best set of results
For huge data, FlexSearch has the least memory usage, followed by MiniSearch. The examples we used were limited, so Minisearch had the better memory usage results.
Along with the research and evaluation, I looked upon the Performance Benchmark of Full-Text-Search Libraries (Stress Test), available &lt;a href="https://nextapps-de.github.io/flexsearch/" target="_blank" rel="noopener">here&lt;/a>&lt;/p>
&lt;p>
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="Stress Test" srcset="
/report/osre25/northwestern/statwrap/20250823-debangi29/image2_hu9b739b80416dccda0a7e0361ba4f7e36_163727_407cb964e7e05c64834433b6a84182ff.webp 400w,
/report/osre25/northwestern/statwrap/20250823-debangi29/image2_hu9b739b80416dccda0a7e0361ba4f7e36_163727_167223f62fbaf30991601d7745fad9f5.webp 760w,
/report/osre25/northwestern/statwrap/20250823-debangi29/image2_hu9b739b80416dccda0a7e0361ba4f7e36_163727_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre25/northwestern/statwrap/20250823-debangi29/image2_hu9b739b80416dccda0a7e0361ba4f7e36_163727_407cb964e7e05c64834433b6a84182ff.webp"
width="760"
height="384"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;p>The benchmark was measured in terms per seconds, higher values are better (except the test &amp;ldquo;Memory&amp;rdquo;). The memory value refers to the amount of memory which was additionally allocated during search.&lt;/p>
&lt;p>FlexSearch performs queries up to 1,000,000 times faster compared to other libraries by also providing powerful search capabilities like multi-field search (document search), phonetic transformations, partial matching, tag-search, result highlighting or suggestions.
Bigger workloads are scalable through workers to perform any updates or queries to the index in parallel through dedicated balanced threads.&lt;/p>
&lt;h2 id="2-the-search-user-interface">&lt;strong>2. The Search User Interface&lt;/strong>&lt;/h2>
&lt;p>
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="ui" srcset="
/report/osre25/northwestern/statwrap/20250823-debangi29/image3_hu2c7c529fbdaba5c9b4f85e802acf251e_292973_5c88d9d2587c54c50da97d6c489519dc.webp 400w,
/report/osre25/northwestern/statwrap/20250823-debangi29/image3_hu2c7c529fbdaba5c9b4f85e802acf251e_292973_82065ca30e98bced61362bca45765215.webp 760w,
/report/osre25/northwestern/statwrap/20250823-debangi29/image3_hu2c7c529fbdaba5c9b4f85e802acf251e_292973_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre25/northwestern/statwrap/20250823-debangi29/image3_hu2c7c529fbdaba5c9b4f85e802acf251e_292973_5c88d9d2587c54c50da97d6c489519dc.webp"
width="760"
height="428"
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="ui2" srcset="
/report/osre25/northwestern/statwrap/20250823-debangi29/image5_hu55f5482f96b2f6db562c5a51f9b5f629_220424_7a3499ad0fc3cd06919fcdd17194742a.webp 400w,
/report/osre25/northwestern/statwrap/20250823-debangi29/image5_hu55f5482f96b2f6db562c5a51f9b5f629_220424_5840b85d48a6e608855c8e0d96b4fe49.webp 760w,
/report/osre25/northwestern/statwrap/20250823-debangi29/image5_hu55f5482f96b2f6db562c5a51f9b5f629_220424_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre25/northwestern/statwrap/20250823-debangi29/image5_hu55f5482f96b2f6db562c5a51f9b5f629_220424_7a3499ad0fc3cd06919fcdd17194742a.webp"
width="760"
height="652"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;h2 id="3-complete-search-execution-pipeline">&lt;strong>3. Complete Search Execution Pipeline&lt;/strong>&lt;/h2>
&lt;p>
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="ui2" srcset="
/report/osre25/northwestern/statwrap/20250823-debangi29/Flowchart__hu0123533bb7a682ac6b28d9b34fa57bc0_349775_bd4ac2fa5efb17e2b237cf8d78278398.webp 400w,
/report/osre25/northwestern/statwrap/20250823-debangi29/Flowchart__hu0123533bb7a682ac6b28d9b34fa57bc0_349775_a0e8f31fdbdc656a2886def3dca3410b.webp 760w,
/report/osre25/northwestern/statwrap/20250823-debangi29/Flowchart__hu0123533bb7a682ac6b28d9b34fa57bc0_349775_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre25/northwestern/statwrap/20250823-debangi29/Flowchart__hu0123533bb7a682ac6b28d9b34fa57bc0_349775_bd4ac2fa5efb17e2b237cf8d78278398.webp"
width="513"
height="760"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;h2 id="4-flexsearch-features">&lt;strong>4. FlexSearch Features&lt;/strong>&lt;/h2>
&lt;h4 id="1-persistent-indexing-with-automatic-loading">1. &lt;strong>Persistent Indexing with Automatic Loading&lt;/strong>&lt;/h4>
&lt;ul>
&lt;li>&lt;strong>Index persistence&lt;/strong>: Search index automatically saves to disk and loads on startup&lt;/li>
&lt;li>&lt;strong>Fast restoration&lt;/strong>: Rebuilds FlexSearch indices from saved document store without re-scanning files&lt;/li>
&lt;li>&lt;strong>Incremental updates&lt;/strong>: Detects project changes and updates only modified content&lt;/li>
&lt;li>&lt;strong>Background processing&lt;/strong>: Index updates happen asynchronously without blocking the User Interface.&lt;/li>
&lt;/ul>
&lt;p>
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="indexing" srcset="
/report/osre25/northwestern/statwrap/20250823-debangi29/image4_hu4893772edaa569a0d2e6454373f66573_78656_23074ee37edbb0f6abbd289ef211f756.webp 400w,
/report/osre25/northwestern/statwrap/20250823-debangi29/image4_hu4893772edaa569a0d2e6454373f66573_78656_993d6a1363d2cddf66632c4102acb8f5.webp 760w,
/report/osre25/northwestern/statwrap/20250823-debangi29/image4_hu4893772edaa569a0d2e6454373f66573_78656_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre25/northwestern/statwrap/20250823-debangi29/image4_hu4893772edaa569a0d2e6454373f66573_78656_23074ee37edbb0f6abbd289ef211f756.webp"
width="494"
height="760"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;h4 id="2-multi-document-type-support">2. &lt;strong>Multi-Document Type Support&lt;/strong>&lt;/h4>
&lt;ul>
&lt;li>&lt;strong>Unified search&lt;/strong>: Single search interface for projects, files, people, notes, and assets&lt;/li>
&lt;li>&lt;strong>Type-specific indices&lt;/strong>: Separate FlexSearch indices optimized for each document type&lt;/li>
&lt;li>&lt;strong>Cross-reference capabilities&lt;/strong>: Documents can reference and link to each other&lt;/li>
&lt;li>&lt;strong>Flexible schema&lt;/strong>: Each document type has tailored fields for optimal search performance&lt;/li>
&lt;/ul>
&lt;h4 id="3-intelligent-file-content-indexing">3. &lt;strong>Intelligent File Content Indexing&lt;/strong>&lt;/h4>
&lt;ul>
&lt;li>&lt;strong>Configurable file size limits&lt;/strong>: Admin-controlled maximum file size for content indexing&lt;/li>
&lt;li>&lt;strong>Smart file detection&lt;/strong>: Automatically identifies text files by extension and filename patterns&lt;/li>
&lt;li>&lt;strong>Content extraction&lt;/strong>: Full-text indexing with snippet generation for search results&lt;/li>
&lt;li>&lt;strong>Performance optimization&lt;/strong>: Skips binary files and respects size constraints to maintain speed&lt;/li>
&lt;/ul>
&lt;h4 id="4-advanced-query-processing">4. &lt;strong>Advanced Query Processing&lt;/strong>&lt;/h4>
&lt;ul>
&lt;li>&lt;strong>Multi-strategy search&lt;/strong>: Combines exact matches, fuzzy search, partial matches, and contextual search&lt;/li>
&lt;li>&lt;strong>Query preprocessing&lt;/strong>: Removes stop words and applies linguistic filters&lt;/li>
&lt;li>&lt;strong>Relevance scoring&lt;/strong>: Custom scoring algorithm considering multiple factors:
&lt;ul>
&lt;li>Exact phrase matches (highest weight)&lt;/li>
&lt;li>Individual word matches&lt;/li>
&lt;li>Term frequency with logarithmic capping&lt;/li>
&lt;li>Position-based scoring (earlier matches rank higher)&lt;/li>
&lt;li>Proximity bonuses for terms appearing near each other&lt;/li>
&lt;li>Completeness penalties for missing query terms&lt;/li>
&lt;/ul>
&lt;/li>
&lt;/ul>
&lt;h4 id="5-real-time-search-suggestions">5. &lt;strong>Real-Time Search Suggestions&lt;/strong>&lt;/h4>
&lt;ul>
&lt;li>&lt;strong>Autocomplete support&lt;/strong>: Dynamic suggestions based on indexed document titles&lt;/li>
&lt;li>&lt;strong>Search history&lt;/strong>: Maintains recent searches for quick re-execution&lt;/li>
&lt;li>&lt;strong>Debounced input&lt;/strong>: Prevents excessive API calls during typing&lt;/li>
&lt;li>&lt;strong>Contextual suggestions&lt;/strong>: Suggestions adapt based on current filters and context&lt;/li>
&lt;/ul>
&lt;h4 id="6-comprehensive-filtering-system">6. &lt;strong>Comprehensive Filtering System&lt;/strong>&lt;/h4>
&lt;ul>
&lt;li>&lt;strong>Type filtering&lt;/strong>: Filter by document type (projects, files, people, etc.)&lt;/li>
&lt;li>&lt;strong>Project scoping&lt;/strong>: Limit searches to specific projects&lt;/li>
&lt;li>&lt;strong>File type filtering&lt;/strong>: Filter files by extension&lt;/li>
&lt;li>&lt;strong>Advanced search panel&lt;/strong>: Collapsible interface for power users&lt;/li>
&lt;li>&lt;strong>Filter persistence&lt;/strong>: Maintains filter state across searches&lt;/li>
&lt;/ul>
&lt;h4 id="7-performance-monitoring--analytics">7. &lt;strong>Performance Monitoring &amp;amp; Analytics&lt;/strong>&lt;/h4>
&lt;ul>
&lt;li>&lt;strong>Real-time metrics&lt;/strong>: Track search times, cache hit rates, and index statistics&lt;/li>
&lt;li>&lt;strong>Performance dashboard&lt;/strong>: Visual indicators for system health&lt;/li>
&lt;li>&lt;strong>Cache management&lt;/strong>: LRU cache with configurable size and TTL&lt;/li>
&lt;li>&lt;strong>Search analytics&lt;/strong>: Historical data on search patterns and performance&lt;/li>
&lt;/ul>
&lt;h4 id="8-index-management-tools">8. &lt;strong>Index Management Tools&lt;/strong>&lt;/h4>
&lt;ul>
&lt;li>&lt;strong>Export/Import functionality&lt;/strong>: Backup and restore search indices&lt;/li>
&lt;li>&lt;strong>Full reindexing&lt;/strong>: Complete index rebuild with progress tracking&lt;/li>
&lt;li>&lt;strong>Index deletion&lt;/strong>: Clean slate functionality for troubleshooting&lt;/li>
&lt;li>&lt;strong>File size adjustment&lt;/strong>: Modify indexing constraints and rebuild affected content&lt;/li>
&lt;li>&lt;strong>Index statistics&lt;/strong>: Detailed breakdown of indexed content by type and project&lt;/li>
&lt;/ul>
&lt;h4 id="9-robust-error-handling--resilience">9. &lt;strong>Robust Error Handling &amp;amp; Resilience&lt;/strong>&lt;/h4>
&lt;ul>
&lt;li>&lt;strong>Graceful degradation&lt;/strong>: System continues operating even with partial index corruption&lt;/li>
&lt;li>&lt;strong>File system error handling&lt;/strong>: Handles missing files, permission issues, and path changes&lt;/li>
&lt;li>&lt;strong>Memory management&lt;/strong>: Prevents memory leaks during large indexing operations&lt;/li>
&lt;li>&lt;strong>Recovery mechanisms&lt;/strong>: Automatic fallback to basic search if advanced features fail&lt;/li>
&lt;/ul>
&lt;h4 id="10-user-experience-enhancements">10. &lt;strong>User Experience Enhancements&lt;/strong>&lt;/h4>
&lt;ul>
&lt;li>&lt;strong>Keyboard shortcuts&lt;/strong>: Ctrl+K to focus search, Escape to clear&lt;/li>
&lt;li>&lt;strong>Result highlighting&lt;/strong>: Visual emphasis on matching terms in results&lt;/li>
&lt;li>&lt;strong>Expandable results&lt;/strong>: Drill down into detailed information for each result&lt;/li>
&lt;li>&lt;strong>Loading states&lt;/strong>: Clear feedback during indexing and search operations&lt;/li>
&lt;li>&lt;strong>Responsive tabs&lt;/strong>: Organized results by type with badge counts&lt;/li>
&lt;/ul>
&lt;h2 id="5-classification-of-active-and-past-projects">&lt;strong>5. Classification of Active and Past Projects&lt;/strong>&lt;/h2>
&lt;p>
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="Active Pinned" srcset="
/report/osre25/northwestern/statwrap/20250823-debangi29/image6_huacf20425d6903f6cfe6149bc5cb1772d_171494_1d3344ebb95180438d54893a9b5683e4.webp 400w,
/report/osre25/northwestern/statwrap/20250823-debangi29/image6_huacf20425d6903f6cfe6149bc5cb1772d_171494_a0f8ee7f62445c2f5f806022268d0821.webp 760w,
/report/osre25/northwestern/statwrap/20250823-debangi29/image6_huacf20425d6903f6cfe6149bc5cb1772d_171494_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre25/northwestern/statwrap/20250823-debangi29/image6_huacf20425d6903f6cfe6149bc5cb1772d_171494_1d3344ebb95180438d54893a9b5683e4.webp"
width="733"
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="Past" srcset="
/report/osre25/northwestern/statwrap/20250823-debangi29/image7_hu7cccff315a5d098cd440d7277689d606_85529_76660a0dce9ac0ba1fa91c959db2773c.webp 400w,
/report/osre25/northwestern/statwrap/20250823-debangi29/image7_hu7cccff315a5d098cd440d7277689d606_85529_cc2abd1a6a3019f703ca3e656e55f920.webp 760w,
/report/osre25/northwestern/statwrap/20250823-debangi29/image7_hu7cccff315a5d098cd440d7277689d606_85529_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre25/northwestern/statwrap/20250823-debangi29/image7_hu7cccff315a5d098cd440d7277689d606_85529_76660a0dce9ac0ba1fa91c959db2773c.webp"
width="740"
height="542"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;p>A classification system is added within the User Interface similar to &lt;strong>&amp;ldquo;Add to Favorites&amp;rdquo;&lt;/strong> option. A new project added by default moves to &lt;strong>&amp;ldquo;Active&amp;rdquo;&lt;/strong> section, unless explicitely marked as &lt;strong>&amp;ldquo;Past&amp;rdquo;&lt;/strong>. Similarly, when a project is unpinned from Favorites, it goes to &amp;ldquo;Active&amp;rdquo; Section.&lt;/p>
&lt;h1 id="conclusion-and-future-scope">&lt;strong>Conclusion and future Scope&lt;/strong>&lt;/h1>
&lt;p>Building a comprehensive search system requires careful attention to performance, user experience, and maintainability. FlexSearch provided the foundation, but the real value came from thoughtful implementation of persistent indexing, advanced scoring, and robust error handling. The result is a search system that feels instant to users while handling complex queries across diverse document types.&lt;/p>
&lt;p>The key to success was treating search not as a single feature, but as a complete subsystem with its own data management, performance monitoring, and user interface considerations. By investing in these supporting systems, the search functionality became a central, reliable part of the application that users can depend on.&lt;/p>
&lt;p>The future scope would include:&lt;/p>
&lt;ol>
&lt;li>Using a database (for example, SQLite), instead of JSON, which is better for this use case than JSON due to better and efficient query performance and atomic (CRUD) operations.&lt;/li>
&lt;li>Integrating any suggestions from my mentors, as well as improvements we feel are necessary.&lt;/li>
&lt;li>Developing unit tests for further functionalities and improvements.&lt;/li>
&lt;/ol>
&lt;p>
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="Thank You!" srcset="
/report/osre25/northwestern/statwrap/20250823-debangi29/image_hu81a7405087771991938f164c6a45c6d2_109315_f70985a589ad6b79f8c95b36c5279852.webp 400w,
/report/osre25/northwestern/statwrap/20250823-debangi29/image_hu81a7405087771991938f164c6a45c6d2_109315_b28b9dbb6c70c33ca845fda461a64fcf.webp 760w,
/report/osre25/northwestern/statwrap/20250823-debangi29/image_hu81a7405087771991938f164c6a45c6d2_109315_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre25/northwestern/statwrap/20250823-debangi29/image_hu81a7405087771991938f164c6a45c6d2_109315_f70985a589ad6b79f8c95b36c5279852.webp"
width="760"
height="235"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p></description></item><item><title>[Final]Reproducibility of Interactive Notebooks in Distributed Environments</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre25/depaul/notebook-rep/08202025-rahmad/</link><pubDate>Wed, 20 Aug 2025 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre25/depaul/notebook-rep/08202025-rahmad/</guid><description>&lt;p>I am sharing a overview of my project &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre25/ucsc/06122025-rahmad">Reproducibility of Interactive Notebooks in Distributed Environments&lt;/a> and the work that I did this summer.&lt;/p>
&lt;h1 id="project-overview">Project Overview&lt;/h1>
&lt;p>This project aims at improving the reproducibility of interactive notebooks which are executed in a distributed environment. Notebooks like in the &lt;a href="https://jupyter.org/" target="_blank" rel="noopener">Jupyter&lt;/a> environment have become increasingly popular and are widely used in the scientific community due to their ease of use and portability. Reproducing these notebooks is a challenging task especially in a distributed cluster environment.&lt;/p>
&lt;p>In the distributed environments we consider, the notebook code is divided into manager and worker code. The manager code is the main entry point of the program which divides the task at hand into one or more worker codes which run in a parallel, distributed fashion. We utlize several open source tools to package and containerize the application code which can be used to reproduce it across different machines and environments. They include &lt;a href="https://github.com/radiant-systems-lab/sciunit" target="_blank" rel="noopener">Sciunit&lt;/a>, &lt;a href="https://github.com/radiant-systems-lab/Flinc" target="_blank" rel="noopener">FLINC&lt;/a>, and &lt;a href="https://cctools.readthedocs.io/en/stable/taskvine/" target="_blank" rel="noopener">TaskVine&lt;/a>. These are the high-level goals of this project:&lt;/p>
&lt;ol>
&lt;li>Generate execution logs for a notebook program.&lt;/li>
&lt;li>Generate code and data dependencies for notebook programs in an automated manner.&lt;/li>
&lt;li>Utilize the generated dependencies at various granularities to automate the deployment and execution of notebooks in a parallel and distributed environment.&lt;/li>
&lt;li>Audit and package the notebook code running in a distributed environment.&lt;/li>
&lt;li>Overall, support efficient reproducibility of programs in a notebook program.&lt;/li>
&lt;/ol>
&lt;h1 id="progress-highlights">Progress Highlights&lt;/h1>
&lt;p>Here are the details of the work that I did during this summer.&lt;/p>
&lt;h2 id="generation-of-execution-logs">Generation of Execution Logs&lt;/h2>
&lt;p>We generate execution logs for the notebook programs in a distributed environment the Linux utility &lt;a href="https://man7.org/linux/man-pages/man1/strace.1.html" target="_blank" rel="noopener">strace&lt;/a> which records every system call made by the notebook. It includes all files accessed during its execution. We collect separate logs for both manager and the worker code since they are executed on different machines and the dependencies for both are different. By recording the entire notebook execution, we capture all libraries, packages, and data files referenced during notebook execution in the form of execution logs. These logs are then utilized for further analyses.&lt;/p>
&lt;h2 id="extracting-software-dependencies">Extracting Software Dependencies&lt;/h2>
&lt;p>When a library such as a Python package like &lt;em>Numpy&lt;/em> is used by the notebook program, an entry is made in the execution log which has the complete path of the accessed library file(s) along with additional information. We analyze the execution logs for both manager and workers to find and enlist all dependencies. So far, we are limited to Python packages, though this methodology is general and can be used to find dependencies for any programing language. For Python packages, their version numbers are also obtained by querying the package managers like &lt;em>pip&lt;/em> or &lt;em>Conda&lt;/em> on the local system.&lt;/p>
&lt;h2 id="extracting-data-dependencies">Extracting Data Dependencies&lt;/h2>
&lt;p>We utilze similar execution logs to identify which data files were used by the notebook program. The list of logged files also contain various configuration or setting files used by certain packages and libraries. These files are removed from the list of data dependencies through post-processing done by analyzing file paths.&lt;/p>
&lt;h2 id="testing-the-pipeline">Testing the Pipeline&lt;/h2>
&lt;p>We have conducted our experiments on three use cases obtained from different domains using between 5 and 10 workers. They include distributed image convolution, climate trend analysis, and high energy physics experiment analysis. The results so far are promising with good accuracy and with a slight running time overhead.&lt;/p>
&lt;h2 id="processing-at-cell-level">Processing at Cell-level&lt;/h2>
&lt;p>We perform the same steps of log generation and data and software dependency extraction at the level of individual cells in a notebook instead of once for the whole notebook. As a result, we generate software and data dependencies at the level of individual notebook cells. This is achieved by interrupting control flow before and after execution of each cell to write special instructions to the execution log for marking boundaries of cell execution. We then analyze the intervals between these instructions to identify which files and Python packages are accessed by each specific cell. We use this information to generate the list of software dependencies used by that cell only.&lt;/p>
&lt;p>We also capture data dependencies by overriding analyzing the execution logs generated by overriding the function of the &lt;em>open&lt;/em> function call used to access various files.&lt;/p>
&lt;h2 id="distributed-notebook-auditing">Distributed Notebook Auditing&lt;/h2>
&lt;p>In order to execute and audit workloads in parallel, we use &lt;a href="https://github.com/radiant-systems-lab/parallel-sciunit" target="_blank" rel="noopener">Sciunit Parallel&lt;/a> which uses GNU Parallel for efficient parallel execution of tasks. The user specifies the number of tasks or machines to run the task on which is then distributed across them. Once the execution completes, their containerized executions need to be gathered at the host location.&lt;/p>
&lt;h2 id="efficient-reproducibility-with-checkpointing">Efficient Reproducibility with Checkpointing&lt;/h2>
&lt;p>An important challenge with Jupyter notebooks is that sometimes they are unnecessarily time-consuming and resource-intensive, especially when most cells remain unchanged. We worked on &lt;a href="https://github.com/talha129/NBRewind/tree/master" target="_blank" rel="noopener">NBRewind&lt;/a> which is a lightweight tool to accelerate notebook re-execution by avoiding redundant computation. It integrates checkpointing, application virtualization, and content-based deduplication. It enables two kinds of checkpoints: incremental and full-state. In incremental checkpoints, notebook states and dependencies across multiple cells are stored once such that only their deltas are stored again. In full-state checkpoints, the same is stored after each cell. During its restore process, it restores outputs for unchanged cells and thus enables efficient re-execution. Our empirical
evaluation demonstrates that NBRewind can significantly reduce both notebook audit and repeat times with incremental checkpoints.&lt;/p>
&lt;p>I am very happy abut the experience I have had in this project and I would encourage other students to join this program in the future.&lt;/p></description></item><item><title>Midterm Report: Learning and Building ORB</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre25/ucsc/orb/08072025-param/</link><pubDate>Thu, 07 Aug 2025 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre25/ucsc/orb/08072025-param/</guid><description>&lt;h2 id="project-overview">Project Overview&lt;/h2>
&lt;p>UC ORB is an open-source platform developed to increase visibility and engagement with open source projects across the University of California system.&lt;/p>
&lt;p>By providing a structured and searchable repository browser, ORB makes it easier for researchers, students, and collaborators to discover relevant open source initiatives, track their impact, and connect with contributors. It also helps campuses demonstrate the value of their open source output to potential funders and institutional partners.&lt;/p>
&lt;h2 id="progress-so-far">Progress So Far&lt;/h2>
&lt;p>Significant progress has been made in building out core features of the ORB Showcase platform:&lt;/p>
&lt;h3 id="searching-and-filtering-options">Searching and Filtering Options&lt;/h3>
&lt;p>Users can now search and filter repositories using multiple criteria:&lt;/p>
&lt;ul>
&lt;li>Development Team / UC Campus&lt;/li>
&lt;li>Programming Language&lt;/li>
&lt;li>License Type&lt;/li>
&lt;li>Topic / Domain Area&lt;/li>
&lt;/ul>
&lt;p>These filtering tools make it easy to explore the growing set of repositories in a meaningful and personalized way.&lt;/p>
&lt;p>Pagination has been added to ensure scalability and smooth performance, even as the number of projects continues to grow.&lt;/p>
&lt;h3 id="repository-details-view">Repository Details View&lt;/h3>
&lt;p>Each repository page now displays rich metadata and contextual information, including:&lt;/p>
&lt;p>README preview – offering a quick look at the project’s purpose and usage&lt;/p>
&lt;p>License – clearly indicating how the project can be used or adapted&lt;/p>
&lt;p>Contributors and Funders – acknowledging the people and institutions behind the work&lt;/p>
&lt;h2 id="whats-next">What&amp;rsquo;s Next&lt;/h2>
&lt;p>As we prepare UC ORB for public launch, we’re focused on improving the backend workflow and addressing some key challenges:&lt;/p>
&lt;p>⚙️ GitHub Workflow Challenges
Creating a GitHub-first workflow for adding repositories is powerful, but also tricky:&lt;/p>
&lt;p>GitHub Actions cannot be triggered by API calls from a backend directly, which limits automation via server-side tools.&lt;/p>
&lt;p>The GitHub bot has permission limitations, especially when it comes to interacting with PRs and validating submissions outside of standard GitHub UI flows.&lt;/p>
&lt;p>I’m currently working on designing a more robust and maintainable workflow to handle these edge cases, including:&lt;/p>
&lt;p>A standalone script that can add repositories directly to the database, bypassing the need for a pull request and enabling more flexible internal submissions.&lt;/p>
&lt;p>Better logging and validation to ensure consistency between the file-based data model and the live PostgreSQL database.&lt;/p>
&lt;h1 id="reflection">Reflection&lt;/h1>
&lt;p>This project has been a great learning experience despite challenges with Frontend, Backend, GitHub Actions / Bots and APIs, it’s been exciting to build a platform that highlights open source work across the UC system.&lt;/p>
&lt;p>I&amp;rsquo;m looking forward to what&amp;rsquo;s coming next as we get closer to launching ORB.&lt;/p></description></item><item><title>Midterm Report: Simulation, Comparison, and Conclusion of Cache Eviction</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre25/harvard/cachebench/2025-08-06-haochengxia/</link><pubDate>Wed, 06 Aug 2025 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre25/harvard/cachebench/2025-08-06-haochengxia/</guid><description>&lt;h2 id="project-overview">Project Overview&lt;/h2>
&lt;p>&lt;strong>CacheBench&lt;/strong> is a benchmarking suite designed for comprehensive cache performance evaluation, with a particular focus on analyzing the miss ratios of various cache eviction algorithms.&lt;/p>
&lt;p>At the core of CacheBench lie two key components: the high-performance cache simulator, &lt;a href="https://github.com/1a1a11a/libCacheSim" target="_blank" rel="noopener">libCacheSim&lt;/a>, and the extensive &lt;a href="https://github.com/cacheMon/cache_dataset" target="_blank" rel="noopener">open-source cache datasets&lt;/a>, which collectively contain over 8,000 traces from diverse applications. This ensures broad coverage across a range of realistic workloads.&lt;/p>
&lt;p>Our primary goal is to evaluate all major and widely-used cache eviction algorithms on thousands of traces, in order to gain insights into their behaviors and design trade-offs. Additionally, we aim to identify and distill representative workloads, making benchmarking more efficient and comprehensive for future cache research.&lt;/p>
&lt;h2 id="progress-and-pain-points">Progress and Pain Points&lt;/h2>
&lt;p>We began by benchmarking prevalent eviction algorithms, including FIFO, LRU, CLOCK, LFU, Random, Belady (BeladySize), CAR, ARC, LIRS, LHD, Hyperbolic, GDSF, W-TinyLFU, 2Q, SLRU, S3-FIFO, SIEVE, and LeCaR. As we developed the suite, we made progressive improvements to both the simulator and dataset infrastructure. Our progress can be summarized as follows:&lt;/p>
&lt;ul>
&lt;li>Collected miss ratio results for all listed algorithms across 8,000+ traces.&lt;/li>
&lt;li>Identified best- and worst-performing traces for each algorithm, and conducted feature analysis of these traces.&lt;/li>
&lt;li>Developed Python bindings: To increase accessibility, we provided a Python package that allows users to easily download traces and run simulation analyses using &lt;a href="https://github.com/1a1a11a/libCacheSim" target="_blank" rel="noopener">libCacheSim&lt;/a> and the &lt;a href="https://github.com/cacheMon/cache_dataset" target="_blank" rel="noopener">cache datasets&lt;/a>.&lt;/li>
&lt;/ul>
&lt;p>However, analysis remains challenging because there is no universally accepted metric or baseline for objectively comparing cache eviction algorithms&amp;rsquo; performance across all workloads.&lt;/p>
&lt;h2 id="next-steps">Next Steps&lt;/h2>
&lt;p>For the second half of the project, my focus will shift to:&lt;/p>
&lt;ul>
&lt;li>
&lt;p>&lt;strong>Evaluating More Complex Eviction Algorithms&lt;/strong>: Having concentrated mainly on static eviction policies so far (which are generally more deterministic and understandable), I will now investigate learning-based eviction algorithms such as LRB and 3L-Cache. These models incorporate learning components and incur additional computational overhead, making simulations slower and more complex.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Detailed Trace Analysis&lt;/strong>: Since eviction algorithms can have highly variable performance on the same trace, I plan to analyze why certain algorithms excel on specific traces while others do not. Understanding these factors is crucial to characterizing both the algorithms and the workload traces.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Constructing Representative Workload Sets&lt;/strong>: Based on ongoing simulations and trace analyses, I aim to identify a minimal but representative subset of traces that can serve as a basic evaluation suite, simplifying testing and improving accessibility.&lt;/p>
&lt;/li>
&lt;/ul>
&lt;h2 id="reflection">Reflection&lt;/h2>
&lt;p>This project has truly been the highlight of my summer. By evaluating a wide range of cache eviction algorithms, I&amp;rsquo;ve significantly deepened my understanding of cache design and its underlying principles.&lt;/p>
&lt;p>I&amp;rsquo;m especially grateful to my mentors for their constant support, patience, and guidance throughout this journey. It’s been a privilege to learn from you!&lt;/p>
&lt;p>I&amp;rsquo;m excited to see the final results of CacheBench!&lt;/p></description></item><item><title>Midterm Report: Learning, Building, and Documenting Brahma</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre25/ucsc/brahma/08052025-kajaljotwani/</link><pubDate>Tue, 05 Aug 2025 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre25/ucsc/brahma/08052025-kajaljotwani/</guid><description>&lt;h2 id="project-overview">Project Overview&lt;/h2>
&lt;p>&lt;strong>Brahma-XR&lt;/strong> is an open-source WebXR framework designed for building collaborative virtual environments especially those involving spatial data and scientific visualization.&lt;/p>
&lt;p>What makes Brahma powerful is that the same codebase runs seamlessly across both the browser and XR devices like the Apple Vision Pro, Meta Quest 3, and VARJO. This makes it ideal for rapid prototyping and creating cross-platform immersive experiences.&lt;/p>
&lt;p>Some of Brahma’s built-in features include:&lt;/p>
&lt;ul>
&lt;li>Grab-and-pull locomotion&lt;/li>
&lt;li>Raycasting and interaction&lt;/li>
&lt;li>Avatar embodiment&lt;/li>
&lt;li>Spatial rendering&lt;/li>
&lt;li>Support for geospatial and data-driven visualizations&lt;/li>
&lt;/ul>
&lt;p>Brahma is intentionally lightweight, optimized to run even on low-compute devices—making immersive collaboration more accessible to everyone.&lt;/p>
&lt;h2 id="what-worked-and-what-didnt">What Worked (and What Didn’t)&lt;/h2>
&lt;p>As Brahma transitioned from a private research repo to a public open-source project, a lot of important foundational work had to be done around documentation, packaging, and example previews.&lt;/p>
&lt;p>There are two aspects that make Brahma especially unique:&lt;/p>
&lt;ol>
&lt;li>&lt;strong>Bipartite npm package structure&lt;/strong> – which requires detailed and thoughtful documentation.&lt;/li>
&lt;li>&lt;strong>Immersive, real-time examples&lt;/strong> – unlike typical libraries, Brahma’s examples aren’t just static demos. They are live, multi-user XR apps designed to be interacted with.&lt;/li>
&lt;/ol>
&lt;p>The first half of the project focused on setting the stage—structuring and preparing the framework for broader use.&lt;/p>
&lt;h3 id="-key-accomplishments">🔧 Key Accomplishments&lt;/h3>
&lt;ul>
&lt;li>
&lt;p>&lt;strong>Learning Three.js&lt;/strong>&lt;br>
I spent time learning the fundamentals of Three.js—how it handles 3D rendering, scene setup, materials, cameras, and animations. I also explored how large-scale Three.js projects are organized, which helped me understand how Brahma’s example apps are built.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Setting up the project structure&lt;/strong>&lt;br>
I looked at the architecture of various open-source projects and used that knowledge to shape Brahma’s structure. The goal was to align with community best practices while keeping things clean and modular for future contributors.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Understanding npm packaging (especially bipartite)&lt;/strong>&lt;br>
Since Brahma includes both client- and server-side logic, I spent time understanding how multi-part npm packages are published and maintained. I explored best practices around versioning, distribution, and separating internal vs public modules.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Creating a documentation system&lt;/strong>&lt;br>
After exploring different approaches (and with my mentor’s help), I set up a static documentation site using &lt;a href="https://jsdoc.app/" target="_blank" rel="noopener">JSDoc&lt;/a> with the Docdash theme. The current version includes guides, API references, and contribution instructions. This is just the beginning—the docs will evolve as the community grows.&lt;/p>
&lt;/li>
&lt;/ul>
&lt;h2 id="whats-next">What’s Next&lt;/h2>
&lt;p>In the second half of the project, I’ll be focusing on:&lt;/p>
&lt;ul>
&lt;li>
&lt;p>&lt;strong>Building a routing system&lt;/strong>&lt;br>
For both documentation and example apps, so that users can easily browse through different components and use cases.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Setting up UI and 3D infrastructure&lt;/strong>&lt;br>
To make it easier for others to start building apps with Brahma by providing clean base layers for interface and spatial development.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Prepping for the first public release&lt;/strong>&lt;br>
Publishing the Brahma NPM package along with a curated set of featured examples and contributor-friendly documentation—making it easier for developers to get started and contribute.&lt;/p>
&lt;/li>
&lt;/ul>
&lt;h2 id="reflection">Reflection&lt;/h2>
&lt;p>This project has truly been the highlight of my summer. Learning about WebXR, Three.js, and open-source workflows has been both exciting and rewarding. Every challenge taught me something new.&lt;/p>
&lt;p>I am specially greatfull to my mentor &lt;strong>Samir Ghosh&lt;/strong> for his constant support, patience, and guidance. It’s been a privilege learning from you!&lt;/p>
&lt;p>I&amp;rsquo;m looking forward to what’s coming next as we get closer to the first public release of Brahma!&lt;/p></description></item><item><title>Mid-term Blog: Rectilinear Floorplans in OpenROAD - Progress Update</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre25/openroad/20250803-gschaitanya/</link><pubDate>Sun, 03 Aug 2025 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre25/openroad/20250803-gschaitanya/</guid><description>&lt;h1 id="mid-term-progress-enabling-rectilinear-floorplanning-in-openroad">Mid-term Progress: Enabling Rectilinear Floorplanning in OpenROAD&lt;/h1>
&lt;p>Hello! I&amp;rsquo;m excited to share my mid-term progress on implementing &lt;strong>rectilinear (polygonal) die support&lt;/strong> in OpenROAD&amp;rsquo;s floorplanning flow as part of Google Summer of Code 2025. Under the guidance of my mentors Eder Monteiro and Augusto Berndt, we&amp;rsquo;ve made significant strides in extending OpenROAD to handle non-rectangular die shapes.&lt;/p>
&lt;p>Here&amp;rsquo;s a link to my original &lt;a href="https://summerofcode.withgoogle.com/programs/2025/projects/mcv3Hbgk" target="_blank" rel="noopener">proposal&lt;/a>&lt;/p>
&lt;h2 id="project-overview">Project Overview&lt;/h2>
&lt;p>My project focuses on extending OpenROAD&amp;rsquo;s floorplanning capabilities to support rectilinear die shapes. This enhancement is crucial for modern VLSI design flows involving advanced packaging, 2.5D/3D ICs, and irregular chiplet-based designs where non-rectangular dies are increasingly common.&lt;/p>
&lt;p>The core challenge is maintaining robustness and backward compatibility while introducing this major new feature that touches multiple aspects of the design flow.&lt;/p>
&lt;h2 id="progress-made">Progress Made&lt;/h2>
&lt;h3 id="1-tcl-frontend-modification-and-input-parsing">1. &lt;strong>Tcl Frontend modification and Input Parsing&lt;/strong>&lt;/h3>
&lt;p>Successfully extended the Tcl interface to accept rectilinear die specifications:&lt;/p>
&lt;ul>
&lt;li>The &lt;code>initialize_floorplan&lt;/code> command can now accept a list of coordinates specifying a polygon and automatically trigger the rectilinear floorplanning flow.&lt;/li>
&lt;li>Added robust input validation for rectilinear coordinates&lt;/li>
&lt;li>Ensured backward compatibility with existing rectangular floorplan flows&lt;/li>
&lt;/ul>
&lt;h3 id="2-die-creation-and-validation">2. &lt;strong>Die creation and Validation&lt;/strong>&lt;/h3>
&lt;ul>
&lt;li>Leveraged the internal structure &lt;code>odb::Polygon&lt;/code> to store the vertices of the shape.&lt;/li>
&lt;li>Implemented polygon validation to ensure shapes are valid rectilinear polygons&lt;/li>
&lt;li>Added proper error handling and user feedback for invalid polygon inputs&lt;/li>
&lt;/ul>
&lt;h3 id="3-row-generation-for-rectilinear-dies---major-milestone">3. &lt;strong>Row Generation for rectilinear Dies - Major Milestone&lt;/strong>&lt;/h3>
&lt;p>The most significant achievement has been implementing the &lt;code>make_polygon_rows&lt;/code> functionality, which generates standard cell rows that conform to the rectilinear die boundaries. This was one of the most challenging aspects of the project. To solve this, we developed an efficient scanline-based approach to fill rectilinear areas with rows by clipping the row lengths according the the boundary of the shape supplied.&lt;/p>
&lt;h3 id="4-testing-and-validation">4. &lt;strong>Testing and Validation&lt;/strong>&lt;/h3>
&lt;p>Tests were added to the regression suite and were used to successfully test the entire &lt;code>initialize_floorplan&lt;/code> flow.
The changes made were merged into OpenROAD successfully. &lt;a href="https://github.com/The-OpenROAD-Project/OpenROAD/pull/7893" target="_blank" rel="noopener">PR Link&lt;/a>&lt;/p>
&lt;h2 id="makerows-demo-">makeRows demo :&lt;/h2>
&lt;p>One of our test cases involved generating rows for a &lt;strong>U-shaped die&lt;/strong>. Here is a snapshot from the OpenROAD gui displaying perfectly laid out rows:
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="U-test" srcset="
/report/osre25/openroad/20250803-gschaitanya/image_hu80377f8ad0fd7dd8cd93ba071f99d204_15398_f3394946aa9b2cf0185fac9d5ffdf4fd.webp 400w,
/report/osre25/openroad/20250803-gschaitanya/image_hu80377f8ad0fd7dd8cd93ba071f99d204_15398_b6ce6605882583b9dc669d52f2b53a54.webp 760w,
/report/osre25/openroad/20250803-gschaitanya/image_hu80377f8ad0fd7dd8cd93ba071f99d204_15398_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre25/openroad/20250803-gschaitanya/image_hu80377f8ad0fd7dd8cd93ba071f99d204_15398_f3394946aa9b2cf0185fac9d5ffdf4fd.webp"
width="760"
height="495"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;h2 id="next-steps">Next Steps&lt;/h2>
&lt;p>I am currently working on the pin placer (&lt;code>ppl&lt;/code>) module and extending it to support rectilinear floorplans. This requires a careful re-evaluation of each step, including the cost function used to optimize pin placement.&lt;/p></description></item><item><title>Mid-Term Update: MPI Appliance for HPC Research on Chameleon</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre25/uchicago/mpi/20250803-rohan-babbar/</link><pubDate>Sun, 03 Aug 2025 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre25/uchicago/mpi/20250803-rohan-babbar/</guid><description>&lt;p>Hi everyone! This is my mid-term blog update for the project &lt;a href="https://ucsc-ospo.github.io/project/osre25/uchicago/mpi/" target="_blank" rel="noopener">MPI Appliance for HPC Research on Chameleon&lt;/a>, developed in collaboration with Argonne National Laboratory and the Chameleon Cloud community.
This blog follows up on my earlier post, which you can find &lt;a href="https://ucsc-ospo.github.io/report/osre25/uchicago/mpi/20250614-rohan-babbar/" target="_blank" rel="noopener">here&lt;/a>.&lt;/p>
&lt;h3 id="-june-15--june-29-2025">🔧 June 15 – June 29, 2025&lt;/h3>
&lt;p>Worked on creating and configuring images on Chameleon Cloud for the following three sites:
CHI@UC, CHI@TACC, and KVM@TACC.&lt;/p>
&lt;p>Key features of the images:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Spack&lt;/strong>: Pre-installed and configured for easy package management of HPC software.&lt;/li>
&lt;li>&lt;strong>Lua Modules (LMod)&lt;/strong>: Installed and configured for environment module management.&lt;/li>
&lt;li>&lt;strong>MPI Support&lt;/strong>: Both MPICH and Open MPI are pre-installed, enabling users to run distributed applications out-of-the-box.&lt;/li>
&lt;/ul>
&lt;p>These images are now publicly available and can be seen directly on the Chameleon Appliance Catalog, titled &lt;a href="https://chameleoncloud.org/appliances/127/" target="_blank" rel="noopener">MPI and Spack for HPC (Ubuntu 22.04)&lt;/a>.&lt;/p>
&lt;p>I also worked on some example Jupyter notebooks on how to get started using these images.&lt;/p>
&lt;h3 id="-june-30--july-13-2025">🔧 June 30 – July 13, 2025&lt;/h3>
&lt;p>With the MPI Appliance now published on Chameleon Cloud, the next step was to automate the setup of an MPI-Spack cluster.&lt;/p>
&lt;p>To achieve this, I developed a set of Ansible playbooks that:&lt;/p>
&lt;ol>
&lt;li>Configure both master and worker nodes with site-specific settings&lt;/li>
&lt;li>Set up seamless access to Chameleon NFS shares&lt;/li>
&lt;li>Allow users to easily install Spack packages, compilers, and dependencies across all nodes&lt;/li>
&lt;/ol>
&lt;p>These playbooks aim to simplify the deployment of reproducible HPC environments and reduce the time required to get a working cluster up and running.&lt;/p>
&lt;h3 id="-july-14--july-28-2025">🔧 July 14 – July 28, 2025&lt;/h3>
&lt;p>This week began with me fixing some issues in python-chi, the official Python client for the Chameleon testbed.
We also discussed adding support for CUDA-based packages, which would make it easier to work with NVIDIA GPUs.
We successfully published a new image on Chameleon, titled &lt;a href="https://chameleoncloud.org/appliances/130/" target="_blank" rel="noopener">MPI and Spack for HPC (Ubuntu 22.04 - CUDA)&lt;/a>, and added an example to demonstrate its usage.&lt;/p>
&lt;p>We compiled the artifact containing the Jupyter notebooks and Ansible playbooks and published it on Chameleon Trovi.
Feel free to check it out &lt;a href="https://chameleoncloud.org/experiment/share/7424a8dc-0688-4383-9d67-1e40ff37de17" target="_blank" rel="noopener">here&lt;/a>. The documentation still needs some work.&lt;/p>
&lt;p>📌 That’s it for now! I’m currently working on the documentation, a ROCm-based image for AMD GPUs, and some container-based examples.
Stay tuned for more updates in the next blog.&lt;/p></description></item><item><title>Midterm blog: CarbonCast Midpoint Update: From Vision to Reality</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre25/ucsc/carboncast/20250803-tanushsavadi/</link><pubDate>Sun, 03 Aug 2025 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre25/ucsc/carboncast/20250803-tanushsavadi/</guid><description>&lt;p>A few months ago, I shared my vision for making carbon intensity forecasts more accessible through the &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre25/ucsc/carboncast">CarbonCast project&lt;/a>. My &lt;a href="https://summerofcode.withgoogle.com/programs/2025/projects/7yvAix3k" target="_blank" rel="noopener">proposal&lt;/a> under the mentorship of Professor Abel Souza aims to build an API that makes carbon intensity forecasts more accessible and actionable. I had two main goals: expand CarbonCast to work with more regional electricity grids, and transform it from a research project into something that could actually run and be interacted with in the real world.&lt;/p>
&lt;p>Today, I&amp;rsquo;m excited to share that we&amp;rsquo;ve not only hit those goals – we&amp;rsquo;ve exceeded them in ways I didn&amp;rsquo;t expect.&lt;/p>
&lt;h2 id="what-weve-built-so-far">What We&amp;rsquo;ve Built So Far&lt;/h2>
&lt;p>Remember how I mentioned that CarbonCast needed to support more regional grids? Well, we&amp;rsquo;ve gone big. The system now covers 85+ regions across two continents. We&amp;rsquo;re talking about major US grid operators like ERCOT (Texas), CISO (California), PJM (Mid-Atlantic), MISO (Midwest), and NYISO (New York), plus we&amp;rsquo;ve expanded into European countries like Germany, France, Spain, and the UK.&lt;/p>
&lt;p>But here&amp;rsquo;s the thing – collecting weather data for carbon intensity forecasting isn&amp;rsquo;t as simple as just downloading a few files. Each region needs four different types of weather data: solar radiation (for solar power predictions), wind patterns (for wind power), temperature and humidity (for energy demand), and precipitation (which affects both supply and demand). That means we&amp;rsquo;re managing data collection for over 340 different combinations of regions and weather variables.&lt;/p>
&lt;h2 id="the-automation-challenge">The Automation Challenge&lt;/h2>
&lt;p>When I started this project, I quickly realized that manually managing data collection for this many regions would be impossible. We&amp;rsquo;re talking about thousands of data requests, each taking time to process, with various things that can go wrong along the way.&lt;/p>
&lt;p>So we built something I&amp;rsquo;m really proud of: an intelligent automation system that handles 95% of the work without human intervention. That means 19 out of every 20 data collection tasks happen automatically, even when things go wrong.&lt;/p>
&lt;p>The system is smart about it too. It knows when to speed up data collection, when to slow down to avoid overwhelming the servers, and how to recover when errors happen. We&amp;rsquo;ve achieved 99% data completeness, which means almost every piece of weather data we need actually makes it into our system successfully.&lt;/p>
&lt;h2 id="making-it-production-ready">Making It Production-Ready&lt;/h2>
&lt;p>The biggest challenge was taking CarbonCast from a research project that worked on my laptop to something that could run reliably for weeks without me babysitting it. This meant building in all the boring but crucial stuff that makes software actually work in the real world.&lt;/p>
&lt;p>We created a comprehensive error handling system that can automatically recover from 95% of the problems it encounters. Network hiccups, server timeouts, data format changes – the system handles these gracefully and keeps running.&lt;/p>
&lt;p>There&amp;rsquo;s also a real-time monitoring dashboard that shows exactly what&amp;rsquo;s happening across all regions. I can see which areas are collecting data successfully, which ones might be having issues, and get alerts if anything needs attention. It&amp;rsquo;s like having a mission control center for carbon data.&lt;/p>
&lt;h2 id="the-dashboard-mission-control-for-carbon-data">The Dashboard: Mission Control for Carbon Data&lt;/h2>
&lt;p>Let me show you what this monitoring system actually looks like. We built a comprehensive web dashboard that gives us real-time visibility into everything that&amp;rsquo;s happening:&lt;/p>
&lt;p>
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="Dashboard Overview" srcset="
/report/osre25/ucsc/carboncast/20250803-tanushsavadi/dashboard-overview_hucf78c7d7b58d9515d431a2744915c5c5_523170_def2a560c75da61de5422b7a6a6dbc38.webp 400w,
/report/osre25/ucsc/carboncast/20250803-tanushsavadi/dashboard-overview_hucf78c7d7b58d9515d431a2744915c5c5_523170_5fcfb689e6283d1720e50da81cfb540f.webp 760w,
/report/osre25/ucsc/carboncast/20250803-tanushsavadi/dashboard-overview_hucf78c7d7b58d9515d431a2744915c5c5_523170_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre25/ucsc/carboncast/20250803-tanushsavadi/dashboard-overview_hucf78c7d7b58d9515d431a2744915c5c5_523170_def2a560c75da61de5422b7a6a6dbc38.webp"
width="760"
height="456"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;em>The main dashboard showing real-time system metrics and status across all regions&lt;/em>&lt;/p>
&lt;p>The dashboard shows key metrics at a glance – total requests, completion rates, and active regions. But it goes much deeper than that. You can drill down into individual requests to see their complete lifecycle:&lt;/p>
&lt;p>
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="Request Details" srcset="
/report/osre25/ucsc/carboncast/20250803-tanushsavadi/dashboard-requests_hu4620d0cbd193aecbbe0c5858e2ba9128_195009_876f419901e0b51127b81f1f37bf33f6.webp 400w,
/report/osre25/ucsc/carboncast/20250803-tanushsavadi/dashboard-requests_hu4620d0cbd193aecbbe0c5858e2ba9128_195009_3ae7b2ac3a29478b49913635f43aac19.webp 760w,
/report/osre25/ucsc/carboncast/20250803-tanushsavadi/dashboard-requests_hu4620d0cbd193aecbbe0c5858e2ba9128_195009_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre25/ucsc/carboncast/20250803-tanushsavadi/dashboard-requests_hu4620d0cbd193aecbbe0c5858e2ba9128_195009_876f419901e0b51127b81f1f37bf33f6.webp"
width="760"
height="458"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;em>Detailed view of individual data requests showing processing timelines and status&lt;/em>&lt;/p>
&lt;p>Each request card shows everything from the initial request time to when the data becomes available for download. This level of visibility is crucial when you&amp;rsquo;re managing hundreds of data requests across different regions and weather variables.&lt;/p>
&lt;p>The regional analytics view shows how well we&amp;rsquo;re doing across different grid operators:&lt;/p>
&lt;p>
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="Regional Analytics" srcset="
/report/osre25/ucsc/carboncast/20250803-tanushsavadi/dashboard-regions_hubaa80dcd4d7309dd18fca00b148c0f0f_628115_913b55e9f6633983aaaaf25607ac13bf.webp 400w,
/report/osre25/ucsc/carboncast/20250803-tanushsavadi/dashboard-regions_hubaa80dcd4d7309dd18fca00b148c0f0f_628115_950373fdefaf9bd595da010d29c37849.webp 760w,
/report/osre25/ucsc/carboncast/20250803-tanushsavadi/dashboard-regions_hubaa80dcd4d7309dd18fca00b148c0f0f_628115_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre25/ucsc/carboncast/20250803-tanushsavadi/dashboard-regions_hubaa80dcd4d7309dd18fca00b148c0f0f_628115_913b55e9f6633983aaaaf25607ac13bf.webp"
width="760"
height="445"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;em>Regional breakdown showing completion status across different electricity grid operators&lt;/em>&lt;/p>
&lt;p>What I&amp;rsquo;m particularly proud of is the error handling dashboard. When things do go wrong (which they inevitably do with any large-scale data system), we can see exactly what happened and how the system recovered:&lt;/p>
&lt;p>
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="Error Management" srcset="
/report/osre25/ucsc/carboncast/20250803-tanushsavadi/dashboard-errors_hua5a5c30a5cd8b72a26622f5af77b2406_480389_2864a9c4d56dcc6220d2fe406daddc17.webp 400w,
/report/osre25/ucsc/carboncast/20250803-tanushsavadi/dashboard-errors_hua5a5c30a5cd8b72a26622f5af77b2406_480389_ca1e5cbfdb24da4f1e6531c7be2eed54.webp 760w,
/report/osre25/ucsc/carboncast/20250803-tanushsavadi/dashboard-errors_hua5a5c30a5cd8b72a26622f5af77b2406_480389_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre25/ucsc/carboncast/20250803-tanushsavadi/dashboard-errors_hua5a5c30a5cd8b72a26622f5af77b2406_480389_2864a9c4d56dcc6220d2fe406daddc17.webp"
width="760"
height="254"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;em>Error tracking and resolution system showing 100% success rate in region mapping&lt;/em>&lt;/p>
&lt;p>The fact that we&amp;rsquo;re showing &amp;ldquo;No unknown regions found&amp;rdquo; means our coordinate-based region detection system is working perfectly – every weather data request gets properly mapped to the right electricity grid.&lt;/p>
&lt;h2 id="the-technical-foundation">The Technical Foundation&lt;/h2>
&lt;p>Under the hood, we&amp;rsquo;ve built what I&amp;rsquo;d call enterprise-grade infrastructure. The system can run autonomously for weeks, automatically organizing data by region and weather type, managing storage efficiently, and even optimizing its own performance based on what it learns.&lt;/p>
&lt;p>We&amp;rsquo;ve also created comprehensive testing systems to make sure everything works reliably. When you&amp;rsquo;re dealing with data that people might use to make real decisions about when to charge their electric vehicles or run their data centers, reliability isn&amp;rsquo;t optional.&lt;/p>
&lt;p>The architecture follows a modular, service-oriented design with clear separation between data collection, processing, monitoring, and user interfaces. This makes it much easier to maintain and extend as we add new features.&lt;/p>
&lt;h2 id="why-this-matters">Why This Matters&lt;/h2>
&lt;p>All of this infrastructure work might sound technical, but it&amp;rsquo;s directly connected to the original vision: making carbon intensity forecasts accessible to everyone.&lt;/p>
&lt;p>With this foundation in place, we can now provide reliable, up-to-date weather data for carbon intensity forecasting across major electricity grids in North America and Europe. That means developers building carbon-aware applications, companies trying to reduce their emissions, and individuals wanting to time their energy use for lower environmental impact all have access to the data they need.&lt;/p>
&lt;h2 id="whats-next-breaking-down-carboncast">What&amp;rsquo;s Next: Breaking Down CarbonCast&lt;/h2>
&lt;p>The next phase is where things get really exciting. Now that we have this solid data collection foundation, we&amp;rsquo;re going to break down CarbonCast itself into modular components. This will make it easier for developers to integrate carbon intensity forecasting into their own applications, whether that&amp;rsquo;s a smart home system, a cloud computing platform, or a mobile app that helps people make greener energy choices.&lt;/p>
&lt;h2 id="looking-back">Looking Back&lt;/h2>
&lt;p>When I started this project, I knew we needed better infrastructure for carbon data. What I didn&amp;rsquo;t expect was how much we&amp;rsquo;d end up building – or how well it would work. We&amp;rsquo;ve created something that can reliably collect and organize weather data across two continents, handle errors gracefully, and run without constant supervision.&lt;/p>
&lt;p>More importantly, we&amp;rsquo;ve built the foundation that will make it possible for anyone to access accurate carbon intensity forecasts. Whether you&amp;rsquo;re a developer building the next generation of carbon-aware applications or someone who just wants to know the best time to do laundry to minimize your environmental impact, the infrastructure is now there to support those decisions.&lt;/p>
&lt;p>The vision of making carbon data accessible and actionable is becoming reality, one automated data collection at a time.&lt;/p>
&lt;h2 id="impact-beyond-research">Impact Beyond Research&lt;/h2>
&lt;p>This work builds directly on the foundation of Multi-day Forecasting of Electric Grid Carbon Intensity using Machine Learning, transforming research into practical, real-world infrastructure. We&amp;rsquo;re not just making carbon intensity forecasts more accurate – we&amp;rsquo;re making them accessible to everyone who wants to reduce their environmental impact.&lt;/p>
&lt;p>The open-source nature of CarbonCast means that anyone can run, contribute to, and benefit from this work. Whether you&amp;rsquo;re a developer building carbon-aware applications, a policymaker working on grid decarbonization strategies, or a sustainability-conscious individual looking to reduce your carbon footprint, the tools are now there to make informed, impactful choices.&lt;/p>
&lt;p>Looking ahead, I&amp;rsquo;m excited to see how this infrastructure will enable the next generation of carbon-aware computing and smart energy decisions.&lt;/p></description></item><item><title>Mid-Term Report: Uncovering the True Sources of Non-Reproducibility in AI for Science</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre25/pnnl/llm_rag_reproducibility/20250725-wbq321/</link><pubDate>Fri, 01 Aug 2025 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre25/pnnl/llm_rag_reproducibility/20250725-wbq321/</guid><description>&lt;p>Hello, I&amp;rsquo;m Baiqiang. I’m excited to share a mid-term update from the &lt;a href="https://ucsc-ospo.github.io/project/osre25/pnnl/llm_rag_reproducibility/" target="_blank" rel="noopener">Enhancing Reproducibility in RAG Frameworks for Scientific Workflows&lt;/a> project. This journey, mentored by Luanzheng &amp;ldquo;Lenny&amp;rdquo; Guo and Dongfang Zhao, has taken a fascinating and unexpected turn, leading to a much deeper understanding of what it takes to build truly reliable AI for science.&lt;/p>
&lt;h3 id="the-search-for-an-invisible-bug">The Search for an Invisible Bug&lt;/h3>
&lt;p>As a quick recap, our project tackles the critical problem of &lt;strong>non-determinism&lt;/strong> in Retrieval-Augmented Generation (RAG) systems. For science to be trustworthy, it must be repeatable. If an AI system gives different answers to the same question, it fails this fundamental test. Our initial goal, outlined in my &lt;a href="https://www.overleaf.com/read/fcbxtpngdnhw#8cc2c8" target="_blank" rel="noopener">proposal&lt;/a>, was to find and fix the sources of this inconsistency, which we believed lay within the retrieval algorithms themselves.&lt;/p>
&lt;p>To do this, we built a comprehensive testing framework capable of running thousands of controlled experiments. We designed it to meticulously measure the consistency of retrieval results while varying everything from the indexing algorithm to the underlying hardware.&lt;/p>
&lt;h3 id="a-surprising-discovery-the-usual-suspect-is-innocent">A Surprising Discovery: The Usual Suspect is Innocent&lt;/h3>
&lt;p>The common wisdom in the community is that high-performance, approximate search libraries like FAISS are a major source of randomness. We put this to the test, running repeated queries against various index types, including complex ones like &lt;code>HNSW&lt;/code> and &lt;code>IndexIVF&lt;/code>.&lt;/p>
&lt;p>Our results were clear and surprising: &lt;strong>FAISS is remarkably reproducible out of the box.&lt;/strong> When run on a consistent hardware and software stack, it returns the exact same results, every single time. The library appears to have robust internal seed management that ensures deterministic behavior.&lt;/p>
&lt;p>This finding was a pivotal moment. The non-reproducibility that researchers observe in practice is real, but it doesn&amp;rsquo;t come from where we expected. The problem isn&amp;rsquo;t the algorithm itself, but the environment it runs in. Our investigation immediately shifted to find the real culprits.&lt;/p>
&lt;h3 id="pinpointing-the-true-sources-of-non-determinism">Pinpointing the True Sources of Non-Determinism&lt;/h3>
&lt;p>Our framework quickly helped us identify the true sources of inconsistency:&lt;/p>
&lt;ol>
&lt;li>&lt;strong>Hardware-Induced Variation (CPU vs. GPU):&lt;/strong> This is the most significant factor. Running the exact same retrieval code can produce different document rankings and even different document sets when executed on a CPU versus a GPU. This is likely due to subtle differences in floating-point arithmetic and library optimizations in the hardware stack.&lt;/li>
&lt;li>&lt;strong>The Impact of Numerical Precision:&lt;/strong> We also confirmed that changing the floating-point precision of the data (e.g., from FP32 to FP16) can introduce small numerical variations that are just large enough to reorder the results, potentially changing the evidence the LLM receives.&lt;/li>
&lt;/ol>
&lt;h3 id="our-mission-refined-building-tools-for-environmental-control">Our Mission Refined: Building Tools for Environmental Control&lt;/h3>
&lt;p>This discovery has sharpened our project&amp;rsquo;s mission. The challenge is not to &amp;ldquo;fix&amp;rdquo; a supposedly random algorithm, but to develop the tools and best practices to control for the entire experimental environment. Our focus for the second half of the project is to:&lt;/p>
&lt;ol>
&lt;li>&lt;strong>Develop a Hardware-Aware Configuration Tracker:&lt;/strong> We are building a tool that goes beyond logging software versions. It will capture the critical details of the hardware environment—CPU/GPU model, CUDA version, etc.—and link them directly to an experiment&amp;rsquo;s results.&lt;/li>
&lt;li>&lt;strong>Create a Cross-Environment Validation Suite:&lt;/strong> Our open-source benchmarking suite will empower researchers to test their own pipelines. Crucially, it will help them identify and diagnose inconsistencies when moving workflows between different machines, such as from a local laptop to a cloud-based GPU.&lt;/li>
&lt;li>&lt;strong>Establish New Best Practices:&lt;/strong> We will distill our findings into clear, actionable guidance. The key recommendation is no longer just about choosing the right algorithm, but ensuring a consistent and well-documented hardware and software environment to guarantee reproducible outcomes.&lt;/li>
&lt;/ol>
&lt;p>By following the evidence, we’ve uncovered the root cause of a critical problem in AI-driven research. We are now developing the solutions needed to manage it, paving the way for a future where scientific discoveries powered by AI are built on a foundation of verifiable trust.&lt;/p></description></item><item><title>Midterm Update: Building Intelligent Observability for NRP</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre25/ucsd/seam/intelligent-observability/20250801-manish-reddy/</link><pubDate>Fri, 01 Aug 2025 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre25/ucsd/seam/intelligent-observability/20250801-manish-reddy/</guid><description>&lt;p>I&amp;rsquo;m pleased to share the progress we&amp;rsquo;ve made on my OSRE 2025 project, &amp;ldquo;&lt;em>Intelligent Observability for Seam: A GenAI Approach&lt;/em>&amp;rdquo; since my initial announcement. We&amp;rsquo;re working toward our core goal: building an ML-powered service for NRP that analyzes monitoring data, detects anomalies, and provides trustworthy GenAI explanations.&lt;/p>
&lt;h2 id="how-our-agents-support-the-observability-mission">How Our Agents Support the Observability Mission&lt;/h2>
&lt;p>We&amp;rsquo;ve been developing specialized agents and tools that work together to support our original project vision:&lt;/p>
&lt;h3 id="1-prometheus-metrics-analysis-agent">1. Prometheus Metrics Analysis Agent&lt;/h3>
&lt;ul>
&lt;li>&lt;strong>Function&lt;/strong>: Continuously ingests and processes NRP&amp;rsquo;s Prometheus metrics&lt;/li>
&lt;li>&lt;strong>Progress&lt;/strong>: We&amp;rsquo;ve implemented initial data pipelines for key system metrics&lt;/li>
&lt;li>&lt;strong>Purpose&lt;/strong>: Provides the foundation for anomaly detection by establishing normal behavior baselines&lt;/li>
&lt;/ul>
&lt;h3 id="2-query-refinement-agent-croq">2. Query Refinement Agent (CROQ)&lt;/h3>
&lt;ul>
&lt;li>&lt;strong>Function&lt;/strong>: Clarifies ambiguous metrics or patterns before generating explanations&lt;/li>
&lt;li>&lt;strong>Progress&lt;/strong>: We&amp;rsquo;ve implemented a basic version of Conformal Revision of Questions to resolve metric ambiguities&lt;/li>
&lt;li>&lt;strong>Purpose&lt;/strong>: Aims to ensure explanations address the right system behaviors (e.g., distinguishing CPU saturation from memory pressure)&lt;/li>
&lt;li>&lt;strong>Deliverable Impact&lt;/strong>: We hope this will improve accuracy of GenAI explanations by eliminating misinterpretations&lt;/li>
&lt;/ul>
&lt;h3 id="3-explanation-generation-agent-ais">3. Explanation Generation Agent (AIS)&lt;/h3>
&lt;ul>
&lt;li>&lt;strong>Function&lt;/strong>: Creates human-readable explanations and root-cause analysis&lt;/li>
&lt;li>&lt;strong>Progress&lt;/strong>: We&amp;rsquo;ve built a prototype of the Automated Information Seeker with a Plan→Validate→Execute→Assess→Revise cycle&lt;/li>
&lt;li>&lt;strong>Purpose&lt;/strong>: Transforms technical anomalies into actionable insights for operators&lt;/li>
&lt;li>&lt;strong>Deliverable Impact&lt;/strong>: Intended to directly deliver on the GenAI explanation component of our tool&lt;/li>
&lt;/ul>
&lt;h2 id="integration-progress">Integration Progress&lt;/h2>
&lt;p>We&amp;rsquo;re working to connect our agents into a unified observability pipeline:&lt;/p>
&lt;ol>
&lt;li>&lt;strong>Data Collection&lt;/strong>: Prometheus metrics → Analysis Agent&lt;/li>
&lt;li>&lt;strong>Anomaly Detection&lt;/strong>: With statistical confidence bounds (in development)&lt;/li>
&lt;li>&lt;strong>Query Refinement&lt;/strong>: Resolving ambiguities before explanation&lt;/li>
&lt;li>&lt;strong>Explanation Generation&lt;/strong>: Human-readable analysis with uncertainty awareness&lt;/li>
&lt;li>&lt;strong>Feedback Loop&lt;/strong>: System learning from operator interactions (planned)&lt;/li>
&lt;/ol>
&lt;h2 id="hardware-testing-opportunity">Hardware Testing Opportunity&lt;/h2>
&lt;p>This project has given us a valuable opportunity to test our observability framework on Qualcomm Cloud AI 100 Ultra hardware. We&amp;rsquo;re beginning to port different LLM architectures specifically for:&lt;/p>
&lt;ul>
&lt;li>Exploring anomaly detection performance on specialized AI hardware&lt;/li>
&lt;li>Testing explanation generation quality across different model architectures&lt;/li>
&lt;li>Comparing GLM-4.5 against other models for observability-specific tasks&lt;/li>
&lt;/ul>
&lt;h2 id="next-phase-completing-the-observability-tool">Next Phase: Completing the Observability Tool&lt;/h2>
&lt;p>For the remainder of OSRE 2025, we&amp;rsquo;re focused on:&lt;/p>
&lt;ol>
&lt;li>Finalizing integration of all agents into a cohesive anomaly detection tool with matrix&lt;/li>
&lt;li>Validating that our GenAI explanations help operators resolve issues faster for users, which we plan to test on the nautilus matrix platform&lt;/li>
&lt;li>Optimizing performance on specialized hardware for NRP&amp;rsquo;s scale&lt;/li>
&lt;li>Preparing the open-source release of our intelligent observability tool&lt;/li>
&lt;/ol>
&lt;h2 id="acknowledgments">Acknowledgments&lt;/h2>
&lt;p>I&amp;rsquo;m deeply grateful to my lead mentor &lt;strong>Mohammad Firas Sada&lt;/strong> for his guidance in keeping our work focused on NRP&amp;rsquo;s observability needs. His insights have been invaluable in navigating the challenges of this project.&lt;/p>
&lt;p>While we&amp;rsquo;ve developed several agents and frameworks, everything we&amp;rsquo;re building serves the original mission: creating an intelligent observability tool that helps NRP operators solve problems faster and keep complex research systems running smoothly.&lt;/p>
&lt;p>I look forward to sharing more progress on our observability tool with GenAI explanations in the coming weeks!&lt;/p></description></item><item><title>Midterm Report : Streamlining Reproducible Machine Learning Research with Automated MLOps Workflows</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre25/nyu/mlops/07292025-alghali/</link><pubDate>Wed, 30 Jul 2025 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre25/nyu/mlops/07292025-alghali/</guid><description>&lt;h3 id="refresher-about-the-project">Refresher about the Project&lt;/h3>
&lt;p>Hi everyone! for the last month I have been working with my mentors Professor &lt;a href="https://ucsc-ospo.github.io/author/fraida-fund/" target="_blank" rel="noopener">Fraida Fund&lt;/a>, and &lt;a href="https://ucsc-ospo.github.io/author/mohamed-saeed/" target="_blank" rel="noopener">Mohamed Saeed&lt;/a> on our Project &lt;a href="https://ucsc-ospo.github.io/project/osre25/nyu/mlops/" target="_blank" rel="noopener">Applying MLOps to overcome reproducibility barriers in machine learning research&lt;/a> As a refresher, our goal is to build a template generator for a reproducible machine learning training workflows at the Chameleon testbed. We want to provide our users with the necessary environment configuration in a handy way. so they won&amp;rsquo;t be overwhelmed with all the intricate details of setting the environment. This will allow for validation and further development of their setup.&lt;/p>
&lt;hr>
&lt;h3 id="what-we-have-done-so-far">What we have done so far&lt;/h3>
&lt;p>
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="userflow" srcset="
/report/osre25/nyu/mlops/07292025-alghali/userflow_hu8aae690c470ebe5647870c6d86c96c68_71910_d0aee31c44beeded617d15565a3078b7.webp 400w,
/report/osre25/nyu/mlops/07292025-alghali/userflow_hu8aae690c470ebe5647870c6d86c96c68_71910_23aab3e41951725ceb2ba1683e8a5455.webp 760w,
/report/osre25/nyu/mlops/07292025-alghali/userflow_hu8aae690c470ebe5647870c6d86c96c68_71910_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre25/nyu/mlops/07292025-alghali/userflow_hu8aae690c470ebe5647870c6d86c96c68_71910_d0aee31c44beeded617d15565a3078b7.webp"
width="760"
height="307"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;p>The current workflow begins in JupyterHub, where the user provides basic details such as project name, site, and node type. the notebooks handle key setup tasks, like creating storage buckets, provisioning and configuring a server with GPU support, and mounting buckets locally via rclone. Once the host environment is ready, the user will SSH that machine, generates the necessary variables via a script and launches a containerized virtual lab that integrates Jupyter and MLflow. Inside the container, users authenticate with GitHub, connect or initialize their repositories, and can immediately begin training models, with all metrics, artifacts, and environment details logged for reproducibility.&lt;/p>
&lt;p>The progress on the project so far is as follows:&lt;/p>
&lt;h4 id="we-finalized-the-selection-of-frameworks-and-storage-options">We finalized the selection of frameworks and storage options.&lt;/h4>
&lt;p>
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="results" srcset="
/report/osre25/nyu/mlops/07292025-alghali/setup_huf1d9f9b29ea3e918ebffad4d45a90b19_52037_cc94f8d2983a972d5d551a1fd1b51c86.webp 400w,
/report/osre25/nyu/mlops/07292025-alghali/setup_huf1d9f9b29ea3e918ebffad4d45a90b19_52037_bd2f06761e3836b650d87a84b3ed4d00.webp 760w,
/report/osre25/nyu/mlops/07292025-alghali/setup_huf1d9f9b29ea3e918ebffad4d45a90b19_52037_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre25/nyu/mlops/07292025-alghali/setup_huf1d9f9b29ea3e918ebffad4d45a90b19_52037_cc94f8d2983a972d5d551a1fd1b51c86.webp"
width="760"
height="346"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;p>Artifacts are now logged directly from the MLflow server to the Chameleon object store, without relying on a database backend or an intermediate MinIO S3 layer.&lt;/p>
&lt;h4 id="different-jupyter-lab-images-for-each-framework">Different jupyter lab images for each framework.&lt;/h4>
&lt;p>We’ve started with the top ML frameworks — PyTorch Lightning, Keras/TensorFlow, and Scikit-Learn. Each framework now has its own image, which will later be tailored to the user’s selection.&lt;/p>
&lt;h4 id="github-cli-and-hugging-face-integration-inside-the-container">Github CLI and Hugging Face integration inside the container.&lt;/h4>
&lt;p>The Jupyter container now integrates both the GitHub CLI and Hugging Face authentication. Users can manage their code repositories via GitHub CLI commands and authenticate with Hugging Face tokens to download/upload models and datasets. This eliminates the need for manual credential setup and streamlines ML experimentation within the environment.&lt;/p>
&lt;h4 id="custom-logging-utility">Custom Logging Utility&lt;/h4>
&lt;p>To ensure robust tracking of code versioning and environment details, we added a custom logging utility.&lt;br>
These logs are stored alongside metrics and model artifacts in MLflow, ensuring every experiment is fully documented and reproducible. summary of the functionalities:&lt;/p>
&lt;hr>
&lt;h5 id="log_git--captures-code-versioning">&lt;code>log_git()&lt;/code> — Captures Code Versioning&lt;/h5>
&lt;p>Uses Git commands (via subprocess) to log:&lt;/p>
&lt;ul>
&lt;li>Current branch name&lt;/li>
&lt;li>Commit hash&lt;/li>
&lt;li>Repository status (clean or dirty)&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>Example Output:&lt;/strong>&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-text" data-lang="text">&lt;span class="line">&lt;span class="cl">commit: a7c3e9d
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">branch: main
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">status: dirty (1 file modified)
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"># and git diff output
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h5 id="log_python-tracks-the-python-environment">&lt;code>log_python()&lt;/code>— Tracks the Python Environment&lt;/h5>
&lt;ul>
&lt;li>
&lt;p>Platform information + Python environment info (version)&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Exports a full pip freeze list to a .txt file&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Saved as an MLflow artifact to guarantee exact package version reproducibility&lt;/p>
&lt;/li>
&lt;/ul>
&lt;p>Example Output (pip freeze extract):&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-txt" data-lang="txt">&lt;span class="line">&lt;span class="cl">numpy==1.26.4
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">pandas==2.2.1
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">scikit-learn==1.4.2
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">torch==2.2.0
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h5 id="log_gpu---records-gpu-information">&lt;code>log_gpu()&lt;/code> - Records GPU Information&lt;/h5>
&lt;ul>
&lt;li>
&lt;p>Detects available GPU devices&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Collects details using NVIDIA’s pynvml or AMD’s ROCm tools&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Logs:&lt;/p>
&lt;/li>
&lt;li>
&lt;p>GPU name&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Driver version&lt;/p>
&lt;/li>
&lt;li>
&lt;p>CUDA/ROCm version&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Captures gpu-type-smi output for deeper inspection&lt;/p>
&lt;/li>
&lt;/ul>
&lt;hr>
&lt;p>These utilities ensure that each run can be traced back with:&lt;/p>
&lt;ul>
&lt;li>
&lt;p>The exact code version&lt;/p>
&lt;/li>
&lt;li>
&lt;p>The full Python environment&lt;/p>
&lt;/li>
&lt;li>
&lt;p>The hardware details used&lt;/p>
&lt;/li>
&lt;/ul>
&lt;hr>
&lt;h3 id="initial-customizable-template">Initial customizable template&lt;/h3>
&lt;p>We’ve prototyped an initial customizable template using Cookiecutter. it provides an interactive CLI, users provide some key project details (e.g., project name, frameworks, GPU type and integrations if any). Cookiecutter then generates a ready-to-use project structure with pre-configured integrations, reducing manual setup and ensuring consistency across environments.&lt;/p>
&lt;p>
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="template generator"
src="https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre25/nyu/mlops/07292025-alghali/generator.gif"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;p>The user will have notebooks to communicate with chameleon testbed resources, containerized environment and custom training scripts to plug their code.&lt;/p>
&lt;p>
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="emelents" srcset="
/report/osre25/nyu/mlops/07292025-alghali/elements_huf8c1a359b014b199be1f96460f6453ca_50752_d71a4a6bed166f1ba25e0480abe6d891.webp 400w,
/report/osre25/nyu/mlops/07292025-alghali/elements_huf8c1a359b014b199be1f96460f6453ca_50752_0451200eb97ac154443b7261da58399a.webp 760w,
/report/osre25/nyu/mlops/07292025-alghali/elements_huf8c1a359b014b199be1f96460f6453ca_50752_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre25/nyu/mlops/07292025-alghali/elements_huf8c1a359b014b199be1f96460f6453ca_50752_d71a4a6bed166f1ba25e0480abe6d891.webp"
width="760"
height="262"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;h3 id="whats-next">What’s Next&lt;/h3>
&lt;ul>
&lt;li>
&lt;p>&lt;strong>Template Generation via Config + interactive widgets&lt;/strong>&lt;br>
We are exploring different ways to generate experiment templates using configuration files and interactive widgets in jupyter notebooks. This would let users quickly customize logging setups and considered to be more user-friendly.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>AMD-Compatible Images&lt;/strong>&lt;br>
Extend support by building and testing Docker images optimized for AMD GPUs. Up to now, our development efforts has focused on NVIDIA GPUs using CUDA-based images&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>End-to-End Lifecycle Example&lt;/strong>&lt;br>
Provide a larger example demonstrating the entire ML workflow:&lt;/p>
&lt;ul>
&lt;li>Data preparation&lt;/li>
&lt;li>Training with GPU logging&lt;/li>
&lt;li>Tracking metrics, artifacts, and environment info in MLflow&lt;/li>
&lt;li>Model evaluation and logging&lt;/li>
&lt;li>Reproducing results on different hardware backends&lt;/li>
&lt;/ul>
&lt;/li>
&lt;/ul>
&lt;p>Working on this project so far has been both challenging and eye-opening. I’ve seen how many moving parts need to come together for a smooth workflow. The support from my mentors has been key in helping me turning challenges into real progress.&lt;/p>
&lt;p>Thank you for following along — I’m looking forward to sharing more concrete results soon.&lt;/p></description></item><item><title>Robot Manipulation with Scenic-RoboSuite</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre25/ucsc/scenic/20250730-sahil-tgs/</link><pubDate>Wed, 30 Jul 2025 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre25/ucsc/scenic/20250730-sahil-tgs/</guid><description>&lt;p>We&amp;rsquo;re &lt;a href="https://sahiltgs.super.site/" target="_blank" rel="noopener">Sahil&lt;/a>, continuing work on the Scenic-RoboSuite integration for GSoC 2025. This &lt;a href="https://sahiltgs.super.site/gsoc/uc-ospo-proposal" target="_blank" rel="noopener">project&lt;/a> is mentored by &lt;a href="https://ucsc-ospo.github.io/author/daniel-fremont/" target="_blank" rel="noopener">Daniel Fremont&lt;/a> and &lt;a href="https://ucsc-ospo.github.io/author/eric-vin/" target="_blank" rel="noopener">Eric Vin&lt;/a>.&lt;/p>
&lt;p>Since the last update, the &lt;a href="https://scenic-lang.org/" target="_blank" rel="noopener">Scenic&lt;/a>-&lt;a href="https://robosuite.ai/" target="_blank" rel="noopener">RoboSuite&lt;/a> interface has made significant progress. The bidirectional bridge is now functional - robots can read sensor data and execute behaviors based on observations. However, these features are still in early stages and we&amp;rsquo;re working on making them more stable and consistent.&lt;/p>
&lt;p>We&amp;rsquo;ve integrated RoboSuite&amp;rsquo;s Operational Space Control into Scenic. This control method lets you command the robot&amp;rsquo;s hand directly in 3D space (like &amp;ldquo;move 10cm left&amp;rdquo;) instead of calculating complex joint rotations. While the integration works, it&amp;rsquo;s rough around the edges and we&amp;rsquo;re currently focused on stabilizing it across different scenarios.&lt;/p>
&lt;p>The main challenge was architectural - RoboSuite expects all robot commands bundled together each timestep, while Scenic processes them one by one. We solved this with a pending actions system that collects everything first, then executes in one go. Time synchronization was another challenge, matching Scenic&amp;rsquo;s steps with MuJoCo&amp;rsquo;s physics.&lt;/p>
&lt;p>We&amp;rsquo;ve implemented a basic pick-and-place behavior for basic testing. The robot reads sensor data, calculates where to move, and adjusts continuously. It can successfully grasp and lift objects, though consistency varies between runs. The system supports three robot models and works with RoboSuite&amp;rsquo;s pre-built environments.&lt;/p>
&lt;p>Custom world building is currently on hold. We&amp;rsquo;ve decided to focus on integrating existing RoboSuite features into Scenic first, then build Scenic&amp;rsquo;s capabilities like dynamic scenario randomization on top. For our first prototype, we&amp;rsquo;re aiming to extend the pick-and-place behavior into a full randomization demo - Scenic will randomly position the cube each run, and the robot will adapt to find and grasp it regardless of location.&lt;/p>
&lt;p>The next two weeks focus on stabilizing current features and preparing this randomized scenario prototype. Expanding the behavior library and supporting additional environments will come in future phases after we have a solid foundation.&lt;/p>
&lt;p>The core bridge between Scenic and RoboSuite is operational, but there&amp;rsquo;s significant work ahead to make it reliable and user-friendly.&lt;/p></description></item><item><title>Type Narrowing: Evaluate New Gradual Languages and Do Unsound Narrowings Lead to Exploits</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre25/uutah/type-narrowing/20250729-sivasathyaseelan/</link><pubDate>Tue, 29 Jul 2025 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre25/uutah/type-narrowing/20250729-sivasathyaseelan/</guid><description>&lt;p>Hello! I’m Siva Sathyaseelan D N, a pre-final year B.Tech + M.Tech Engineering student at IIT BHU, Varanasi, India. With a deep-rooted passion for software development and scientific computing. I thrive at the intersection of code and real-world problem-solving. For two years, I’ve engaged in open-source work across scientific simulation, blockchain, and cloud-native technologies, through hobby projects, hackathons, internships, and an LFX mentee. I&amp;rsquo;m contributing to&lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre25/uutah/type-narrowing/">Type Narrowing: Evaluate New Gradual Languages and Do Unsound Narrowings Lead to Exploits&lt;/a> under the mentorship of &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/content/authors/bennn">Ben Greenman&lt;/a>. My proposal can be viewed &lt;a href="https://docs.google.com/document/d/1QcfiOWQQBxTW3YnkCmgfz-xHwLGad4OuCMjyphbaz54/edit?usp=sharing" target="_blank" rel="noopener">here&lt;/a>!&lt;/p>
&lt;h2 id="project-overview">Project Overview&lt;/h2>
&lt;p>Gradual typing enhances untyped languages like JavaScript and Python with static type checkers in systems like TypeScript, Flow, Mypy, Pyright, and Typed Racket, using type narrowing to refine types via runtime checks (e.g., typeof item[&amp;ldquo;price&amp;rdquo;] === &amp;ldquo;number&amp;rdquo;). Designs vary, TypeScript permits unverified predicates, Flow ensures soundness, and Typed Racket tracks types compositionally—prompting the If-T benchmark &lt;a href="https://github.com/utahplt/ift-benchmark" target="_blank" rel="noopener">ift-benchmark&lt;/a> to evaluate narrowing across five languages, though it omits tools like Sorbet, Hack, Luau, Pyre, Cinder/Static Python, Typed Clojure, and Elixir, and the risks of unsound narrowings remain unclear.&lt;/p>
&lt;p>&lt;strong>Objectives&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>Extend the If-T benchmark to Sorbet, Hack, Luau, Pyre, Cinder/Static Python, Typed Clojure, and potentially Elixir.&lt;/li>
&lt;li>Analyze their type narrowing precision, expressiveness, and soundness.&lt;/li>
&lt;li>Conduct a corpus study of TypeScript or Python code using GitHub or Software Heritage APIs.&lt;/li>
&lt;li>Assess the prevalence and exploit potential of unsound narrowings.&lt;/li>
&lt;li>Link corpus findings to benchmark results for broader insights.&lt;/li>
&lt;/ul>
&lt;h2 id="progress-so-far">Progress So Far&lt;/h2>
&lt;p>During the first half of the SoR 2025 period, I focused on lextending the If-T benchmark to Sorbet, Pyre, Cinder/Static Python, Typed Clojure. These are the PRs which extends If-T benchmark:&lt;/p>
&lt;ul>
&lt;li>Sorbet -&amp;gt; &lt;a href="https://github.com/utahplt/ifT-benchmark/pull/20" target="_blank" rel="noopener">https://github.com/utahplt/ifT-benchmark/pull/20&lt;/a>&lt;/li>
&lt;li>Pyre -&amp;gt; &lt;a href="https://github.com/utahplt/ifT-benchmark/pull/26" target="_blank" rel="noopener">https://github.com/utahplt/ifT-benchmark/pull/26&lt;/a>&lt;/li>
&lt;li>Typed Clojure -&amp;gt; &lt;a href="https://github.com/utahplt/ifT-benchmark/pull/27" target="_blank" rel="noopener">https://github.com/utahplt/ifT-benchmark/pull/27&lt;/a>&lt;/li>
&lt;li>Cinder -&amp;gt; &lt;a href="https://github.com/utahplt/ifT-benchmark/pull/28" target="_blank" rel="noopener">https://github.com/utahplt/ifT-benchmark/pull/28&lt;/a>&lt;/li>
&lt;/ul>
&lt;h2 id="whats-next">What&amp;rsquo;s Next&lt;/h2>
&lt;p>I will be working on Conduct a corpus study of TypeScript or Python code using GitHub or Software Heritage APIs. Assess the prevalence and exploit potential of unsound narrowings. Also Link corpus findings to benchmark results for broader insights &lt;a href="https://github.com/utahplt/TGUsage" target="_blank" rel="noopener">TGUsage&lt;/a>.&lt;/p>
&lt;h2 id="final-thoughts">Final Thoughts&lt;/h2>
&lt;p>Working on &lt;strong>Type Narrowing&lt;/strong> has been incredibly rewarding, it’s more than just code. It’s studying the type systems of different programming languages which is very important for the large scale software systems and softwware security, and I’m honored to be a part of that.&lt;/p>
&lt;p>Big thanks to my mentors &lt;strong>Ben Greenman&lt;/strong> for their support and thoughtful feedback throughout. I’ve learned a ton already, and I can’t wait to keep building.&lt;/p></description></item><item><title>AIDRIN Privacy-Centric Enhancements: Backend &amp; UX Upgrades</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre25/lbl/aidrin/20250725-harish_balaji/</link><pubDate>Fri, 25 Jul 2025 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre25/lbl/aidrin/20250725-harish_balaji/</guid><description>&lt;p>⏱️ Reading time: 5–6 minutes&lt;/p>
&lt;p>Hey everyone,&lt;/p>
&lt;p>If you’ve ever wondered what it takes to make AI data pipelines not just smarter, but safer and more transparent, you’re in the right place. The last few weeks working on AIDRIN for GSoC have been a deep dive into the engine room of privacy and backend systems that power the AIDRIN project. My focus has been on building out the core privacy infrastructure and backend features that power AIDRIN’s ability to give users real, actionable insights about their data. It’s been challenging, sometimes messy, but incredibly rewarding to see these changes make a tangible difference.&lt;/p>
&lt;p>Having Dr. Jean Luca Bez and Prof. Suren Byna as mentors, along with the support of the entire team, has truly made all the difference. Their guidance, encouragement, and collaborative spirit have been a huge part of this journey, whether I’m brainstorming new ideas or just trying to untangle a tricky bug.&lt;/p>
&lt;h2 id="privacy-metrics-making-data-safer">Privacy Metrics: Making Data Safer&lt;/h2>
&lt;p>A major part of my work has been putting data privacy at the front and center in AIDRIN. I focused on integrating essential privacy metrics like k-anonymity, l-diversity, t-closeness, and more, making sure they’re not just theoretical checkboxes, but real tools that users can interact with and understand. Now, these metrics are fully wired up in the backend and visualized in AIDRIN, so privacy risks are no longer just a vague concern. They are something AI data preparers can actually see and act on. Getting these metrics to work seamlessly with different datasets and ensuring their accuracy took some serious backend engineering, but the payoff has been worth it.&lt;/p>
&lt;h2 id="speeding-things-up-so-you-dont-have-to-wait-around">Speeding Things Up (So You Don’t Have To Wait Around)&lt;/h2>
&lt;p>As AIDRIN started handling bigger datasets, some of the calculations can be time-consuming because data has to be accessed every time a metric is computed. To address this, I added caching for previously computed metrics, like class imbalance and privacy checks, and set up asynchronous execution with Celery and Redis. This should make the app super responsive. Rather than waiting for heavy computations to finish, one can start taking notes about other metrics or explore different parts of the app while their results are loading in the background. It’s a small change, but it helps keep the workflow moving smoothly.&lt;/p>
&lt;h2 id="small-touch-ups-that-hopefully-make-a-big-difference">Small Touch Ups That (Hopefully) Make a Big Difference&lt;/h2>
&lt;p>I also spent time on the details that make the app easier to use. Tooltips now explain what the privacy metrics actually mean, error messages are clearer, and there’s a new cache info page where you can see and clear your cached data. The sensitive attribute dropdown is less confusing now, especially if you’re working with quasi-identifiers. These tweaks might seem minor, but they add up and make the app friendlier for everyone.&lt;/p>
&lt;h2 id="docs-docs-docs">Docs, Docs, Docs&lt;/h2>
&lt;p>I’m a big believer that good documentation is just as important as good code. I updated the docs to cover all the new features, added citations for the privacy metrics, and made the install process a bit more straightforward. Hopefully, this means new users and contributors can get up to speed without too much hassle.&lt;/p>
&lt;h2 id="huge-thanks-to-my-mentors-and-the-team">Huge Thanks to My Mentors and the Team&lt;/h2>
&lt;p>I really want to shine a light on Dr. Bez, Prof. Byna, and the entire AIDRIN team here. Their encouragement, practical advice, and collaborative spirit have been a huge part of my progress. Whether I’m stuck on a bug, brainstorming a new feature, or just need a second opinion, there’s always someone ready to help me think things through. Their experience and support have shaped not just the technical side of my work, but also how I approach problem-solving and teamwork.&lt;/p>
&lt;h2 id="whats-next">What’s Next?&lt;/h2>
&lt;p>Looking ahead, I’m planning to expand AIDRIN’s support for multimodal datasets and keep refining the privacy and fairness modules. There’s always something new to learn or improve, and I’m excited to keep building. If you’re interested in data quality, privacy, or open-source AI tools, I’d love to connect and swap ideas.&lt;/p>
&lt;p>Thanks for reading and for following along with my GSoC journey. I’ll be back soon with more updates!&lt;/p>
&lt;p>&lt;em>This is the second post in my 3-part GSoC series with AIDRIN. Stay tuned for the final update.&lt;/em>&lt;/p></description></item><item><title>Halfway Blog - WildBerryEye: Mechanical Design &amp; Weather-Resistant Enclosure</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre25/ucsc/wildberryeye/20250725-teolangan/</link><pubDate>Fri, 25 Jul 2025 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre25/ucsc/wildberryeye/20250725-teolangan/</guid><description>&lt;p>Hi everyone! My name is &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/content/authors/teolangan">Teodor Langan&lt;/a>, and I am an undergraduate studying Robotics Engineering at the University of California, Santa Cruz. I’m happy to share the progress I have been able to make over the last six weeks on my GSoC 2025 project. Over the last six weeks, I have been working on developing the hardware for the &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre25/ucsc/wildberryeye/">WildBerryEye&lt;/a> project, mentored by &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/content/authors/caiespin">Carlos Isaac Espinosa&lt;/a>.&lt;/p>
&lt;h2 id="project-overview">Project Overview&lt;/h2>
&lt;p>The WildBerryEye project enables AI-powered ecological monitoring using Raspberry Pi cameras and computer vision models. However, achieving this requires a reliable enclosure that can support long-term deployment in the wild. The goal for my project is to address this need by designing a modular, 3D-printable camera casing that protects WildBerryEye’s electronics from outside factors such as rain, dust, and bugs, while remaining easy to print and assemble. To achieve this, my main responsibilities for this project include:&lt;/p>
&lt;ul>
&lt;li>Implementing a modular design and development-friendly features for ease of assembly and flexible use across hardware setups&lt;/li>
&lt;li>Prototyping and testing enclosures outdoors to assess durability, water resistance, and ventilation—then iterating based on results&lt;/li>
&lt;li>Developing clear documentation, assembly instructions, and designing with open-source tools&lt;/li>
&lt;li>Exploring material options and print techniques to improve outdoor lifespan and environmental resilience&lt;/li>
&lt;/ul>
&lt;p>Designed largely with FreeCAD and tested in real outdoor conditions, the open-source enclosure will ensure WildBerryEye hardware can be deployed in natural environments for continuous, low-maintenance data collection.&lt;/p>
&lt;h2 id="progress-so-far">Progress So Far&lt;/h2>
&lt;p>Over the past 6 weeks, great progress has been made on the design of the WildBerryEye camera enclosure. Some key accomplishments include:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Full 3D Assembly Model of Electronics:&lt;/strong> Modeled all core components used in the WildBerryEye system to serve as a reference for enclosure design. For parts without existing CAD models, accurate measurements were taken and custom models were created in FreeCAD.&lt;/li>
&lt;li>&lt;strong>Initial Enclosure Prototype:&lt;/strong> Designed and 3D-printed a first full prototype featuring a hinge-latch mechanism to allow tool-free easy access to internal electronics for development and maintenance.&lt;/li>
&lt;li>&lt;strong>Design Iteration Based on Testing:&lt;/strong> Based on the results of the first print, created an improved version with better electronics integration, port alignment, and more functionality.&lt;/li>
&lt;/ul>
&lt;h2 id="challenges--next-steps">Challenges &amp;amp; Next Steps&lt;/h2>
&lt;ul>
&lt;li>&lt;strong>Field-Ready Integration:&lt;/strong> Preparing for field testing with upcoming prototypes by making sure that all internal electronics are securely mounted and fully accessible within the enclosure.&lt;/li>
&lt;li>&lt;strong>Latch Mechanism Refinement:&lt;/strong> Finalizing a reliable hinge-latch design that can keep the enclosure sealed during outdoor use while remaining easy to open for maintenance.&lt;/li>
&lt;li>&lt;strong>Balancing Modularity, Size, and Weatherproofing:&lt;/strong> Maintaining a compact form factor without compromising on modularity or weather resistance—especially when routing cables and mounting components.&lt;/li>
&lt;li>&lt;strong>Material Experimentation:&lt;/strong> Beginning test prints with TPU, a flexible filament that may provide improved seals or gaskets for added protection.&lt;/li>
&lt;li>&lt;strong>Ventilation Without Exposure:&lt;/strong> Exploring airflow solutions such as labyrinth-style vents to enable heat dissipation without letting in moisture or debris.&lt;/li>
&lt;/ul>
&lt;h2 id="final-thoughts">Final Thoughts&lt;/h2>
&lt;p>These past 6 weeks have helped me immensely to grow my skills in mechanical design, CAD modeling, and field-focused prototyping. The WildBerryEye system can help researchers monitor pollinators and other wildlife in their natural habitats without requiring constant in-person observation or high-maintenance setups. By enabling long-term, autonomous data collection in outdoor environments, it opens new possibilities for low-cost, scalable ecological monitoring.&lt;/p>
&lt;p>I’m especially grateful to my mentor &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/content/authors/caiespin">Carlos Isaac Espinosa&lt;/a> and the WildBerryEye team for their ongoing support. Excited for the second half, where the design will face real-world testing and help bring this impactful system one step closer to field deployment!&lt;/p></description></item><item><title>Mid-term Blog: Building a Simulator for Benchmarking Replicated Systems</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre25/umass/edge-replication/20250725-mchan/</link><pubDate>Fri, 25 Jul 2025 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre25/umass/edge-replication/20250725-mchan/</guid><description>&lt;h2 id="introduction">Introduction&lt;/h2>
&lt;p>Hello there, I&amp;rsquo;m Michael. In this report, I&amp;rsquo;ll be sharing my progress as part of the &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre25/umass/edge-replication/">Open Testbed for Reproducible Evaluation of Replicated Systems at the Edges&lt;/a> project under the mentorship of &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/fadhil-kurnia/">Fadhil Kurnia&lt;/a>.&lt;/p>
&lt;h2 id="about-the-project">About the Project&lt;/h2>
&lt;p>The goal of the project is to build a &lt;em>language-agnostic&lt;/em> interface that enables communication between clients and any consensus protocol such as MultiPaxos, Raft, Zookeeper Atomic Broadcast (ZAB), and others. Currently, many of these protocols implement their own custom mechanisms for the client to communicate with the group of peers in the network. An implementation of MultiPaxos from the &lt;a href="https://arxiv.org/abs/2405.11183" target="_blank" rel="noopener">MultiPaxos Made Complete&lt;/a> paper for example, uses a custom Protobuf definition for the packets client send to the MultiPaxos system. With the support of a generalized interface, different consensus protocols can now be tested under the same workload to compare their performance objectively.&lt;/p>
&lt;h2 id="progress">Progress&lt;/h2>
&lt;ul>
&lt;li>
&lt;p>&lt;strong>Literature Study:&lt;/strong>
Reviewed papers and implementations of various protocols including GigaPaxos, Raft, Viewstamped Replication (VSR), and ZAB. Analysis focused on their log replication strategies, fault handling, and performance implications.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Development of Custom Protocol:&lt;/strong>
Two custom protocols are currently under development and will serve as initial test subjects for the testbed:&lt;/p>
&lt;ul>
&lt;li>A modified GigaPaxos protocol&lt;/li>
&lt;li>A Primary-Backup Replication protocol with strict log ordering similar to ZAB (logs are ordered based on the sequence proposed by the primary)&lt;/li>
&lt;/ul>
&lt;p>Most of my time has been spent working on the two protocols, particularly on snapshotting and state transfer functionality in the Primary-Backup protocol. Ideally, the testbed should be able to evaluate protocol performance in scenarios involving node failure or a new node being added. In these scenarios, different protocol implementations often vary in their decision of whether to take periodic snapshots or to roll forward whenever possible and generate a snapshot only when necessary.&lt;/p>
&lt;/li>
&lt;/ul>
&lt;h2 id="challenges">Challenges&lt;/h2>
&lt;p>Early in the project, the initial goal was to benchmark different consensus protocols using arbitrary full-stack web applications as their workload. Different protocols would replicate a full-stack application running inside Docker containers across multiple nodes and the testbed would send requests for them to coordinate between those nodes. In fact, the 2 custom protocols being worked on are specifically made to fit these constraints.&lt;/p>
&lt;p>Developing a custom protocol that supports the replication of a Docker container is in itself already a difficult task. Abstracting away the functionality that allows communicating with the docker containers, as well as handling entry logs and snapshotting the state, is an order of magnitude more complicated.&lt;/p>
&lt;p>As mentioned in the &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre25/umass/edge-replication/20250613-mchan/">first blog&lt;/a>, an application can be categorized into two types: deterministic and non-deterministic applications. The coordination of these two types of applications are handled in very different ways. Most consensus protocols support only deterministic systems, such as key-value stores and can&amp;rsquo;t easily handle coordination of complex services or external side effects. To allow support for non-deterministic applications would require abstracting over protocol-specific log structures. This effectively restricts the interface to only support protocols that conform to the abstraction, defeating the goal of making the interface broadly usable and protocol-agnostic.&lt;/p>
&lt;p>Furthermore, in order to allow &lt;strong>any&lt;/strong> existing protocols to support running something as complex as a stateful docker container without the protocol itself even knowing adds another layer of complexity to the system.&lt;/p>
&lt;h2 id="future-goals">Future Goals&lt;/h2>
&lt;p>Given these challenges, I decided to pivot to using only key-value stores as the application being used in the benchmark. This aligns with the implementations of most of the existing protocols which typically use key-value stores. In doing so, now the main focus would be to implement an interface that supports HTTP requests from clients to any arbitrary protocols.&lt;/p></description></item><item><title>Midterm Blog: Open Testbed for Reproducible Evaluation of Replicated Systems at the Edges</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre25/umass/edge-replication/20250725-panjisri/</link><pubDate>Fri, 25 Jul 2025 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre25/umass/edge-replication/20250725-panjisri/</guid><description>&lt;p>Hello! I&amp;rsquo;m Panji Sri Kuncara Wisma and I want to share my midterm progress on the &amp;ldquo;Open Testbed for Reproducible Evaluation of Replicated Systems at the Edges&amp;rdquo; project under the mentorship of Fadhil I. Kurnia.&lt;/p>
&lt;h2 id="project-overview">Project Overview&lt;/h2>
&lt;p>The goal of our project is to create an open testbed that enables fair, reproducible evaluation of different consensus protocols (Paxos variants, EPaxos, Raft, etc.) when deployed at network edges. Currently, researchers struggle to compare these systems because they lack standardized evaluation environments and often rely on mock implementations of proprietary systems.&lt;/p>
&lt;p>XDN (eXtensible Distributed Network) is one of the important consensus systems we plan to evaluate in our benchmarking testbed. Built on GigaPaxos, it allows deployment of replicated stateful services across edge locations. As part of preparing our benchmarking framework, we need to ensure that the systems we evaluate, including XDN, are robust for fair comparison.&lt;/p>
&lt;h2 id="progress">Progress&lt;/h2>
&lt;p>As part of preparing our benchmarking tool, I have been working on refactoring XDN&amp;rsquo;s FUSE filesystem from C++ to Rust. This work is essential for creating a stable and reliable XDN platform.&lt;/p>
&lt;p>
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="System Architecture" srcset="
/report/osre25/umass/edge-replication/20250725-panjisri/fuselog_design_hu4e0250a1afb641f82d064bca3b5b892d_118470_5600401ae6570bf38b96fa89a080f4f7.webp 400w,
/report/osre25/umass/edge-replication/20250725-panjisri/fuselog_design_hu4e0250a1afb641f82d064bca3b5b892d_118470_6d3b555dbec3bdb305839eda9b227acf.webp 760w,
/report/osre25/umass/edge-replication/20250725-panjisri/fuselog_design_hu4e0250a1afb641f82d064bca3b5b892d_118470_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre25/umass/edge-replication/20250725-panjisri/fuselog_design_hu4e0250a1afb641f82d064bca3b5b892d_118470_5600401ae6570bf38b96fa89a080f4f7.webp"
width="760"
height="439"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;p>The diagram above illustrates how the FUSE filesystem integrates with XDN&amp;rsquo;s distributed architecture. On the left, we see the standard FUSE setup where applications interact with the filesystem through the kernel&amp;rsquo;s VFS layer. On the right, the distributed replication flow is shown: Node 1 runs &lt;code>fuselog_core&lt;/code> which captures filesystem operations and generates statediffs, while Nodes 2 and 3 run &lt;code>fuselog_apply&lt;/code> to receive and apply these statediffs, maintaining replica consistency across the distributed system.&lt;/p>
&lt;p>This FUSE component is critical for XDN&amp;rsquo;s operation as it enables transparent state capture and replication across edge nodes. By refactoring this core component from C++ to Rust, we&amp;rsquo;re hopefully strengthening the foundation for fair benchmarking comparisons in our testbed.&lt;/p>
&lt;h3 id="core-work-c-to-rust-fuse-filesystem-migration">Core Work: C++ to Rust FUSE Filesystem Migration&lt;/h3>
&lt;p>XDN relies on a FUSE (Filesystem in Userspace) component to capture filesystem operations and generate &amp;ldquo;statediffs&amp;rdquo; - records of changes that get replicated across edge nodes. The original C++ implementation worked but had memory safety concerns and limited optimization capabilities.&lt;/p>
&lt;p>I worked on refactoring from C++ to Rust, implementing several improvements:&lt;/p>
&lt;p>&lt;strong>New Features Added:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Zstd Compression&lt;/strong>: Reduces statediff payload sizes&lt;/li>
&lt;li>&lt;strong>Adaptive Compression&lt;/strong>: Intelligently chooses compression strategies&lt;/li>
&lt;li>&lt;strong>Advanced Pruning&lt;/strong>: Removes redundant operations (duplicate chmod/chown, created-then-deleted files)&lt;/li>
&lt;li>&lt;strong>Bincode Serialization&lt;/strong>: Helps avoid manual serialization code and reduces the risk of related bugs&lt;/li>
&lt;li>&lt;strong>Extended Operations&lt;/strong>: Added support for additional filesystem operations (mkdir, symlink, hardlinks, etc.)&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>Architectural Improvements:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Memory Safety&lt;/strong>: Rust&amp;rsquo;s ownership system helps prevent common memory management issues&lt;/li>
&lt;li>&lt;strong>Type Safety&lt;/strong>: Using Rust enums instead of integer constants for better type checking&lt;/li>
&lt;/ul>
&lt;h2 id="findings">Findings&lt;/h2>
&lt;p>The optimization results performed as expected:&lt;/p>
&lt;p>
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="Database Performance Comparison" srcset="
/report/osre25/umass/edge-replication/20250725-panjisri/performance_hudc10c2ffc95d775aedb0a1dad587d6fd_55711_cb1ea5caaa82d543dfeabd0c97f7c4fe.webp 400w,
/report/osre25/umass/edge-replication/20250725-panjisri/performance_hudc10c2ffc95d775aedb0a1dad587d6fd_55711_d65f44ef3f769dddda7f0211b94ad6b6.webp 760w,
/report/osre25/umass/edge-replication/20250725-panjisri/performance_hudc10c2ffc95d775aedb0a1dad587d6fd_55711_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre25/umass/edge-replication/20250725-panjisri/performance_hudc10c2ffc95d775aedb0a1dad587d6fd_55711_cb1ea5caaa82d543dfeabd0c97f7c4fe.webp"
width="760"
height="433"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;p>&lt;strong>Statediff Size Reductions:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>&lt;strong>MySQL workload&lt;/strong>: 572MB → 29.6MB (95% reduction)&lt;/li>
&lt;li>&lt;strong>PostgreSQL workload&lt;/strong>: 76MB → 11.9MB (84% reduction)&lt;/li>
&lt;li>&lt;strong>SQLite workload&lt;/strong>: 4MB → 29KB (99% reduction)&lt;/li>
&lt;/ul>
&lt;p>The combination of write coalescing, pruning, and compression proves especially effective for database workloads, where many operations involve small changes to large files.&lt;/p>
&lt;p>
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="Rust vs C&amp;#43;&amp;#43; Performance Comparison" srcset="
/report/osre25/umass/edge-replication/20250725-panjisri/latency_hu3b080735c91d058ad2f9cf67a54d5f14_21553_2adee964972897a04e60327dcfe9675e.webp 400w,
/report/osre25/umass/edge-replication/20250725-panjisri/latency_hu3b080735c91d058ad2f9cf67a54d5f14_21553_dd86a6fc0dabbac3beb17266f1f49002.webp 760w,
/report/osre25/umass/edge-replication/20250725-panjisri/latency_hu3b080735c91d058ad2f9cf67a54d5f14_21553_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre25/umass/edge-replication/20250725-panjisri/latency_hu3b080735c91d058ad2f9cf67a54d5f14_21553_2adee964972897a04e60327dcfe9675e.webp"
width="760"
height="470"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;p>&lt;strong>Performance Comparison:&lt;/strong>
Remarkably, the Rust implementation matches or exceeds C++ performance:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>POST operations&lt;/strong>: 30% faster (10.5ms vs 15ms)&lt;/li>
&lt;li>&lt;strong>DELETE operations&lt;/strong>: 33% faster (10ms vs 15ms)&lt;/li>
&lt;li>&lt;strong>Overall latency&lt;/strong>: Consistently better (9ms vs 11ms)&lt;/li>
&lt;/ul>
&lt;h2 id="current-challenges">Current Challenges&lt;/h2>
&lt;p>While the core implementation is complete and functional, I&amp;rsquo;m currently debugging occasional latency spikes that occur under specific workload patterns. These edge cases need to be resolved before moving on to the benchmarking phase, as inconsistent performance could compromise the reliability of the evaluation.&lt;/p>
&lt;h2 id="next-steps">Next Steps&lt;/h2>
&lt;p>With the FUSE filesystem foundation nearly complete, next steps include:&lt;/p>
&lt;ol>
&lt;li>&lt;strong>Resolve latency spike issues&lt;/strong> and complete XDN stabilization&lt;/li>
&lt;li>&lt;strong>Build benchmarking framework&lt;/strong> - a comparison tool that can systematically evaluate different consensus protocols with standardized metrics.&lt;/li>
&lt;li>&lt;strong>Run systematic evaluation&lt;/strong> across protocols&lt;/li>
&lt;/ol>
&lt;p>The optimized filesystem will hopefully provide a stable base for reproducible performance comparisons between distributed consensus protocols.&lt;/p></description></item><item><title>Reproducibility of Interactive Notebooks in Distributed Environments</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre25/depaul/notebook-rep/07252025-rahmad/</link><pubDate>Fri, 25 Jul 2025 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre25/depaul/notebook-rep/07252025-rahmad/</guid><description>&lt;p>I am sharing a overview of my project &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre25/ucsc/06122025-rahmad">Reproducibility of Interactive Notebooks in Distributed Environments&lt;/a> and an udpate at the midway mark.&lt;/p>
&lt;h1 id="project-overview">Project Overview&lt;/h1>
&lt;p>This project aims at improving the reproducibility of interactive notebooks which are executed in a distributed environment. Notebooks like in the &lt;a href="https://jupyter.org/" target="_blank" rel="noopener">Jupyter&lt;/a> environment have become increasingly popular and are widely used in the scientific community due to their ease of use and portability. Reproducing these notebooks is a challenging task especially in a distributed cluster environment.&lt;/p>
&lt;p>In the distributed environments we consider, the notebook code is divided into manager and worker code. The manager code is the main entry point of the program which divides the task at hand into one or more worker codes which run in a parallel, distributed fashion. We utlize several open source tools to package and containerize the application code which can be used to reproduce it across different machines and environments. They include &lt;a href="https://github.com/radiant-systems-lab/sciunit" target="_blank" rel="noopener">Sciunit&lt;/a>, &lt;a href="https://github.com/radiant-systems-lab/Flinc" target="_blank" rel="noopener">FLINC&lt;/a>, and &lt;a href="https://cctools.readthedocs.io/en/stable/taskvine/" target="_blank" rel="noopener">TaskVine&lt;/a>. These are the high-level goals of this project:&lt;/p>
&lt;ol>
&lt;li>Generate execution logs for a notebook program.&lt;/li>
&lt;li>Generate code and data dependencies for notebook programs in an automated manner.&lt;/li>
&lt;li>Utilize the generated dependencies at various granularities to automate the deployment and execution of notebooks in a parallel and distributed environment.&lt;/li>
&lt;li>Audit and pacakge the notebook code running in a distributed environment.&lt;/li>
&lt;/ol>
&lt;h1 id="progress-so-far">Progress So Far&lt;/h1>
&lt;p>Here are the details of the progress made so far.&lt;/p>
&lt;h2 id="generation-of-execution-logs">Generation of Execution Logs&lt;/h2>
&lt;p>We generate execution logs for the notebook programs in a distributed environment the Linux utility &lt;a href="https://man7.org/linux/man-pages/man1/strace.1.html" target="_blank" rel="noopener">strace&lt;/a> which records every system call made by the notebook. It includes all files accessed during its execution. We collect separate logs for both manager and the worker code since they are executed on different machines and the dependencies for both are different. By recording the entire notebook execution, we capture all libraries, packages, and data files referenced during notebook execution in the form of execution logs. These logs are then utilized for further analyses.&lt;/p>
&lt;h2 id="extracting-software-dependencies">Extracting Software Dependencies&lt;/h2>
&lt;p>When a library such as a Python package like &lt;em>Numpy&lt;/em> is used by the notebook program, an entry is made in the execution log which has the complete path of the accessed library file(s) along with additional information. We analyze the execution logs for both manager and workers to find and enlist all dependencies. So far, we are limited to Python packages, though this methodology is general and can be used to find dependencies for any programing langauge. For Python packages, their version numbers are also obtained by querying the pacakge managers like &lt;em>pip&lt;/em> or &lt;em>Conda&lt;/em> on the local system.&lt;/p>
&lt;h2 id="extracting-data-dependencies">Extracting Data Dependencies&lt;/h2>
&lt;p>We utilze similar execution logs to identify which data files were used by the notebook program. The list of logged files also contain various configuration or setting files used by certain packages and libraries. These files are removed from the list of data dependencies through post-processing done by analyzing file paths.&lt;/p>
&lt;h2 id="testing-the-pipeline">Testing the Pipeline&lt;/h2>
&lt;p>We have conducted our experiments on three use cases obtained from different domains using between 5 and 10 workers. They include distributed image convolution, climate trend analysis, and high energy physics experiment analysis. The results so far are promising with good accuracy and with a slight running time overhead.&lt;/p>
&lt;h1 id="next-steps">Next Steps&lt;/h1>
&lt;p>The next steps in this project are as follows:&lt;/p>
&lt;ol>
&lt;li>Generate the execution logs and dependencies in a notebook at the level of each cell of code.&lt;/li>
&lt;li>Utilize the dependencies at multiple levels of granularities with the goal of automating the deployment and execution of notebooks in a parallel and distributed environment.&lt;/li>
&lt;li>Audit notebook program execution in a distributed environment and package it into a container on a single node.&lt;/li>
&lt;/ol>
&lt;p>I am very happy abut the experience I have had so far in this project and I am excited about the milestones to come.
Stay tuned!&lt;/p></description></item><item><title>[MidTerm] Building PeerSky’s Settings System</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre25/ucsc/peersky/2025-07-24-6cobi/</link><pubDate>Thu, 24 Jul 2025 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre25/ucsc/peersky/2025-07-24-6cobi/</guid><description>&lt;p>Hi everyone, I’m Hanzhong Liu. My project focuses on building a secure and extensible &lt;code>peersky://settings&lt;/code> system for the &lt;a href="https://github.com/p2plabsxyz/peersky-browser" target="_blank" rel="noopener">PeerSky browser&lt;/a>, a decentralized and privacy-first browser built on Electron.&lt;/p>
&lt;p>This post is a midterm check-in covering what’s been implemented so far — from IPC architecture to real-time theme and wallpaper updates — and a preview of what’s coming next.&lt;/p>
&lt;h2 id="project-overview">Project Overview&lt;/h2>
&lt;p>Peersky’s new settings system is designed to unify browser preferences (themes, search engine, appearance, extensions, etc.) into a single modular interface. It’s accessible via a protocol route (&lt;code>peersky://settings&lt;/code>) and built using web-standard HTML/CSS, scoped APIs, and Electron’s context isolation model.&lt;/p>
&lt;h3 id="key-design-goals">Key Design Goals:&lt;/h3>
&lt;ul>
&lt;li>Secure preload-based API exposure via &lt;code>contextBridge&lt;/code>&lt;/li>
&lt;li>Fast access to user preferences with zero-flicker wallpaper updates&lt;/li>
&lt;li>Extensibility for bookmarks, future plugins, and privacy tools&lt;/li>
&lt;/ul>
&lt;h2 id="midterm-progress-highlights">Midterm Progress Highlights&lt;/h2>
&lt;h3 id="electron-integration">Electron Integration&lt;/h3>
&lt;p>Rather than using &lt;code>webFrame.executeJavaScript()&lt;/code>, I implemented preload-scoped APIs using &lt;code>contextBridge&lt;/code> and &lt;code>ipcRenderer&lt;/code> to prevent injection vulnerabilities and ensure synchronous availability during early page load. Each internal protocol (settings, home, bookmarks) is granted its own API access level.&lt;/p>
&lt;blockquote>
&lt;p>Code: &lt;a href="https://github.com/p2plabsxyz/peersky-browser/blob/main/src/pages/unified-preload.js" target="_blank" rel="noopener">&lt;code>src/pages/unified-preload.js&lt;/code>&lt;/a>&lt;/p>
&lt;/blockquote>
&lt;h3 id="modular-settings-page">Modular Settings Page&lt;/h3>
&lt;p>The UI lives in a single HTML file with sidebar-based navigation (Appearance, Search, Bookmarks, Extensions). Each section updates independently using event-driven IPC and live sync.&lt;/p>
&lt;h3 id="wallpaper--theme-switching">Wallpaper &amp;amp; Theme Switching&lt;/h3>
&lt;ul>
&lt;li>Supports both built-in wallpapers and custom uploads&lt;/li>
&lt;li>Background applies instantly using &lt;code>sendSync()&lt;/code> during preload&lt;/li>
&lt;li>Themes (light, dark, system) are controlled using root-level CSS variables and real-time IPC events&lt;/li>
&lt;/ul>
&lt;p>
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img src="https://hackmd.io/_uploads/S11q7M1Dee.png" alt="Wallpaper" loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;h3 id="cache--search-engine">Cache &amp;amp; Search Engine&lt;/h3>
&lt;ul>
&lt;li>Added IPC handler to clear both Electron session and P2P cache directories (&lt;code>ipfs/&lt;/code>, &lt;code>hyper/&lt;/code>)&lt;/li>
&lt;li>Settings API allows switching between DuckDuckGo, Ecosia, and Startpage via dropdown&lt;/li>
&lt;/ul>
&lt;h3 id="example-adding-a-new-setting-autosave">Example: Adding a New Setting (&lt;code>autoSave&lt;/code>)&lt;/h3>
&lt;p>I also documented how developers can add new settings like &lt;code>autoSave&lt;/code> using:&lt;/p>
&lt;ul>
&lt;li>&lt;code>settings-manager.js&lt;/code> for default values and validation&lt;/li>
&lt;li>Preload event listeners (&lt;code>onAutoSaveChanged&lt;/code>)&lt;/li>
&lt;li>UI toggles and save logic in &lt;code>settings.js&lt;/code>&lt;/li>
&lt;/ul>
&lt;p>Documentation link: &lt;a href="https://github.com/p2plabsxyz/peersky-browser/blob/main/docs/settings.md" target="_blank" rel="noopener">Settings Guide&lt;/a>&lt;/p>
&lt;h2 id="reflection">Reflection&lt;/h2>
&lt;p>I’m really thankful for the mentorship I’ve received from Akhilesh Thite. His guidance has been the perfect balance of autonomy and support. He challenged me to reason clearly about technical choices, especially when I thought some of them are minor and not worthing paying attention to. His feedback helped me write cleaner, better-scoped code. This project has helped me grow as a software engineer in ways I didn’t fully anticipate, but I&amp;rsquo;ve enjoyed it so so much.&lt;/p>
&lt;p>You can explore the project here:&lt;br>
&lt;a href="https://github.com/p2plabsxyz/peersky-browser" target="_blank" rel="noopener">https://github.com/p2plabsxyz/peersky-browser&lt;/a>&lt;/p></description></item><item><title>Midterm for Smart Environments</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre25/uchicago/smart_environments/20250724-sam_huang/</link><pubDate>Thu, 24 Jul 2025 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre25/uchicago/smart_environments/20250724-sam_huang/</guid><description>&lt;h2 id="what-is-envgym">What is EnvGym?&lt;/h2>
&lt;p>EnvGym is a general multi-agent framework designed to automate the construction of executable environments for reproducing research prototypes from top-tier conferences and journals. While reproducibility has become a growing concern in the research community, the process of setting up environments remains time-consuming, error-prone, and often poorly documented.&lt;/p>
&lt;p>EnvGym addresses this gap by leveraging LLM-powered agents to analyze project instructions, resolve dependencies, configure execution environments, and validate results—thereby reducing human overhead and improving reproducibility at scale.&lt;/p>
&lt;p>
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="EnvGym Cover" srcset="
/report/osre25/uchicago/smart_environments/20250724-sam_huang/cover_hue02fdf353b4e99cf1af213026c4f6804_1815797_30e3b2194be140fa608780847e6c7fa1.webp 400w,
/report/osre25/uchicago/smart_environments/20250724-sam_huang/cover_hue02fdf353b4e99cf1af213026c4f6804_1815797_d39b2369b5df80ffa715197c993f0681.webp 760w,
/report/osre25/uchicago/smart_environments/20250724-sam_huang/cover_hue02fdf353b4e99cf1af213026c4f6804_1815797_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre25/uchicago/smart_environments/20250724-sam_huang/cover_hue02fdf353b4e99cf1af213026c4f6804_1815797_30e3b2194be140fa608780847e6c7fa1.webp"
width="760"
height="760"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;h2 id="progress">Progress&lt;/h2>
&lt;h3 id="new-tools">New Tools&lt;/h3>
&lt;p>Initially, our agent had access to only one tool: the command line. This constrained the agent’s ability to decompose complex tasks and respond flexibly to failures. Over the last few weeks, we introduced a modular tool system, enabling the agent to handle specific subtasks more effectively.&lt;/p>
&lt;p>The new toolset includes:&lt;/p>
&lt;ul>
&lt;li>
&lt;p>dockerrun: Executes Dockerfiles.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>hardware_checking, hardware_adjustment: Tailor builds to available resources.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>history_manager, stats: Tracks historical data for improvement and reproducibility.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>planning: Generates high-level execution plans.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>summarize: Interprets build results to adjust subsequent iterations.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>writing_docker_initial, writing_docker_revision: Generate and refine Dockerfiles.&lt;/p>
&lt;/li>
&lt;/ul>
&lt;p>While some of those tools, such as dockerrun, run programmatic scripts, other scripts such as planning are more complex and use LLMs themselves.&lt;/p>
&lt;h3 id="agent-re-architecture-moving-beyond-codex">Agent Re-Architecture: Moving Beyond Codex&lt;/h3>
&lt;p>We transitioned away from OpenAI&amp;rsquo;s Codex agent implementation. While powerful, Codex&amp;rsquo;s framework was overly reliant on its CLI frontend, which added unnecessary complexity and limited customizability for our research context.&lt;/p>
&lt;p>We implemented our own lightweight, customizable agent pipeline that integrates LLM-based planning with iterative execution. Conceptually, the agent executes the following loop:&lt;/p>
&lt;ul>
&lt;li>
&lt;p>Repo Scanning&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Hardware Check&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Planning &amp;amp; Initial Dockerfile Generation&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Docker Execution&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Progress Summarization &amp;amp; Adjustment&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Iterative Dockerfile Refinement (up to 20 rounds)&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Success Check &amp;amp; Logging&lt;/p>
&lt;/li>
&lt;/ul>
&lt;p>This new agent design is easier to control, extend, and debug—aligning better with the needs of reproducibility research.&lt;/p>
&lt;h3 id="prompt-engineering">Prompt Engineering&lt;/h3>
&lt;p>For each tool that requires LLMs to function, we created a set of custom prompts that outline the task and breaks down the goals. For instance, the prompt used in summarize differs from the one in planning, allowing us to optimize the behavior of LLM agents per context.&lt;/p>
&lt;h3 id="performance-gains">Performance Gains&lt;/h3>
&lt;p>With these improvements, EnvGym now successfully replicates 9 repositories, surpassing our baseline Codex agent which struggled with the same set. We’ve observed more reliable planning, better handling of edge-case dependencies, and faster convergence in iterative Dockerfile revisions.&lt;/p>
&lt;h2 id="next-steps">Next Steps&lt;/h2>
&lt;h3 id="granular-evaluation-metric">Granular Evaluation Metric&lt;/h3>
&lt;p>We plan to adopt a tree-structured rubric-based evaluation, inspired by PaperBench. Instead of binary success/failure, each repo will be assigned a reproducibility score from 0–100.&lt;/p>
&lt;p>Key tasks include:&lt;/p>
&lt;ul>
&lt;li>
&lt;p>Rubric Design: Define a hierarchical rubric with criteria like dependency resolution, test success rate, runtime match, etc.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Manual Annotation: Build a dataset of ground-truth rubrics for a subset of repos to calibrate our automatic judge.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Judge Implementation: Develop an LLM-based judge function that takes (i) rubric and (ii) environment state, and returns a reproducibility score.&lt;/p>
&lt;/li>
&lt;/ul>
&lt;p>
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="Example of a rubric tree" srcset="
/report/osre25/uchicago/smart_environments/20250724-sam_huang/rubric-tree_hu9020427fa0020bc8ab99a7f01a351cd0_70521_ae181d659b85544bd98fa2bbdbe0c09d.webp 400w,
/report/osre25/uchicago/smart_environments/20250724-sam_huang/rubric-tree_hu9020427fa0020bc8ab99a7f01a351cd0_70521_700416bce638eba7acc49573f12b11b0.webp 760w,
/report/osre25/uchicago/smart_environments/20250724-sam_huang/rubric-tree_hu9020427fa0020bc8ab99a7f01a351cd0_70521_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre25/uchicago/smart_environments/20250724-sam_huang/rubric-tree_hu9020427fa0020bc8ab99a7f01a351cd0_70521_ae181d659b85544bd98fa2bbdbe0c09d.webp"
width="557"
height="497"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
Source: Starace, Giulio, et al. &amp;ldquo;PaperBench: Evaluating AI&amp;rsquo;s Ability to Replicate AI Research.&amp;rdquo; arXiv preprint arXiv:2504.01848 (2025).&lt;/p>
&lt;p>This will make EnvGym suitable for benchmarking. We will run our new method and obtain a score to compare with baseline methods!&lt;/p>
&lt;h2 id="conclusion">Conclusion&lt;/h2>
&lt;p>EnvGym has made strong progress toward automating reproducibility in computational research. Through modularization, agentic design, and prompt optimizations, we’ve surpassed existing baselines and laid the groundwork for even more improvement.&lt;/p>
&lt;p>The upcoming focus on metrics and benchmarking will elevate EnvGym from a functional prototype to a standardized reproducibility benchmark tool and also quantitatively prove that our new agentic method is better than existing tools such as Codex. Excited for what&amp;rsquo;s to come!&lt;/p>
&lt;p>Autofill&lt;/p>
&lt;p>;
20250724-Sam_Huang&lt;/p></description></item><item><title>Midway Through GSoC: ENTS</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre25/ucsc/ents/24-07-2025-devansh/</link><pubDate>Thu, 24 Jul 2025 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre25/ucsc/ents/24-07-2025-devansh/</guid><description>&lt;h1 id="midway-through-gsoc">Midway Through GSoC&lt;/h1>
&lt;p>Hi everyone! I’m &lt;strong>Devansh Kukreja&lt;/strong>, and I’m excited to share a midterm update on my &lt;a href="https://summerofcode.withgoogle.com/programs/2025/projects/OPlG0KHV" target="_blank" rel="noopener">Google Summer of Code 2025 project&lt;/a> with the &lt;strong>University of California, Santa Cruz Open Source Program Office (UC OSPO)&lt;/strong> under the &lt;strong>Open Source Research Experience (OSRE)&lt;/strong>. I&amp;rsquo;m contributing to &lt;a href="https://github.com/jlab-sensing/ENTS-backend" target="_blank" rel="noopener">&lt;strong>ENTS&lt;/strong>&lt;/a>, a platform that supports real-time monitoring and visualization of environmental sensor networks.&lt;/p>
&lt;h2 id="project-overview">Project Overview&lt;/h2>
&lt;p>The &lt;strong>Environmental NeTworked Sensor (ENTS)&lt;/strong> platform is an open-source web portal designed to collect, visualize, and analyze data from distributed sensor networks. It’s used by researchers and citizen scientists to monitor field-deployed sensors measuring soil moisture, temperature, voltage, and current—supporting critical research on sustainability and environmental change.&lt;/p>
&lt;p>My project focuses on improving the platform’s &lt;strong>stability, usability, and extensibility&lt;/strong> through:&lt;/p>
&lt;ul>
&lt;li>Fixing bugs in the data visualization components.&lt;/li>
&lt;li>Enhancing real-time chart synchronization and data point selection.&lt;/li>
&lt;li>Improving overall system error handling and reliability.&lt;/li>
&lt;li>Building a &lt;strong>Logger Registration System&lt;/strong> that enables users to register and configure their logging devices.&lt;/li>
&lt;li>Exploring integration with &lt;strong>The Things Network (TTN)&lt;/strong> to support LoRaWAN-based wireless sensor connectivity.&lt;/li>
&lt;/ul>
&lt;h2 id="progress-so-far">Progress So Far&lt;/h2>
&lt;p>During the first half of the GSoC period, I focused on laying the groundwork for a more robust and user-friendly system. Highlights include:&lt;/p>
&lt;ul>
&lt;li>
&lt;p>&lt;strong>Enhanced date range logic:&lt;/strong> Improved the way the dashboard selects time periods by automatically choosing a recent two-week window with valid sensor data. This ensures charts always display meaningful insights and avoids showing blank states.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Improved chart rendering:&lt;/strong> Refined how charts behave when there&amp;rsquo;s no data or when unusual values (like negatives) are present. This includes smoother axis alignment and fallback messaging when data is unavailable.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Refactored cell management UI:&lt;/strong> Cleaned up and improved the modals used to manage cells and sensors, fixing several UI/UX issues and bugs to make interactions more intuitive and consistent.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Enabled smart URL syncing:&lt;/strong> The dashboard state now stays in sync with the URL, making it easier to share specific views or navigate back to previous states without losing context.&lt;/p>
&lt;/li>
&lt;/ul>
&lt;h2 id="whats-next">What&amp;rsquo;s Next&lt;/h2>
&lt;p>In the second half of the program, I’ll be focusing on:&lt;/p>
&lt;ul>
&lt;li>Building out and polishing the &lt;strong>Logger Registration UI&lt;/strong> based on the backend schema and wireframes.&lt;/li>
&lt;li>Finalizing the onboarding flow for field loggers, linking registration data to ingestion and dashboard views.&lt;/li>
&lt;li>Continuing work on LoRaWAN support with &lt;strong>TTN&lt;/strong>, aiming to enable basic OTA provisioning for future deployments.&lt;/li>
&lt;li>Exploring an admin dashboard that helps visualize device health, sync status, and alert on any anomalies.&lt;/li>
&lt;/ul>
&lt;h2 id="final-thoughts">Final Thoughts&lt;/h2>
&lt;p>Working on ENTS has been incredibly rewarding—it’s more than just code. It’s about making tools that help scientists and conservationists understand our changing environment, and I’m honored to be a part of that.&lt;/p>
&lt;p>Big thanks to my mentors &lt;strong>Colleen Josephson&lt;/strong>, &lt;strong>John Madden&lt;/strong>, and &lt;strong>Alec Levy&lt;/strong> for their support and thoughtful feedback throughout. I’ve learned a ton already, and I can’t wait to keep building.&lt;/p></description></item><item><title>Optimizing and Benchmarking GPU Collective Communication of PyLops-MPI with NCCL</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre25/lbl/pylops-mpi/20250723-tharit/</link><pubDate>Wed, 23 Jul 2025 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre25/lbl/pylops-mpi/20250723-tharit/</guid><description>&lt;h1 id="enabling-nccl-gpu-gpu-communication-in-pylops-mpi---google-summer-of-code-project-2025---part-1">Enabling NCCL GPU-GPU Communication in PyLops-MPI - Google Summer of Code Project (2025) - Part 1&lt;/h1>
&lt;p>Hello all! 👋 My name is Tharit, and I&amp;rsquo;m a computer science student at the University of Texas at Austin. This summer, I am fortunate to participate in the Google Summer of Code (GSoC) 2025 program, hosted by &lt;a href="https://ucsc-ospo.github.io/" target="_blank" rel="noopener">UC OSPO&lt;/a> and the &lt;a href="https://github.com/PyLops/pylops" target="_blank" rel="noopener">PyLops&lt;/a> team. My project focuses on enabling NCCL GPU-to-GPU communication in &lt;a href="https://github.com/PyLops/pylops-mpi" target="_blank" rel="noopener">PyLops-MPI&lt;/a>, under the guidance of mentors Matteo Ravasi and Yuxi Hong.&lt;/p>
&lt;p>You might have come across this post if you&amp;rsquo;re a PyLops user interested in scaling &lt;a href="https://github.com/PyLops/pylops-mpi" target="_blank" rel="noopener">PyLops-MPI&lt;/a> with GPU/NCCL support, or if you&amp;rsquo;re exploring GSoC projects and wondering what we are up to. Either way, I hope this post gives you useful insights.&lt;/p>
&lt;h2 id="what-is-pylops-mpi">What is PyLops-MPI?&lt;/h2>
&lt;p>If you&amp;rsquo;ve worked with inverse problems, you&amp;rsquo;ve likely come across &lt;a href="https://github.com/PyLops/pylops" target="_blank" rel="noopener">PyLops&lt;/a>. It&amp;rsquo;s a Python library that provides an extensive suite of linear operators and solvers. Operators are designed with a clear focus on the forward and adjoint pair (A and A.T) whilst solvers take operators and data to solve the associate inverse problem. In fields such as geophysics, astrophysics, or medical imaging,, inverse problem are solved routinely to &lt;a href="https://www.ae.utexas.edu/news/inverse-problem-solving-bui-than" target="_blank" rel="noopener">image the Earth, the space, or the human body from remote measurements&lt;/a>. In all cases, real-life problems tend to consume a lot of computing and require a lot of memory. PyLops allows users to express these problems in an abstract manner that is reminiscent of the underlying equations whilst not compromising on efficiency.&lt;/p>
&lt;p>&lt;a href="https://github.com/PyLops/pylops-mpi" target="_blank" rel="noopener">PyLops-MPI&lt;/a> is the distributed extension of PyLops, introduced during &lt;a href="https://summerofcode.withgoogle.com/archive/2023/projects/eNJTJO25" target="_blank" rel="noopener">GSoC 2023&lt;/a>. It enables users to scale their computations over CPU and GPU clusters via MPI. However, up until now, even GPU-based communications were routed through MPI, introducing potential performance bottlenecks.&lt;/p>
&lt;h2 id="the-goal-of-the-project">The Goal of the Project&lt;/h2>
&lt;p>Our goal is to take PyLops-MPI to the next level by enabling GPU-to-GPU collective communications directly using NVIDIA NCCL. This allows full utilization of high-bandwidth interconnects like &lt;a href="https://www.nvidia.com/en-us/data-center/nvlink/" target="_blank" rel="noopener">NVLink&lt;/a>, and avoids unnecessary memory transfers through the host CPU.
This blog marks the midpoint of the program (week 6 of 12), and I’d like to reflect on the progress so far, challenges faced, and what&amp;rsquo;s coming next.&lt;/p>
&lt;h2 id="what-is-a-collective-communication-anyway">What is a Collective Communication anyway?&lt;/h2>
&lt;p>In PyLops-MPI, distributed computations require nodes to exchange information, for example, during gradient computations or reductions in iterative solvers. A naive implementation (useful for a thought experiment) would involve each node taking turns broadcasting data, which can be quite slow.
NVIDIA’s NCCL abstracts away the complexity of topology-aware communication. For example, in the image below, if GPUs are most effective by communicating in a ring fashion for all-reduce operation, NCCL will automatically pick that layout and not use GPU 01-GPU 04 and GPU 02-GPU 03 communication links.&lt;/p>
&lt;p align="center">
&lt;img src="network.png" alt="network" width="800/>
&lt;/p>
&lt;p>&lt;em>Example of a compute node with 4 GPUs attached, directly connected to each other with NVLink&lt;/em>&lt;/p>
&lt;h2 id="what-we-achieved-so-far">What we achieved, so far&lt;/h2>
&lt;p>It is probably best to tell stories through the sequence of pull requests.&lt;/p>
&lt;h3 id="core-changes-in-distributedarray-pr-130httpsgithubcompylopspylops-mpipull130">Core Changes in DistributedArray (&lt;a href="https://github.com/PyLops/pylops-mpi/pull/130" target="_blank" rel="noopener">PR #130&lt;/a>)&lt;/h3>
&lt;p>This PR introduces NCCL support into the &lt;code>DistributedArray&lt;/code> class. The design allows users to optionally pass both a &lt;code>NcclCommunicator&lt;/code> and a &lt;code>MPI.Comm&lt;/code>. By doing so, small control data (e.g., shape, dtype) is still exchanged via MPI, leveraging Python&amp;rsquo;s flexibility and minimizing performance impact. As you will see, this decision to keep two communicators turns out to be a good call.
This is how the &lt;code>__init__&lt;/code> method of &lt;code>DistributedArray&lt;/code> looks like with the new addition in bold:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl"> &lt;span class="k">def&lt;/span> &lt;span class="fm">__init__&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="bp">self&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">global_shape&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="n">Union&lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="n">Tuple&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">Integral&lt;/span>&lt;span class="p">],&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">base_comm&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="n">Optional&lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="n">MPI&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">Comm&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">MPI&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">COMM_WORLD&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">base_comm_nccl&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="n">Optional&lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="n">NcclCommunicatorType&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="kc">None&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="c1"># Added to this line&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">partition&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="n">Partition&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">Partition&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">SCATTER&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">axis&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="nb">int&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="mi">0&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">local_shapes&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="n">Optional&lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="n">List&lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="n">Union&lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="n">Tuple&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">Integral&lt;/span>&lt;span class="p">]]]&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="kc">None&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">mask&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="n">Optional&lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="n">List&lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="n">Integral&lt;/span>&lt;span class="p">]]&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="kc">None&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="the-cupys-nccl-api">The CuPy&amp;rsquo;s NCCL API&lt;/h3>
&lt;p>NCCL&amp;rsquo;s API (&lt;a href="https://docs.nvidia.com/deeplearning/nccl/user-guide/docs/api/colls.html" target="_blank" rel="noopener">mirroring its C++ origins&lt;/a>) is minimalistic, requiring manual memory management. One prominent example is the implementation of &lt;code>allGather()&lt;/code> Previously, using &lt;code>mpi4py&lt;/code> we could leverage the Python dynamic typing nature (everything is an object, so one just sends the object). This means &lt;code>mpi4py&lt;/code> allows different ranks to send different sizes of arrays. NCCL requires every rank in the communicator to send the same size. To work around this, we implemented padding and reshaping logic in multi-dimensional arrays. NCCL treats arrays as contiguous byte streams, so padding must be handled carefully &lt;sup id="fnref:1">&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref">1&lt;/a>&lt;/sup>.&lt;/p>
&lt;p>Moreover, we had to accommodate NCCL’s lower-level API, lacking conveniences like communicator’s split variants. Internally, we introduced unified abstractions such as &lt;code>_allgather()&lt;/code>, &lt;code>_allreduce()&lt;/code>, &lt;code>send()&lt;/code>, &lt;code>recv()&lt;/code>. etc to &lt;code>DistributedArray&lt;/code> and modified the communication model to work seamlessly whether MPI or NCCL is used. By doing this, other developers can focus on developing new operators (that suit their needs), and abstract away the existence of different communicators.&lt;/p>
&lt;p align="center">
&lt;img src="partition.png" alt="partition" width="800/>
&lt;/p>
&lt;p>&lt;em>Example of a challenge coming from having an unevenly distributed array&lt;/em>&lt;/p>
&lt;h3 id="keep-things-small-dependency-management-pr-132httpsgithubcompylopspylops-mpipull132-and-pr-135httpsgithubcompylopspylops-mpipull135">Keep things small: Dependency management (&lt;a href="https://github.com/PyLops/pylops-mpi/pull/132" target="_blank" rel="noopener">PR #132&lt;/a> and &lt;a href="https://github.com/PyLops/pylops-mpi/pull/135" target="_blank" rel="noopener">PR #135&lt;/a>)&lt;/h3>
&lt;p>Despite adding this new capability, we are fully aware that not every user has access to a cluster of GPU and therefore we don’t make NCCL and CuPy mandatory dependencies. The first time someoneinstalls and experiments with PyLops-MPI is likely to run it on a single-node desktop. And we don’t want to introduce such complexity early on. This means that our code has to accommodate “optional dependency” or have a “protected import”. If we have &lt;code>import cupy as cp&lt;/code> at the beginning of &lt;code>DistributedArray&lt;/code>, users without GPU will encounter an error before doing anything useful at all.
In other words, our library should import CuPy and NCCL automatically when both the system enables it and users also ask for it. The pattern looks like &lt;a href="%28https://github.com/PyLops/pylops-mpi/blob/main/pylops_mpi/utils/deps.py%29">this&lt;/a>:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="n">nccl_test&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">util&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">find_spec&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34;cupy&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="ow">is&lt;/span> &lt;span class="ow">not&lt;/span> &lt;span class="kc">None&lt;/span> &lt;span class="ow">and&lt;/span> &lt;span class="nb">int&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">os&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">getenv&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34;NCCL_PYLOPS_MPI&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="mi">1&lt;/span>&lt;span class="p">))&lt;/span> &lt;span class="o">==&lt;/span> &lt;span class="mi">1&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">if&lt;/span> &lt;span class="n">nccl_test&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1"># try import CuPy and then check for NCCL&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">if&lt;/span> &lt;span class="n">nccl&lt;/span> &lt;span class="ow">is&lt;/span> &lt;span class="n">available&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1"># success&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">else&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1"># unable to import but the package is installed&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">else&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1"># package is not installed or the environment variable disables it&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Finally, set nccl_enabled flag for other module to use for protected import&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>This helps preserve PyLops-MPI’s minimal base installation. This required carefully isolating imports and adapting the module resolution logic using a backend dispatching mechanism.
This is something I never thought of or took it into consideration before.&lt;/p>
&lt;h3 id="the-basic-operator-with-nccl-pr-137httpsgithubcompylopspylops-mpipull137">The Basic Operator with NCCL &lt;a href="https://github.com/PyLops/pylops-mpi/pull/137" target="_blank" rel="noopener">PR 137&lt;/a>&lt;/h3>
&lt;p>We chose &lt;code>MPIVStack&lt;/code> as the first operator to implement NCCL support due to its simplicity. Several design choices emerged:&lt;/p>
&lt;h4 id="implicit-communicator-propagation">Implicit Communicator Propagation&lt;/h4>
&lt;p>We updated forward and adjoint calls to propagate the &lt;code>base_comm_nccl&lt;/code> from input to output automatically. This way, if &lt;code>x&lt;/code> is NCCL-enabled, then &lt;code>y = A @ x&lt;/code> or &lt;code>A.H @ x&lt;/code> will also be NCCL-enabled. This avoids mismatches and keeps operator pipelines consistent.&lt;/p>
&lt;p>Interestingly, the operator itself did not need to explicitly take base_comm_nccl as an argument, reducing complexity for developers extending PyLops-MPI. This point is contrary to our initial expectation. The operator does not have to take &lt;code>base_comm_nccl&lt;/code> like &lt;code>DistributedArray&lt;/code> did. This is good news. This reduces the potential that other developers may have to deal with different cases of communication when adding new operators.&lt;/p>
&lt;h4 id="optional-dual-communicator-design">Optional Dual-Communicator Design&lt;/h4>
&lt;p>As with DistributedArray, the ability to pass both an MPI communicator and an NCCL communicator proved to be a sound decision. By maintaining NCCL as an optional backend, we gain fine-grained control over which communication paths use NCCL versus MPI. This flexibility allowed us to optimize performance-critical paths while retaining MPI for control messages and small metadata transfers.&lt;/p>
&lt;p>In particular, in the communication of ghost cells, which are used for computation around the boundary, like in derivative calculation, small metadata, such as cell_fronts (typically lists of rank-sized integers) continues to be efficiently transmitted via MPI. These metadata are needed for send/receiver buffer allocations. This leverages Python&amp;rsquo;s object serialization model (&lt;code>list[int]&lt;/code>) without incurring GPU synchronization costs. But the actual cell array itself is communicated with NCCL since these arrays can be large.&lt;/p>
&lt;h2 id="whats-next">What’s Next?&lt;/h2>
&lt;p>Aside from enabling NCCL support for the remaining operators and their full test coverage, some more exciting upcoming updates are&lt;/p>
&lt;ul>
&lt;li>Complex-number type support for NCCL&lt;/li>
&lt;li>Benchmarking results on a real HPC system&lt;/li>
&lt;/ul>
&lt;p>Stay tuned for Part 2, and thanks for reading!&lt;/p>
&lt;div class="footnotes" role="doc-endnotes">
&lt;hr>
&lt;ol>
&lt;li id="fn:1">
&lt;p>For the best performance mpi4py would require the buffer memory allocation as well. The mpi4py package provides two interface: buffered and non-bufferred. Currently PyLops-MPI takes the non-buffered approach. This suggest a room of optimization.&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>LLMSeqRec: LLM Enhanced Contextual Sequential Recommender</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre25/sf/llmseqrec/20250722-connor/</link><pubDate>Tue, 22 Jul 2025 10:15:56 -0700</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre25/sf/llmseqrec/20250722-connor/</guid><description>&lt;h1 id="midway-through-osre">Midway Through OSRE&lt;/h1>
&lt;h2 id="my-journey-with-llmseqrec">My Journey with LLMSeqRec&lt;/h2>
&lt;h3 id="hello-from-the-midpoint">Hello from the Midpoint!&lt;/h3>
&lt;p>Hi everyone! I’m Connor Lee, a student at NYU studying Computer Science and Mathematics, and I’m excited to share the progress I’ve made halfway through the Open Source Research Experience (OSRE) with my project: &lt;strong>LLMSeqRec&lt;/strong> – a large language model-enhanced sequential recommender system.&lt;/p>
&lt;p>Over the past several weeks, I’ve had the opportunity to explore the intersection of recommender systems and large language models (LLMs), and it’s been a deep, challenging, and rewarding dive into building smarter, more contextual recommendation engines.&lt;/p>
&lt;hr>
&lt;h3 id="what-is-llmseqrec">What is LLMSeqRec?&lt;/h3>
&lt;p>&lt;strong>LLMSeqRec&lt;/strong> stands for &lt;strong>LLM-Enhanced Contextual Sequential Recommender&lt;/strong>. Traditional sequential recommendation systems like SASRec are great at capturing patterns from user-item interactions, but they often fall short in two areas: understanding &lt;strong>semantic context&lt;/strong> (e.g., item descriptions, reviews) and dealing with &lt;strong>cold-start&lt;/strong> problems.&lt;/p>
&lt;p>LLMSeqRec aims to address this by incorporating &lt;strong>pretrained LLM embeddings&lt;/strong> into the recommendation pipeline. The goal is to enhance models like SASRec with semantic signals from text (like product reviews or titles), allowing them to better model user intent, long-range dependencies, and generalize to new items or users.&lt;/p>
&lt;hr>
&lt;h3 id="progress-so-far">Progress So Far&lt;/h3>
&lt;h4 id="-baseline-sasrec-runs">✅ Baseline SASRec Runs&lt;/h4>
&lt;p>To establish a benchmark, I successfully ran the original SASRec implementation (in PyTorch) using both the &lt;strong>MovieLens 1M&lt;/strong> and &lt;strong>Amazon Beauty&lt;/strong> datasets. After debugging initial data formatting issues and adjusting batch sizes for local CPU/GPU compatibility, I automated training with scripts that let me scale to &lt;strong>200+ epochs&lt;/strong> to acheive the best performance in both Colab and on my MacBook via CPU.&lt;/p>
&lt;p>&lt;strong>Note:&lt;/strong> At this stage, we have not yet integrated LLMs into the model. These baseline runs (SASRec) serve as the control group for evaluating the future impact of LLM-based enhancements.&lt;/p>
&lt;hr>
&lt;h3 id="whats-next">What’s Next&lt;/h3>
&lt;p>As I enter the second half of the OSRE, I’ll be shifting gears toward &lt;strong>LLM integration, model evaluation, and running LLM-powered sequential recommendations using product metadata and contextual information&lt;/strong>. Here&amp;rsquo;s what’s ahead:&lt;/p>
&lt;ul>
&lt;li>Designing pipelines to extract and align textual metadata with item sequences&lt;/li>
&lt;li>Integrating LLM-generated embeddings into the recommender model&lt;/li>
&lt;li>Evaluating performance changes across different dataset characteristics&lt;/li>
&lt;/ul>
&lt;hr>
&lt;h3 id="-experimental-results">📊 Experimental Results&lt;/h3>
&lt;p>We have &lt;strong>not yet utilized LLMs&lt;/strong> in our current experiments. The results below reflect our &lt;strong>reproduced baseline performance of SASRec&lt;/strong> across datasets.&lt;/p>
&lt;p>Below are the &lt;strong>performance curves on different test sets&lt;/strong>, where we evaluate model performance every 20 epochs during training:&lt;/p>
&lt;h4 id="beauty-dataset-performance">Beauty Dataset Performance&lt;/h4>
&lt;p>
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="Beauty Hit@10 Performance" srcset="
/report/osre25/sf/llmseqrec/20250722-connor/beauty-hr_hu655ec71a9ef1f87543ab22378365f6fe_152488_6d3cf991cc5172e392edbb398afef774.webp 400w,
/report/osre25/sf/llmseqrec/20250722-connor/beauty-hr_hu655ec71a9ef1f87543ab22378365f6fe_152488_91a98a3d515a172aed7283ab8b04a8b6.webp 760w,
/report/osre25/sf/llmseqrec/20250722-connor/beauty-hr_hu655ec71a9ef1f87543ab22378365f6fe_152488_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre25/sf/llmseqrec/20250722-connor/beauty-hr_hu655ec71a9ef1f87543ab22378365f6fe_152488_6d3cf991cc5172e392edbb398afef774.webp"
width="760"
height="497"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;em>Hit@10 performance on the test set for the Beauty dataset (every 20 epochs)&lt;/em>&lt;/p>
&lt;p>
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="Beauty Loss Training" srcset="
/report/osre25/sf/llmseqrec/20250722-connor/beauty-loss-epoch_huc2cddabd12f6ed04444e319cba850bc9_141963_f4e0cc23660b4c974056c8b5d603c0ca.webp 400w,
/report/osre25/sf/llmseqrec/20250722-connor/beauty-loss-epoch_huc2cddabd12f6ed04444e319cba850bc9_141963_7c62f735e3e920d3561bd9113c662533.webp 760w,
/report/osre25/sf/llmseqrec/20250722-connor/beauty-loss-epoch_huc2cddabd12f6ed04444e319cba850bc9_141963_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre25/sf/llmseqrec/20250722-connor/beauty-loss-epoch_huc2cddabd12f6ed04444e319cba850bc9_141963_f4e0cc23660b4c974056c8b5d603c0ca.webp"
width="760"
height="489"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;em>Training loss for the Beauty dataset&lt;/em>&lt;/p>
&lt;p>
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="Beauty NDCG@10 Performance" srcset="
/report/osre25/sf/llmseqrec/20250722-connor/beauty-ndcg_hu4bef43ef38566a5009aa70da37ebbc50_151414_a1a39dc055b888f5de47c25c87ccf913.webp 400w,
/report/osre25/sf/llmseqrec/20250722-connor/beauty-ndcg_hu4bef43ef38566a5009aa70da37ebbc50_151414_3e4c7d0050bef8ec9f8f7928c2c6c7af.webp 760w,
/report/osre25/sf/llmseqrec/20250722-connor/beauty-ndcg_hu4bef43ef38566a5009aa70da37ebbc50_151414_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre25/sf/llmseqrec/20250722-connor/beauty-ndcg_hu4bef43ef38566a5009aa70da37ebbc50_151414_a1a39dc055b888f5de47c25c87ccf913.webp"
width="760"
height="483"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;em>NDCG@10 performance on the test set for the Beauty dataset (every 20 epochs)&lt;/em>&lt;/p>
&lt;h4 id="ml-1m-dataset-performance">ML-1M Dataset Performance&lt;/h4>
&lt;p>
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="ML-1M Loss Training" srcset="
/report/osre25/sf/llmseqrec/20250722-connor/m1-m1-loss-epoch_hua4b125e87ed4debb93bde68ff9b86489_146604_828aa4c04e00024c863cb89e245d358a.webp 400w,
/report/osre25/sf/llmseqrec/20250722-connor/m1-m1-loss-epoch_hua4b125e87ed4debb93bde68ff9b86489_146604_d913a345a32ce7ac5bcff72438283a01.webp 760w,
/report/osre25/sf/llmseqrec/20250722-connor/m1-m1-loss-epoch_hua4b125e87ed4debb93bde68ff9b86489_146604_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre25/sf/llmseqrec/20250722-connor/m1-m1-loss-epoch_hua4b125e87ed4debb93bde68ff9b86489_146604_828aa4c04e00024c863cb89e245d358a.webp"
width="760"
height="490"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;em>Training loss for the ML-1M dataset&lt;/em>&lt;/p>
&lt;p>
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="ML-1M Hit@10 Performance" srcset="
/report/osre25/sf/llmseqrec/20250722-connor/ml-m1-hr_huaac170547624f58b168df1545691a3d4_153677_8e8f20a29b2657093b23e780efd1d072.webp 400w,
/report/osre25/sf/llmseqrec/20250722-connor/ml-m1-hr_huaac170547624f58b168df1545691a3d4_153677_257879da50059e5cc3e64fd8ed1d9d72.webp 760w,
/report/osre25/sf/llmseqrec/20250722-connor/ml-m1-hr_huaac170547624f58b168df1545691a3d4_153677_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre25/sf/llmseqrec/20250722-connor/ml-m1-hr_huaac170547624f58b168df1545691a3d4_153677_8e8f20a29b2657093b23e780efd1d072.webp"
width="760"
height="484"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;em>Hit@10 performance on the test set for the ML-1M dataset (every 20 epochs)&lt;/em>&lt;/p>
&lt;p>
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="ML-1M NDCG@10 Performance" srcset="
/report/osre25/sf/llmseqrec/20250722-connor/ml-m1-ndcg_huad2935749c06fc72562e3df395457d92_144728_dfd4334fbae2a7067cf9f91b1595e36b.webp 400w,
/report/osre25/sf/llmseqrec/20250722-connor/ml-m1-ndcg_huad2935749c06fc72562e3df395457d92_144728_271754cbcc6eac53f84162a93b670d17.webp 760w,
/report/osre25/sf/llmseqrec/20250722-connor/ml-m1-ndcg_huad2935749c06fc72562e3df395457d92_144728_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre25/sf/llmseqrec/20250722-connor/ml-m1-ndcg_huad2935749c06fc72562e3df395457d92_144728_dfd4334fbae2a7067cf9f91b1595e36b.webp"
width="760"
height="488"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;em>NDCG@10 performance on the test set for the ML-1M dataset (every 20 epochs)&lt;/em>&lt;/p>
&lt;p>These results demonstrate that our &lt;strong>baseline SASRec reproductions&lt;/strong> are converging as expected and will serve as a solid foundation for comparison once LLM integration is complete.&lt;/p>
&lt;hr>
&lt;h3 id="closing-thoughts">Closing Thoughts&lt;/h3>
&lt;p>This project has been an exciting journey into both research and engineering and I’m excited to explore &lt;strong>LLM-powered embedding integration&lt;/strong> in the upcoming phase.&lt;/p>
&lt;p>I’m incredibly grateful to my mentors &lt;strong>Dr. Linsey Pang and Dr. Bin Dong&lt;/strong> for their support and guidance throughout the project so far. I’m looking forward to sharing more technical results as we work toward building smarter, more adaptable recommender systems.&lt;/p></description></item><item><title>Midterm Report: KAN Integration into LLMs</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre25/ucsc/kallm/20250718-dentonjc/</link><pubDate>Fri, 18 Jul 2025 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre25/ucsc/kallm/20250718-dentonjc/</guid><description>&lt;p>Imagine if we could make neural networks that are not just more efficient, but smarter in how they learn. That’s the promise behind &lt;strong>Kolmogorov–Arnold Networks&lt;/strong> (KANs)—a fascinating new architecture that replaces the usual &amp;ldquo;weighted sums and activation functions&amp;rdquo; with more mathematical finesse. Instead of processing all inputs in one big lump, KANs treat each input dimension individually, transforming them with elegant functions like B-splines or simpler polynomials. The idea is simple but powerful: do more with less.&lt;/p>
&lt;p>For my project, I set out to explore what happens when we integrate these KAN layers into a lightweight language model called &lt;strong>SmolLM2&lt;/strong>, training and testing it on a &lt;strong>smol-smoltalk&lt;/strong> dataset.&lt;/p>
&lt;h2 id="setting-the-stage-smollm2-meets-kan">Setting the Stage: SmolLM2 Meets KAN&lt;/h2>
&lt;p>The original SmolLM2 has 135 million parameters and 30 transformer blocks—plenty of moving parts. To keep things manageable during the initial phase, I created a mini version of the model with just 3 blocks and a trimmed-down vocabulary. This setup let me test dozens of KAN variations quickly, using a simple text classification task (AGNews) as a playground before moving on to full-scale language modeling.&lt;/p>
&lt;p>Despite working with a simplified model, I managed to successfully train a full 30-block KAN-based SmolLM2. That model even passed challenging language benchmarks with flying colors—matching the performance of the original, linear-layer version. That&amp;rsquo;s a big win.&lt;/p>
&lt;h2 id="what-worked-and-what-didnt">What Worked (and What Didn&amp;rsquo;t)&lt;/h2>
&lt;p>Along the way, I tried out a variety of KAN flavors: spline-based, radial basis functions (RBF), rational functions, and no fewer than eight types of orthogonal polynomials—like Chebyshev, Legendre, and Hermite. Each one brings its own quirks, strengths, and training times.&lt;/p>
&lt;p>Some key takeaways:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Chebyshev (second kind)&lt;/strong> with a low polynomial degree (just 2!) delivered the best speed/accuracy trade-off.&lt;/li>
&lt;li>&lt;strong>Jacobi&lt;/strong> and &lt;strong>Gegenbauer&lt;/strong> polynomials edged slightly ahead in raw accuracy but required much longer training times.&lt;/li>
&lt;li>Replacing each linear layer with a KAN version (keeping parameter count similar) worked fine—but layering them in parallel or sequence didn’t add much.&lt;/li>
&lt;li>A baseline with regular linear layers still performed slightly better (60.8% vs. 60.3%), but KANs showed they can come close with room for optimization.&lt;/li>
&lt;/ul>
&lt;h2 id="why-this-matters">Why This Matters&lt;/h2>
&lt;p>What’s compelling is not just that KANs &lt;em>can&lt;/em> work, but that they bring some appealing properties:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Parameter efficiency&lt;/strong>: Good performance with fewer or similarly-sized layers.&lt;/li>
&lt;li>&lt;strong>Flexibility&lt;/strong>: They adapt well to existing hyperparameters—less fine-tuning needed.&lt;/li>
&lt;li>&lt;strong>Stability&lt;/strong>: They run smoothly in fp16 (a lower-precision format), which is critical for efficient training.&lt;/li>
&lt;li>&lt;strong>Potential for richer activations&lt;/strong>: Some existing projects still rely on activations like ReLU or SiLU alongside KANs. But I found KANs alone could learn well without them, opening up more dynamic architectures in the future.&lt;/li>
&lt;/ul>
&lt;h2 id="whats-next">What&amp;rsquo;s Next&lt;/h2>
&lt;p>With the heavy lifting done, code written, models trained, ideas tested, the remainder of the project is focused on refinement. That means more training on generative tasks, better tuning of polynomial degrees, smarter initialization strategies, and potentially making KAN-based layers more plug-and-play.&lt;/p>
&lt;p>The fact that a fully KAN-powered SmolLM2 can hold its own on tough language benchmarks is more than just a proof of concept. It’s a hint that we might not have to keep scaling models indefinitely to get better performance. Instead, we can get more from each parameter, by changing how the model &lt;em>thinks&lt;/em>.&lt;/p></description></item><item><title>Halfway Through GSoC: My Experience and Progress</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre25/uci/rag-st/07172025-zeyu/</link><pubDate>Thu, 17 Jul 2025 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre25/uci/rag-st/07172025-zeyu/</guid><description>&lt;p>As part of the &lt;a href="https://ucsc-ospo.github.io/project/osre25/uci/rag-st/" target="_blank" rel="noopener">RAG-ST&lt;/a> project, my &lt;a href="https://drive.google.com/file/d/1_yUf1NlVRpBXERCqnOby7pgP4WrWrZsr/view" target="_blank" rel="noopener">proposal&lt;/a> under the mentorship of &lt;strong>Ziheng Duan&lt;/strong> aims to build a &lt;strong>retrieval-augmented generation&lt;/strong> framework to predict spatial gene expression from histology images.&lt;/p>
&lt;hr>
&lt;h2 id="-achievements">🚀 Achievements&lt;/h2>
&lt;h3 id="-ran-the-hest-1k-pipeline">✅ Ran the HEST-1K Pipeline&lt;/h3>
&lt;p>I successfully ran gene expression prediction models on the &lt;strong>HEST-1K&lt;/strong> dataset, reproducing baseline image-to-expression workflows and setting up data loaders, evaluation metrics, and visual inspection of outputs.&lt;/p>
&lt;h3 id="-explored-tangrams-alignment-code">✅ Explored Tangram’s Alignment Code&lt;/h3>
&lt;p>I studied and ran &lt;strong>Tangram&lt;/strong>, a well-known scRNA-seq to ST alignment method, gaining key insights into cross-modality mapping. These ideas will inform our strategy to align histology images to scRNA-seq data.&lt;/p>
&lt;h3 id="-designed-the-rag-st-architecture">✅ Designed the RAG-ST Architecture&lt;/h3>
&lt;p>I drafted the architecture for the RAG-ST pipeline, including:&lt;/p>
&lt;ul>
&lt;li>Vision encoder to process image patches.&lt;/li>
&lt;li>Retrieval module to find relevant examples from a curated database.&lt;/li>
&lt;li>Generation head that conditions predictions on the retrieved examples — allowing transparency and context-aware outputs.&lt;/li>
&lt;/ul>
&lt;hr>
&lt;h2 id="-challenges">🧠 Challenges&lt;/h2>
&lt;ul>
&lt;li>&lt;strong>Data Alignment&lt;/strong>: Spatial transcriptomics datasets often lack perfect alignment between histology, gene expression, and scRNA-seq, requiring custom preprocessing and normalization.&lt;/li>
&lt;li>&lt;strong>Trade-off Between Interpretability and Accuracy&lt;/strong>: Retrieval-augmented designs allow us to trace the origin of predictions but require care to avoid overfitting or performance drops.&lt;/li>
&lt;li>&lt;strong>Computation&lt;/strong>: High-resolution images and large-scale retrieval can be computationally expensive. I’ve begun exploring downsampling and vector database indexing strategies.&lt;/li>
&lt;/ul>
&lt;hr>
&lt;h2 id="-whats-next">🔜 What&amp;rsquo;s Next&lt;/h2>
&lt;ul>
&lt;li>🔧 Build the &lt;strong>end-to-end retrieval-generation pipeline&lt;/strong>&lt;/li>
&lt;li>🧬 Prototype &lt;strong>histology-to-scRNA-seq&lt;/strong> alignment using adapted Tangram ideas&lt;/li>
&lt;li>📊 Benchmark &lt;strong>RAG-ST vs. MLP baselines&lt;/strong>&lt;/li>
&lt;li>👁️ Develop &lt;strong>interpretability visualizations&lt;/strong> to show which samples were retrieved for each prediction&lt;/li>
&lt;/ul>
&lt;hr>
&lt;h2 id="-deliverables-progress">🧾 Deliverables Progress&lt;/h2>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>Deliverable&lt;/th>
&lt;th>Status&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>HEST-1K Baseline Pipeline&lt;/td>
&lt;td>✅ Completed&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Tangram Exploration&lt;/td>
&lt;td>✅ Completed&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Data Curation&lt;/td>
&lt;td>🟡 In Progress&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>RAG-ST Architecture&lt;/td>
&lt;td>✅ Drafted&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Full Pipeline&lt;/td>
&lt;td>⏳ Planned&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Evaluation &amp;amp; Comparison&lt;/td>
&lt;td>⏳ Planned&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;hr>
&lt;h2 id="-closing-thoughts">🙌 Closing Thoughts&lt;/h2>
&lt;p>It&amp;rsquo;s been a rewarding first half of GSoC. I’ve gained hands-on experience with spatial transcriptomics datasets, explored state-of-the-art tools like Tangram, and laid the groundwork for a new interpretable gene prediction model.&lt;/p>
&lt;p>I’m excited to continue building RAG-ST and look forward to sharing more results soon. Huge thanks to my mentor &lt;strong>Ziheng Duan&lt;/strong> for the guidance and support throughout!&lt;/p>
&lt;p>If you have questions or want to discuss spatial modeling, feel free to reach out.&lt;/p></description></item><item><title>Midterm Blog - WildBerryEye User Interface</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre25/ucsc/wildberryeye/20250731-sophietao127/</link><pubDate>Wed, 16 Jul 2025 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre25/ucsc/wildberryeye/20250731-sophietao127/</guid><description>&lt;p>Hi, my name is Sophie Tao, I am an alumn at the University of Washington, with majoring in Electrical and Computer Engineering,
I’m happy to share the progress I have been able to make over the last six weeks on my GSoC 2025 project, WildBerryEye, mentored by &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/content/authors/caiespin">Carlos Isaac Espinosa&lt;/a>.&lt;/p>
&lt;h1 id="project-overview">Project Overview&lt;/h1>
&lt;p>WildBerryEye is an open-source initiative to support ecological monitoring of pollinators such as bees and hummingbirds using edge computing and computer vision. The project leverages a Raspberry Pi and YOLO for object detection and aims to provide an accessible, responsive, and real-time web interface for researchers, ecologists, and citizen scientists.&lt;/p>
&lt;p>This project specifically focuses on building the frontend and backend infrastructure for WildBerryEye’s user interface, enabling:&lt;/p>
&lt;ul>
&lt;li>Real-time pollinator detection preview
&lt;ul>
&lt;li>Real-time image capture&lt;/li>
&lt;li>Real time video capture&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>Responsive, User-friendly UI&lt;/li>
&lt;li>Object detection&lt;/li>
&lt;li>Researcher-friendly configuration and usability&lt;/li>
&lt;/ul>
&lt;h1 id="progress-so-far">Progress So Far&lt;/h1>
&lt;p>✅ Phase 1: Setup&lt;/p>
&lt;ul>
&lt;li>
&lt;p>Frontend: Completed React + TypeScript project initialization with routing and base components. Pages include:&lt;/p>
&lt;ul>
&lt;li>Home page (with image preview)&lt;/li>
&lt;li>Dashboard page (pollinator image &amp;amp; video)&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>
&lt;p>Backend: Flask server initialized with modular structure. Basic API endpoints stubbed as per the proposal.&lt;/p>
&lt;/li>
&lt;/ul>
&lt;p>✅ Phase 2: Core Features&lt;/p>
&lt;ul>
&lt;li>
&lt;p>Real-Time Communication:
Frontend successfully receives image stream using WebSocket.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>UI Components:&lt;/p>
&lt;ul>
&lt;li>Implemented image carousel preview on homepage.&lt;/li>
&lt;li>Image Capture (Image download)&lt;/li>
&lt;li>Video Capture (Video Preview, Video Recording)&lt;/li>
&lt;li>Sidebar-based navigation and page structure fully integrated.&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>
&lt;p>API Development:&lt;/p>
&lt;ul>
&lt;li>Implemented core endpoints such as /home, and/dashboard routes.&lt;/li>
&lt;li>Backend handlers structured for image and video capture.&lt;/li>
&lt;/ul>
&lt;/li>
&lt;/ul>
&lt;h1 id="challenges-encountered">Challenges Encountered&lt;/h1>
&lt;p>⚠️ Real-time Image Testing: Lack of consistent live camera input made local testing inconsistent. &lt;br>
⚠️ Allocate the camera module for both capture image and capture video. &lt;br>
⚠️ Obtain the proper format of the video.&lt;/p>
&lt;h1 id="next-steps">Next Steps&lt;/h1>
&lt;ul>
&lt;li>Enable more features for video capture&lt;/li>
&lt;li>Integrated with Machine Learning Model&lt;/li>
&lt;li>Conduct at least one usability test (self + external user) and incorporate feedback.&lt;/li>
&lt;li>Final Testing &amp;amp; Docs&lt;/li>
&lt;/ul>
&lt;h1 id="summary">Summary&lt;/h1>
&lt;p>At this midterm stage, the WildBerryEye UI project is on track with core milestones completed, including real-time communication, component setup, and backend API structure. The remaining work focuses on refinement, visualizations, testing, and documentation to ensure a polished final product by the end of GSoC 2025.&lt;/p></description></item><item><title>Mid-term Blog: StatWrap: Cross-Project Searching and Classification using Local Indexing</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre25/northwestern/statwrap/20250715-debangi29/</link><pubDate>Tue, 15 Jul 2025 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre25/northwestern/statwrap/20250715-debangi29/</guid><description>&lt;h2 id="introduction">Introduction&lt;/h2>
&lt;p>Hello everyone!&lt;br>
I am Debangi Ghosh from India, an undergraduate student at the Indian Institute of Technology (IIT) BHU, Varanasi. As part of the &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre25/northwestern/statwrap/">StatWrap: Cross-Project Searching and Classification using Local Indexing&lt;/a> project, my &lt;a href="https://drive.google.com/file/d/1dxyBP2oMJwYDCKyIWzr465zNmm6UWtnI/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/luke-rasmussen/">Luke Rasmussen&lt;/a>, focuses on developing a full-text search service within the StatWrap user interface. This involves evaluating different search libraries and implementing a classification system to distinguish between active and past projects.&lt;/p>
&lt;h2 id="about-the-project">&lt;strong>About the Project&lt;/strong>&lt;/h2>
&lt;p>As part of the project, I am working on enhancing the usability of StatWrap by enabling efficient cross-project search capabilities. The goal is to make it easier for investigators to discover relevant projects, notes, and assets—across both current and archived work—using information that is either user-entered or passively collected by StatWrap.&lt;/p>
&lt;p>Given the sensitivity of the data involved, one of the key requirements is that all indexing and search operations must be performed locally. To address this, my responsibilities include:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Evaluating open-source search libraries&lt;/strong> suitable for local indexing and retrieval&lt;/li>
&lt;li>&lt;strong>Building the full-text search functionality&lt;/strong> directly into the StatWrap UI to allow seamless querying across projects&lt;/li>
&lt;li>&lt;strong>Ensuring reliability&lt;/strong> through the development of unit tests and comprehensive system testing&lt;/li>
&lt;li>&lt;strong>Implementing a classification system&lt;/strong> to label projects as “Active,” “Pinned,” or “Past” within the user interface&lt;/li>
&lt;/ul>
&lt;p>This project offers a great opportunity to work at the intersection of software development, information retrieval, and user-centric design—while contributing to research reproducibility and collaboration within scientific workflows.&lt;/p>
&lt;h2 id="progress">Progress&lt;/h2>
&lt;p>It has been more than six weeks since the project began, and significant progress has been made. Here&amp;rsquo;s a breakdown:&lt;/p>
&lt;h3 id="1-descriptive-comparison-of-open-source-libraries">1. &lt;strong>Descriptive Comparison of Open-Source Libraries&lt;/strong>&lt;/h3>
&lt;p>Compared various open-source search libraries based on evaluation criteria such as &lt;strong>indexing speed, search speed, memory usage, typo tolerance, fuzzy searching, partial matching, full-text queries, contextual search, Boolean support, exact word match, installation ease, maintenance, documentation&lt;/strong>, and &lt;strong>developer experience&lt;/strong>.&lt;/p>
&lt;h3 id="2-the-libraries">2. &lt;strong>The Libraries&lt;/strong>&lt;/h3>
&lt;ul>
&lt;li>
&lt;p>&lt;strong>Lunr.js&lt;/strong>&lt;br>
A small, client-side full-text search engine that mimics Solr capabilities.&lt;/p>
&lt;ul>
&lt;li>Field-based search, boosting&lt;/li>
&lt;li>Supports TF-IDF, inverted index&lt;/li>
&lt;li>No built-in fuzzy search (only basic wildcards)&lt;/li>
&lt;li>Can serialize/deserialize index&lt;/li>
&lt;li>Not designed for large datasets&lt;/li>
&lt;li>Moderate memory usage and indexing speed&lt;/li>
&lt;li>Good documentation&lt;/li>
&lt;li>&lt;strong>Best for&lt;/strong>: Static websites or SPAs needing simple in-browser search&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>ElasticLunr.js&lt;/strong>&lt;br>
A lightweight, more flexible alternative to Lunr.js.&lt;/p>
&lt;ul>
&lt;li>Dynamic index (add/remove docs)&lt;/li>
&lt;li>Field-based and weighted search&lt;/li>
&lt;li>No advanced fuzzy matching&lt;/li>
&lt;li>Faster and more customizable than Lunr&lt;/li>
&lt;li>Smaller footprint&lt;/li>
&lt;li>Easy to use and maintain&lt;/li>
&lt;li>&lt;strong>Best for&lt;/strong>: Developers wanting Lunr-like features with simpler customization&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Fuse.js&lt;/strong>&lt;br>
A fuzzy search library ideal for small to medium datasets.&lt;/p>
&lt;ul>
&lt;li>Fuzzy search with typo tolerance&lt;/li>
&lt;li>Deep key/path searching&lt;/li>
&lt;li>No need to build index&lt;/li>
&lt;li>Highly configurable (threshold, distance, etc.)&lt;/li>
&lt;li>Linear scan = slower on large datasets&lt;/li>
&lt;li>Not full-text search (scoring-based match)&lt;/li>
&lt;li>Extremely easy to set up and use&lt;/li>
&lt;li>&lt;strong>Best for&lt;/strong>: Fuzzy search in small in-memory arrays (e.g., auto-suggest, dropdown filters)&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>FlexSearch&lt;/strong>&lt;br>
A blazing-fast, modular search engine with advanced indexing options.&lt;/p>
&lt;ul>
&lt;li>Extremely fast search and indexing&lt;/li>
&lt;li>Supports phonetic, typo-tolerant, and partial matching&lt;/li>
&lt;li>Asynchronous support&lt;/li>
&lt;li>Multi-language + Unicode-friendly&lt;/li>
&lt;li>Low memory footprint&lt;/li>
&lt;li>Configuration can be complex for beginners&lt;/li>
&lt;li>&lt;strong>Best for&lt;/strong>: High-performance search in large/multilingual datasets&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>MiniSearch&lt;/strong>&lt;br>
A small, full-text search engine with balanced performance and simplicity.&lt;/p>
&lt;ul>
&lt;li>Fast indexing and searching&lt;/li>
&lt;li>Fuzzy search, stemming, stop words&lt;/li>
&lt;li>Field boosting and prefix search&lt;/li>
&lt;li>Compact, can serialize index&lt;/li>
&lt;li>Clean and modern API&lt;/li>
&lt;li>Lightweight and easy to maintain&lt;/li>
&lt;li>&lt;strong>Best for&lt;/strong>: Balanced, in-browser full-text search for moderate datasets&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Search-Index&lt;/strong>&lt;br>
A persistent, full-featured search engine for Node.js and browsers.&lt;/p>
&lt;ul>
&lt;li>Persistent storage with LevelDB&lt;/li>
&lt;li>Real-time indexing&lt;/li>
&lt;li>Fielded queries, faceting, filtering&lt;/li>
&lt;li>Advanced queries (Boolean, range, etc.)&lt;/li>
&lt;li>Slightly heavier setup&lt;/li>
&lt;li>Good for offline/local-first apps&lt;/li>
&lt;li>Browser usage more complex than others&lt;/li>
&lt;li>&lt;strong>Best for&lt;/strong>: Node.js apps, &lt;strong>not directly compatible with the Electron + React environment of StatWrap&lt;/strong>&lt;/li>
&lt;/ul>
&lt;/li>
&lt;/ul>
&lt;h3 id="3-developer-experience-and-maintenance">3. Developer Experience and Maintenance&lt;/h3>
&lt;p>We analyzed the download trends of the search libraries using npm trends, and also reviewed their maintenance statistics to assess how frequently they are updated.&lt;/p>
&lt;p>
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="DOWNLOADS" srcset="
/report/osre25/northwestern/statwrap/20250715-debangi29/downloads_hu3acc13cb2503d87ec01b259eecff7d9f_205568_2981b0e25cc7e6da71dd1af69f1ab499.webp 400w,
/report/osre25/northwestern/statwrap/20250715-debangi29/downloads_hu3acc13cb2503d87ec01b259eecff7d9f_205568_52b5a1c87803e2c8a2f59ad52703cd75.webp 760w,
/report/osre25/northwestern/statwrap/20250715-debangi29/downloads_hu3acc13cb2503d87ec01b259eecff7d9f_205568_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre25/northwestern/statwrap/20250715-debangi29/downloads_hu3acc13cb2503d87ec01b259eecff7d9f_205568_2981b0e25cc7e6da71dd1af69f1ab499.webp"
width="760"
height="362"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;br>
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="Maintenance" srcset="
/report/osre25/northwestern/statwrap/20250715-debangi29/Maintenance_hub392779bb7551900858e36e62009d315_166372_50f35746c2224661759e3d1f68308f5c.webp 400w,
/report/osre25/northwestern/statwrap/20250715-debangi29/Maintenance_hub392779bb7551900858e36e62009d315_166372_1f83a8585ae086eae8ad16a0d18c8fff.webp 760w,
/report/osre25/northwestern/statwrap/20250715-debangi29/Maintenance_hub392779bb7551900858e36e62009d315_166372_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre25/northwestern/statwrap/20250715-debangi29/Maintenance_hub392779bb7551900858e36e62009d315_166372_50f35746c2224661759e3d1f68308f5c.webp"
width="760"
height="261"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;h3 id="4-comparative-analysis-after-testing">4. Comparative Analysis After Testing&lt;/h3>
&lt;p>Each search library was benchmarked against a predefined set of queries based on the same evaluation criteria.&lt;br>
We are yet to finalize the weights for each criterion, which will be done during the end-term evaluation.&lt;/p>
&lt;p>
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="COMPARATIVE ANALYSIS" srcset="
/report/osre25/northwestern/statwrap/20250715-debangi29/image_huff63b524c7af2307fdfe0ebf7a2c55bc_128809_cf08ab4466e54fc0970dac451ab583d2.webp 400w,
/report/osre25/northwestern/statwrap/20250715-debangi29/image_huff63b524c7af2307fdfe0ebf7a2c55bc_128809_4d08ea843125818ade4b1288b2ed91fd.webp 760w,
/report/osre25/northwestern/statwrap/20250715-debangi29/image_huff63b524c7af2307fdfe0ebf7a2c55bc_128809_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre25/northwestern/statwrap/20250715-debangi29/image_huff63b524c7af2307fdfe0ebf7a2c55bc_128809_cf08ab4466e54fc0970dac451ab583d2.webp"
width="760"
height="578"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;h3 id="5-the-user-interface">5. The User Interface&lt;/h3>
&lt;p>
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="User Interface" srcset="
/report/osre25/northwestern/statwrap/20250715-debangi29/UI_hu614745e803a206ba95d1613340cef4da_263973_ad72fdc47d934ea42f989055b49d88aa.webp 400w,
/report/osre25/northwestern/statwrap/20250715-debangi29/UI_hu614745e803a206ba95d1613340cef4da_263973_51decc3c2ce6793ca567153dd67113d0.webp 760w,
/report/osre25/northwestern/statwrap/20250715-debangi29/UI_hu614745e803a206ba95d1613340cef4da_263973_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre25/northwestern/statwrap/20250715-debangi29/UI_hu614745e803a206ba95d1613340cef4da_263973_ad72fdc47d934ea42f989055b49d88aa.webp"
width="760"
height="475"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;br>
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="Debug Tools" srcset="
/report/osre25/northwestern/statwrap/20250715-debangi29/image-1_huff1ce04307fd90cec714c35adb969f67_82199_e86edc8fa7aba824f1fd8a90948c619c.webp 400w,
/report/osre25/northwestern/statwrap/20250715-debangi29/image-1_huff1ce04307fd90cec714c35adb969f67_82199_ba6358e5089040847a0e39704677cc12.webp 760w,
/report/osre25/northwestern/statwrap/20250715-debangi29/image-1_huff1ce04307fd90cec714c35adb969f67_82199_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre25/northwestern/statwrap/20250715-debangi29/image-1_huff1ce04307fd90cec714c35adb969f67_82199_e86edc8fa7aba824f1fd8a90948c619c.webp"
width="760"
height="482"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;p>The user interface includes options to search using three search modes (Basic, Advanced, Boolean operators) with configurable parameters. Results are sorted based on relevance score (highest first), and also grouped by category.&lt;/p>
&lt;h3 id="6-overall-functioning">6. Overall Functioning&lt;/h3>
&lt;ul>
&lt;li>
&lt;p>&lt;strong>Indexing Workflow&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>Projects are processed sequentially&lt;/li>
&lt;li>Metadata, files, people, and notes are indexed (larger files are queued for later)&lt;/li>
&lt;li>Uses a &amp;ldquo;brute-force&amp;rdquo; recursive approach to walk through project directories
&lt;ul>
&lt;li>Skips directories like &lt;code>node_modules&lt;/code>, &lt;code>.git&lt;/code>, &lt;code>.statwrap&lt;/code>&lt;/li>
&lt;li>Identifies eligible text files for indexing&lt;/li>
&lt;li>Logs progress every 10 files&lt;/li>
&lt;/ul>
&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Document Creation Logic&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>Reads file content as UTF-8 text&lt;/li>
&lt;li>Builds searchable documents with filename, content, and metadata&lt;/li>
&lt;li>Auto-generates tags based on content and file type&lt;/li>
&lt;li>Adds documents to the search index and document store&lt;/li>
&lt;li>Handles errors gracefully with debug logging&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Search Functionality&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>Uses field-weighted search&lt;/li>
&lt;li>Enriches results with document metadata&lt;/li>
&lt;li>Supports filtering by type or project&lt;/li>
&lt;li>Groups results by category (files, projects, people, etc.)&lt;/li>
&lt;li>Implements caching for improved performance&lt;/li>
&lt;li>Search statistics are generated to monitor performance&lt;/li>
&lt;/ul>
&lt;/li>
&lt;/ul>
&lt;h2 id="challenges-and-end-term-goals">Challenges and End-Term Goals&lt;/h2>
&lt;ul>
&lt;li>
&lt;p>&lt;strong>In-memory Indexing Metadata Storing&lt;/strong>&lt;br>
Most JavaScript search libraries (like Fuse.js, Lunr, MiniSearch) store indexes entirely in memory, which can become problematic for large-scale datasets. A key challenge is designing a scalable solution that allows for disk persistence or lazy loading to prevent memory overflows.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Deciding the Weights Accordingly&lt;/strong>&lt;br>
An important challenge is tuning the relevance scoring by assigning appropriate weights to different aspects of the search, such as exact word matches, prefix matches, and typo tolerance. For instance, we prefer exact matches to be ranked higher than fuzzy or partial matches.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Implementing the Selected Library&lt;/strong>&lt;br>
Once a library is selected (based on speed, features, and compatibility with Electron + React), the next challenge is integrating it into StatWrap efficiently—ensuring local indexing, accurate search results, and smooth performance even with large projects.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Classifying Active and Past Projects in the User Interface&lt;/strong>&lt;br>
To improve navigation and search scoping, we plan to introduce three project sections in the interface: &lt;strong>Pinned&lt;/strong>, &lt;strong>Active&lt;/strong>, and &lt;strong>Past&lt;/strong> projects. This classification will help users prioritize relevant content while enabling smarter indexing strategies.&lt;/p>
&lt;/li>
&lt;/ul>
&lt;p>Stay tuned for the next blog!&lt;/p></description></item><item><title>Midway Through GSoC</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre25/ucsc/embeddings/14072025-devadigapratham/</link><pubDate>Mon, 14 Jul 2025 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre25/ucsc/embeddings/14072025-devadigapratham/</guid><description>&lt;h1 id="midway-through-gsoc">Midway Through GSoC&lt;/h1>
&lt;p>Hello everyone! I’m Pratham Devadiga, and I’m thrilled to share a midterm progress update on my &lt;a href="https://summerofcode.withgoogle.com/programs/2025/projects/GcstSGAO" target="_blank" rel="noopener">GSoC 2025 project&lt;/a> with the Open Source Research Experience (OSRE). My project is focused on building the &lt;strong>first open-source billion-scale vector embeddings dataset&lt;/strong> from &lt;strong>real-world open source code&lt;/strong> to support benchmarking of Approximate Nearest Neighbor (ANN) algorithms and facilitate research in Retrieval-Augmented Generation (RAG).&lt;/p>
&lt;h2 id="project-overview">Project Overview&lt;/h2>
&lt;p>The goal of this project is to address a critical gap in the ecosystem: existing ANN benchmarks are either synthetic or limited in scale. With the explosion of code-focused LLMs and embedding models, there&amp;rsquo;s a pressing need for:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>High-volume, high-dimensional vector datasets&lt;/strong> built from real-world data (open-source codebases).&lt;/li>
&lt;li>&lt;strong>Open, reproducible benchmarks&lt;/strong> that reflect realistic RAG workloads.&lt;/li>
&lt;li>A dataset that can be used to evaluate &lt;strong>ANN libraries&lt;/strong> like FAISS, HNSW, and Annoy on massive and practical retrieval tasks.&lt;/li>
&lt;/ul>
&lt;p>Our approach is to use high-quality open-source code repositories to extract meaningful code chunks, encode them into vector embeddings using open models, and make these datasets publicly available with metadata for downstream benchmarking and analysis.&lt;/p>
&lt;h2 id="progress-so-far">Progress So Far&lt;/h2>
&lt;p>We’ve made substantial foundational progress in the first half of the coding period. Key highlights:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Tested multiple embedding models&lt;/strong> such as &lt;code>codeBERT&lt;/code>, &lt;code>MiniLM-L6-v2&lt;/code>, and &lt;code>all-mpnet-base-v2&lt;/code>, evaluating trade-offs in speed, dimensionality, and GPU memory.&lt;/li>
&lt;li>&lt;strong>Selected &lt;code>codebert-base&lt;/code>&lt;/strong> (768d) as the current model for phase one due to its stable performance and manageable resource footprint.&lt;/li>
&lt;li>Implemented and validated a complete &lt;strong>script pipeline&lt;/strong> to:
&lt;ul>
&lt;li>Traverse large open-source repositories.&lt;/li>
&lt;li>Extract and chunk code intelligently (functions, classes, modules).&lt;/li>
&lt;li>Encode code into embeddings and attach metadata (repo, file path, license).&lt;/li>
&lt;li>Store results efficiently in parquet and NumPy formats.&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>&lt;strong>Tested all components&lt;/strong> of the pipeline on sample datasets using multi-GPU setups, ensuring compatibility and robustness.&lt;/li>
&lt;/ul>
&lt;h2 id="challenges-and-learnings">Challenges and Learnings&lt;/h2>
&lt;p>Building a billion-scale dataset from real-world codebases is no small task. Here&amp;rsquo;s what we’ve encountered and learned along the way:&lt;/p>
&lt;h3 id="1-multi-gpu-pipeline-design">1. Multi-GPU Pipeline Design&lt;/h3>
&lt;p>Naively parallelizing the embedding process caused memory overflow and deadlocks due to model reloading across processes. We refactored the code using &lt;code>torch.multiprocessing&lt;/code> and pinned GPU contexts to avoid such issues, improving throughput on multi-GPU machines.&lt;/p>
&lt;h3 id="2-embedding-trade-offs">2. Embedding Trade-offs&lt;/h3>
&lt;p>We experimented with larger models but found that their generation time and memory use were too high to be practical in early phases. This helped us narrow down to scalable configurations for initial dataset generation.&lt;/p>
&lt;h3 id="3-preparing-for-scale">3. Preparing for Scale&lt;/h3>
&lt;p>Although the embeddings are not generated yet, all scripts are now &lt;strong>modular, parallelized, and reproducible&lt;/strong>, ensuring a smooth transition to billion-scale data generation in the second half.&lt;/p>
&lt;h2 id="whats-next">What’s Next&lt;/h2>
&lt;p>The second half of the project will focus on:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Scaling up embedding generation&lt;/strong> to &amp;gt;1B code chunks across hundreds of open-source repositories.&lt;/li>
&lt;li>&lt;strong>Running benchmarks&lt;/strong> using FAISS, HNSW, and Annoy on these embeddings.&lt;/li>
&lt;li>&lt;strong>Releasing the dataset&lt;/strong> on Hugging Face and AWS S3 with sharded access and metadata.&lt;/li>
&lt;li>&lt;strong>Writing a detailed benchmarking report&lt;/strong> comparing speed, accuracy, and memory trade-offs across ANN algorithms.&lt;/li>
&lt;/ul>
&lt;h2 id="final-thoughts">Final Thoughts&lt;/h2>
&lt;p>This journey so far has taught me a lot about building large-scale ML pipelines, managing real-world compute constraints, and ensuring reproducibility for research-grade datasets. I&amp;rsquo;m grateful to my mentor &lt;strong>Jayjeet Chakraborty&lt;/strong> and the OSRE team for their continuous support and guidance.&lt;/p>
&lt;p>Excited for the next half, where the real scale begins!&lt;/p>
&lt;p>Stay tuned for updates. You can find more about the project on my &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre25/ucsc/embeddings">OSRE project page&lt;/a>.&lt;/p></description></item><item><title>CarbonCast</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre25/ucsc/carboncast/20250710-tanushsavadi/</link><pubDate>Thu, 10 Jul 2025 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre25/ucsc/carboncast/20250710-tanushsavadi/</guid><description>&lt;p>As part of the &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre25/ucsc/carboncast">CarbonCast project&lt;/a>, my &lt;a href="https://summerofcode.withgoogle.com/programs/2025/projects/7yvAix3k" target="_blank" rel="noopener">proposal&lt;/a> under the mentorship of Professor Abel Souza aims to build an API that makes carbon intensity forecasts more accessible and actionable.&lt;/p>
&lt;p>Under the mentorship of Professor Abel Souza, my proposal is centered around building upon CarbonCast to create an API to enable user access and utilization of energy data in optimizing their electricity consumption. Before diving into the details of the project, I’d like to share a bit about my background.&lt;/p>
&lt;h2 id="about-me">About Me&lt;/h2>
&lt;p>Hi, I’m Tanush—a rising senior at the University of Massachusetts Amherst, majoring in Computer Science and Mathematics and graduating in Spring 2026. Currently, I’m an AI Intern for the Commonwealth of Massachusetts Department of Unemployment Assistance, where I’m developing an end-to-end retrieval-augmented generation (RAG) chatbot on AWS.&lt;/p>
&lt;p>In the past, I’ve contributed to CarbonCast in a different capacity, designing a user interface to help visualize carbon intensity forecasts. I also worked at MathWorks as a Machine Learning Intern, where I collaborated in an AGILE environment to design and deploy predictive models that improved precision torque control and dynamic responsiveness in motor-driven robotic and industrial systems.&lt;/p>
&lt;p>I’m excited to bring these experiences to this year’s GSoC project, where I’ll be building tools to make carbon data more accessible and actionable for everyone.&lt;/p>
&lt;h2 id="what-is-carboncast">What is CarbonCast?&lt;/h2>
&lt;p>CarbonCast is a Python-based machine-learning library designed to forecast the carbon intensity of electrical grids. Carbon intensity refers to the amount of carbon emitted per kilowatt-hour (kWh) of electricity consumed. Developed in Python, the current version of CarbonCast delivers accurate forecasts in numerous regions by using historical energy production data of a particular geographical region, time of day/year, and weather forecasts as features.&lt;/p>
&lt;p>However, there is no easy way to access, visualize, and utilize the data through a standard interface. In addition, much important information is left out and is not available to users. For instance, electricity grids often import electricity from neighboring regions, and so electricity consumption depends on both electricity generation and imports. Moreover, it is imperative for each energy source to utilize a tailored predictive mechanism. Consequently, any carbon optimization solution trying to reduce carbon emissions due to its electricity consumption will benefit more from following a consumption-based carbon intensity signal.&lt;/p>
&lt;p>Unlike other third-party carbon services, CarbonCast’s model is open-sourced, allowing users to study, understand, and improve its behavior. This transparency invites public collaboration and innovation. It also contrasts sharply with proprietary services that often withhold both the logic behind their models and the data they are trained on.&lt;/p>
&lt;h2 id="why-this-matters">Why This Matters&lt;/h2>
&lt;p>Electricity usage is one of the largest contributors to carbon emissions globally. Carbon intensity—the amount of carbon emitted per kilowatt-hour of electricity consumed—varies based on how electricity is generated and demanded (for example, coal versus solar). With better visibility into when the grid is cleaner, individuals and organizations can shift their energy consumption to lower-carbon periods and lower prices. This enables everyday energy optimizations without compromising comfort or productivity.&lt;/p>
&lt;p>By improving CarbonCast’s accessibility and functionality, we are helping people and institutions answer questions like:&lt;/p>
&lt;ul>
&lt;li>When is the best time to charge my EV to reduce environmental impact?&lt;/li>
&lt;li>Can I run my energy-hungry server jobs when the electricity is cheaper?&lt;/li>
&lt;li>How do I actually reduce my emissions without guessing?&lt;/li>
&lt;/ul>
&lt;p>By providing clear, accurate forecasts of carbon intensity, CarbonCast can help users make informed decisions to optimize their energy footprint and reduce emissions without sacrificing convenience or productivity.&lt;/p>
&lt;h2 id="what-im-building">What I’m Building&lt;/h2>
&lt;p>The plan for this summer is to develop the backend API services for CarbonCast. This summer, I’m focused on two major goals:&lt;/p>
&lt;h3 id="geographical-expansion">Geographical Expansion&lt;/h3>
&lt;p>I am extending CarbonCast’s compatibility to support more regional electricity grids. Each model will be customized for local grid behavior and renewable energy characteristics. This involves tuning the model pipeline to adapt to each region’s energy mix, weather patterns, and reporting granularity.&lt;/p>
&lt;h3 id="system-refactoring-and-modularity">System Refactoring and Modularity&lt;/h3>
&lt;p>The original CarbonCast system was built as a research artifact. To refine it into production-grade infrastructure, I am refactoring the codebase to improve modularity. This makes it easier to plug in new regions, update forecasting algorithms, and integrate new data sources.&lt;/p>
&lt;h2 id="impact-beyond-research">Impact Beyond Research&lt;/h2>
&lt;p>The paper that inspired this project, &lt;em>Multi-day Forecasting of Electric Grid Carbon Intensity using Machine Learning&lt;/em>, pioneered the idea of forecasting carbon intensity over multiple days using a hierarchical machine learning model. This goes beyond the typical 24-hour day-ahead models that are common in the industry and allows for better planning and longer-term decision-making.&lt;/p>
&lt;p>CarbonCast builds directly on that foundation by transforming research into practical, real-world infrastructure. It is an open-source library that anyone can run, contribute to, and benefit from. Whether you&amp;rsquo;re a developer building carbon-aware applications, a policymaker working on grid decarbonization strategies, or a sustainability-conscious individual looking to reduce your carbon footprint, CarbonCast provides the tools to make informed, impactful choices.&lt;/p>
&lt;h2 id="looking-ahead">Looking Ahead&lt;/h2>
&lt;p>I am excited to contribute to a project that blends machine learning, systems engineering, sustainability, and public impact. My goal is to help make it easier for everyone to see, understand, and act on their carbon footprint while also providing the &amp;ldquo;visibility&amp;rdquo; people need to take meaningful, informed actions.&lt;/p></description></item><item><title>Rectilinear Floorplans in OpenROAD</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre25/openroad/20250710-gschaitanya/</link><pubDate>Thu, 10 Jul 2025 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre25/openroad/20250710-gschaitanya/</guid><description>&lt;h1 id="google-summer-of-code-25-enabling-rectilinear-floorplanning-in-openroad">Google Summer of Code ‘25: Enabling Rectilinear Floorplanning in OpenROAD&lt;/h1>
&lt;p>This summer, under the guidance of my mentors Eder Monteiro and Augusto Berndt at the OpenROAD project, I am implementing support for &lt;strong>polygonal (specifically rectilinear) die shapes&lt;/strong> in OpenROAD’s floorplanning flow.&lt;/p>
&lt;p>Here’s a link to my original &lt;a href="https://summerofcode.withgoogle.com/programs/2025/projects/mcv3Hbgk" target="_blank" rel="noopener">proposal&lt;/a>&lt;/p>
&lt;h2 id="what-is-openroad-and-why-polygonal-floorplans">What is OpenROAD and why polygonal floorplans?&lt;/h2>
&lt;p>&lt;a href="https://github.com/The-OpenROAD-Project/OpenROAD" target="_blank" rel="noopener">OpenROAD&lt;/a> is a fully autonomous RTL-to-GDS digital layout toolchain. The OpenROAD flow delivers an Autonomous, No-Human-In-Loop (NHIL) flow, 24 hour turnaround from RTL-GDSII for rapid design exploration and physical design implementation.&lt;/p>
&lt;p>Until now, OpenROAD primarily supported rectangular die shapes in its floorplanning. This limits its use for &lt;strong>advanced packaging, 2.5D/3D ICs, or irregular chiplet-based designs&lt;/strong>, where non-rectangular dies are increasingly common.&lt;/p>
&lt;p>By extending the floorplanner to handle &lt;strong>rectilinear (non-manhattan, but still axis-aligned) dies&lt;/strong>, we open the door for a broader class of cutting-edge VLSI layouts.&lt;/p>
&lt;hr>
&lt;h2 id="motivation-and-what-gap-does-this-fill">Motivation and what gap does this fill?&lt;/h2>
&lt;p>From my background in electronics engineering, I’ve seen that advanced packaging hsd been unusual die shapes, whether for stacking, interposers, or simply to optimize area and thermal profiles.&lt;/p>
&lt;p>Right now, OpenROAD’s inability to handle these non-rectangular dies is a blocker for certain modern flows. My project directly addresses this by:&lt;/p>
&lt;ul>
&lt;li>Extending the Tcl and internal APIs to accept and validate polygonal die/core shapes.&lt;/li>
&lt;li>Modifying the row generation and site placement algorithms to conform to polygonal boundaries.&lt;/li>
&lt;li>Ensuring that all downstream modules (global placement, detailed placement, routing) can consume the new floorplan data structures without any issues.&lt;/li>
&lt;/ul>
&lt;h2 id="my-approach--engineering-plan">My approach &amp;amp; engineering plan&lt;/h2>
&lt;p>My work focuses on maintaining &lt;strong>robustness and backward compatibility&lt;/strong>, while introducing this major new feature.&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Floorplan Input&lt;/strong>: Users can now specify die/core shapes as sequences of x/y coordinates (&lt;code>-die_polygon&lt;/code> and &lt;code>-core_polygon&lt;/code>) directly from the Tcl interface.&lt;/li>
&lt;li>&lt;strong>Data structures&lt;/strong>: Extend OpenROAD&amp;rsquo;s internal representations to store arbitrary rectilinear polygons and propagate these safely through the design pipeline.&lt;/li>
&lt;li>&lt;strong>Row Generation&lt;/strong>: Develop a new functions (&lt;code>make_polygon_rows&lt;/code>) to fill polygonal die areas with standard cell rows, properly clipped to the die shape.&lt;/li>
&lt;li>&lt;strong>Verification&lt;/strong>: Build rigorous regression and sanity checks. This includes both internal checks and external DEF writeouts that can be visualized in other tools.&lt;/li>
&lt;li>&lt;strong>Testing &amp;amp; Benchmarks&lt;/strong>: Prepare a suite of testcases (including complex T-shaped and L-shaped dies) to validate correctness.&lt;/li>
&lt;/ul>
&lt;p>I’m especially careful to keep the existing rectangular flow untouched. The new features only engage when the user explicitly specifies polygonal options.&lt;/p>
&lt;hr>
&lt;h2 id="acknowledgments">Acknowledgments&lt;/h2>
&lt;h2 id="alt-textimagepng">I’m deeply grateful to my mentors from the OpenROAD community who have given invaluable guidance - Eder Monteiro and Augusto Berndt. I’m also excited to contribute this to an open-source EDA project that’s shaping the future of accessible hardware design.
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="alt text" srcset="
/report/osre25/openroad/20250710-gschaitanya/image_hu3983f54b17a85e6cd101e7150f8b73ae_74031_d7183809c372e014da49924eaae1da70.webp 400w,
/report/osre25/openroad/20250710-gschaitanya/image_hu3983f54b17a85e6cd101e7150f8b73ae_74031_3cff291d5bd14f465d9f073e03f2cf08.webp 760w,
/report/osre25/openroad/20250710-gschaitanya/image_hu3983f54b17a85e6cd101e7150f8b73ae_74031_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre25/openroad/20250710-gschaitanya/image_hu3983f54b17a85e6cd101e7150f8b73ae_74031_d7183809c372e014da49924eaae1da70.webp"
width="460"
height="460"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/h2></description></item><item><title>Auditing Skin Tone Bias in Text-to-Image Models</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre25/ucsc/fairface/07102025-marzia/</link><pubDate>Wed, 09 Jul 2025 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre25/ucsc/fairface/07102025-marzia/</guid><description>&lt;p>As part of the &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre25/ucsc/sd-bias">Stable Diffusion Bias Project&lt;/a>, my &lt;a href="https://github.com/ucsc-ospo/ucsc-ospo.github.io/blob/main/content/project/osre25/ucsc/fair-face/index.md" target="_blank" rel="noopener">proposal&lt;/a> focuses on evaluating &lt;strong>bias in visual outputs of generative AI models&lt;/strong>, particularly &lt;strong>skin tone bias&lt;/strong> in Stable Diffusion.&lt;/p>
&lt;p>The goal is to analyze how models render people based on prompts like “a doctor” or “a homeless person,” and whether certain prompts systematically result in lighter or darker skin tones—even when race isn’t explicitly mentioned.&lt;/p>
&lt;hr>
&lt;h3 id="-what-ive-done-so-far">🧪 What I’ve Done So Far&lt;/h3>
&lt;ul>
&lt;li>Designed a prompt template covering six social categories (e.g., criminal justice, profession, socioeconomic)&lt;/li>
&lt;li>Generated image datasets using Stable Diffusion with varied seeds&lt;/li>
&lt;li>Built a preprocessing pipeline to estimate &lt;strong>melanin values&lt;/strong> from generated faces&lt;/li>
&lt;li>Created early visualizations showing &lt;strong>distributional trends in skin tone&lt;/strong>&lt;/li>
&lt;li>Identified early evidence of bias in prompts linked to status or wealth&lt;/li>
&lt;/ul>
&lt;hr>
&lt;h3 id="-tools-and-methods">⚒️ Tools and Methods&lt;/h3>
&lt;ul>
&lt;li>&lt;strong>Stable Diffusion&lt;/strong> for controlled image generation&lt;/li>
&lt;li>&lt;strong>BioSkin pipeline&lt;/strong> to extract melanin metrics&lt;/li>
&lt;li>&lt;strong>Fitzpatrick skin type approximation&lt;/strong> (in development as a validation method)&lt;/li>
&lt;li>Python-based data analysis and prompt auditing&lt;/li>
&lt;li>&lt;a href="https://github.com/openai/CLIP" target="_blank" rel="noopener">openai/CLIP&lt;/a> and BLIP for optional image-text alignment scoring&lt;/li>
&lt;/ul>
&lt;hr>
&lt;h3 id="-what-im-seeing">🔍 What I’m Seeing&lt;/h3>
&lt;p>Preliminary results show that even neutral prompts like “a portrait of a professor” tend to favor lighter skin tones, while prompts such as “a manual laborer” or “a homeless person” skew toward darker tones. These trends are &lt;strong>not always obvious to the human eye&lt;/strong>, which is why quantitative skin tone analysis is essential.&lt;/p>
&lt;p>I&amp;rsquo;m now exploring whether prompt engineering (e.g., adding “fair,” “dark-skinned,” or “diverse” descriptors) can help mitigate these imbalances.&lt;/p>
&lt;hr>
&lt;h3 id="-whats-next">🚧 What’s Next&lt;/h3>
&lt;ul>
&lt;li>Expand dataset to 60 prompts across 6 categories&lt;/li>
&lt;li>Incorporate alternate T2I models (Midjourney, DALL·E 3)&lt;/li>
&lt;li>Write a technical report and reproducible evaluation framework&lt;/li>
&lt;li>Submit a short paper or workshop proposal to a fairness or ethics venue&lt;/li>
&lt;/ul>
&lt;hr></description></item><item><title>Benchmarking the Future: Exploring High-Speed Scientific Data Streaming</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre25/anl/scistream/20250706-ankitkat042/</link><pubDate>Sun, 06 Jul 2025 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre25/anl/scistream/20250706-ankitkat042/</guid><description>&lt;p>Hello! I&amp;rsquo;m &lt;a href="https://ucsc-ospo.github.io/author/ankitkat042/" target="_blank" rel="noopener">Ankit Kumar&lt;/a>, and although I&amp;rsquo;m a bit late with this introduction post due to a busy period filled with interviews and college formalities, I&amp;rsquo;m excited to share my journey with the OSRE 2025 program and the fascinating world of scientific data streaming.&lt;/p>
&lt;h2 id="about-me">About Me&lt;/h2>
&lt;p>I&amp;rsquo;m currently pursuing my BTech degree at the Indraprastha Institute of Information Technology Delhi (IIIT Delhi) and am based in New Delhi, India. As I approach graduation, I&amp;rsquo;m thrilled to be working on a project that perfectly aligns with my interests in systems and networking.&lt;/p>
&lt;p>My passion for technology has led me through various experiences:&lt;/p>
&lt;ul>
&lt;li>
&lt;p>&lt;strong>Software Developer at CloudLabs&lt;/strong>: I worked at a platform founded by &lt;a href="https://faculty.iiitd.ac.in/~sumit/" target="_blank" rel="noopener">Dr. Sumit J Darak&lt;/a> that facilitates remote access to actual FPGA boards on a slot basis, making hardware experimentation accessible to students worldwide.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Data Mining Intern at &lt;a href="https://tasktracker.in/" target="_blank" rel="noopener">TaskTracker.in&lt;/a>&lt;/strong>: This experience gave me insights into large-scale data processing and analysis.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Undergraduate Researcher&lt;/strong>: Currently working under &lt;a href="https://faculty.iiitd.ac.in/~mukulika/" target="_blank" rel="noopener">Dr. Mukulika Maity&lt;/a> on benchmarking QUIC and TCP protocols across different environments including bare metal, virtual machines, and containers.&lt;/p>
&lt;/li>
&lt;/ul>
&lt;p>I chose this OSRE project because it represents an incredible opportunity to work with some of the best minds in the industry at Argonne National Laboratory (ANL) while diving deep into cutting-edge networking technologies.&lt;/p>
&lt;h2 id="my-project-scistream-performance-analysis">My Project: SciStream Performance Analysis&lt;/h2>
&lt;p>As part of the &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre25/anl/scistream">SciStream project&lt;/a>, I&amp;rsquo;m focusing on two critical aspects of high-performance scientific data streaming:&lt;/p>
&lt;h3 id="1-tcpudp-performace-benchmarking">1. TCP/UDP Performace Benchmarking&lt;/h3>
&lt;p>I&amp;rsquo;m conducting comprehensive benchmarking of SSH and TLS tunnels using various open-source tools and parameters. This work is crucial for understanding how different protocols and their overhead impact the performance of real-time scientific data streaming. The goal is to provide researchers with evidence-based recommendations for moving/processing their high-speed data transfers without compromising performance.&lt;/p>
&lt;p>
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="benchmarking_meme.png" srcset="
/report/osre25/anl/scistream/20250706-ankitkat042/benchmarking_meme_hu421a7ebb13e86e740532f6be0545cf9e_1301468_30852e26909ae3e8a70a243539d202b3.webp 400w,
/report/osre25/anl/scistream/20250706-ankitkat042/benchmarking_meme_hu421a7ebb13e86e740532f6be0545cf9e_1301468_cc337ea13c6aaff8c44a6cc4b452a3e3.webp 760w,
/report/osre25/anl/scistream/20250706-ankitkat042/benchmarking_meme_hu421a7ebb13e86e740532f6be0545cf9e_1301468_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre25/anl/scistream/20250706-ankitkat042/benchmarking_meme_hu421a7ebb13e86e740532f6be0545cf9e_1301468_30852e26909ae3e8a70a243539d202b3.webp"
width="760"
height="754"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;h3 id="2-quic-proxy-exploration">2. QUIC Proxy Exploration&lt;/h3>
&lt;p>I&amp;rsquo;m exploring different QUIC proxy implementations to understand their potential advantages over traditional TCP+TLS proxies in scientific workflows. QUIC, the protocol that powers modern web applications like YouTube, offers promising features for scientific data streaming, but comprehensive benchmarking is needed to validate its benefits.&lt;/p>
&lt;h2 id="working-with-cutting-edge-testbeds">Working with Cutting-Edge Testbeds&lt;/h2>
&lt;p>Currently, I&amp;rsquo;m conducting experiments using both the &lt;strong>&lt;a href="https://portal.fabric-testbed.net/" target="_blank" rel="noopener">FABRIC testbed&lt;/a>&lt;/strong> and &lt;strong>&lt;a href="https://www.es.net/" target="_blank" rel="noopener">ESnet testbed&lt;/a>&lt;/strong>. These platforms provide access to real high-speed network infrastructure, allowing me to test protocols and configurations under realistic conditions that mirror actual scientific computing environments.&lt;/p>
&lt;h2 id="the-team-experience">The Team Experience&lt;/h2>
&lt;p>These past two weeks have been incredibly rewarding, working alongside:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>&lt;a href="https://www.linkedin.com/in/alain-zhang-672086205/" target="_blank" rel="noopener">Alain Zhang&lt;/a>&lt;/strong> - my project mate from UC San Diego, cool guy.&lt;/li>
&lt;li>&lt;strong>&lt;a href="https://www.linkedin.com/in/castroflavio/" target="_blank" rel="noopener">Flavio Castro&lt;/a>&lt;/strong> - My project mentor and manager, goto person for my issues. currently at anl as a research development software engineer.&lt;/li>
&lt;li>&lt;strong>&lt;a href="https://www.anl.gov/profile/joaquin-chung" target="_blank" rel="noopener">Joaquin Chung&lt;/a>&lt;/strong> - Super mentor, brains behind the project. His guidance on the project is super valubale.&lt;/li>
&lt;li>&lt;strong>&lt;a href="https://www.anl.gov/profile/rajkumar-kettimuthu" target="_blank" rel="noopener">Rajkumar Kettimuthu&lt;/a>&lt;/strong> - Lead Scientist in our project whose comments on our paper critique are invaluable.&lt;/li>
&lt;li>&lt;strong>&lt;a href="https://www.linkedin.com/in/seena-vazifedunn/" target="_blank" rel="noopener">Seena Vazifedunn&lt;/a>&lt;/strong> - Graduate Research Assistant at University of Chicago. He asks very relevant and important questions during our report presentation and his feedbacks are very insightful.&lt;/li>
&lt;/ul>
&lt;p>The collaborative nature of this project has been fantastic, combining perspectives from different institutions and backgrounds to tackle complex networking challenges.&lt;/p>
&lt;p>Stay tuned for updates!&lt;/p>
&lt;hr>
&lt;p>&lt;em>This work is part of the &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre25/anl/scistream">SciStream project&lt;/a> at Argonne National Laboratory, reimagining how scientific data moves across modern research infrastructure.&lt;/em>&lt;/p></description></item><item><title>Enhancing Reproducibility in RAG Frameworks for Scientific Workflows</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre25/pnnl/llm_rag_reproducibility/20250625-wbq321/</link><pubDate>Wed, 25 Jun 2025 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre25/pnnl/llm_rag_reproducibility/20250625-wbq321/</guid><description>&lt;p>Hello, I&amp;rsquo;m Baiqiang. As part of the &lt;a href="https://ucsc-ospo.github.io/project/osre25/pnnl/llm_rag_reproducibility/" target="_blank" rel="noopener">Enhancing Reproducibility in RAG Frameworks for Scientific Workflows&lt;/a> project, I am excited to introduce my work on a crucial challenge in modern computational science. My &lt;a href="https://www.overleaf.com/read/fcbxtpngdnhw#8cc2c8" target="_blank" rel="noopener">proposal&lt;/a> under the mentorship of Luanzheng &amp;ldquo;Lenny&amp;rdquo; Guo at Pacific Northwest National Laboratory and Dongfang Zhao at the University of Washington aims to enhance the reproducibility of AI-driven scientific workflows.&lt;/p>
&lt;h3 id="the-problem-a-crisis-of-confidence-in-ai-for-science">The Problem: A Crisis of Confidence in AI for Science&lt;/h3>
&lt;p>Large Language Models (LLMs) are transforming scientific research, from accelerating literature reviews to generating novel hypotheses. However, their power is matched by their pitfalls: a tendency to &amp;ldquo;hallucinate&amp;rdquo; facts and a lack of transparency. Retrieval-Augmented Generation (RAG) was developed as a powerful solution, grounding LLM outputs in factual evidence retrieved from a specific knowledge base (like a database of scientific papers).&lt;/p>
&lt;p>But a hidden problem lurks within RAG: &lt;strong>non-determinism&lt;/strong>. The very first step of a RAG system—the similarity search that finds relevant documents—can produce different results even when asked the same question. Variations in indexing algorithms, data updates, or even the underlying software can change which documents are retrieved. For science, this is a critical flaw. If an experiment cannot be repeated with the same results, its conclusions cannot be trusted. This project tackles that challenge head-on.&lt;/p>
&lt;h3 id="our-mission-forging-a-path-to-reproducible-rag">Our Mission: Forging a Path to Reproducible RAG&lt;/h3>
&lt;p>This project proposes a comprehensive solution to systematically identify, measure, and mitigate non-determinism in RAG frameworks. Our goal is to empower researchers to build and use AI tools with confidence.&lt;/p>
&lt;p>Our approach is built on four key pillars:&lt;/p>
&lt;ol>
&lt;li>&lt;strong>Systematic Analysis:&lt;/strong> We will conduct a deep dive into popular RAG components (like FAISS, ScaNN, and HNSW) to pinpoint the exact sources of randomness and variability.&lt;/li>
&lt;li>&lt;strong>Rigorous Benchmarking:&lt;/strong> We will develop a public, open-source benchmarking suite using standardized scientific datasets (from PubMed, arXiv, etc.). This will allow anyone to quantitatively measure the reproducibility of their own RAG pipeline using clear metrics like retrieval overlap and rank correlation.&lt;/li>
&lt;li>&lt;strong>Targeted Enhancements:&lt;/strong> Based on our findings, we will implement practical solutions, including:
&lt;ul>
&lt;li>Promoting deterministic algorithms and configurations.&lt;/li>
&lt;li>Building robust data versioning and provenance tracking tools (inspired by DVC and Git LFS).&lt;/li>
&lt;li>Creating tools for precise configuration management to capture the entire experimental setup.&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>&lt;strong>Practical Guidance and Open Source Tools:&lt;/strong> We will distill our insights into comprehensive documentation, reusable code examples, and best practices. All tools and findings will be contributed back to the open-source community.&lt;/li>
&lt;/ol></description></item><item><title>From Friction to Flow: Why I'm Building Widgets for Reproducible Research</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre25/uchicago/jupyter-widgets/20250624-nbrewer/</link><pubDate>Tue, 24 Jun 2025 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre25/uchicago/jupyter-widgets/20250624-nbrewer/</guid><description>&lt;blockquote>
&lt;p>This summer, I’m building Jupyter Widgets to reduce friction in reproducible workflows on Chameleon. Along the way, I’m reflecting on what usability teaches us about the real meaning of reproducibility.&lt;/p>
&lt;/blockquote>
&lt;h2 id="supercomputing-competition-reproducibility-reality-check">Supercomputing Competition: Reproducibility Reality Check&lt;/h2>
&lt;p>My first reproducibility experience threw me into the deep end—trying to recreate a tsunami simulation with a GitHub repository, a scientific paper, and a lot of assumptions. I was part of a student cluster competition at the Supercomputing Conference, where one of our challenges was to reproduce the results of a prior-year paper. I assumed “reproduce” meant something like “re-run the code and get the same numbers.” But what we actually had to do was rebuild the entire computing environment from scratch—on different hardware, with different software versions, and vague documentation. I remember thinking: &lt;em>If all these conditions are so different, what are we really trying to learn by conducting reproducibility experiments?&lt;/em> That experience left me with more questions than answers, and those questions have stayed with me. In fact, they’ve become central to my PhD research.&lt;/p>
&lt;h2 id="summer-of-reproducibility-lessons-from-100-experiments-on-chameleon">Summer of Reproducibility: Lessons from 100+ Experiments on Chameleon&lt;/h2>
&lt;p>I’m currently a PhD student and research software engineer exploring questions around what computational reproducibility really means, and when and why it matters. I also participated in the &lt;strong>&lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre24/depaul/repronb/">Summer of Reproducibility 2024&lt;/a>&lt;/strong>, where I helped assess over 100 public experiments on the Chameleon platform. &lt;a href="https://doi.org/10.1109/e-Science62913.2024.10678673" target="_blank" rel="noopener">Our analysis&lt;/a> revealed key friction points—especially around usability—that don’t necessarily prevent reproducibility in the strictest sense, but introduce barriers in terms of time, effort, and clarity. These issues may not stop an expert from reproducing an experiment, but they can easily deter others from even trying. This summer’s project is about reducing that friction—some of which I experienced firsthand—by improving the interface between researchers and the infrastructure they rely on.&lt;/p>
&lt;h2 id="from-psychology-labs-to-jupyter-notebooks-usability-is-central-to-reproducibility">From Psychology Labs to Jupyter Notebooks: Usability is Central to Reproducibility&lt;/h2>
&lt;p>My thinking shifted further when I was working as a research software engineer at Purdue, supporting a psychology lab that relied on a complex statistical package. For most researchers in the lab, using the tool meant wrestling with cryptic scripts and opaque parameters. So I built a simple Jupyter-based interface to help them visualize input matrices, validate settings, and run analyses without writing code. The difference was immediate: suddenly, people could actually use the tool. It wasn’t just more convenient—it made the research process more transparent and repeatable. That experience was a turning point for me. I realized that usability isn’t a nice-to-have; it’s critical for reproducibility.&lt;/p>
&lt;h2 id="teaching-jupyter-widget-tutorials-at-scipy">Teaching Jupyter Widget Tutorials at SciPy&lt;/h2>
&lt;p>Since that first experience, I’ve leaned into building better interfaces for research workflows—especially using Jupyter Widgets. Over the past few years, I’ve developed and taught tutorials on how to turn scientific notebooks into interactive web apps, including at the &lt;strong>SciPy conference&lt;/strong> in &lt;a href="https://github.com/Jupyter4Science/scipy23-jupyter-web-app-tutorial" target="_blank" rel="noopener">2023&lt;/a> and &lt;a href="https://github.com/Jupyter4Science/scipy2024-jupyter-widgets-tutorial" target="_blank" rel="noopener">2024&lt;/a>. These tutorials go beyond the basics: I focus on building real, multi-tab applications that reflect the complexity of actual research tools. Teaching others how to do this has deepened my own knowledge of the widget ecosystem and reinforced my belief that good interfaces can dramatically reduce the effort it takes to reproduce and reuse scientific code. That’s exactly the kind of usability work I’m continuing this summer—this time by improving the interface between researchers and the Chameleon platform itself.&lt;/p>
&lt;h2 id="making-chameleon-even-more-reproducible-with-widgets">Making Chameleon Even More Reproducible with Widgets&lt;/h2>
&lt;p>This summer, I’m returning to Chameleon with a more focused goal: reducing some of the friction I encountered during last year’s reproducibility project. One of Chameleon’s standout features is its Jupyter-based interface, which already goes a long way toward making reproducibility more achievable. My work builds on that strong foundation by improving and extending interactive widgets in the &lt;strong>Python-chi&lt;/strong> library — making tasks like provisioning resources, managing leases, and tracking experiment progress on Chameleon even more intuitive. For example, instead of manually digging through IDs to find an existing lease, a widget could present your current leases in a dropdown or table, making it easier to pick up where you left off and avoid unintentionally reserving unnecessary resources. It’s a small feature, but smoothing out this kind of interaction can make the difference between someone giving up or trying again. That’s what this project is about.&lt;/p>
&lt;h2 id="looking-ahead-building-for-people-not-just-platforms">Looking Ahead: Building for People, Not Just Platforms&lt;/h2>
&lt;p>I’m excited to spend the next few weeks digging into these questions—not just about what we can build, but how small improvements in usability can ripple outward to support more reproducible, maintainable, and accessible research. Reproducibility isn’t just about rerunning code; it’s about supporting the people who do the work. I’ll be sharing updates as the project progresses, and I’m looking forward to learning (and building) along the way. I’m incredibly grateful to once again take part in this paid experience, made possible by the 2025 Open Source Research Experience team and my mentors.&lt;/p></description></item><item><title>Applying MLOps to overcome reproducibility barriers in machine learning research</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre25/nyu/mlops/06212025-alghali/</link><pubDate>Sun, 22 Jun 2025 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre25/nyu/mlops/06212025-alghali/</guid><description>&lt;h3 id="about-the-project">About the Project&lt;/h3>
&lt;p>Hello! I&amp;rsquo;m Ahmed, an undergraduate Computer Science student at the University of Khartoum I&amp;rsquo;m working on making machine learning research more reproducible for open access research facilities like &lt;a href="chameleoncloud.org">Chameleon testbed&lt;/a>, under the project &lt;a href="https://ucsc-ospo.github.io/project/osre25/nyu/mlops/" target="_blank" rel="noopener">Applying MLOps to overcome reproducibility barriers in machine learning research&lt;/a>, mentored by Prof. &lt;a href="https://ucsc-ospo.github.io/author/fraida-fund/" target="_blank" rel="noopener">Fraida Fund&lt;/a> and &lt;a href="https://ucsc-ospo.github.io/author/mohamed-saeed/" target="_blank" rel="noopener">Mohamed Saeed&lt;/a>. as part of this project my &lt;a href="https://docs.google.com/document/d/146PutdVy7cWSf_Gn8qcn0Ba2llMHjNtHIQzZ5a-xRvQ/edit?usp=sharing" target="_blank" rel="noopener">proposal&lt;/a> aims to build a template generator that generates repositories for reproducible model training on the Chameleon testbed.&lt;/p>
&lt;h3 id="reproducibility">Reproducibility&lt;/h3>
&lt;blockquote>
&lt;p>&lt;em>We argue that unless reproducing research becomes as vital and mainstream part of scientific exploration as reading papers is today, reproducibility will be hard to sustain in the long term because the incentives to make research results reproducible won’t outweigh the still considerable costs&lt;/em>&lt;/p>
&lt;p>— &lt;a href="https://www.chameleoncloud.org/media/filer_public/25/18/25189b96-c3a2-4a55-b99b-c25322fe6682/reproducibility_on_chameleon-3.pdf" target="_blank" rel="noopener">Three Pillars of Practical Reproducibility Paper&lt;/a>&lt;/p>
&lt;/blockquote>
&lt;p>
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="Acadamic code quality" srcset="
/report/osre25/nyu/mlops/06212025-alghali/codquality_huc392b48b950e52e3828e898b495a387e_63844_1883a01619446991471adb625dc1a04c.webp 400w,
/report/osre25/nyu/mlops/06212025-alghali/codquality_huc392b48b950e52e3828e898b495a387e_63844_a0629a8267968adb7dca83065a454987.webp 760w,
/report/osre25/nyu/mlops/06212025-alghali/codquality_huc392b48b950e52e3828e898b495a387e_63844_1200x1200_fit_q75_h2_lanczos.webp 1200w"
src="https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre25/nyu/mlops/06212025-alghali/codquality_huc392b48b950e52e3828e898b495a387e_63844_1883a01619446991471adb625dc1a04c.webp"
width="733"
height="646"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;p>By Reproducibility in science we refer to the ability to obtain consistent results using the same methods and conditions as the previous study. in simple words if I used the same data and metholodgy that was used before, I should obtain the same results. this principle is mapped to almost every scientific field including both Machine Learning research in science and core Machine Learning.&lt;/p>
&lt;h3 id="challenges-in-reproducibility">Challenges in Reproducibility&lt;/h3>
&lt;p>The same way the famous paper about the &lt;a href="https://www.nature.com/articles/d41586-019-00067-3" target="_blank" rel="noopener">repoducibility crisis in science&lt;/a> was published in in 2016, similar discussions have been published discussing this in machine learning research setting, the &lt;a href="https://ojs.aaai.org/index.php/AAAI/article/view/11503" target="_blank" rel="noopener">paper state of the art reproducibility in artificial intelligence&lt;/a> after analayzing 400 hundereds papers from top AI conferences, it was found that around 6% shared code, approximately 33% shared test data. In contrast, 54% only shared a pseudocode (summary of the algorithm).&lt;/p>
&lt;p>
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="Percentage of papers documenting each variable for the three factors" srcset="
/report/osre25/nyu/mlops/06212025-alghali/variables_hu1dd3560d8f29bff068e6ba2a71eed30f_236032_98f72f91d5f4040ac93d46a70ece1f4c.webp 400w,
/report/osre25/nyu/mlops/06212025-alghali/variables_hu1dd3560d8f29bff068e6ba2a71eed30f_236032_af62a4672817798441065a29b632ce1d.webp 760w,
/report/osre25/nyu/mlops/06212025-alghali/variables_hu1dd3560d8f29bff068e6ba2a71eed30f_236032_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre25/nyu/mlops/06212025-alghali/variables_hu1dd3560d8f29bff068e6ba2a71eed30f_236032_98f72f91d5f4040ac93d46a70ece1f4c.webp"
width="760"
height="312"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;p>The lack of software dependency management, proper version control, log tracking, and effective artifacts sharing made it very difficult to reproduce research in machine learning.&lt;/p>
&lt;p>Reproducibility in machine learning is largely supported by MLOps practices which is the case in the industry where the majority of researchers are backed by software engineers who are responsible of setting experimental environments or develop tools that streamline the workflow.However, in academic settings reproducibility remains a great challenge, researchers prefer to focus on coding, and worry a little about the the complexities invloved in configuring their experimental environment,As a result, the adaptation and standardization of MLOps practices in academia progress slowly. The best way to ensure a seamleas experience with MLOps, is to make these capabilities easily accessible to the researchers&amp;rsquo; workflow. by developing a tool that steamlines the process of provisioning resources, enviornment setup, model training and artifacts tracking, that ensures reproducible results.&lt;/p>
&lt;h3 id="proposed-solution">Proposed Solution&lt;/h3>
&lt;p>
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="Solution Architecture" srcset="
/report/osre25/nyu/mlops/06212025-alghali/Design_hue0a2172c7dadd98f1563084aefb8ce3c_266216_eca83abc0b11e0d295efffaa464eaf53.webp 400w,
/report/osre25/nyu/mlops/06212025-alghali/Design_hue0a2172c7dadd98f1563084aefb8ce3c_266216_4abd128ad260ffc60e4a7ebd623e4e32.webp 760w,
/report/osre25/nyu/mlops/06212025-alghali/Design_hue0a2172c7dadd98f1563084aefb8ce3c_266216_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre25/nyu/mlops/06212025-alghali/Design_hue0a2172c7dadd98f1563084aefb8ce3c_266216_eca83abc0b11e0d295efffaa464eaf53.webp"
width="760"
height="547"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;p>We want the researchers to spin up ML research instances/bare metal on Chameleon testbed while keeping the technical complexity involved in configuring and stitching everything together abstracted, users simply answer frew questions about their project info, frameworks, tools, features and integrations if there are any, and have a full generated,reproducible project. it contains a provisioning/infrastracture config layer for provisioning resources on the cloud, a dockerfile to spin up services and presistent storage for data,the ML tracking server system that logs the artifacts, metadata, environment configuration, system specification (GPUs type) and Git status using Mlflow, powered by a postgresSQL for storing metadata and a S3 Minio bucket to store artifacts.ML code at its core is a containarized training environment backed by
persistent storage for the artifacts generated from the experiment and the datasets and containarization of all these to ensure reproducibility.we aim to make the cloud experience easier, by dealing with the configuration needed for setting up the environment having a 3rd party framework, enabling seamless access to benchmarking dataset or any necessary components from services like Hugging face and GitHub as an example will be accessible from the container easily. for more techincal details about the solution you can read my propsal &lt;a href="https://docs.google.com/document/d/1ilm-yMEq-UTiJPGMl8tQc3Anl5cKM5RD2sUGInLjLbU" target="_blank" rel="noopener">here&lt;/a>.&lt;/p>
&lt;p>By addressing these challenges we can accelerate the scientific discovery. this not benefits those who are conducting the research but also the once building on top of it in the future. I look forward to share more updates as the project progresses and I welcome feedback from others interested in advancing reproducibility in ML research.&lt;/p></description></item><item><title>Building a Benchmarking Suite for Cache Performance Evaluation</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre25/harvard/cachebench/2025-06-21-haochengxia/</link><pubDate>Sat, 21 Jun 2025 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre25/harvard/cachebench/2025-06-21-haochengxia/</guid><description>&lt;p>Hi! I&amp;rsquo;m Haocheng Xia, a Computer Science student at the &lt;strong>University of Illinois Urbana-Champaign&lt;/strong>, passionate about the intersection of &lt;strong>machine learning and storage systems&lt;/strong>. Specifically, I&amp;rsquo;m keen on &lt;strong>workload analysis&lt;/strong> and &lt;strong>KV cache management for large language models&lt;/strong>.&lt;/p>
&lt;p>This summer, I&amp;rsquo;m happy to be a part of &lt;strong>SoR 2025&lt;/strong> and &lt;strong>OSRE 2025&lt;/strong>. I&amp;rsquo;m contributing to the &lt;strong>CacheBench&lt;/strong> project. My initiative, &lt;strong>&amp;lsquo;Building a Benchmarking Suite for Cache Performance Evaluation,&amp;rsquo;&lt;/strong> will create a robust platform. This involves extensive simulation of existing eviction algorithms using &lt;a href="https://github.com/cacheMon/libCacheSim" target="_blank" rel="noopener">libCacheSim&lt;/a>, developing microbenchmarks, and building a user-friendly platform for researchers to effortlessly evaluate novel cache designs. The ultimate goal is to establish a competitive leaderboard.&lt;/p>
&lt;p>My contributions will include a comprehensive dataset detailing simulated &lt;strong>miss ratios&lt;/strong> and &lt;strong>throughput&lt;/strong> of current cache eviction algorithms, an extension to &lt;a href="https://github.com/cacheMon/libCacheSim" target="_blank" rel="noopener">libCacheSim&lt;/a> for executing microbenchmarks both locally and on our online platform, and the creation and ongoing maintenance of a public web leaderboard. I&amp;rsquo;m grateful to be mentored by &lt;strong>Juncheng Yang&lt;/strong> and &lt;strong>Yazhuo Zhang&lt;/strong>.&lt;/p>
&lt;p>I&amp;rsquo;m thrilled to be part of building tools that empower users and advance the vision of a more decentralized web. Looking forward to a productive summer!&lt;/p></description></item><item><title>RAG-ST: Retrieval-Augmented Generation for Spatial Transcriptomics</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre25/uci/rag-st/06192025-zeyu/</link><pubDate>Thu, 19 Jun 2025 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre25/uci/rag-st/06192025-zeyu/</guid><description>&lt;p>Hi everyone! My name is Zeyu, and I will be working on a project for a retrieval-enhanced generative framework for spatial transcriptomics during Google Summer of Code 2025. My project is called &lt;a href="https://ucsc-ospo.github.io/project/osre25/uci/rag-st/" target="_blank" rel="noopener">&lt;strong>RAG-ST: Retrieval-Augmented Generation for Spatial Transcriptomics&lt;/strong>&lt;/a> and is supervised by &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/ziheng-duan/">Ziheng Duan&lt;/a>. The goal is to develop a retrieval-enhanced generative framework for predicting spatial gene expression from histological images, making spatial transcriptomics more affordable and easier to implement. &lt;a href="https://drive.google.com/file/d/1_yUf1NlVRpBXERCqnOby7pgP4WrWrZsr/view?usp=sharing" target="_blank" rel="noopener">You can view my full proposal here!&lt;/a>&lt;/p>
&lt;p>Spatial transcriptomics enables the capture of gene expression profiles with spatial resolution, providing unprecedented insights into cellular organization and the tissue microenvironment. However, its widespread application is limited by high costs and technical complexity. In contrast, histological imaging is inexpensive and widely accessible. If we can accurately predict gene expression from histology images, then high-resolution spatial information can be inferred without costly experiments.&lt;/p>
&lt;p>My project will:&lt;/p>
&lt;ul>
&lt;li>Create a large-scale paired dataset combining HEST histology images with reference gene expression profiles from CellxGene.&lt;/li>
&lt;li>Design a novel RAG-ST architecture that enables both &lt;strong>interpretable&lt;/strong> and &lt;strong>controllable&lt;/strong> generation of spatial gene expression.&lt;/li>
&lt;li>Benchmark RAG-ST against current state-of-the-art models for image-based gene expression inference.&lt;/li>
&lt;li>Open-source the full codebase and provide comprehensive tutorials to support future research and development.&lt;/li>
&lt;/ul>
&lt;p>I am excited to contribute to this project and help broaden access to spatial transcriptomics insights through machine learning–powered predictions!&lt;/p>
&lt;p>Zeyu Zou&lt;/p>
&lt;p>University of Northeastern Graduate&lt;/p>
&lt;p>Zeyu Zou is a graduate student at the University of Northeastern, where he is majoring in Analytics.&lt;/p></description></item><item><title>EnvGym – An AI System for Reproducible Custom Computing Environments</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre25/uchicago/envgym/</link><pubDate>Mon, 16 Jun 2025 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre25/uchicago/envgym/</guid><description>&lt;p>Hello, My name is Yiming Cheng. I am a Pre-doc researcher in Computer Science at University of Chicago. I&amp;rsquo;m excited to be working with the Summer of Reproducibility and the Chameleon Cloud community as a project leader. My project is &lt;a href="https://github.com/eaminc/envgym" target="_blank" rel="noopener">EnvGym&lt;/a> that focuses on developing an AI-driven system to automatically generate and configure reproducible computing environments based on natural language descriptions from artifact descriptions, Trovi artifacts, and research papers.&lt;/p>
&lt;p>The complexity of environment setup often hinders reproducibility in scientific computing. My project aims to bridge the knowledge gap between experiment authors and reviewers by translating natural language requirements into actionable, reproducible configurations using AI and NLP techniques.&lt;/p>
&lt;h3 id="project-overview">Project Overview&lt;/h3>
&lt;p>EnvGym addresses fundamental reproducibility barriers by:&lt;/p>
&lt;ul>
&lt;li>Using AI to translate natural language environment requirements into actionable configurations&lt;/li>
&lt;li>Automatically generating machine images deployable on bare metal and VM instances&lt;/li>
&lt;li>Bridging the knowledge gap between experiment authors and reviewers&lt;/li>
&lt;li>Standardizing environment creation across different hardware platforms&lt;/li>
&lt;/ul>
&lt;h3 id="june-10--june-16-2025">June 10 – June 16, 2025&lt;/h3>
&lt;p>Getting started with the project setup and initial development:&lt;/p>
&lt;ul>
&lt;li>I began designing the NLP pipeline architecture to parse plain-English descriptions (e.g., &amp;ldquo;I need Python 3.9, CUDA 11, and scikit-learn&amp;rdquo;) into structured environment &amp;ldquo;recipes&amp;rdquo;&lt;/li>
&lt;li>I set up the initial project repository and development environment&lt;/li>
&lt;li>I met with my mentor Prof. Kexin Pei to discuss the project roadmap and technical approach&lt;/li>
&lt;li>I started researching existing artifact descriptions from conferences and Trovi to understand common patterns in environment requirements&lt;/li>
&lt;li>I began prototyping the backend environment builder logic that will convert parsed requirements into machine-image definitions&lt;/li>
&lt;li>I explored Chameleon&amp;rsquo;s APIs for provisioning servers and automated configuration&lt;/li>
&lt;/ul>
&lt;h3 id="next-steps">Next Steps&lt;/h3>
&lt;ul>
&lt;li>Continue developing the NLP component for requirement parsing&lt;/li>
&lt;li>Implement the core backend logic for environment generation&lt;/li>
&lt;li>Begin integration with Chameleon Cloud APIs&lt;/li>
&lt;li>Start building the user interface for environment specification&lt;/li>
&lt;/ul>
&lt;p>This is an exciting and challenging project that combines my interests in AI systems and reproducible research. I&amp;rsquo;m looking forward to building a system that will help researchers focus on their science rather than struggling with environment setup issues.&lt;/p>
&lt;p>Thanks for reading, I will keep you updated as I make progress on EnvGym!&lt;/p></description></item><item><title>Smart Environments – An AI System for Reproducible Custom Computing Environments</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre25/uchicago/smart_environments/20250616-sam_huang/</link><pubDate>Mon, 16 Jun 2025 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre25/uchicago/smart_environments/20250616-sam_huang/</guid><description>&lt;p>Hi everyone, I&amp;rsquo;m Sam! I&amp;rsquo;m excited to be working with the Argonne National Laboratory and SoR this summer on Smart Environments. Have you ever encountered a great opensource project and wanted to run it or use it locally, only to find that it&amp;rsquo;s such a headache to set up all the dependencies? Maybe your system version wasn&amp;rsquo;t correct, or a piece of software was outdated, or the dependencies were incompatible with something you had already on your machine?&lt;/p>
&lt;p>In comes EnvGym to save the day! We want EnvGym to be an agent that would help reproduce opensource projects by automatically setting up the environmental dependencies required to get them running. That&amp;rsquo;s what I will be working on for the rest of the summer! To make EnvGym work, we will be leveraging LLM agents to tackle the problem. We will use EnvGym to read documentations, understand code structures, run commands to set up environments, and reflectively react to any errors and warnings.&lt;/p>
&lt;p>To build EnvGym, I have the following to-do&amp;rsquo;s in mind:&lt;/p>
&lt;ul>
&lt;li>Building a dataset that includes repos to be reproduced&lt;/li>
&lt;li>Establishing a baseline using current methods&lt;/li>
&lt;li>Implementing the actual EnvGym algorithm&lt;/li>
&lt;li>Testing EnvGym against baseline performance and iteratively improving it&lt;/li>
&lt;li>Deploying EnvGym to real-world use cases and gathering feedback&lt;/li>
&lt;/ul>
&lt;p>Here is the repo that we are working on:
&lt;a href="https://github.com/EaminC/EnvGym/tree/main" target="_blank" rel="noopener">https://github.com/EaminC/EnvGym/tree/main&lt;/a>&lt;/p>
&lt;p>More updates to come, thanks for reading!&lt;/p></description></item><item><title>Assessing and Enhancing CC-Snapshot for Reproducible Experiment Enviroments</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre25/uchicago/cc-snapshot/20250616-zahratm/</link><pubDate>Sun, 15 Jun 2025 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre25/uchicago/cc-snapshot/20250616-zahratm/</guid><description>&lt;p>Hello, My name is Zahra Temori. I am a rising senior in Computer Science at University of Delaware. I’m excited to be working with the Summer of Reproduciblity and the Chameleon Cloud community. My project is &lt;a href="https://github.com/ChameleonCloud/cc-snapshot" target="_blank" rel="noopener">cc-snapshot&lt;/a> that focuses on enhancing features for helping researchers capture and share reproducible experimental environments within the Chameleon Cloud testbed.&lt;/p>
&lt;p>Here is a detailed information about my project and plans to work for summer &lt;a href="https://docs.google.com/document/d/1kFOFL-H4WrXF7EUuXzcHLZ2p5w_DxbbWOGi-IGx39LM/edit?tab=t.0" target="_blank" rel="noopener">proposal&lt;/a>.&lt;/p>
&lt;h3 id="june-10--june-14-2025">June 10 – June 14, 2025&lt;/h3>
&lt;p>Getting started with the first milestone and beginning to explore the Chameleon Cloud and the project:&lt;/p>
&lt;ul>
&lt;li>I began familiarizing myself with the Chameleon Cloud platform. I created an account and successfully accessed a project.&lt;/li>
&lt;li>I learned how to launch an instance and create a lease for using computing resources.&lt;/li>
&lt;li>I met with my mentor to discuss the project goals and outline the next steps.&lt;/li>
&lt;li>I experimented with the environment and captured a snapshot to understand the process.&lt;/li>
&lt;/ul>
&lt;p>It has been less than a week and I have learned a lot specially about the Chameleon Cloud and how it is different from other clouds like AWS. I am exited to learn more and make progress.&lt;/p>
&lt;p>Thanks for reading, I will keep ypu updated as I work :)&lt;/p></description></item><item><title>Building a Billion-Scale Vector Embeddings Dataset</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre25/ucsc/embeddings/14062025-devadigapratham/</link><pubDate>Sun, 15 Jun 2025 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre25/ucsc/embeddings/14062025-devadigapratham/</guid><description>&lt;h1 id="billion-vector-embeddings-dataset">Billion Vector Embeddings Dataset&lt;/h1>
&lt;p>As part of the &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre25/ucsc/embeddings">Billion-Scale Embeddings Dataset project&lt;/a>, my &lt;a href="GSoC-proposal.pdf">proposal&lt;/a> under the mentorship of &lt;strong>Jayjeet Chakraborty&lt;/strong> aims to create the first large-scale, real-world vector embeddings dataset—bridging the critical gap in Approximate Nearest Neighbor (ANN) benchmarks and Retrieval-Augmented Generation (RAG) systems.&lt;/p>
&lt;h2 id="motivation">Motivation&lt;/h2>
&lt;p>Existing ANN benchmarks often fall short—they’re either synthetic (like SIFT) or too small-scale (≤1M vectors). With the rapid evolution of LLM-based vector search systems (e.g., OpenAI’s 3072d &lt;code>text-embedding-3-large&lt;/code>), there&amp;rsquo;s a growing need for:&lt;/p>
&lt;ul>
&lt;li>High-dimensional (&amp;gt;1000d), large-scale (&amp;gt;100M) embeddings&lt;/li>
&lt;li>Real-world distributions (Wikipedia-scale text)&lt;/li>
&lt;li>Open, reproducible benchmarks for the community&lt;/li>
&lt;/ul>
&lt;h2 id="project-goals">Project Goals&lt;/h2>
&lt;ul>
&lt;li>Generate &lt;strong>1 billion&lt;/strong> embeddings from English Wikipedia using open-source models.&lt;/li>
&lt;li>Create multiple dimensional variants: &lt;strong>1024d&lt;/strong>, &lt;strong>4096d&lt;/strong>, and &lt;strong>8192d&lt;/strong>.&lt;/li>
&lt;li>Deduplicate, compress, and store embeddings with rich metadata (URL, timestamps, models).&lt;/li>
&lt;li>Benchmark ANN performance on FAISS, HNSW, and Annoy.&lt;/li>
&lt;li>Distribute the dataset via HuggingFace &amp;amp; AWS S3 with shard-level access.&lt;/li>
&lt;/ul>
&lt;h2 id="open-source-impact">Open Source Impact&lt;/h2>
&lt;ul>
&lt;li>&lt;strong>ANN Libraries&lt;/strong>: Enable reproducible benchmarking for real-world workloads.&lt;/li>
&lt;li>&lt;strong>RAG Systems&lt;/strong>: Evaluate and optimize retrieval at scale using real Wikipedia text.&lt;/li>
&lt;li>&lt;strong>Researchers&lt;/strong>: Conduct large-scale studies on dimensionality, ANN accuracy, and compression trade-offs.&lt;/li>
&lt;/ul>
&lt;hr></description></item><item><title>Develop a clean and intuitive web-based interface for WildberryEye</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre25/ucsc/wildberryeye/20250615-sophietao127/</link><pubDate>Sun, 15 Jun 2025 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre25/ucsc/wildberryeye/20250615-sophietao127/</guid><description>&lt;p>As part of the &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre25/ucsc/wildberryeye">WildberryEye&lt;/a>, my &lt;a href="./GSoC-proposal.pdf">proposal&lt;/a> under the mentorship of Isaac Espinosa aims to develop a clean, intuitive, and responsive web-based interface to support real-time pollinator detection, data visualization, and system configuration.&lt;/p>
&lt;p>WildberryEye leverages edge computing (Raspberry Pi 5) and object detection (YOLO) to monitor pollinators like bees and hummingbirds. The expectations for this project focuse on developing a full-stack web interface to support real-time pollinator detection, data visualization, and system configuration. The whole development also include the real-time data extraction from the Raspberry Pi 5). The final result empowers researchers and contributors to engage with environmental data in an accessible and meaningful way.&lt;/p></description></item><item><title>Developing an Open Testbed for Edge Replication System Evaluation</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre25/umass/edge-replication/20250615-panjisri/</link><pubDate>Sun, 15 Jun 2025 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre25/umass/edge-replication/20250615-panjisri/</guid><description>&lt;p>Hi, I&amp;rsquo;m Panji. I&amp;rsquo;m currently contributing to the &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre25/umass/edge-replication/">Open Testbed for Reproducible Evaluation of Replicated Systems at the Edges&lt;/a> under the mentorship of Fadhil I. Kurnia. You can find more details on the project proposal &lt;a href="https://drive.google.com/file/d/1CFT5CJJXbQlVPz8_A9Dxkjl7oRjESdli/view?usp=sharing" target="_blank" rel="noopener">here&lt;/a>.&lt;/p>
&lt;p>The primary challenge we&amp;rsquo;re addressing is the current difficulty in fairly comparing different edge replication systems. To fix this, we&amp;rsquo;re trying to build a testing platform with four key parts. We&amp;rsquo;re collecting real data about how people actually use edge services, creating a tool that can simulate realistic user traffic across many locations, building a system that mimics network delays between hundreds of edge servers, and packaging everything into an open-source toolkit.&lt;/p>
&lt;p>This will let researchers test different coordination methods like EPaxos, Raft, and others using the same data and conditions. We hope this will help provide researchers with a more standardized way to evaluate their systems. We&amp;rsquo;re working with multiple programming languages and focusing on making complex edge computing scenarios accessible to everyone in the research community.&lt;/p>
&lt;p>One of the most interesting aspects of this project is tackling the challenge of creating realistic simulations that accurately reflect the performance characteristics different coordination protocols would exhibit in actual edge deployments. The end goal is to provide the research community with a standardized, reproducible environment for edge replication.&lt;/p></description></item><item><title>Implement Web Extensions &amp; System Settings Integration</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre25/ucsc/peersky/2025-06-15-6cobi/</link><pubDate>Sun, 15 Jun 2025 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre25/ucsc/peersky/2025-06-15-6cobi/</guid><description>&lt;p>Hi! I&amp;rsquo;m Hanzhong Liu, a Computer Science student at Fordham University with a minor in Business Administration. My interests lie in distributed systems, backend engineering, and decentralized tools—especially systems that prioritize user autonomy and privacy.&lt;/p>
&lt;p>This summer, I&amp;rsquo;m contributing to the &lt;a href="https://github.com/p2plabsxyz/peersky-browser" target="_blank" rel="noopener">Peersky&lt;/a> project as part of OSRE 2025 through Google Summer of Code. My project, &lt;strong>&amp;ldquo;Implement Web Extensions &amp;amp; System Settings Integration,&amp;rdquo;&lt;/strong> will add full support for local browser extensions in Peersky, allowing users to customize their experience without relying on centralized extension stores.&lt;/p>
&lt;p>Deliverables include an extension loader, drag-and-drop installation for &lt;code>.zip&lt;/code> and Git-based extensions, manifest validation, sandboxing, and a unified &lt;code>peersky://settings&lt;/code> page for managing everything from themes to privacy tools. Pre-installed extensions like uBlock Origin and DScan will be bundled by default.&lt;/p>
&lt;p>You can read my full &lt;a href="https://docs.google.com/document/d/1FQU2typchX08ly8lwk7nj8NcARNrTp0GomVICO4b53k/edit?tab=t.0#heading=h.nv2vmujhdrj" target="_blank" rel="noopener">proposal here&lt;/a>. My mentor for this project is &lt;strong>Akhilesh Thite&lt;/strong>.&lt;/p>
&lt;p>I&amp;rsquo;m excited to help build tools that empower users to take control of their browsing experience—and to contribute to the vision of a more decentralized web. Looking forward to the summer ahead!&lt;/p></description></item><item><title>Into the VR-Verse: My GSoC Adventure Begins!</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre25/ucsc/brahma/06152025-kajaljotwani/</link><pubDate>Sun, 15 Jun 2025 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre25/ucsc/brahma/06152025-kajaljotwani/</guid><description>&lt;p>Hello! I’m Kajal Jotwani, an undergraduate Computer Science student from India who is passionate about building creative, interactive technologies and contributing to open source. This summer, as part of Google Summer of Code 2025, I will be working on the Brahma / Allocentric WebXR Interfaces project under the mentorship of &lt;strong>Samir Ghosh&lt;/strong>. You can read my complete &lt;a href="https://docs.google.com/document/d/1Ne7ADVM72jRuxU7wzRYK8Hvp1zqCUviU0Fh1sTtRWe4/edit?usp=sharing" target="_blank" rel="noopener">proposal here.&lt;/a>&lt;/p>
&lt;p>This project focuses on creating a formalized framework for building collaborative and cross-platform WebXR-based experiences. As part of its first public release of Brahma- a lightweight open-source toolkit, our goal is to formalize the framework, create documentation, and implement example applications like multi-user games and scientific visualizations. This will help make Brahma extensible and accessible for a wider developer community.&lt;/p>
&lt;p>I&amp;rsquo;m excited to be working on this project and will be documenting my journey, learnings, and progress here throughout the summer.&lt;/p></description></item><item><title>Introducing Scenic-RoboSuite Interface</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre25/ucsc/scenic/20250616-sahil-tgs/</link><pubDate>Sun, 15 Jun 2025 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre25/ucsc/scenic/20250616-sahil-tgs/</guid><description>&lt;p>Hey! I&amp;rsquo;m &lt;a href="https://sahiltgs.super.site/" target="_blank" rel="noopener">Sahil&lt;/a>, working on integrating Scenic with RoboSuite for GSoC 2025. My &lt;a href="https://sahiltgs.super.site/gsoc/uc-ospo-proposal" target="_blank" rel="noopener">project&lt;/a> is mentored by &lt;a href="https://ucsc-ospo.github.io/author/daniel-fremont/" target="_blank" rel="noopener">Daniel Fremont&lt;/a> and &lt;a href="https://ucsc-ospo.github.io/author/eric-vin/" target="_blank" rel="noopener">Eric Vin&lt;/a> .&lt;/p>
&lt;p>I&amp;rsquo;m connecting &lt;a href="https://scenic-lang.org/" target="_blank" rel="noopener">Scenic&lt;/a> (a probabilistic programming language for scenarios) with &lt;a href="https://robosuite.ai/" target="_blank" rel="noopener">RoboSuite&lt;/a> (a robotics simulation framework). Basically, you write simple scenario descriptions and get complex 3D robot simulations automatically.&lt;/p>
&lt;p>Currently, as I&amp;rsquo;m building things and learning how Scenic works, I have been able to get the basic skeleton for the simulator interface working. I&amp;rsquo;ve implemented the simulator class and built a world model that can translate Scenic objects into RoboSuite&amp;rsquo;s simulator (which is MuJoCo-based). The interface now handles precise object placement in the world pretty well.&lt;/p>
&lt;p>One of the trickier parts was figuring out the translation logic between Scenic and RoboSuite. I managed to overcome this by building a system that automatically detects the shape of objects when moving between the two frameworks, which lays a foundation for more complex object mapping later on.&lt;/p>
&lt;p>I&amp;rsquo;ve also built some basic example scenarios to run and test with. Currently working on more complex examples and testing Scenic&amp;rsquo;s features like probabilistic object placement, constraint satisfaction, and spatial relationships between objects.&lt;/p>
&lt;p>In summary, the &amp;ldquo;Scenic to RoboSuite&amp;rdquo; part of the interface is pretty much done. For next week, I need to work on the &amp;ldquo;RoboSuite to Scenic&amp;rdquo; part - basically getting feedback and state information flowing back from the simulation. Achieving this will make a complete bridge and give us a working simulator interface, which is the first major milestone for the project.&lt;/p></description></item><item><title>Kolmogorov-Arnold-based Transformer for LLMs</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre25/ucsc/kallm/20250615-dentonjc/</link><pubDate>Sun, 15 Jun 2025 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre25/ucsc/kallm/20250615-dentonjc/</guid><description>&lt;p>Project: &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre25/UNL/KALLM">KALLM&lt;/a>&lt;/p>
&lt;p>Proposal: &lt;a href="https://krutsylo.neocities.org/share/pdf/KALLM_Public.pdf" target="_blank" rel="noopener">proposal&lt;/a>&lt;/p>
&lt;p>Mentors:&lt;/p>
&lt;ul>
&lt;li>Sai Suman Lamba Karanam&lt;/li>
&lt;li>Prof. Zahmeeth Sakkaff&lt;/li>
&lt;/ul>
&lt;p>I am modifying existing large language models to make them more efficient by replacing some of their layers with Kolmogorov-Arnold Network (KAN) modules. These KAN layers use compact univariate polynomial approximations, which can reduce parameter count and improve interpretability. The project explores how to integrate these layers into Transformers, and how far we can push this idea by combining or stacking KAN modules with different polynomial bases. The goal is to keep performance competitive while lowering computational costs.&lt;/p>
&lt;p>Beyond just speeding up training, I am exploring several other promising directions. One is testing whether transfer learning remains effective when replacing the linear layers of a pretrained LLM with KAN modules, or when swapping between different KAN configurations. I am also considering curriculum learning strategies that gradually increase KAN complexity during training. I have studied all major KAN implementations and early experiments with a custom Transformer architecture show encouraging results. However, I have found that most LLMs rely on functional-style activation definitions in PyTorch, which makes it difficult to build a universal wrapper. Because of this, KAN-based models will likely need to be integrated manually on a case-by-case basis.&lt;/p></description></item><item><title>Open Source Repository Browser</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre25/ucsc/orb/20250615-param/</link><pubDate>Sun, 15 Jun 2025 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre25/ucsc/orb/20250615-param/</guid><description>&lt;p>Hi! I&amp;rsquo;m Param Arora, a Computer Science student at Manipal Institute of Technology. My interests lie in backend engineering and AI.&lt;/p>
&lt;p>This summer, I&amp;rsquo;m contributing to the &lt;a href="https://github.com/UC-OSPO-Network/orb-showcase" target="_blank" rel="noopener">ORB&lt;/a> project as part of OSRE 2025 through Google Summer of Code.&lt;/p>
&lt;p>My project, &lt;strong>&amp;ldquo;UC Open Source Repository Browser [UC ORB]&amp;rdquo;&lt;/strong>, is a discovery platform that maps and categorizes open source projects across the UC system. It offers a comprehensive web interface with intuitive search, advanced filtering capabilities, responsive design, and integrated visualizations of project metrics.&lt;/p>
&lt;p>You can read my full &lt;a href="https://drive.google.com/file/d/1zELT9lxPhLCUs9Xyfb2nU9EPc_tjzVki/view?usp=sharing" target="_blank" rel="noopener">proposal here&lt;/a>.
My amazing mentor for this project is &lt;strong>Juanita Gomez&lt;/strong>.&lt;/p>
&lt;p>Looking forward to the summer ahead!&lt;/p></description></item><item><title>Scaling Sensor Networks for Environmental Research</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre25/ucsc/ents/15-06-2025-devansh/</link><pubDate>Sun, 15 Jun 2025 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre25/ucsc/ents/15-06-2025-devansh/</guid><description>&lt;p>Hi! I’m &lt;strong>Devansh Kukreja&lt;/strong>, a researcher, indie developer, and Computer Science undergrad. I&amp;rsquo;m interested in distributed systems, orchestration services, and real-time data platforms. I enjoy working on systems that help different components connect and run smoothly at scale.&lt;/p>
&lt;p>This summer, I’m contributing to the &lt;a href="https://github.com/jlab-sensing/ENTS-backend" target="_blank" rel="noopener">&lt;strong>ENTS&lt;/strong>&lt;/a> (Environmental NeTworked Sensor) platform with the &lt;strong>University of California, Santa Cruz Open Source Program Office&lt;/strong> as part of &lt;strong>Google Summer of Code 2025&lt;/strong>.&lt;/p>
&lt;p>&lt;strong>ENTS&lt;/strong> is an open-source web portal designed to collect, visualize, and analyze data from large-scale environmental sensor networks. It helps researchers and citizen scientists monitor sensors like soil moisture, temperature, current, and voltage supporting real-time environmental research in outdoor settings.&lt;/p>
&lt;p>My work this summer focuses on improving the platform’s reliability and usability. I’ll be fixing visualization bugs, enhancing chart synchronization, making data point selection more intuitive, and improving error handling. Alongside that, I’m building a &lt;strong>Logger Registration System&lt;/strong> that lets users easily add and configure their data loggers, with potential support for over-the-air provisioning via &lt;strong>The Things Network (TTN)&lt;/strong> for LoRaWAN-based devices.&lt;/p>
&lt;p>You can check out my full &lt;a href="https://drive.google.com/file/d/1CA1ZCTmh0NY0Yu3-ohsmJ3xgSm3ON7by/view?usp=sharing" target="_blank" rel="noopener">proposal here&lt;/a>. I’m grateful to be mentored by &lt;strong>Colleen Josephson&lt;/strong>, &lt;strong>John Madden&lt;/strong>, and &lt;strong>Alec Levy&lt;/strong>, who are guiding the project with incredible insight and support.&lt;/p>
&lt;p>By the end of the summer, ENTS will be a more stable, user-friendly, and extensible platform—better equipped to support environmental research at scale. I&amp;rsquo;m super excited to learn, build, and contribute to something meaningful!&lt;/p></description></item><item><title>Type Narrowing: Evaluate New Gradual Languages and Do Unsound Narrowings Lead to Exploits</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre25/uutah/type-narrowing/20250615-sivasathyaseelan/</link><pubDate>Sun, 15 Jun 2025 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre25/uutah/type-narrowing/20250615-sivasathyaseelan/</guid><description>&lt;p>Hello! I’m Siva Sathyaseelan D N, a pre-final year B.Tech + M.Tech Engineering student at IIT BHU, Varanasi, India. With a deep-rooted passion for software development and scientific computing. I thrive at the intersection of code and real-world problem-solving. For two years, I’ve engaged in open-source work across scientific simulation, blockchain, and cloud-native technologies, through hobby projects, hackathons, internships, and an LFX mentee. I will be working on &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre25/uutah/type-narrowing/">Type Narrowing: Evaluate New Gradual Languages and Do Unsound Narrowings Lead to Exploits&lt;/a> under the mentorship of &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/content/authors/bennn">Ben Greenman&lt;/a>. &lt;a href="https://docs.google.com/document/d/1QcfiOWQQBxTW3YnkCmgfz-xHwLGad4OuCMjyphbaz54/edit?usp=sharing" target="_blank" rel="noopener">My proposal can be viewed here!&lt;/a>&lt;/p></description></item><item><title>Building a Simulator for Benchmarking Replicated Systems</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre25/umass/edge-replication/20250613-mchan/</link><pubDate>Sat, 14 Jun 2025 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre25/umass/edge-replication/20250613-mchan/</guid><description>&lt;p>Hi, I&amp;rsquo;m Michael. I&amp;rsquo;m currently contributing to the &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre25/umass/edge-replication/">Open Testbed for Reproducible Evaluation of Replicated Systems at the Edges&lt;/a> under the mentorship of &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/fadhil-kurnia/">Fadhil Kurnia&lt;/a>. You can find more details on the project proposal &lt;a href="https://drive.google.com/file/d/1LQCPu1h9vXAbdL6AX_E9S43dsIOndTyW/view?usp=sharing" target="_blank" rel="noopener">here&lt;/a>.&lt;/p>
&lt;p>What we are trying to achieve is to create a system to test and evaluate the performance of different consensus protocols and consistency models under the same application and workload. The consensus protocols and consistency models are both tested on various replicated black-box applications. Essentially, the testbed itself is able to deploy any arbitrary stateful application on multiple machines (nodes) as long as it is packaged in the form of a docker image. The consensus protocol is used to perform synchronization between the stateful part of the application (in most cases, the database). The goal is that by the end of this project, the testbed we are building has provided the functionality and abstraction to support the creation of new consensus protocols to run tests on.&lt;/p>
&lt;p>One major challenge in implementing this is with regards to the handling of replication on the running docker containers. Generally, the services that can be deployed in this system would be of two types:&lt;/p>
&lt;ol>
&lt;li>A Deterministic Application (An application that will always return the same output when given the same input. e.g., a simple CRUD app)&lt;/li>
&lt;li>A Non-Deterministic Application (An application that may return the different outputs when given the same input. e.g., an LLM which may return different response from the same prompt request)&lt;/li>
&lt;/ol>
&lt;p>Both of these application types requires different implementation of consensus protocols. In the case of a deterministic application, since all request will always yield the same response (and the same changes inside the database of the application itself), the replication protocol can perform replication on the request to all nodes. On the other hand, in a non-determinisitic application, the replication protocol applies synchronization on the state of the database directly since a different response may be returned on the same request.&lt;/p></description></item><item><title>Kicking Off Intelligent Observability for Seam: My OSRE 2025 Journey</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre25/ucsd/seam/intelligent-observability/20250614-manish-reddy/</link><pubDate>Sat, 14 Jun 2025 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre25/ucsd/seam/intelligent-observability/20250614-manish-reddy/</guid><description>&lt;p>Hi! I’m &lt;strong>Manish K Reddy&lt;/strong> (&lt;a href="https://github.com/kredd2506" target="_blank" rel="noopener">@kredd2506&lt;/a>), a graduate student based in the United States, and I’m excited to join the OSRE 2025 cohort. This summer, I’ll be working with the &lt;a href="https://www.sdsc.edu/" target="_blank" rel="noopener">San Diego Supercomputer Center (SDSC)&lt;/a> and the &lt;a href="https://nrp.ai/" target="_blank" rel="noopener">National Research Platform (NRP)&lt;/a> on a project that blends my interests in machine learning, cloud systems, and real-world impact.&lt;/p>
&lt;p>The &lt;a href="https://nrp.ai/" target="_blank" rel="noopener">National Research Platform (NRP)&lt;/a> has moved beyond its original vision as a “ScienceDMZ data freeway” and evolved into a distributed cloud supercomputer, empowering research and education across more than 50 institutions. SDSC, located at UC San Diego, is recognized internationally for driving innovation in data, supercomputing, and advanced cyberinfrastructure.&lt;/p>
&lt;p>&lt;strong>My project&lt;/strong>, &amp;ldquo;&lt;em>Intelligent Observability for Seam: A GenAI Approach&lt;/em>&amp;rdquo; focuses on building an ML-powered service for NRP. The goal is to analyze monitoring data (starting with Prometheus metrics), automatically detect anomalies, and use generative AI (GenAI) for human-readable explanations and root-cause analysis. This will help researchers and operators solve problems faster and keep complex research systems running smoothly.&lt;/p>
&lt;p>I am especially grateful to my lead mentor &lt;a href="https://ucsc-ospo.github.io/author/mohammad-firas-sada/" target="_blank" rel="noopener">Mohammad Firas Sada&lt;/a>, who is personally guiding me throughout this project. I also want to thank Jeffrey Weekley and Derek Weitzel for their support and guidance.&lt;br>
You can read my &lt;a href="https://summerofcode.withgoogle.com/media/user/e7a9ade92bcf/proposal/gAAAAABoTeP59B2JlNoLcurxCTBvCS0T9by5Tv8ce1Hs6PB629g9rgzeb_8UrJTZfgpdagnHs5NjUtyYlanFb99wPxpTWjWSgwwToS5qh5u_YUfp9p6IzyE=.pdf" target="_blank" rel="noopener">initial proposal here (PDF)&lt;/a>.&lt;/p>
&lt;hr>
&lt;h3 id="genai-driven-observability-for-nrp">GenAI-Driven Observability for NRP&lt;/h3>
&lt;ul>
&lt;li>&lt;strong>Topics:&lt;/strong> Machine Learning, Observability, DevOps, High Performance Computing, LLMs, GenAI, Distributed Systems&lt;/li>
&lt;li>&lt;strong>Skills:&lt;/strong> Python, Prometheus, Docker, Kubernetes, FastAPI, PyTorch, Pandas, LLM APIs, scikit-learn, PostgreSQL&lt;/li>
&lt;li>&lt;strong>Difficulty:&lt;/strong> Medium&lt;/li>
&lt;li>&lt;strong>Size:&lt;/strong> 350 hours&lt;/li>
&lt;li>&lt;strong>Mentors:&lt;/strong> Mohammad Firas Sada, Jeffrey Weekley, Derek Weitzel&lt;/li>
&lt;/ul>
&lt;hr>
&lt;p>This summer, I’m looking forward to:&lt;/p>
&lt;ul>
&lt;li>Delivering an open-source anomaly detection tool for NRP&lt;/li>
&lt;li>Building GenAI features for better explanations and root-cause analysis&lt;/li>
&lt;li>Learning from my mentors and contributing to a vibrant open science community&lt;/li>
&lt;/ul>
&lt;p>Thanks for reading, and I’m looking forward to sharing my journey and progress in the coming weeks!&lt;/p>
&lt;hr></description></item><item><title>LINQS: Autograder (LLM Detection)</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre25/ucsc/autograder/</link><pubDate>Sat, 14 Jun 2025 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre25/ucsc/autograder/</guid><description>&lt;h1 id="linqs-autograder-gsoc-25">LINQS: Autograder (GSoC &amp;lsquo;25)&lt;/h1>
&lt;p>As part of the &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/content/project/osre25/ucsc/autograder/index.md">LINQS: Autograder (LLM Detection)&lt;/a> my &lt;a href="https://summerofcode.withgoogle.com/programs/2025/projects/jxBUpvoM" target="_blank" rel="noopener">proposal&lt;/a> under the mentorship of Eriq Augustine, Lucas Ellenberger, and Lise Getoor aims to build a tool for AI plagiarism detection in code.&lt;/p>
&lt;h2 id="problem-statement">Problem Statement&lt;/h2>
&lt;p>Academic institutions are facing new sets of challenges in &lt;strong>maintaining academic integrity&lt;/strong> with the rise of Large Language Models and tools like ChatGPT and GitHub Copilot, and their easier accessibility to students. Students are increasingly using these tools for assistance with their coursework, especially in &lt;strong>programming assignments&lt;/strong>.&lt;/p>
&lt;p>While these tools are useful for purposes such as brainstorming, research, and drafting, its use in completing assignments often crosses ethical boundaries. The use of these tools by students makes it difficult to &lt;strong>uphold fairness in grading and ensure they are truly learning&lt;/strong>.&lt;/p>
&lt;p>AI-generated code often lacks unique identifiers, rendering &lt;strong>traditional plagiarism detectors&lt;/strong> like MOSS &lt;strong>ineffective&lt;/strong> in detecting AI-generated code. That’s why there is a &lt;strong>need for better systems&lt;/strong> that can assess whether code was AI generated by spotting underlying patterns.&lt;/p>
&lt;h2 id="project-overview">Project Overview:&lt;/h2>
&lt;p>This is the problem that I am working to address with my project &lt;strong>‘LLM Detection’&lt;/strong>.&lt;/p>
&lt;p>I aim to build a system that helps academic institutions ensure fairness and integrity in students&amp;rsquo; work.
To accomplish this goal, I will be working on 2 tasks:&lt;/p>
&lt;ul>
&lt;li>Building a tool which determines whether a given piece of code was written by AI or not.&lt;/li>
&lt;li>Designing and implementing a mechanism to compute a confidence score that indicates the likelihood of AI involvement in the code.&lt;/li>
&lt;/ul>
&lt;p>This tool can discourage students from copying or completing entire assignments using AI tools, &lt;strong>encouraging honest and independent work&lt;/strong>.&lt;/p>
&lt;p>(Read my full GSoC proposal here: &lt;a href="https://drive.google.com/file/d/1skTVhcrEMAAwc6XzYQ0w3_uVRLxz0IB9/view?usp=sharing" target="_blank" rel="noopener">Proposal&lt;/a>)&lt;/p>
&lt;h2 id="about-me">About me:&lt;/h2>
&lt;p>Hey there!&lt;/p>
&lt;p>My name is Anvi Kohli, I am a senior majoring in Computer Science and AI from India. This summer I will be contributing to the Autograder project by the LINQS Lab, under the guidance of Eriq Augustine, Lucas Ellenberger, and Lise Getoor.&lt;/p>
&lt;p>A problem-solver at heart, I love to brainstorm, solve, and optimize complex issues. An instance being reaching the grand finals of the Smart India Hackathon to become the third best team nationwide with our app – “PM Poshan”. This app was built to digitize the monitoring and functioning of the mid-day meal scheme in India. It gave me the opportunity to improve my versatility and exposed me to all stages of the product development cycle.&lt;/p>
&lt;p>I have hands-on experience in a multitude of domains such as AI/Data Science, cloud, full-stack development, and DevOps. Within AI, I have worked in GenAI, Computer Vision, Deep Learning and Classical Machine Learning. Apart from this, I have a strong interest in entrepreneurship, travelling, and cooking.&lt;/p></description></item><item><title>MPI Appliance for HPC Research on Chameleon</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre25/uchicago/mpi/20250614-rohan-babbar/</link><pubDate>Sat, 14 Jun 2025 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre25/uchicago/mpi/20250614-rohan-babbar/</guid><description>&lt;p>Hi Everyone,&lt;/p>
&lt;p>I’m Rohan Babbar from Delhi, India. This summer, I’m excited to be working with the Argonne National Laboratory and the Chameleon Cloud community. My &lt;a href="https://ucsc-ospo.github.io/project/osre25/uchicago/mpi/" target="_blank" rel="noopener">project&lt;/a> focuses on developing an MPI Appliance to support reproducible High-Performance Computing (HPC) research on the Chameleon testbed.&lt;/p>
&lt;p>For more details about the project and the planned work for the summer, you can read my proposal &lt;a href="https://docs.google.com/document/d/1iOx95-IcEOSVxpOkL20-jT5SSDOwBiP78ysSUNpRwXs/edit?usp=sharing" target="_blank" rel="noopener">here&lt;/a>.&lt;/p>
&lt;h3 id="-community-bonding-period">👥 Community Bonding Period&lt;/h3>
&lt;p>Although the project officially started on June 2, 2025, I made good use of the community bonding period beforehand.&lt;/p>
&lt;ul>
&lt;li>I began by getting access to the Chameleon testbed, familiarizing myself with its features and tools.&lt;/li>
&lt;li>I experimented with different configurations to understand the ecosystem.&lt;/li>
&lt;li>My mentor, &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/ken-raffenetti/">Ken Raffenetti&lt;/a>, and I had regular check-ins to align our vision and finalize our milestones, many of which were laid out in my proposal.&lt;/li>
&lt;/ul>
&lt;h3 id="-june-2--june-14-2025">🔧 June 2 – June 14, 2025&lt;/h3>
&lt;p>Our first milestone was to build a base image with MPI pre-installed. For this:&lt;/p>
&lt;ul>
&lt;li>We decided to use &lt;a href="https://spack.io/" target="_blank" rel="noopener">Spack&lt;/a>, a flexible package manager tailored for HPC environments.&lt;/li>
&lt;li>The image includes multiple MPI implementations, allowing users to choose the one that best suits their needs and switch between them using simple &lt;a href="https://lmod.readthedocs.io/en/latest/" target="_blank" rel="noopener">Lua Module&lt;/a> commands.&lt;/li>
&lt;/ul>
&lt;p>📌 That’s all for now! Stay tuned for more updates in the next blog.&lt;/p>
&lt;p>Thanks for reading!&lt;/p></description></item><item><title>StatWrap: Cross-Project Searching and Classification using Local Indexing</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre25/northwestern/statwrap/20250614-debangi29/</link><pubDate>Sat, 14 Jun 2025 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre25/northwestern/statwrap/20250614-debangi29/</guid><description>&lt;p>Hello👋! I am &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/debangi-ghosh/">Debangi Ghosh&lt;/a>, currently pursuing a degree in Mathematics and Computing at IIT (BHU) Varanasi, India. This summer, I will be working on the &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre25/northwestern/statwrap/">StatWrap: Cross-Project Searching and Classification using Local Indexing&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/1dxyBP2oMJwYDCKyIWzr465zNmm6UWtnI/view?usp=sharing" target="_blank" rel="noopener">project proposal&lt;/a> for more details.&lt;/p>
&lt;p>My project aims to address the challenges in project navigation and discoverability by integrating a robust full-text search capability within the user interface. Instead of relying on basic keyword-based search—where remembering exact terms can be difficult—we plan to implement a natural language-based full-text search. This approach involves two main stages: indexing, which functions like creating a searchable map of the content, and searching, which retrieves relevant information from that map. We will evaluate and compare available open-source libraries to choose and implement the most effective one.
In addition, my project aims to enhance project organization by introducing a new classification system that clearly distinguishes between “Active” and “Past” projects in the user interface. This will improve clarity, reduce clutter, and provide a more streamlined experience as the number of projects grows.&lt;/p>
&lt;p>Stay tuned for updates on my progress in the coming weeks! 🚀&lt;/p></description></item><item><title>WildBerryEye: Mechanical Design &amp; Weather-Resistant Enclosure</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre25/ucsc/wildberryeye/20250614-teolangan/</link><pubDate>Sat, 14 Jun 2025 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre25/ucsc/wildberryeye/20250614-teolangan/</guid><description>&lt;p>Hello! My name is &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/content/authors/teolangan">Teodor Langan&lt;/a>, an undergraduate student currently persueing a Robotics Engineering degree at the University of California, Santa Cruz. This Summer, I&amp;rsquo;ll be working on developing the hardware for the &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre25/ucsc/wildberryeye/">WildBerryEye&lt;/a> project, mentored by &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/content/authors/caiespin">Carlos Isaac Espinosa&lt;/a>. Here is my &lt;a href="https://drive.google.com/file/d/1DfZLWl3ccZk3ss9yMP6oL9dpsyypRBDA/view?usp=sharing" target="_blank" rel="noopener">project proposal&lt;/a>!&lt;/p>
&lt;p>My project focuses on tackling the hardware challenge for WildBerryEye, an open-source ecological monitoring platform built on Raspberry Pi. To reliably support the real-time object detection provided by the system, it requires a robust and weather-resistant camera enclosure that can reliably protect its electronics in the field. To address this, I will be designing and prototyping a modular, 3D-printable camera case using FreeCAD this Summer. The case will be able to protect electrical components from rain and dust while incorporating proper ventilation and heat dissipation features. Designed using FreeCAD, the entire model will be fully open-source, allowing for easy adoption and modification by the community. Over this Summer, this work will incorporate multiple rounds of field testing to test and refine the design under accurate field conditions. Ultimately, my project aims to deliver a detailed open-source FreeCAD model, full assembly documentation, and a user guide.&lt;/p>
&lt;p>I&amp;rsquo;m excited to see what we can learn througout the development of my project!&lt;/p></description></item><item><title>Improving AI Data Pipelines in AIDRIN: A Privacy-Centric and Multimodal Expansion</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre25/lbl/aidrin/20250612-harish_balaji/</link><pubDate>Thu, 12 Jun 2025 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre25/lbl/aidrin/20250612-harish_balaji/</guid><description>&lt;p>⏱️ Reading time: 4–5 minutes&lt;/p>
&lt;p>Hi 👋&lt;/p>
&lt;p>I’m Harish Balaji, a Master’s student at NYU with a focus on Artificial Intelligence, Machine Learning, and Cybersecurity. I’m especially interested in building scalable systems that reflect responsible AI principles. For me, data quality isn’t just a technical detail. It’s a foundational aspect of building models that are reliable, fair, and reproducible in the real world.&lt;/p>
&lt;p>This summer, I’m contributing to AIDRIN (AI Data Readiness Inspector) as part of Google Summer of Code 2025. I’m grateful to be working under the mentorship of Dr. Jean Luca Bez and Prof. Suren Byna from 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).&lt;/p>
&lt;p>AIDRIN is an open-source framework that helps researchers and practitioners evaluate whether a dataset is truly ready to be used in production-level AI workflows. From fairness to privacy, it provides a structured lens through which we can understand the strengths and gaps in our data.&lt;/p>
&lt;h2 id="why-this-work-matters">Why this work matters&lt;/h2>
&lt;p>In machine learning, one principle always holds true:&lt;/p>
&lt;blockquote>
&lt;p>&amp;ldquo;Garbage in, garbage out.&amp;rdquo;&lt;/p>
&lt;/blockquote>
&lt;p>Even the most advanced models can underperform or amplify harmful biases if trained on incomplete, imbalanced, or poorly understood data. This is where AIDRIN steps in. It provides practical tools to assess datasets across key dimensions like privacy, fairness, class balance, interpretability, and support for multiple modalities.&lt;/p>
&lt;p>By making these characteristics measurable and transparent, AIDRIN empowers teams to make informed decisions early in the pipeline. It helps ensure that datasets are not only large or complex, but also trustworthy, representative, and purpose-fit.&lt;/p>
&lt;h2 id="my-focus-this-summer">My focus this summer&lt;/h2>
&lt;p>As part of my GSoC 2025 project, I’ll be focusing on extending AIDRIN’s evaluation capabilities. A big part of this involves strengthening its support for privacy metrics and designing tools that can handle non-tabular datasets, such as image-based data.&lt;/p>
&lt;p>The goal is to expand AIDRIN’s reach without compromising on interpretability or ease of use. More technical insights and updates will follow in the next posts as the summer progresses.&lt;/p>
&lt;h2 id="what-comes-next">What comes next&lt;/h2>
&lt;p>As the AI community continues to evolve, there’s a growing shift toward data-centric practices. I believe frameworks like AIDRIN are essential for helping us move beyond the question of &lt;em>&amp;ldquo;Does the model work?&amp;rdquo;&lt;/em> toward a deeper and more meaningful one: &lt;em>&amp;ldquo;Was the data ready in the first place?&amp;rdquo;&lt;/em>&lt;/p>
&lt;p>Over the next few weeks, I’ll be working on development, testing, and integration. I’m excited to contribute to a tool that emphasizes transparency and reproducibility across the AI lifecycle, and to share lessons and ideas with others who care about responsible AI.&lt;/p>
&lt;p>If you’re exploring similar challenges or working in the space of dataset evaluation and readiness, I’d love to connect and exchange thoughts. You can also read my full GSoC 2025 proposal below for more context around the project scope and vision:&lt;/p>
&lt;p>👉 &lt;a href="https://drive.google.com/file/d/1RUyU2fHkc8GZ9vTj5SUr6jj84ZaRUvNt/view" target="_blank" rel="noopener">Read my GSoC 2025 proposal here&lt;/a>&lt;/p>
&lt;p>&lt;em>This is the first in a 3-part blog series documenting my GSoC journey with AIDRIN. Stay tuned for technical updates and behind-the-scenes insights as the summer unfolds!&lt;/em>&lt;/p></description></item><item><title>Reproducibility of Interactive Notebooks in Distributed Environments</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre25/ucsc/06122025-rahmad/</link><pubDate>Thu, 12 Jun 2025 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre25/ucsc/06122025-rahmad/</guid><description>&lt;p>Hello! I am Raza, currently a Ph.D. student in Computer Science at DePaul University. This summer, I will be working on reproducibility of notebooks in distributed enviornments, mentored by Prof. &lt;a href="https://ucsc-ospo.github.io/author/tanu-malik/" target="_blank" rel="noopener">Tanu Malik&lt;/a>. Here is a summary of my project proposal.&lt;/p>
&lt;p>Interactive notebooks are web-based systems which enable encapsulating code, data, and their outputs for sharing and reproducibility. They have gained wide popularity in scientific computing due to their ease of use and portability. However, reproducing notebooks in different target environments remains challenging because notebooks do not carry the computational environment in which they are executed. This becomes even more challenging in distributed cluster environments where a notebook must be prepared to run on multiple nodes. In this project, we plan to (i) extend &lt;a href="https://github.com/radiant-systems-lab/Flinc" target="_blank" rel="noopener">FLINC&lt;/a>, an open-source user-space tool for distributed environments such that it can package notebook executions into notebook containers for execution and sharing across distributed environments, and (ii) integrate the extended Flinc with &lt;a href="https://cctools.readthedocs.io/en/stable/taskvine/" target="_blank" rel="noopener">TaskVine&lt;/a>, which provides the framework and orchestration to enable distributed notebook execution in high performance computing environments.&lt;/p>
&lt;p>&lt;a href="https://docs.google.com/document/d/1ilm-yMEq-UTiJPGMl8tQc3Anl5cKM5RD2sUGInLjLbU" target="_blank" rel="noopener">You can read my complete proposal here.&lt;/a>&lt;/p>
&lt;p>I am excited to work on this project and learn from the experience here!&lt;/p></description></item><item><title>Optimizing and Benchmarking GPU Collective Communication of PyLops-MPI with NCCL</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre25/lbl/pylops-mpi/20250608-tharit/</link><pubDate>Sun, 08 Jun 2025 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre25/lbl/pylops-mpi/20250608-tharit/</guid><description>&lt;h1 id="google-summer-of-code-25-optimizing-and-benchmarking-gpu-collective-communication-of-pylops-mpi-with-nccl">Google Summer of Code ‘25: Optimizing and Benchmarking GPU Collective Communication of PyLops-MPI with NCCL&lt;/h1>
&lt;p>My project aims to introduce GPU-to-GPU collective communication calls using Nvidia&amp;rsquo;s NCCL to &lt;a href="https://github.com/PyLops/pylops-mpi" target="_blank" rel="noopener">PyLops-MPI&lt;/a>, an extension of the powerful &lt;a href="https://github.com/PyLops/pylops" target="_blank" rel="noopener">PyLops&lt;/a> library.&lt;/p>
&lt;p>I&amp;rsquo;m incredibly grateful for this opportunity and excited to be mentored by two HPC experts, Yuxi Hong from Lawrence Berkeley National Laboratory and Matteo Ravasi from ShearWater GeoServices.&lt;/p>
&lt;p>Here&amp;rsquo;s also the link to my original &lt;a href="https://summerofcode.withgoogle.com/programs/2025/projects/C2XSZp2E" target="_blank" rel="noopener">proposal&lt;/a>&lt;/p>
&lt;h2 id="what-is-pylops-mpi-and-nccl-">What is PyLops-MPI and NCCL ?&lt;/h2>
&lt;p>PyLops is a Python library that provides a rich collection of linear operators to solve inverse problems. Its MPI extension, PyLops-MPI, takes this a step further by enabling these operations to run on large-scale, distributed computing systems like HPC using the Message-Passing Interface (MPI).&lt;/p>
&lt;p>Where does NCCL fit in? The NVIDIA Collective Communication Library (NCCL) is a library of highly-optimized routines for collective communication between GPU. It offers the opportunity to close the performance gap in PyLops-MPI. As we now offload more and more computationally intensive tasks to GPUs, the communication between them can become a bottleneck. NCCL offers a powerful solution to this problem, enabling high-bandwidth, low-latency communication that can significantly boost performance.&lt;/p>
&lt;h2 id="motivation-and-what-was-missing">Motivation and What was Missing&lt;/h2>
&lt;p>As a student with a background in geophysics (B.Sc) and now pursuing computer science (M.Sc), I&amp;rsquo;ve experienced firsthand the challenges of scaling scientific computing research from a personal desktop to a high-performance computing (HPC) cluster. It can be a significant hurdle. My project aims to ease this transition for PyLops-MPI users. PyLops-MPI is something I wish existed while I was doing my undergraduate reseach !&lt;/p>
&lt;p>Currently, PyLops-MPI is &amp;ldquo;CUDA-aware,&amp;rdquo; meaning it can offload computations to GPUs. However, the communication between those GPUs is still handled by the underlying MPI implementation, which isn&amp;rsquo;t always optimal. This project will address this gap by integrating NCCL to handle GPU-to-GPU communication directly. If the compute is done in GPU, there shouldn&amp;rsquo;t be a copy from GPU to CPU, transfer with MPI, and put them back to GPU again.&lt;/p>
&lt;p>This will be especially impactful for memory-bound problems where high-bandwidth communication is critical. By the end of this project, we&amp;rsquo;ll have a clear, quantifiable understanding of the performance gains achieved.&lt;/p>
&lt;h2 id="my-best-laid-plan">My Best-Laid Plan&lt;/h2>
&lt;p>My approach is grounded in good software engineering practices to ensure that this new feature is both robust and genuinely useful. I was impressed by the code quality (enjoyable read) of the repository - and so I commit not to break that.&lt;/p>
&lt;p>First and foremost, the goal is to seamlessly integrate NCCL without breaking what already works. A significant part of my effort will be dedicated to rigorous testing. This means not only ensuring that all existing tests pass but also developing a new, comprehensive test suite to validate the correctness of the GPU-to-GPU communication across different hardware setups.&lt;/p>
&lt;p>Once we&amp;rsquo;re confident that the integration is solid, the exciting part begins: benchmarking (or you may call it &amp;ldquo;Moment of Truth&amp;rdquo;)! The plan is to measure the performance of end-to-end iterative solvers. These solvers are a perfect test case because they involve a mix of intensive gradient computations on the GPU and frequent AllReduce calls to sync up processes. This will give us a clear picture of the speedup and efficiency gains from using NCCL.&lt;/p>
&lt;p>Finally, to make sure this work benefits the entire community, I will create clear documentation and tutorials. The goal is to make it easy for any user to leverage this new GPU-accelerated communication in their own research and applications.&lt;/p></description></item><item><title>LLMSeqRec: LLM Enhanced Contextual Sequential Recommender</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre25/sf/llmseqrec/20250614-connor/</link><pubDate>Fri, 06 Jun 2025 10:15:56 -0700</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre25/sf/llmseqrec/20250614-connor/</guid><description>&lt;h3 id="project-description">Project Description&lt;/h3>
&lt;p>Sequential Recommender Systems are widely used in scientific and business applications to analyze and predict patterns over time. In biology and ecology, they help track species behavior by suggesting related research on migration patterns and environmental changes. Medical applications include personalized treatment recommendations based on patient history and predicting disease progression. In physics and engineering, these systems optimize experimental setups by suggesting relevant past experiments or simulations. Environmental and climate science applications include forecasting climate trends and recommending datasets for monitoring deforestation or pollution. In business and e-commerce, sequential recommenders enhance user experiences by predicting consumer behavior, suggesting personalized products, and optimizing marketing strategies based on browsing and purchase history. By leveraging sequential dependencies, these recommender systems enhance research efficiency, knowledge discovery, and business decision-making across various domains. Traditional sequential recommendation systems rely on historical user interactions to predict future preferences, but they often struggle with capturing complex contextual dependencies and adapting to dynamic user behaviors. Existing models primarily use predefined embeddings and handcrafted features, limiting their ability to generalize across diverse recommendation scenarios. To address these challenges, we propose LLM Enhanced Contextual Sequential Recommender (LLMSeqRec), which leverages Large Language Models (LLMs) to enrich sequential recommendations with deep contextual understanding and adaptive reasoning.
By integrating LLM-generated embeddings and contextual representations, LLMSeqRec enhances user intent modeling, cold-start recommendations, and long-range dependencies in sequential data. Unlike traditional models that rely solely on structured interaction logs, LLMSeqRec dynamically interprets and augments sequences with semantic context, leading to more accurate and personalized recommendations. This fusion of LLM intelligence with sequential modeling enables a more scalable, adaptable, and explainable recommender system, bridging the gap between traditional sequence-based approaches and advanced AI-driven recommendations.&lt;/p>
&lt;h3 id="project-objectives">Project Objectives&lt;/h3>
&lt;p>Aligned with the vision of the 2025 Open Source Research Experience (OSRE), this project aims to develop an LLM-Enhanced Contextual Sequential Recommender (LLMSeqRec) to improve sequential recommendation accuracy across various scientific and business applications. Sequential recommender systems are widely used to analyze and predict patterns over time, assisting in fields such as biology, ecology, medicine, physics, engineering, environmental science, and e-commerce. However, traditional models often struggle with capturing complex contextual dependencies and adapting to dynamic user behaviors, as they primarily rely on vanilla sequential Id orders.
To address these limitations, this project will leverage Large Language Models (LLMs) to enhance context-aware sequential recommendations by dynamically integrating LLM-generated embeddings and contextual representations. The core challenge lies in designing LLMSeqRec, a unified and scalable model capable of enriching user intent modeling, mitigating cold-start issues, and capturing long-range dependencies within sequential data. Unlike conventional systems that rely solely on structured interaction logs, LLMSeqRec will interpret and augment sequences with semantic context, resulting in more accurate, adaptable, and explainable recommendations. Below is an outline of the methodologies and models that will be developed in this project:&lt;/p>
&lt;ul>
&lt;li>
&lt;p>&lt;strong>Step 1: Data Preprocessing &amp;amp; Feature Creation&lt;/strong>:
Develop a data processing pipeline to parse user’s sequential interaction behaviors into sequential data points for LLM-based embeddings and contextual sequential transformer modeling; Extract user behavior sequences, items’ metadata, and temporal patterns to create context-aware sequential representations for training, validation and testing; The data source can be from Amazon open public data or Movie Lense data set. The data points creation can follow SASRec (in the reference 1).&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Step 2: Model Development&lt;/strong>:
Design and implement LLM-enhanced sequential recommendation models, integrating pretrained language models to augment user-item interactions with semantic context; Develop an adaptive mechanism to incorporate external contextual signals, such as product descriptions, reviews into the sequential recommendation process; The baseline model can be SASRec pytorch implementation.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Step 3: Evaluation&lt;/strong>: :
Benchmark LLMSeqRec against state-of-the-art sequential recommenders, evaluating on accuracy, NDCG and cold-start performance; Conduct ablation studies to analyze the impact of LLM-generated embeddings on recommendation quality; Optimize model inference speed and efficiency for real-time recommendation scenarios.&lt;/p>
&lt;/li>
&lt;/ul>
&lt;h3 id="project-deliverables">Project Deliverables&lt;/h3>
&lt;p>This project will deliver three components, software, model training, validation and performance evaluation and demo. The software which implements the above LLMSeqRec model will be hosted on the github repo as open-access repositories. The evaluation results and demo will be published along the github repo .&lt;/p>
&lt;h3 id="llmseqrec">LLMSeqRec&lt;/h3>
&lt;ul>
&lt;li>&lt;strong>Topics&lt;/strong>: LLM Enhanced Contextual Sequential Recommender&lt;/li>
&lt;li>&lt;strong>Skills&lt;/strong>: Proficiency in Python, Pytorch, Github, Self-attention, Transformer&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/linsey-pang/">Linsey Pang&lt;/a>, &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/bin-dong/">Bin Dong&lt;/a>&lt;/li>
&lt;/ul>
&lt;h3 id="references">References:&lt;/h3>
&lt;ul>
&lt;li>Self-Attentive Sequential Recommendation (SASRec)&lt;/li>
&lt;li>BERT4Rec: Sequential Recommendation with Bidirectional Encoder Representations from Transformer&lt;/li>
&lt;li>Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks&lt;/li>
&lt;li>Amazon Dataset: &lt;a href="https://cseweb.ucsd.edu/~jmcauley/datasets.html#amazon_reviews" target="_blank" rel="noopener">https://cseweb.ucsd.edu/~jmcauley/datasets.html#amazon_reviews&lt;/a>&lt;/li>
&lt;li>Movie Lense Data: &lt;a href="https://grouplens.org/datasets/movielens/" target="_blank" rel="noopener">https://grouplens.org/datasets/movielens/&lt;/a>&lt;/li>
&lt;/ul>
&lt;h2 id="introduction">Introduction&lt;/h2>
&lt;p>I&amp;rsquo;m Connor, a student at NYU studying CS and Math. This summer I&amp;rsquo;ve gotten the opportunity to work on LLMSeqRec under Dr. Bin Dong and Dr. Linsey Pang.&lt;/p>
&lt;p>In today’s digital age, sequential recommender systems power everything from e-commerce suggestions to personalized content everywhere. However, traditional models fall short in capturing user intent, adapting to dynamic behavior, or tackling cold-start problems. That’s where LLMSeqRec comes in.&lt;/p>
&lt;h2 id="problem-statement">Problem Statement&lt;/h2>
&lt;p>Most sequential recommender systems rely heavily on historical user-item interactions and predefined embeddings. This approach limits their ability to understand nuanced user preferences, struggles to scale across domains, and performs poorly in scenarios like new users or sparse data. The absence of semantic and contextual modeling is a major gap in current solutions.&lt;/p>
&lt;h2 id="overview-of-project">Overview of project&lt;/h2>
&lt;p>LLMSeqRec is a novel, LLM-enhanced sequential recommender framework that bridges this gap. By leveraging large language models (LLMs), it incorporates semantic embeddings and prompt-based contextual modeling to understand both user behavior and item metadata at a deeper level. The system explores two core approaches:&lt;/p>
&lt;ul>
&lt;li>Embedding-based: LLMs generate embeddings from item attributes.&lt;/li>
&lt;li>Prompt-based: LLMs receive full transaction history in natural language format and infer recommendations.&lt;/li>
&lt;/ul>
&lt;p>These techniques are tested using well-known datasets (e.g., Amazon, MovieLens), and evaluated with ranking metrics like NDCG@10 and Hit@10. The goal: deliver more accurate, context-rich, and explainable recommendations.&lt;/p>
&lt;h2 id="next-steps">Next Steps&lt;/h2>
&lt;p>The project is currently progressing through stages including model training, embedding integration, and evaluation. Upcoming tasks include:&lt;/p>
&lt;ul>
&lt;li>Fine-tuning enhanced models&lt;/li>
&lt;li>Designing zero-/few-shot prompts&lt;/li>
&lt;li>Running comparative experiments&lt;/li>
&lt;li>Publishing findings and writing technical blogs&lt;/li>
&lt;/ul>
&lt;p>As part of the &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre25/sf/LLMSeqRec">LLMSeqRec&lt;/a> my &lt;a href="https://drive.google.com/file/d/1cs9lsjacSJUbXWzTfcHIukfKFwKJjUZF/view?usp=sharing" target="_blank" rel="noopener">proposal&lt;/a> under the mentorship of Dr. Bin Dong and Dr. Linsey Pang.&lt;/p></description></item><item><title>Understanding Skin-Tone based Bias in Text-to-Image Models Using Stable Diffusion</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre25/ucsc/fairface/</link><pubDate>Tue, 27 May 2025 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre25/ucsc/fairface/</guid><description>&lt;p>This project investigates &lt;strong>skin tone bias in text-to-image generation&lt;/strong> by analyzing the output of &lt;strong>Stable Diffusion&lt;/strong> models when prompted with socially and occupationally descriptive text. Despite the growing popularity of generative models like Stable Diffusion, little has been done to evaluate how these models reproduce or amplify visual bias—especially related to &lt;strong>skin tone, perceived race, and social class&lt;/strong>—based solely on textual prompts.&lt;/p>
&lt;p>This work builds on prior studies of bias in large language models (LLMs) and vision-language models (VLMs), and aims to explore how biases manifest visually, without explicitly specifying race or ethnicity in the input prompt. Our approach combines &lt;strong>systematic prompt generation&lt;/strong>, &lt;strong>model-based image creation&lt;/strong>, and &lt;strong>skin tone quantification&lt;/strong> to assess disparities across generated samples.&lt;/p>
&lt;p>The ultimate goal is to develop a &lt;strong>reproducible evaluation pipeline&lt;/strong>, visualize disparities across demographic and occupational prompts, and explore strategies to mitigate representational harms in generative models.&lt;/p>
&lt;p>Our goal is to create a reproducible pipeline for:&lt;/p>
&lt;ul>
&lt;li>Generating images from prompts&lt;/li>
&lt;li>Annotating or analyzing them using computer vision tools&lt;/li>
&lt;li>Measuring bias across categories like skin tone, gender presentation, or status markers&lt;/li>
&lt;/ul>
&lt;p>Project webpage: &lt;a href="https://github.com/marzianizam/ucsc-ospo.github.io/tree/main/content/project/osre25/UCSC/FairFace" target="_blank" rel="noopener">https://github.com/marzianizam/ucsc-ospo.github.io/tree/main/content/project/osre25/UCSC/FairFace&lt;/a>&lt;/p>
&lt;h3 id="project-idea-measuring-bias-in-ai-generated-portraits">Project Idea: Measuring Bias in AI-Generated Portraits&lt;/h3>
&lt;ul>
&lt;li>&lt;strong>Topics&lt;/strong>: Responsible AI, Generative Models, Ethics in AI&lt;/li>
&lt;li>&lt;strong>Skills&lt;/strong>: Python, PyTorch, Stable Diffusion, Prompt Engineering, Data Analysis&lt;/li>
&lt;li>&lt;strong>Difficulty&lt;/strong>: Medium&lt;/li>
&lt;li>&lt;strong>Size&lt;/strong>: 350 hours&lt;/li>
&lt;li>&lt;strong>Mentors&lt;/strong>:
&lt;ul>
&lt;li>&lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/marzia-binta-nizam/">Marzia Binta Nizam&lt;/a> (mailto:manizam@ucsc.edu)&lt;/li>
&lt;li>Professor James Davis (mailto:davisje@ucsc.edu)&lt;/li>
&lt;/ul>
&lt;/li>
&lt;/ul>
&lt;h3 id="background">Background&lt;/h3>
&lt;p>Recent research has shown that text-to-image models can perpetuate racial and gender stereotypes through visual output. For instance, prompts like “CEO” or “nurse” often produce racially skewed results even when no explicit race or demographic cues are provided. This project examines whether similar disparities exist &lt;strong>along skin tone dimensions&lt;/strong>, focusing on &lt;strong>subtle biases&lt;/strong> rather than overt stereotypes.&lt;/p>
&lt;p>The key challenge is that visual bias is not always easy to measure. This project addresses this issue by utilizing &lt;strong>melanin-level quantification&lt;/strong>, a continuous and interpretable proxy for skin tone, in conjunction with consistent prompt templating and multi-sample averaging to ensure statistical rigor.&lt;/p>
&lt;hr>
&lt;h3 id="objectives">Objectives&lt;/h3>
&lt;ul>
&lt;li>Generate datasets using consistent prompts (e.g., &amp;ldquo;A portrait of a doctor&amp;rdquo;, &amp;ldquo;A homeless person&amp;rdquo;, etc.)&lt;/li>
&lt;li>Use Stable Diffusion (and optionally, other models like DALL·E or Midjourney) to generate diverse image sets&lt;/li>
&lt;li>Measure bias across demographic and occupational categories using image processing tools&lt;/li>
&lt;li>Visualize the distribution of melanin values and facial features across samples&lt;/li>
&lt;li>Explore prompt-level mitigation strategies to improve fairness in output&lt;/li>
&lt;/ul>
&lt;hr>
&lt;h3 id="deliverables">Deliverables&lt;/h3>
&lt;ul>
&lt;li>Open-source codebase for prompt generation and image evaluation&lt;/li>
&lt;li>Statistical analysis of visual bias trends&lt;/li>
&lt;li>Blog post or visual explainer on findings&lt;/li>
&lt;li>Final report and recommendations on prompt engineering or model constraints&lt;/li>
&lt;/ul>
&lt;hr></description></item><item><title>UC Open Source Repository Browser</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre25/ucsc/orb/</link><pubDate>Mon, 03 Mar 2025 13:00:00 -0800</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre25/ucsc/orb/</guid><description>&lt;p>The University of California Open Source Repository Browser (UC ORB) is a discovery tool designed to map and classify open source projects across the UC system. This project is a collaboration with the &lt;a href="https://ucospo.net" target="_blank" rel="noopener">UC Network of Open Source Program Offices (OSPOs)&lt;/a>, which brings together six UC campuses (Santa Cruz, Berkeley, Davis, Los Angeles, Santa Barbara, and San Diego) to support open source research, promote sustainability, and establish best practices within academic environments.&lt;/p>
&lt;p>By providing a centralized platform, UC ORB enhances the visibility of UC’s open source contributions, fosters collaboration among researchers and developers, and serves as a model for other institutions aiming to improve open source discovery and sustainability.&lt;/p>
&lt;p>This project focuses on building the web application for UC ORB, which will serve as the primary interface for users to explore and interact with UC’s open source projects. The student will work on developing a clean, user-friendly, and scalable web application.&lt;/p>
&lt;h3 id="develop-the-uc-orb-application">Develop the UC ORB Application&lt;/h3>
&lt;ul>
&lt;li>&lt;strong>Topics:&lt;/strong> &lt;code>Web development&lt;/code>&lt;/li>
&lt;li>&lt;strong>Skills:&lt;/strong> Experience in Python and at least one Python-based web framework (e.g., Flask, Django, FastAPI), experience with front-end technologies (React, HTML, CSS, JavaScript), familiarity with Git and collaborative development workflows, familiarity with database interaction (SQL).&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:jgomez91@ucsc.edu">Juanita Gomez&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>Develop a web application that serves as the front-end interface for the UC ORB. The application will allow users to browse, search, and explore open source projects across the UC system. The project will involve integrating with the repository database to fetch and display repository data, designing an intuitive user interface, and ensuring the application is scalable and maintainable.&lt;/p>
&lt;p>Specific Tasks:&lt;/p>
&lt;ul>
&lt;li>Choose an appropriate Python-based web framework (e.g., Flask, Django, or FastAPI) for the backend and set up the basic structure of the application.&lt;/li>
&lt;li>Develop a responsive and user-friendly front-end interface ensuring that it is accessible and works well on both desktop and mobile devices.&lt;/li>
&lt;li>Add search functionality to allow users to find projects by keywords, tags, or other metadata.&lt;/li>
&lt;li>Implement filtering options to narrow down search results (e.g., by campus, topic, or programming language).&lt;/li>
&lt;li>Deploy the application to a cloud platform (e.g., AWS, or Google Cloud) or GitHub Pages (GitHub.io) for public access.&lt;/li>
&lt;li>Create developer documentation that explains the application’s architecture, setup instructions, and contribution guidelines.&lt;/li>
&lt;li>Write a short user manual to help end-users browse and use the web application effectively.&lt;/li>
&lt;/ul></description></item><item><title>Applying MLOps to overcome reproducibility barriers in machine learning research</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre25/nyu/mlops/</link><pubDate>Sat, 01 Mar 2025 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre25/nyu/mlops/</guid><description>&lt;ul>
&lt;li>&lt;strong>Topics:&lt;/strong> machine learning, MLOps, reproducibility&lt;/li>
&lt;li>&lt;strong>Skills:&lt;/strong> Python, machine learning, GitOps, systems, Linux, data, Docker&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/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>Reproducibility remains a significant problem in machine learning research, both in core ML and in the application of ML to other areas of science. In many cases, due to inadequate experiment tracking, dependency capturing, source code versioning, data versioning, and artifact sharing, even the authors of a paper may find it challenging to reproduce their own study several years later. This makes it difficult to vaidate and build on previous work, and raises concerns about its trustworthiness.&lt;/p>
&lt;p>In contrast, outside of academic research, MLOps tools and frameworks have been identified as a key enabler of reliable, reproducible, and trustworthy machine learning systems in production. A good reference on this topic is:&lt;/p>
&lt;blockquote>
&lt;p>Firas Bayram and Bestoun S. Ahmed. 2025. Towards Trustworthy Machine Learning in Production: An Overview of the Robustness in MLOps Approach. ACM Comput. Surv. 57, 5, Article 121 (May 2025), 35 pages. &lt;a href="https://doi.org/10.1145/3708497" target="_blank" rel="noopener">https://doi.org/10.1145/3708497&lt;/a>&lt;/p>
&lt;/blockquote>
&lt;p>This project seeks to bridge the gap between widely adopted practices in industry and academic research:&lt;/p>
&lt;ul>
&lt;li>by making it easier for researchers and scientists to use MLOps tools to support reproducibility. To achieve this, we will develop starter templates and recipes for research in computer vision, NLP, and ML for science, that have reproducibility &amp;ldquo;baked in&amp;rdquo; thanks to the integration of MLOps tools and frameworks. Researchers will launch these templates on open access research facilities like &lt;a href="https://chameleoncloud.org/" target="_blank" rel="noopener">Chameleon&lt;/a>.&lt;/li>
&lt;li>and, by developing complementary education and training materials to emphasize the important of reproducibility in ML, and how the tools and frameworks used in the starter templates can support this goal.&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 -&lt;/p>
&lt;ul>
&lt;li>demonstrate a good understanding of the current barriers to reproducibility in machine learning research (specific examples are welcome),&lt;/li>
&lt;li>describe a &amp;ldquo;base&amp;rdquo; starter template, including the platforms and tools that will be integrated, as well as specific adaptations of this template for computer vision, NLP, and ML for science,&lt;/li>
&lt;li>explain the &amp;ldquo;user flow&amp;rdquo; - how a researcher would use the template to conduct an experiment or series of experiments, what the lifecycle of that experiment would look like, and how it would be made reproducible,&lt;/li>
&lt;li>include the contributor&amp;rsquo;s own ideas about how to make the starter templates more usable, and how to make the education and training materials relatable and useful,&lt;/li>
&lt;li>and show that the contributor has the necessary technical background and soft skills to contribute to this project. In particular, the contributor will need to create education and training 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;/li>
&lt;/ul>
&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></description></item><item><title>CacheBench: Building a Benchmarking Suite for Cache Performance Evaluation</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre25/harvard/cachebench/</link><pubDate>Fri, 28 Feb 2025 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre25/harvard/cachebench/</guid><description>&lt;h3 id="overview">Overview&lt;/h3>
&lt;p>In this project, we aim to develop a comprehensive benchmarking suite, CacheBench, for evaluating the performance of cache systems in modern computing environments. Caches play a crucial role in enhancing system performance by reducing latency and improving data access speeds. However, evaluating cache performance is a complex task that requires a diverse set of workloads and metrics to capture the cache&amp;rsquo;s behavior accurately. The current focus is on the eviction algorithms and if time permits, we will extend to other components of cache design.&lt;/p>
&lt;p>This project will have three main components:&lt;/p>
&lt;ol>
&lt;li>Implementing and benchmarking existing cache eviction algorithms in &lt;a href="https://libcachesim.com/" target="_blank" rel="noopener">libCacheSim&lt;/a> using large-scale simulation. This part will mainly focus on reproducing existing works.&lt;/li>
&lt;li>Developing a set of microbenchmarks and a platform for researchers to evaluate new designs with little effort in the future. This part will focus on building the open-source infrastructure for future research.&lt;/li>
&lt;li>Developing a leaderboard for the community to submit new algorithms and workloads. This part will focus on building the community and fostering adoption and collaboration.&lt;/li>
&lt;/ol>
&lt;ul>
&lt;li>&lt;strong>Topics:&lt;/strong> storage systems, benchmarking, performance evaluation&lt;/li>
&lt;li>&lt;strong>Skills:&lt;/strong> C programming, web programming (e.g., node.js, React), database management&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/juncheng-yang/">Juncheng Yang&lt;/a>, Yazhuo Zhang (&lt;a href="mailto:yazhuo@inf.ethz.ch">yazhuo@inf.ethz.ch&lt;/a>)&lt;/li>
&lt;/ul></description></item><item><title>FairFace</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre25/ucsc/fair-face/</link><pubDate>Fri, 28 Feb 2025 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre25/ucsc/fair-face/</guid><description>&lt;h3 id="fairface-reproducible-bias-evaluation-in-facial-ai-models-via-controlled-skin-tone-manipulation">FairFace: Reproducible Bias Evaluation in Facial AI Models via Controlled Skin Tone Manipulation&lt;/h3>
&lt;p>Bias in facial AI models remains a persistent issue, particularly concerning skin tone disparities. Many studies report that AI models perform differently on lighter vs. darker skin tones, but these findings are often difficult to reproduce due to variations in datasets, model architectures, and evaluation settings.
The goal of this project is to investigate bias in facial AI models by manipulating skin tone and related properties in a controlled, reproducible manner. By leveraging BioSkin, we will adjust melanin levels and other skin properties on existing human datasets to assess whether face-based AI models (e.g., classification and vision-language models) exhibit biased behavior toward specific skin tones.&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Topics:&lt;/strong> &lt;code>Fairness &amp;amp; Bias in AI&lt;/code>, &lt;code>Face Recognition &amp;amp; Vision-Language Models&lt;/code>, &lt;code>Dataset Augmentation for Reproducibility&lt;/code>&lt;/li>
&lt;li>&lt;strong>Skills:&lt;/strong> Machine Learning &amp;amp; Computer Vision, Deep Learning (PyTorch/TensorFlow), Data Augmentation &amp;amp; Image Processing, Reproducibility &amp;amp; Documentation (GitHub, Jupyter Notebooks).&lt;/li>
&lt;li>&lt;strong>Difficulty:&lt;/strong> Moderate&lt;/li>
&lt;li>&lt;strong>Size:&lt;/strong> Medium or Large ( Can be completed in either 175 or 350 hours, depending on the depth of analysis and number of models tested.)&lt;/li>
&lt;li>&lt;strong>Mentors:&lt;/strong> &lt;a href="mailto:davisje@ucsc.edu">James Davis&lt;/a>, &lt;a href="mailto:pang@soe.ucsc.edu">Alex Pang&lt;/a>&lt;/li>
&lt;/ul>
&lt;h3 id="key-research-questions">Key Research Questions&lt;/h3>
&lt;ol>
&lt;li>Do AI models perform differently based on skin tone?
&lt;ul>
&lt;li>How do classification accuracy, confidence scores, and error rates change when skin tone is altered systematically?&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>What are the underlying causes of bias?
&lt;ul>
&lt;li>Is bias solely dependent on skin tone, or do other skin-related properties (e.g., texture, reflectance) contribute to model predictions?&lt;/li>
&lt;li>Is bias driven by dataset imbalances (e.g., underrepresentation of certain skin tones)?&lt;/li>
&lt;li>Do facial features beyond skin tone (e.g., structure, expression, pose) contribute to biased predictions?&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>Are bias trends reproducible?
&lt;ul>
&lt;li>Can we replicate bias patterns across different datasets, model architectures, and experimental setups?&lt;/li>
&lt;li>How consistent are the findings when varying image sources and preprocessing methods?&lt;/li>
&lt;/ul>
&lt;/li>
&lt;/ol>
&lt;h3 id="specific-tasks">Specific Tasks:&lt;/h3>
&lt;ol>
&lt;li>Dataset Selection &amp;amp; Preprocessing
&lt;ul>
&lt;li>Choose appropriate face/human datasets (e.g., FairFace, CelebA, COCO-Human).&lt;/li>
&lt;li>Preprocess images to ensure consistent lighting, pose, and resolution before applying transformations.&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>Skin Tone Manipulation with BioSkin
&lt;ul>
&lt;li>Systematically modify melanin levels while keeping facial features unchanged.&lt;/li>
&lt;li>Generate multiple variations per image (lighter to darker skin tones).&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>Model Evaluation &amp;amp; Bias Analysis
&lt;ul>
&lt;li>Test face classification models (e.g., ResNet, FaceNet) and vision-language models (e.g., BLIP, LLaVA) on the modified images.&lt;/li>
&lt;li>Compute fairness metrics (e.g., demographic parity, equalized odds).&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>Investigate Underlying Causes of Bias
&lt;ul>
&lt;li>Compare model behavior across different feature sets.&lt;/li>
&lt;li>Test whether bias persists across multiple datasets and model architectures.&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>Ensure Reproducibility
&lt;ul>
&lt;li>Develop an open-source pipeline for others to replicate bias evaluations.&lt;/li>
&lt;li>Provide codebase and detailed documentation for reproducibility.&lt;/li>
&lt;/ul>
&lt;/li>
&lt;/ol></description></item><item><title>IO logger: IO tracing in the modern computing era</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre25/harvard/iologger/</link><pubDate>Fri, 28 Feb 2025 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre25/harvard/iologger/</guid><description>&lt;h3 id="overview">Overview&lt;/h3>
&lt;p>Storage systems are critical components of modern computing infrastructures, and understanding their performance characteristics is essential for optimizing system efficiency. There were many works from twenty to thirty years ago, but the landscape has changed significantly with the advent of&lt;/p>
&lt;ul>
&lt;li>cloud computing, virtualization, and storage disaggregation on the &lt;strong>server side&lt;/strong>&lt;/li>
&lt;li>ubiquitous fast wireless networking for &lt;strong>end users&lt;/strong> that make remote storage feasible&lt;/li>
&lt;li>AI and ML workloads that generate and move massive data both in the cloud and on the edge.&lt;/li>
&lt;/ul>
&lt;p>In this project, we aim to develop an IO logger, a tool for tracing, logging and analyzing IO operations in various computing environments. The IO logger will capture detailed information about read and write operations, latency, throughput, and other metrics to help researchers and practitioners understand the behavior of storage systems under different workloads and configurations. By providing a comprehensive view of IO performance, the IO logger will enable users to identify bottlenecks, optimize resource utilization, and improve system efficiency.&lt;/p>
&lt;p>This project will have two phases:&lt;/p>
&lt;ol>
&lt;li>IO logger for *NIX systems: Develop a tool leveraging eBPF and other tools for tracing IO operations on Linux and other Unix-like systems. The tool will capture detailed information about disk reads and writes, network transfers, and other IO activities, providing insights into system performance. The tool will be open-sourced, and we will work with industry partners and testbeds to integrate it into existing monitoring and analysis tools. Moreover, we will collect and open source the IO traces to benefit the community.&lt;/li>
&lt;li>IO logger for personal computing environment: Develop a tool for end-users to trace IO operations on their personal devices, such as laptops, desktops, and mobile phones. We will design and implement tools for three different platforms, Window, MacOS and Andriod. We will use the tools to collect IO traces from volunteers and real-world applications. providing insights into storage usage, network activity, and application performance. The tool will be user-friendly, lightweight, and privacy-preserving, ensuring that users can monitor their IO activities without compromising their data security.&lt;/li>
&lt;/ol>
&lt;p>Notable difference and challenges compared to the existing works are:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>more IO requests with rich features&lt;/strong>: open-source traces from previous works were collected all after page cache, which are often write-heavy, lose most IO requests, and do not provide enough features, e.g., process name. To address this, we will build a tool that can also records requests served by page cache, which requires the tool to be efficient and cannot impose significant overhead to the ruuning systems.&lt;/li>
&lt;li>&lt;strong>focus on new applications and workloads&lt;/strong>: the existing works were mostly outdated from the 1990s, during which the Internet has not been widely used, and applications are mostly processing local data and does not communicate with outside world. While there have been a few works looked into mobile storage a decade ago. The landscape has changed significantly since then, especially with the advent of AI and ML workloads that generate and move massive data both in the cloud and on the edge. This project will look into the difference and challenges brought by these new applications and workloads.&lt;/li>
&lt;/ul>
&lt;ul>
&lt;li>&lt;strong>Topics:&lt;/strong> tracing tool, operating system, eBPF, performance evaluation&lt;/li>
&lt;li>&lt;strong>Skills:&lt;/strong> C programming, system programming, eBPF, Linux kernel, mobile application development&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/juncheng-yang/">Juncheng Yang&lt;/a>&lt;/li>
&lt;/ul>
&lt;h4 id="related-works">Related works&lt;/h4>
&lt;ul>
&lt;li>[COSMOS] (&lt;a href="https://dl.acm.org/doi/abs/10.1145/3460095" target="_blank" rel="noopener">https://dl.acm.org/doi/abs/10.1145/3460095&lt;/a>)&lt;/li>
&lt;li>&lt;a href="https://dl.acm.org/doi/abs/10.1145/2987443.2987465" target="_blank" rel="noopener">mobile storage usage&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://dl.acm.org/doi/abs/10.1145/2043106.2043112" target="_blank" rel="noopener">mobile storage performance measurement&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://ieeexplore.ieee.org/abstract/document/7897092" target="_blank" rel="noopener">mobile application IO performance&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://dl.acm.org/doi/abs/10.1145/1140103.1140280" target="_blank" rel="noopener">stardust&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://dl.acm.org/doi/abs/10.1145/3149376" target="_blank" rel="noopener">GPFS&lt;/a>&lt;/li>
&lt;/ul></description></item><item><title>ReasonWorld</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre25/ucsc/reason-world/</link><pubDate>Fri, 28 Feb 2025 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre25/ucsc/reason-world/</guid><description>&lt;h3 id="reasonworld-real-world-reasoning-with-a-long-term-world-model">ReasonWorld: Real-World Reasoning with a Long-Term World Model&lt;/h3>
&lt;p>A world model is essentially an internal representation of an environment that an AI system would construct based on external information to plan, reason, and interpret its surroundings. It stores the system’s understanding of relevant objects, spatial relationships, and/or states in the environment. Recent augmented reality (AR) and wearable technologies like Meta Aria glasses provide an opportunity to gather rich information from the real world in the form of vision, audio, and spatial data. Along with this, large language (LLM), vision language models (VLMs), and general machine learning algorithms have enabled nuanced understanding and processing of multimodal inputs that can label, summarize, and analyze experiences.&lt;/p>
&lt;p>With &lt;strong>ReasonWorld&lt;/strong>, we aim to utilize these technologies to enable advanced reasoning about important objects/events/spaces in real-world environments in a structured manner. With the help of wearable AR technology, the system would be able to capture real-world multimodal data. We aim to utilize this information to create a long-memory modeling toolkit that would support features like:&lt;/p>
&lt;ul>
&lt;li>Longitudinal and structured data logging: Capture and storing of multimodal data (image, video, audio, location coordinates etc.)&lt;/li>
&lt;li>Semantic summarization: Automatic scene labeling via LLMs/VLMs to identify key elements in the surroundings&lt;/li>
&lt;li>Efficient retrieval: For querying and revisiting past experiences and answering questions like “Where have I seen this painting before?”&lt;/li>
&lt;li>Adaptability: Continuously refining and understanding the environment and/or relationships between objects/locations.&lt;/li>
&lt;li>Adaptive memory prioritization: Where the pipeline can assess the contextual significance of the captured data and retrieve those that are the most significant. The model retains meaningful, structured representations rather than raw, unfiltered data.&lt;/li>
&lt;/ul>
&lt;p>This real-world reasoning framework with a long-term world model can function as a structured search engine for important objects and spaces, enabling:&lt;/p>
&lt;ul>
&lt;li>Recognizing and tracking significant objects, locations, and events&lt;/li>
&lt;li>Supporting spatial understanding and contextual analysis&lt;/li>
&lt;li>Facilitating structured documentation of environments and changes over time&lt;/li>
&lt;/ul>
&lt;h3 id="alignment-with-summer-of-reproducibility">Alignment with Summer of Reproducibility:&lt;/h3>
&lt;ul>
&lt;li>Core pipeline for AR data ingestion, event segmentation, summarization, and indexing (knowledge graph or vector database) would be made open-source.&lt;/li>
&lt;li>Clear documentation of each module and how they collaborate with one another&lt;/li>
&lt;li>The project could be tested with standardized datasets, simulated environments as well as controlled real-world scenarios, promoting reproducibility&lt;/li>
&lt;li>Opportunities for Innovation - A transparent, modular approach invites a broad community to propose novel expansions&lt;/li>
&lt;/ul>
&lt;h3 id="specific-tasks">Specific Tasks:&lt;/h3>
&lt;ul>
&lt;li>A pipeline for real-time/batch ingestion of data with the wearable AR device and cleaning&lt;/li>
&lt;li>Have an event segmentation module to classify whether the current object/event is contextually significant, filtering out the less relevant observations.&lt;/li>
&lt;li>Have VLMs/LLMs summarize the events with the vision/audio/location data to be stored and retrieved later by structured data structures like knowledge graph, vector databases etc.&lt;/li>
&lt;li>Storage optimization with prioritizing important objects and spaces, optimizing storage based on contextual significance and frequency of access.&lt;/li>
&lt;li>Implement key information retrieval mechanisms&lt;/li>
&lt;li>Ensure reproducibility by providing datasets and scripts&lt;/li>
&lt;/ul>
&lt;h3 id="reasonworld">ReasonWorld&lt;/h3>
&lt;ul>
&lt;li>&lt;strong>Topics:&lt;/strong> &lt;code>Augmented reality&lt;/code> &lt;code>Multimodal learning&lt;/code> &lt;code>Computer vision for AR&lt;/code> &lt;code>LLM/VLM&lt;/code> &lt;code>Efficient data indexing&lt;/code>&lt;/li>
&lt;li>&lt;strong>Skills:&lt;/strong> Machine Learning and AI, Augmented Reality and Hardware integration, Data Engineering &amp;amp; Storage Optimization&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="mailto:davisje@ucsc.edu">James Davis&lt;/a>, &lt;a href="mailto:pang@soe.ucsc.edu">Alex Pang&lt;/a>&lt;/li>
&lt;/ul></description></item><item><title>AI for Science: Automating Domain Specific Tasks with Large Language Models</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre25/ucr/domain-automation/</link><pubDate>Sun, 23 Feb 2025 21:30:56 -0800</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre25/ucr/domain-automation/</guid><description>&lt;p>Recent advancements in Large Language Models (LLMs) have transformed various fields by demonstrating remarkable capabilities in processing and generating human-like text. This project aims to explore the development of an open-source framework that leverages LLMs to enhance discovery across specialized domains.&lt;/p>
&lt;p>The proposed framework will enable LLMs to analyze and interpret complex datasets, automate routine tasks, and uncover novel insights. A key focus will be on equipping LLMs with domain-specific expertise, particularly in areas where specialized tools &amp;ndash; such as ANDES &amp;ndash; are not widely integrated with LLM-based solutions. By bridging this gap, the framework will empower researchers and professionals to harness LLMs as intelligent assistants capable of navigating and utilizing niche computational tools effectively.&lt;/p>
&lt;h3 id="ai-for-science-automating-domain-specific-tasks-with-large-language-models">AI for Science: Automating Domain Specific Tasks with Large Language Models&lt;/h3>
&lt;ul>
&lt;li>&lt;strong>Topics&lt;/strong>: &lt;code>Large Language Models&lt;/code> &lt;code>AI for Science&lt;/code>&lt;/li>
&lt;li>&lt;strong>Skills&lt;/strong>: Python, Experience with LLMs, Prompt Engineering, Fine-Tuning, LLM Frameworks&lt;/li>
&lt;li>&lt;strong>Difficulty&lt;/strong>: Medium-Difficult&lt;/li>
&lt;li>&lt;strong>Size&lt;/strong>: Large (350 hours)&lt;/li>
&lt;li>&lt;strong>Mentor&lt;/strong>: [Daniel Wong]&lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/daniel-wong/">Daniel Wong&lt;/a>, [Luanzheng &amp;ldquo;Lenny&amp;rdquo; Guo]&lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/luanzheng-lenny-guo/">Luanzheng &amp;#34;Lenny&amp;#34; Guo&lt;/a>&lt;/li>
&lt;/ul>
&lt;h3 id="project-tasks-and-milestones">Project Tasks and Milestones&lt;/h3>
&lt;ul>
&lt;li>Designing an extensible framework that facilitates the integration of LLMs with specialized software and datasets.&lt;/li>
&lt;li>Developing methodologies for fine-tuning LLMs to act as domain experts.&lt;/li>
&lt;li>Implementing strategies for improving tool interoperability, allowing LLMs to interact seamlessly with less commonly used but critical analytical platforms.&lt;/li>
&lt;/ul></description></item><item><title>Enhancing Reproducibility in Distributed AI Training: Leveraging Checkpointing and Metadata Analytics</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre25/pnnl/reproducibility_w_checkpoint/</link><pubDate>Fri, 21 Feb 2025 09:00:00 -0700</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre25/pnnl/reproducibility_w_checkpoint/</guid><description>&lt;p>Reproducibility in distributed AI training is a crucial challenge due to several sources of uncertainty, including stragglers, data variability, and inherent randomness. Stragglers—slower processing nodes in a distributed system—can introduce timing discrepancies that affect the synchronization of model updates, leading to inconsistent states across training runs. Data variability, stemming from non-deterministic data shuffling and differing data partitions across nodes, can also lead to variations in model performance. Additionally, inherent randomness in algorithm initialization, such as random weight beginnings and stochastic processes like dropout, further compounds these challenges. Reproducibility in AI is pivotal for ensuring the credibility of AI-driven scientific findings, akin to how reproducibility underpins traditional scientific research.&lt;/p>
&lt;p>To enhance AI reproducibility, leveraging metadata analytics and visualization along with saved checkpoints offers a promising solution. Checkpointing in AI training is a pivotal technique that involves saving snapshots of a model and its parameters at regular intervals throughout the training process. This practice is essential for maintaining progress in the face of potential interruptions, such as hardware failures, and enables the resumption of training without having to restart from scratch. In the context of distributed AI training, checkpointing also provides a framework for analyzing and ensuring reproducibility, offering a means to systematically capture and review the training trajectory of models. Analyzing checkpoints can specifically help identify issues like stragglers, which are slower computing nodes in a distributed system that can impede synchronized progress. For example, by examining the time stamps and resource utilization data associated with each checkpoint, anomalies in processing time can be detected, revealing nodes that consistently lag behind others. This analysis enables teams to diagnose performance bottlenecks and optimize resource allocation across the distributed system, ensuring smoother and more consistent training runs. By combining checkpointing with metadata analytics, it becomes possible to pinpoint the exact training iterations where delays occur, thereby facilitating targeted investigations and solutions to improve overall system reproducibility and efficiency.&lt;/p>
&lt;h3 id="workplan">Workplan&lt;/h3>
&lt;p>The proposed work will include: 1) Setting up a checkpointing system within the distributed AI training framework to periodically save model states and metadata; 2) Designing a metadata analysis schema for populating model and system statistics from the saved checkpoints; 3) Conducting exploratory data analysis to identify patterns, anomalies, and sources of variability in the training process; 4) Creating visualization tools to represent metadata insights with collected statistics and patterns; 5) Using insights from metadata analytics and visualization to optimize resource distribution across the distributed system and mitigate straggler effects; and 6) Disseminating results and methodologies through academic papers, workshops, and open-source contributions.&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Topics:&lt;/strong> &lt;code>Reproducibility&lt;/code> &lt;code>AI&lt;/code> &lt;code>distributed AI&lt;/code> &lt;code>checkpoint&lt;/code> &lt;code>metadata analysis&lt;/code>&lt;/li>
&lt;li>&lt;strong>Skills:&lt;/strong> C/C++, Python&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/luanzheng-lenny-guo/">Luanzheng &amp;quot;Lenny&amp;quot; Guo&lt;/a>&lt;/li>
&lt;/ul></description></item><item><title>Enhancing Reproducibility in RAG Frameworks for Scientific Workflows</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre25/pnnl/llm_rag_reproducibility/</link><pubDate>Thu, 20 Feb 2025 09:00:00 -0700</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre25/pnnl/llm_rag_reproducibility/</guid><description>&lt;p>Retrieval-Augmented Generation (RAG) frameworks, which merge the capabilities of retrieval systems and generative models, significantly enhance the relevance and accuracy of responses produced by large language models (LLMs). These frameworks retrieve relevant documents from a large corpus and use these documents to inform the generative process, thereby improving the contextuality and precision of the generated content. Ensuring reproducibility in data queries using similarity search within these RAG frameworks is critical for maintaining the reliability and consistency of scientific workflows. Reproducibility ensures that the same input query consistently yields the same output, which is vital for scientific tasks that rely on precise and repeatable results. Inconsistencies can arise from various sources, affecting the trustworthiness of scientific outcomes. Differences in retrieval algorithms can lead to variable sets of documents being retrieved for the same query. Variations in data indexing methods can cause inconsistencies in how documents are ranked and accessed. The stochastic nature of LLM operations introduces an element of randomness in the generative process. Updates in datasets can also alter the baseline against which queries are processed and interpreted, leading to different results over time.&lt;/p>
&lt;p>This proposal aims to address these reproducibility challenges in similarity searches within RAG frameworks. This work involves analyzing the root causes of non-determinism, benchmarking and validating the consistency of query results, implementing enhancements to minimize variability, and developing tools and best practices to ensure reproducibility. Reproducibility in data queries can be influenced by several factors, including updates in datasets, differences in retrieval algorithms, varying data indexing methods, and the stochastic nature of LLM operations. Each of these factors can cause variability in the documents retrieved and in the generated responses. Ensuring consistency in query results across different runs is crucial for maintaining the integrity of LLM-driven scientific research, allowing researchers to confidently build upon prior work and achieve reliable, trustworthy outcomes.&lt;/p>
&lt;h3 id="workplan">Workplan&lt;/h3>
&lt;p>The proposed work will include: (1) Identifying sources of non-determinism and variability, such as algorithmic differences and indexing methods, in RAG; (2) Utilizing standardized scientific datasets to benchmark the reproducibility of similarity search results across different RAG frameworks; (3) Establishing protocols for handling dataset updates to ensure that such changes do not impact the reproducibility of similarity search results; and (4) Implementing mechanisms to track and document updates to datasets, ensuring that changes are reflected consistently across all instances of the RAG framework. By addressing these areas, the proposed work aims to mitigate challenges related to reproducibility in similarity search queries within RAG frameworks, ultimately enhancing the reliability and trustworthiness of scientific research outcomes.&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Topics:&lt;/strong> &lt;code>Reproducibility&lt;/code> &lt;code>LLM&lt;/code> &lt;code>RAG&lt;/code> &lt;code>Scientific Workflows&lt;/code>&lt;/li>
&lt;li>&lt;strong>Skills:&lt;/strong> C/C++, Python&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/luanzheng-lenny-guo/">Luanzheng &amp;quot;Lenny&amp;quot; Guo&lt;/a>&lt;/li>
&lt;/ul></description></item><item><title>Exploration of I/O Reproducibility with HDF5</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre25/pnnl/h5_reproducibility/</link><pubDate>Wed, 19 Feb 2025 09:00:00 -0700</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre25/pnnl/h5_reproducibility/</guid><description>&lt;p>Parallel I/O is a critical component in high-performance computing (HPC), allowing multiple processes to read and write data concurrently from a shared storage system. &lt;a href="https://github.com/HDFGroup/hdf5" target="_blank" rel="noopener">HDF5&lt;/a>—a widely adopted data model and library for managing complex scientific data—supports parallel I/O but introduces challenges in I/O reproducibility, where repeated executions do not always produce identical results. This lack of reproducibility can stem from non-deterministic execution orders, variations in collective buffering strategies, and race conditions in metadata and dataset chunking operations within HDF5’s parallel I/O hierarchy. Moreover, many HDF5 operations that leverage &lt;a href="%28https://www.hdfgroup.org/wp-content/uploads/2020/02/20200206_ECPTutorial-final.pdf%29">MPI I/O&lt;/a> require collective communication; that is, all processes within a communicator must participate in operations such as metadata creation, chunk allocation, and data aggregation. These collective calls ensure that the file structure and data layout remain consistent across processes, but they also introduce additional synchronization complexity that can impact reproducibility if not properly managed. In HPC scientific workflows, consistent I/O reproducibility is essential for accurate debugging, validation, and benchmarking, ensuring that scientific results are both verifiable and trustworthy. Tools such as &lt;a href="https://github.com/hpc-io/h5bench" target="_blank" rel="noopener">h5bench&lt;/a>—a suite of I/O kernels designed to exercise HDF5 I/O on parallel file systems—play an important role in identifying these reproducibility challenges, tuning performance, and ultimately supporting the overall robustness of large-scale scientific applications.&lt;/p>
&lt;h3 id="workplan">Workplan&lt;/h3>
&lt;p>The proposed work will include (1) analyzing and characterizing parallel I/O operations in &lt;a href="https://www.hdfgroup.org/wp-content/uploads/2020/02/20200206_ECPTutorial-final.pdf" target="_blank" rel="noopener">HDF5&lt;/a> with &lt;a href="https://github.com/hpc-io/h5bench" target="_blank" rel="noopener">h5bench&lt;/a> miniapps, (2) exploring and validating potential reproducibility challenges within the parallel I/O hierarchy (e.g., MPI I/O), and (3) implementing solutions to address parallel I/O reproducibility.&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Topics:&lt;/strong> &lt;code>Parallel I/O&lt;/code> &lt;code>MPI-I/O&lt;/code> &lt;code>Reproducibility&lt;/code> &lt;code>HPC&lt;/code> &lt;code>HDF5&lt;/code>&lt;/li>
&lt;li>&lt;strong>Skills:&lt;/strong> C/C++, Python&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/luanzheng-lenny-guo/">Luanzheng &amp;quot;Lenny&amp;quot; Guo&lt;/a> and [Wei Zhang]&lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/wei-zhang/">Wei Zhang&lt;/a>&lt;/li>
&lt;/ul></description></item><item><title>Peersky Browser</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre25/ucsc/peersky/</link><pubDate>Tue, 18 Feb 2025 12:00:00 -0800</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre25/ucsc/peersky/</guid><description>&lt;p>&lt;a href="https://peersky.p2plabs.xyz/" target="_blank" rel="noopener">Peersky Browser&lt;/a> is an experimental personal gatekeeper to a new way of accessing web content. In a world where a handful of big companies control most of the internet, Peersky leverages distributed web technologies—&lt;a href="https://ipfs.tech/" target="_blank" rel="noopener">IPFS&lt;/a>, &lt;a href="https://holepunch.to/" target="_blank" rel="noopener">Hypercore&lt;/a>, and Web3—to return control to the users. With integrated local P2P applications, Peersky offers a fresh, community-driven approach to browsing.&lt;/p>
&lt;h3 id="implement-web-extensions-integration">Implement Web Extensions Integration&lt;/h3>
&lt;ul>
&lt;li>&lt;strong>Topics:&lt;/strong> &lt;code>Browser Extensions&lt;/code>, &lt;code>UI/UX&lt;/code>, &lt;code>Electron&lt;/code>&lt;/li>
&lt;li>&lt;strong>Skills:&lt;/strong> JavaScript, Electron.js, HTML/CSS&lt;/li>
&lt;li>&lt;strong>Difficulty:&lt;/strong> Moderate&lt;/li>
&lt;li>&lt;strong>Size:&lt;/strong> Medium (175 hours)&lt;/li>
&lt;li>&lt;strong>Mentors:&lt;/strong> &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/akhilesh-thite/">Akhilesh Thite&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>Implement web extension support in Electron by leveraging its web extension node modules, pre-installing extensions, and providing a user interface for adding, updating, and securely managing them.&lt;/p>
&lt;p>&lt;strong>Tasks:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Loading Extensions via Electron Modules:&lt;/strong>
&lt;ul>
&lt;li>Utilize Electron’s web extension node modules to load extensions, as Electron.js doesn&amp;rsquo;t support marketplace integration.&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>&lt;strong>Default Pre-installed Extensions:&lt;/strong>
&lt;ul>
&lt;li>Configure a set of pre-installed extensions like uBlock to offer immediate value for privacy and security.&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>&lt;strong>User-Installed Extensions UI:&lt;/strong>
&lt;ul>
&lt;li>Create an interface where users can add extension &lt;code>.zip&lt;/code> files in &lt;code>peersky://settings&lt;/code>.&lt;/li>
&lt;li>Add an option for users to manually update all installed extensions.&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>&lt;strong>Validate and Sandbox Extensions:&lt;/strong>
&lt;ul>
&lt;li>Check the integrity and manifest structure of the uploaded extensions to ensure they meet Chrome Manifest V3 requirements.&lt;/li>
&lt;li>Apply sandboxing techniques and enforce strict content security policies to mitigate potential risks.&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>&lt;strong>Extension Management UI:&lt;/strong>
&lt;ul>
&lt;li>Design a dedicated UI at the top right of the navigation bar to manage extensions, including stack order and pinning functionality for quick access and organization.&lt;/li>
&lt;/ul>
&lt;/li>
&lt;/ul>
&lt;h3 id="implement-chat-history-synchronization-for-hyper-chat-rooms">Implement Chat History Synchronization for Hyper Chat Rooms&lt;/h3>
&lt;ul>
&lt;li>&lt;strong>Topics:&lt;/strong> &lt;code>P2P Communication&lt;/code>, &lt;code>Hypercore Protocol&lt;/code>, &lt;code>Real-time Synchronization&lt;/code>&lt;/li>
&lt;li>&lt;strong>Skills:&lt;/strong> JavaScript, Distributed Systems, P2P&lt;/li>
&lt;li>&lt;strong>Difficulty:&lt;/strong> Moderate&lt;/li>
&lt;li>&lt;strong>Size:&lt;/strong> Medium (175 hours)&lt;/li>
&lt;li>&lt;strong>Mentors:&lt;/strong> &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/akhilesh-thite/">Akhilesh Thite&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>Implement chat history synchronization for Hyper chat rooms, ensuring that new devices retrieve all past messages—including those sent while offline—for a seamless user experience. Additionally, research and experiment with mDNS to enable true offline, peer-to-peer messaging on local networks.&lt;/p>
&lt;p>&lt;strong>Tasks:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>&lt;strong>History Retrieval Mechanism:&lt;/strong>
&lt;ul>
&lt;li>Implement chat history synchronization so that when a new device joins a Hyper chat room, it retrieves the entire chat history from the Hypercore feed.&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>&lt;strong>Offline Message Inclusion:&lt;/strong>
&lt;ul>
&lt;li>Ensure that devices that were offline during prior messages can still access the full chat history upon joining the room, even after messages were sent in their absence.&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>&lt;strong>UI Integration:&lt;/strong>
&lt;ul>
&lt;li>Create a seamless experience for users across devices by ensuring that no messages are lost and that users can access the full chat history regardless of their online status.&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>&lt;strong>Research mDNS (Multicast DNS):&lt;/strong>
&lt;ul>
&lt;li>mDNS is a protocol that allows devices on the same local network to communicate with each other without the need for a central DNS server. This enables peer-to-peer communication, especially in offline environments, making it ideal for offline messaging.&lt;/li>
&lt;li>Experiment with the &lt;code>mDNS()&lt;/code> function to enable peer-to-peer communication for offline chat rooms.&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>&lt;strong>Create Hyper Chat Web App Version:&lt;/strong>
&lt;ul>
&lt;li>Currently, Hyper chat is accessed via &lt;code>peersky://p2p/chat&lt;/code>. Develop a web app version of Hyper chat that can be hosted on the &lt;code>hyper://&lt;/code> protocol (&lt;code>hyper://chat.p2plabs.xyz&lt;/code>). This way, other P2P browsers (like &lt;a href="https://agregore.mauve.moe/" target="_blank" rel="noopener">Agregore&lt;/a>) can use it to communicate.&lt;/li>
&lt;/ul>
&lt;/li>
&lt;/ul></description></item><item><title>AR4VIP</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre25/ucsc/ar4vip/</link><pubDate>Tue, 18 Feb 2025 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre25/ucsc/ar4vip/</guid><description>&lt;p>We are interested in developing navigation aids for visually impaired people (VIP) using AR/VR technologies.
Our intended use is primarily indoors or outdoors but within private confines e.g. person&amp;rsquo;s backyard.
Using AR/VR headsets or smart glasses allows navigation without using a cane and frees
the users&amp;rsquo; hands for other tasks.&lt;/p>
&lt;h3 id="continue-development-on-meta-quest-3-headset">Continue Development on Meta Quest 3 Headset&lt;/h3>
&lt;ul>
&lt;li>&lt;strong>Topics:&lt;/strong> &lt;code>Dynamic scenes&lt;/code> &lt;code>Spatial audio&lt;/code> &lt;code>Proximity detection&lt;/code>&lt;/li>
&lt;li>&lt;strong>Skills:&lt;/strong> AR/VR familiarity, WebXR, Unity, SLAM, good communicator, good documentation skills&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="mailto:pang@soe.ucsc.edu">Alex Pang&lt;/a>, &lt;a href="davis@cs.ucsc.edu">James Davis&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>Continue development and field testing with the Meta Quest 3 headset.
See this &lt;a href="https://github.com/sail360/UCSC-VIP-Research" target="_blank" rel="noopener">repository page&lt;/a> for current status.&lt;/p>
&lt;p>Specific tasks:&lt;/p>
&lt;ul>
&lt;li>Improve spatial audio mapping&lt;/li>
&lt;li>Improve obstacle detection, at different heights, with pre-scanned geometry as well as dynamic objects
e.g. other people, pets, doors&lt;/li>
&lt;li>Special handling of hazards e.g. stairs, uneven floors, etc.&lt;/li>
&lt;li>Explore/incorporate AI to help identify objects in the scene when requested by user&lt;/li>
&lt;/ul>
&lt;h3 id="new-development-on-smart-glasses">New Development on Smart Glasses&lt;/h3>
&lt;ul>
&lt;li>&lt;strong>Topics:&lt;/strong> &lt;code>Dynamic scenes&lt;/code> &lt;code>Spatial audio&lt;/code> &lt;code>Proximity detection&lt;/code>&lt;/li>
&lt;li>&lt;strong>Skills:&lt;/strong> AR/VR familiarity, WebXR, Unity, SLAM, good communicator, good documentation skills&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:pang@soe.ucsc.edu">Alex Pang&lt;/a>, &lt;a href="mailto:davis@cs.ucsc.edu">James Davis&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>VR headsets are bulky and awkward, but currently is more advanced than AR glasses in terms of programmability.
Ultimately, the form factor of smart glasses is more practical for extended use by our target users.
There are many vendors working on pushing out their version of smart glasses targetting various applications
e.g. alternative for watching TV, etc. We are interested in those that provide capabilities to support
spatial computing. Most of these will likely have their own brand specific APIs. This project has 2 goals:
(a) develop generic brand-independent API, perhaps extensions to WebXR, to support overarching goal of navigation
aid for VIP, and
(b) port functionality of VR version to smart glasses while taking advantage of smart glass functionalities and sensors.&lt;/p>
&lt;p>Specific tasks:&lt;/p>
&lt;ul>
&lt;li>Explore current and soon-to-be-available smart glass options e.g. Snap Spectacles, Xreal Air 2 ultra, etc. and select a platform to work on (subject to cost and availability of SDK). At a minimum, glass should be microphones and speakers, and cameras. Infrared cameras or other low light capability is a plus. Sufficient battery life or option for quick exchange.&lt;/li>
&lt;li>Identify support provided by SDK e.g. does it do realtime scene reconstruction? does it support spatial audio? etc. If it supports features outside of WebXR, provide generic hooks to improve portability of code to other smart glasses.&lt;/li>
&lt;li>Port and extend functionalities from the Meta Quest 3 VR headsets to smart glass platform.&lt;/li>
&lt;li>Add AI support if glasses support them.&lt;/li>
&lt;li>Provide documentation of work.&lt;/li>
&lt;/ul></description></item><item><title>Assessing and Enhancing CC-Snapshot for Reproducible Experiment Environments</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre25/uchicago/cc-snapshot/</link><pubDate>Tue, 18 Feb 2025 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre25/uchicago/cc-snapshot/</guid><description>&lt;h2 id="overview">Overview&lt;/h2>
&lt;p>A critical challenge in computer systems research reproducibility is establishing and sharing experimental environments. While open testbeds like Chameleon provide access to hardware resources, researchers still face significant barriers when attempting to recreate the precise software configurations, dependencies, and system states needed for reproducible experiments. Environment snapshotting tools offer a solution, but face technical challenges in consistently capturing running systems without introducing distortions or requiring disruptive system modifications. This project addresses these fundamental reproducibility barriers by enhancing CC-Snapshot, an tool capturing the experimental environment configured by the user on bare metal images, to create more reliable and consistent system captures that can be shared and redeployed without loss of fidelity.&lt;/p>
&lt;p>&lt;a href="https://chameleoncloud.readthedocs.io/en/latest/technical/images.html#the-cc-snapshot-utility" target="_blank" rel="noopener">CC-Snapshot&lt;/a> is a tool on the &lt;a href="chameleoncloud.org">Chameleon&lt;/a> testbed that enables users to package their customized environments as complex images or appliances. By allowing researchers to share these environments easily, CC-Snapshot offers a powerful mechanism for reproducibility, ensuring that experiments can be replicated and extended by others.&lt;/p>
&lt;p>In this project, you will review existing CC-Snapshot workflows, research the latest snapshotting technologies, and develop enhancements that improve the tool’s usability and reliability. This includes ensuring snapshots are created consistently (even when the OS is actively running), preserving the integrity of user systems, and exploring advanced features such as out-of-band snapshotting and API-based triggers.&lt;/p>
&lt;h2 id="key-outcomes">Key Outcomes&lt;/h2>
&lt;ul>
&lt;li>Improved Snapshot Consistency: New methods to capture the full state of a disk without risking corruption or data inconsistency.&lt;/li>
&lt;li>Enhanced Reproducibility: A refined workflow that allows researchers to reliably share custom environments, facilitating collaborative and repeatable experiments.&lt;/li>
&lt;li>User-Friendly Tooling: Streamlined processes that reduce disruption to running systems—so installing dependencies or rebooting into special environments is less burdensome.&lt;/li>
&lt;li>Exploratory Features (Stretch Goals): Advanced mechanisms to stream disk data in real time during snapshotting and to initiate snapshots via an API call (for parity with VM snapshots).&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>Topics&lt;/strong>: Cloud Computing, Systems &amp;amp; Infrastructure, Reproducibility, Operating System Internals&lt;/p>
&lt;p>&lt;strong>Skills&lt;/strong>: Linux / OS Concepts, Cloud Tools, Systems Programming / Scripting, DevOps / CI&lt;/p>
&lt;p>&lt;strong>Difficulty&lt;/strong>: Moderate&lt;/p>
&lt;p>&lt;strong>Size&lt;/strong>: Medium&lt;/p>
&lt;p>&lt;strong>Mentors&lt;/strong>: &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/michael-sherman/">Michael Sherman&lt;/a>, &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/mark-powers/">Mark Powers&lt;/a>&lt;/p>
&lt;p>&lt;strong>Tasks&lt;/strong>:&lt;/p>
&lt;ul>
&lt;li>Ensure Snapshot Consistency
&lt;ul>
&lt;li>Reboot into a ramdisk and copy the offline disk.&lt;/li>
&lt;li>Use kexec to switch to/from a ramdisk environment without a full reboot.&lt;/li>
&lt;li>Change images to use a snapshot-capable filesystem (e.g., LVM) for safer live snapshots.&lt;/li>
&lt;li>Investigate additional methods (e.g., blog.benjojo.co.uk) for safely imaging live disks.&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>Prevent System Modifications During Snapshot
&lt;ul>
&lt;li>Currently, CC-Snapshot installs dependencies (e.g., qemu-img) on the running system, affecting its state.&lt;/li>
&lt;li>In-Band Fix: Download and run tools in a temp directory with static linking, avoiding system-level changes.&lt;/li>
&lt;li>Out-of-Band Approach: Snapshots done via ramdisk or kexec do not require altering the running system.&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>API-Triggered Snapshots
&lt;ul>
&lt;li>Extend or integrate with the Nova “snapshot instance” API to support the same workflow for bare metal.&lt;/li>
&lt;li>Leverage Ironic’s new “service steps” feature for an automated snapshot pipeline.&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>(Stretch Goal) Streaming Snapshots
&lt;ul>
&lt;li>Modify the workflow to stream data directly to storage, rather than making a full local copy first.&lt;/li>
&lt;li>Explore incremental or differential snapshot techniques to reduce bandwidth usage and storage overhead.&lt;/li>
&lt;/ul>
&lt;/li>
&lt;/ul></description></item><item><title>CarbonCast: Building an end-to-end consumption-based Carbon Intensity Forecasting service</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre25/ucsc/carboncast/</link><pubDate>Tue, 18 Feb 2025 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre25/ucsc/carboncast/</guid><description>&lt;p>&lt;a href="https://github.com/carbonfirst/carboncast" target="_blank" rel="noopener">CarbonCast&lt;/a> is a machine-learning-based approach to provide multi-day forecasts of the electrical grid&amp;rsquo;s carbon intensity. Developed in Python, the current version of CarbonCast delivers accurate forecasts in numerous regions by using historical source production data of a particular geographical region, time of day/year, and weather forecasts as features. However, there is no easy way to access and visualize the data through a standard interface. In addition, much important information is left out and is not available to users. For instance, electricity grids often import electricity from neighboring regions and so electricity consumption depends on both electricity generation and imports. Moreover, it is imperative for each energy source to utilize a tailored predictive mechanism. Consequently, any carbon optimization solution trying to reduce carbon emissions due to its electricity consumption will benefit more from following a consumption-based CI signal.&lt;/p>
&lt;p>The plan for this project is to develop both the frontend and the backend API services for CarbonCast. We also intend to enhance CarbonCast by implementing an architecture wherein each region can employ a distinct interface for their predictive modeling. In scenarios where these new models do not yield superior outcomes within a region, the current architecture will serve as a fallback solution.&lt;/p>
&lt;h3 id="building-an-end-to-end-consumption-based-carbon-intensity-forecasting-service">Building an end-to-end consumption-based Carbon Intensity Forecasting service&lt;/h3>
&lt;ul>
&lt;li>&lt;strong>Topics:&lt;/strong> &lt;code>Databases&lt;/code> &lt;code>Machine Learning&lt;/code>&lt;/li>
&lt;li>&lt;strong>Skills:&lt;/strong> Python, command line (bash), MySQL, Django, machine learning, cronjob&lt;/li>
&lt;li>&lt;strong>Difficulty:&lt;/strong> Moderate&lt;/li>
&lt;li>&lt;strong>Size:&lt;/strong> Medium (175 hours)&lt;/li>
&lt;li>&lt;strong>Mentors:&lt;/strong> &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/abel-souza/">Abel Souza&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>Develop a containerized end-to-end backend, API, and frontend for collecting, estimating, and visualizing real-time and forecast electrical grid&amp;rsquo;s carbon intensity data in a scalable manner.&lt;/p>
&lt;p>Tasks:&lt;/p>
&lt;ul>
&lt;li>Research web technologies and frameworks relevant to CarbonCast development.&lt;/li>
&lt;li>Run and collect CarbonCast&amp;rsquo;s data (CSV)&lt;/li>
&lt;li>Ingest CSV into a MySQL or SQLite database&lt;/li>
&lt;li>Develop an Application Programming Interface (API) and a Web User Interface (UI) to provide real-time data access and visualization.&lt;/li>
&lt;li>Deploy the CarbonCast API as a service and dockerize it so that other users and applications can locally deploy and use it easily.&lt;/li>
&lt;li>Implement a choropleth web map to visualize the carbon intensity data across the different geographical regions supported by CarbonCast.&lt;/li>
&lt;li>Enhance CarbonCast by implementing an extensible architecture wherein every region can employ distinct models for their predictive modeling.&lt;/li>
&lt;/ul></description></item><item><title>Chameleon Trovi Support for Complex Experiment Appliances</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre25/uchicago/trovi/</link><pubDate>Tue, 18 Feb 2025 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre25/uchicago/trovi/</guid><description>&lt;h2 id="overview">Overview&lt;/h2>
&lt;p>The discoverability and accessibility of research artifacts remains a significant barrier to reproducibility in computer science research. While digital libraries index research papers, they rarely provide direct access to the artifacts needed to reproduce experiments, especially complex multi-node systems. Additionally, when artifacts are available, they often lack standardized metadata, versioning, and deployment mechanisms that would enable researchers to easily find and reuse them. This project addresses these challenges by extending Trovi, a repository of experimental artifacts executable on open platforms, to support complex, multi-node appliances, making sophisticated experimental environments discoverable, shareable, and deployable through a standardized interface - ultimately lowering the barriers to reproducing complex systems experiments.&lt;/p>
&lt;p>&lt;a href="chameleoncloud.org/">Chameleon&lt;/a> has historically enabled researchers to orchestrate complex appliances—large, multi-node clusters configured via OpenStack Heat—to conduct advanced experiments. Meanwhile, Chameleon team introduced &lt;a href="chameleoncloud.org/experiment/share">Trovi&lt;/a> as repository for open platforms (beyond Chameleon) that pioneers mechanisms for artifact and platform integration leading to immediate execution for pratical reproducibility. This project aims to bridge the two by adding support in Trovi for importing, discovering, and launching complex appliances. By integrating these capabilities, researchers will be able to one-click deploy complex appliances directly from the Trovi dashboard, archive them for future reference, and reproduce experiments on demand.&lt;/p>
&lt;h2 id="key-outcomes">Key Outcomes&lt;/h2>
&lt;ul>
&lt;li>Extended Trovi API: Enable the import and management of complex appliances as artifacts.&lt;/li>
&lt;li>Streamlined One-Click Launch: Integrate with Chameleon’s existing provisioning workflows so users can launch multi-node clusters directly from Trovi.&lt;/li>
&lt;li>Enhanced Dashboard Experience: Provide UI assistance for discovering, reviewing, and customizing complex appliance artifacts.&lt;/li>
&lt;li>Improved Artifact Reproducibility: Automate the process of exporting CC-snapshot images and other resources to ensure everything is preserved across sites (UC, TACC), highlighting any parameters that need user attention for cross-site portability.&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>Topics&lt;/strong>: &lt;code>Reproducible Research&lt;/code>, &lt;code>Cloud Computing &amp;amp; Orchestration&lt;/code>, &lt;code>OpenStack Heat&lt;/code>, &lt;code>UI/UX &amp;amp; Web Development&lt;/code>&lt;/p>
&lt;p>&lt;strong>Skills&lt;/strong>: Python, APIs, Cloud (OpenStack), DevOps &amp;amp; Automation, Frontend&lt;/p>
&lt;p>&lt;strong>Difficulty&lt;/strong>: Hard&lt;/p>
&lt;p>&lt;strong>Size&lt;/strong>: Large&lt;/p>
&lt;p>&lt;strong>Mentors:&lt;/strong> &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/mark-powers/">Mark Powers&lt;/a>&lt;/p>
&lt;p>&lt;strong>Tasks&lt;/strong>:&lt;/p>
&lt;ul>
&lt;li>Extensions to the Trovi API
&lt;ul>
&lt;li>Add support for importing complex appliances as artifacts (including Heat templates, metadata, and associated disk images).&lt;/li>
&lt;li>Develop methods for tagging, versioning, and categorizing these appliances, making them easier to discover.&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>One-Click Launch of Complex Appliances
&lt;ul>
&lt;li>Integrate with Chameleon’s orchestration engine, enabling single-click cluster deployments from the Trovi UI.&lt;/li>
&lt;li>Validate correct configuration and resource availability through automated checks.&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>Trovi Dashboard Enhancements
&lt;ul>
&lt;li>Update the front-end to provide intuitive controls for customizing or parameterizing complex appliances before launching.&lt;/li>
&lt;li>Offer a clear workflow for reviewing dependencies, resource requirements, and usage instructions.&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>Automated Export &amp;amp; Multi-Site Testing
&lt;ul>
&lt;li>Streamline the export of snapshots or images into Trovi as part of the appliance import process.&lt;/li>
&lt;li>Optionally re-run the imported appliances at multiple sites (UC, TACC), detecting any unparameterized settings or missing dependencies.&lt;/li>
&lt;/ul>
&lt;/li>
&lt;/ul></description></item><item><title>Contextualization – Extending Chameleon’s Orchestration for One-Click Experiment Deployment</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre25/uchicago/contextualization/</link><pubDate>Tue, 18 Feb 2025 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre25/uchicago/contextualization/</guid><description>&lt;h2 id="overview">Overview&lt;/h2>
&lt;p>Reproducibility in computer systems research is often hindered by the quality and completeness of artifact descriptions and the complexity of establishing experimental environments. When experiments involve multiple interconnected components, researchers struggle with hardcoded configurations, inadequate documentation of setup processes, and missing validation steps that would verify correct environment establishment. This project addresses these challenges by extending orchestration capabilities beyond basic hardware provisioning to include comprehensive contextualization—making complex, multi-component experimental environments deployable via parameterized templates with clear validation points, standardized metadata, and minimal user intervention—thus significantly reducing the barriers to reproducing complex distributed systems experiments.&lt;/p>
&lt;p>&lt;a href="chameleoncloud.org">Chameleon&lt;/a> already provides powerful capabilities to orchestrate and configure resources through Heat templates (similar to Terraform) and the &lt;a href="https://python-chi.readthedocs.io/" target="_blank" rel="noopener">python-chi&lt;/a> library. However, these focus primarily on provisioning (i.e., allocating and configuring hardware resources). This project goes a step further by addressing contextualization—the process of creating complete, ready-to-use experimental environments that incorporate everything from network layout to instance-level configuration and discovery—with additional features such as parameterized templates, experiment-level metadata, and output reporting.&lt;/p>
&lt;h2 id="key-outcomes">Key Outcomes&lt;/h2>
&lt;ul>
&lt;li>Template-Based One-Click Launch: Users can deploy multi-resource experiments (VMs, networks, storage, etc.) via a single click or a minimal set of input parameters.&lt;/li>
&lt;li>Enhanced Experiment Contextualization: Each launched resource can gain access to global “experiment-level” metadata (e.g., IP-to-hostname mappings for cluster authentication) and outputs that summarize important details.&lt;/li>
&lt;li>Streamlined User Experience: An asynchronous deployment workflow that provides notifications and uses “outputs” to highlight critical connection information (e.g., bastion host IP, final results).&lt;/li>
&lt;li>Optional Advanced Features: Partial reconfiguration to avoid full rebuilds when changes are minor, an “export” function to capture existing deployments into a new template, and potential publishing to Trovi for reproducibility and archiving.&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>Topics&lt;/strong>: Cloud Computing &amp;amp; Orchestration, Infrastructure as Code, DevOps &amp;amp; Automation, Reproducible Research Environments&lt;/p>
&lt;p>&lt;strong>Skills&lt;/strong>:&lt;/p>
&lt;ul>
&lt;li>OpenStack &amp;amp; Heat Templates: Familiarity with provisioning resources on Chameleon using Heat or Terraform-like workflows.&lt;/li>
&lt;li>Python &amp;amp; Scripting: For enhancing or extending the python-chi library.&lt;/li>
&lt;li>Systems / Network Knowledge: Understanding multi-VM topologies, cluster configurations, and network-level interactions.&lt;/li>
&lt;li>CI/CD &amp;amp; DevOps: Experience building or integrating asynchronous deployment and notifications.&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>Difficulty&lt;/strong>: Hard&lt;/p>
&lt;p>&lt;strong>Size&lt;/strong>: Large (suitable for a semester-long project or a summer internship)&lt;/p>
&lt;p>&lt;strong>Mentors&lt;/strong>: &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/paul-marshall/">Paul Marshall&lt;/a>&lt;/p>
&lt;p>&lt;strong>Tasks&lt;/strong>:&lt;/p>
&lt;ul>
&lt;li>One-Click Template Launch
&lt;ul>
&lt;li>Design a template (in Heat or similar) specifying multiple cloud resources (images, networks, disk images, SSH keys, etc.).&lt;/li>
&lt;li>Ensure the template author can define input parameters with defaults.&lt;/li>
&lt;li>Allow the user to launch the template quickly with default values or adjust parameters before deployment.&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>Asynchronous Provisioning &amp;amp; Notifications
&lt;ul>
&lt;li>Implement a long-running process that deploys resources step-by-step.&lt;/li>
&lt;li>Provide status updates to the user (e.g., via UI notifications, email, or logs) when deployments complete or fail.&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>Experiment-Level Metadata
&lt;ul>
&lt;li>Inject metadata such as IP-to-hostname mappings to each instance for easy cluster authentication.&lt;/li>
&lt;li>Allow the template to define “outputs” (like a public IP of a bastion or location of final results).&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>Partial Reconfiguration (Optional)
&lt;ul>
&lt;li>Enable partial updates if only one of several servers changes, saving time and resources.&lt;/li>
&lt;li>Improve fault tolerance by avoiding full redeploys in the event of partial failures.&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>Export Running Configurations into a New Template (Optional)
&lt;ul>
&lt;li>Build a web-interface or script to detect existing user-owned resources (servers, networks, etc.).&lt;/li>
&lt;li>Generate a proposed template from those resources, suggesting parameters (e.g., flavor, disk image, or SSH key).&lt;/li>
&lt;li>Extend or modify existing templates by adding discovered resources.&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>Integration with Trovi / Multi-Site Testing (Optional)
&lt;ul>
&lt;li>Provide a method to archive or publish the final template (and associated disk images, data sets) in Trovi.&lt;/li>
&lt;li>Attempt to re-run the template at multiple Chameleon sites (e.g., UC, TACC) to identify parameters or modifications needed for cross-site reproducibility.&lt;/li>
&lt;/ul>
&lt;/li>
&lt;/ul></description></item><item><title>MPI Appliance for HPC Research on Chameleon</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre25/uchicago/mpi/</link><pubDate>Tue, 18 Feb 2025 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre25/uchicago/mpi/</guid><description>&lt;h2 id="overview">Overview&lt;/h2>
&lt;p>Message Passing Interface (MPI) is the dominant programming model for high-performance computing (HPC), enabling applications to scale efficiently across thousands of processing cores. In reproducibility initiatives for HPC research, MPI implementations are critical as they manage the complex communications that underpin parallel scientific applications. However, reproducing MPI-based experiments remains challenging due to the need for specific library versions, network configurations, and multi-node setups that must be precisely orchestrated.&lt;/p>
&lt;p>The popularity of an “MPI cluster” as a base layer for many results in HPC caused support for MPI template and appliance to be specifically requested by the SC24 reproducibility chair to support the conference&amp;rsquo;s reproducibility initiative, providing researchers with standardized environments for validating results. By extending the work begun for SC24, this project aims to create higher-quality, ready-to-use, and maintainable MPI environments for the Chameleon testbed that abstracts away complex configuration details while ensuring consistent performance across experiments—thus making HPC experiments more accessible and reproducible for the broader research community.&lt;/p>
&lt;p>You will lead efforts to configure disk images with the necessary MPI dependencies and provide orchestration templates that set up networking and instances automatically. The resulting appliance will allow researchers to quickly and consistently deploy distributed computing environments with MPI. The goal is to facilitate reproducible and scalable computational experiments for a wide range of scientific and engineering applications.&lt;/p>
&lt;h1 id="key-outcomes">Key Outcomes&lt;/h1>
&lt;ul>
&lt;li>Ready-to-Use MPI Disk Images: Create one or more images pre-configured with the correct versions of MPI and dependencies, ensuring a consistent environment.&lt;/li>
&lt;li>Simple Cluster Configuration Scripts: Provide scripts or playbooks that efficiently bring up a fully functional MPI cluster on Chameleon, abstracting away manual setup steps.&lt;/li>
&lt;li>Orchestration Template: An automated workflow that sets up networks, instances, and additional resources needed to run large-scale MPI workloads.&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>Topics&lt;/strong>: High-Performance Computing (HPC), Cloud Computing, MPI &amp;amp; Distributed Systems, DevOps &amp;amp; Automation&lt;/p>
&lt;p>&lt;strong>Skills&lt;/strong>:&lt;/p>
&lt;ul>
&lt;li>MPI &amp;amp; Parallel Programming: Understanding of MPI libraries, cluster configuration, and typical HPC workflows.&lt;/li>
&lt;li>Cloud Orchestration: Familiarity with OpenStack Heat or other Infrastructure-as-Code (IaC) tools for provisioning resources.&lt;/li>
&lt;li>Linux System Administration: Experience configuring and troubleshooting packages, network settings, and performance optimizations.&lt;/li>
&lt;li>Scripting &amp;amp; Automation: Ability to write scripts (e.g., Bash, Python) to automate setup and deployment steps.&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>Difficulty&lt;/strong>: Moderate to Hard&lt;/p>
&lt;p>&lt;strong>Size&lt;/strong>: Medium&lt;/p>
&lt;p>&lt;strong>Mentor&lt;/strong>: &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/ken-raffenetti/">Ken Raffenetti&lt;/a>&lt;/p>
&lt;p>&lt;strong>Tasks&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>Disk Images with MPI Dependencies
&lt;ul>
&lt;li>Build base images with the correct versions of MPI (e.g., MPICH, OpenMPI) and any required libraries (e.g., GCC, network libraries).&lt;/li>
&lt;li>Ensure all packages are up to date and tested for compatibility with Chameleon’s bare metal and/or VM environments.&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>Cluster Setup Scripts
&lt;ul>
&lt;li>Develop lightweight scripts or Ansible playbooks that join new instances into an MPI cluster, configuring hostnames, SSH keys, and MPI runtime settings.&lt;/li>
&lt;li>Validate cluster functionality by running simple distributed “Hello World” tests and more advanced benchmarks (e.g., Intel MPI Benchmarks).&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>Orchestration Template
&lt;ul>
&lt;li>Provide a Heat template (or similar) specifying the network configuration, instance counts, and environment variables for MPI.&lt;/li>
&lt;li>Enable easy parameterization of cluster size, disk images, and other variables so users can customize their setups on the fly.&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>Integration &amp;amp; Testing
&lt;ul>
&lt;li>Document best practices for launching and using the MPI images in Chameleon.&lt;/li>
&lt;li>Demonstrate reproducibility with multiple cluster sizes and workloads to ensure reliability.&lt;/li>
&lt;/ul>
&lt;/li>
&lt;/ul></description></item><item><title>Smart Environments – An AI System for Reproducible Custom Computing Environments</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre25/uchicago/envgym/</link><pubDate>Tue, 18 Feb 2025 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre25/uchicago/envgym/</guid><description>&lt;h2 id="overview">Overview&lt;/h2>
&lt;p>The complexity of environment setup and the expertise required to configure specialized software stacks can often hinder efforts to reproduce important scientific achievements in HPC and systems studies. Researchers often struggle with incomplete or ambiguous artifact descriptions that make assumptions about &amp;ldquo;common knowledge&amp;rdquo; that is actually specific domain expertise. When trying to reproduce experiments, reviewers may spend excessive time debugging environment inconsistencies rather than evaluating the actual research. These challenges are compounded when experiments need to run on different hardware configurations.&lt;/p>
&lt;p>This project seeks to address these fundamental reproducibility barriers by using AI to translate natural language environment requirements often used in papers or artifact descriptions into actionable, reproducible configurations—bridging the knowledge gap between experiment authors and reviewers while standardizing environment creation across different hardware platforms. We will develop an AI-driven system that automatically generates and configures reproducible computing environments based on artifact descriptions from conferences, Trovi artifacts on the &lt;a href="chameleoncloud.org">Chameleon&lt;/a> testbed, and other reliable sources for scientific experiment code and associated documentation. Leveraging Natural Language Processing (NLP), the system will allow researchers to describe desired environments in plain English, then map those descriptions onto predefined configuration templates. By simplifying environment creation and ensuring reproducibility, the system promises to eliminate duplicate setup efforts, accelerate research workflows, and promote consistent experimentation practices across diverse hardware.&lt;/p>
&lt;h2 id="key-outcomes">Key Outcomes&lt;/h2>
&lt;ul>
&lt;li>Working Prototype: A system that automatically generates machine images deployable on bare metal and VM instances, based on user-provided requirements.&lt;/li>
&lt;li>Comprehensive Documentation: Detailed user manuals, guides, and best practices tailored to researchers, ensuring a smooth adoption process.&lt;/li>
&lt;li>Live Demo: A demonstration environment (e.g., a web app or Jupyter notebook) that shows how to request, configure, and launch reproducible cloud environments on both hardware profiles.&lt;/li>
&lt;li>Long-Term Impact: Building blocks for future AI-driven automation of cloud infrastructure, reducing human error and enabling fast, repeatable research pipelines.&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>Topics&lt;/strong>: Reproducibility, AI &amp;amp; NLP, Cloud Computing, DevOps and Automation&lt;/p>
&lt;p>&lt;strong>Skills&lt;/strong>:&lt;/p>
&lt;ul>
&lt;li>Machine Learning / AI: Familiarity with NLP methods to interpret user requirements.&lt;/li>
&lt;li>Python: Primary language for backend services and cloud interactions.&lt;/li>
&lt;li>Cloud API Integration: Experience with OpenStack or similar APIs to provision and configure images on both bare metal and virtual machines.&lt;/li>
&lt;li>DevOps: Automated environment configuration, CI/CD workflows, and containerization.&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>Difficulty&lt;/strong>: Hard&lt;/p>
&lt;p>&lt;strong>Size&lt;/strong>: Large&lt;/p>
&lt;p>&lt;strong>Mentors&lt;/strong>: &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/paul-marshall/">Paul Marshall&lt;/a>&lt;/p>
&lt;p>&lt;strong>Tasks&lt;/strong>:&lt;/p>
&lt;ul>
&lt;li>Requirement Gathering &amp;amp; NLP Design
&lt;ul>
&lt;li>Research the specific needs of researchers building experimental setups.&lt;/li>
&lt;li>Design an NLP pipeline to parse plain-English descriptions (e.g., “I need Python 3.9, CUDA 11, and scikit-learn”) into environment “recipes.”&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>Backend Environment Builder
&lt;ul>
&lt;li>Implement logic that converts parsed user requirements into machine-image definitions for bare metal and VM instances.&lt;/li>
&lt;li>Integrate with Chameleon’s APIs to provision servers, install software, and run configuration validation automatically.&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>Front-End &amp;amp; User Experience
&lt;ul>
&lt;li>Develop an intuitive web or CLI interface that researchers can use to capture experiment environment requirements.&lt;/li>
&lt;li>Provide real-time status updates during environment setup, along with meaningful error messages and quick-start templates.&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>Testing &amp;amp; Validation
&lt;ul>
&lt;li>Conduct end-to-end tests using diverse software stacks (e.g., HPC libraries, machine learning frameworks) on bare metal and VM instances.&lt;/li>
&lt;li>Ensure reproducibility by re-creating the same environment multiple times and comparing configurations.&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>Documentation &amp;amp; Demonstration
&lt;ul>
&lt;li>Produce user-facing documentation, including tutorials and best practices for researchers who frequently run experiments on Chameleon Cloud.&lt;/li>
&lt;li>Create a short live demo or screencast showcasing how to configure an environment for a specific research workflow.&lt;/li>
&lt;/ul>
&lt;/li>
&lt;/ul></description></item><item><title>Smart Environments – An AI System for Reproducible Custom Computing Environments</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre25/uchicago/smart-environments/</link><pubDate>Tue, 18 Feb 2025 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre25/uchicago/smart-environments/</guid><description>&lt;h2 id="overview">Overview&lt;/h2>
&lt;p>The complexity of environment setup and the expertise required to configure specialized software stacks can often hinder efforts to reproduce important scientific achievements in HPC and systems studies. Researchers often struggle with incomplete or ambiguous artifact descriptions that make assumptions about &amp;ldquo;common knowledge&amp;rdquo; that is actually specific domain expertise. When trying to reproduce experiments, reviewers may spend excessive time debugging environment inconsistencies rather than evaluating the actual research. These challenges are compounded when experiments need to run on different hardware configurations.&lt;/p>
&lt;p>This project seeks to address these fundamental reproducibility barriers by using AI to translate natural language environment requirements often used in papers or artifact descriptions into actionable, reproducible configurations—bridging the knowledge gap between experiment authors and reviewers while standardizing environment creation across different hardware platforms. We will develop an AI-driven system that automatically generates and configures reproducible computing environments based on artifact descriptions from conferences, Trovi artifacts on the &lt;a href="chameleoncloud.org">Chameleon&lt;/a> testbed, and other reliable sources for scientific experiment code and associated documentation. Leveraging Natural Language Processing (NLP), the system will allow researchers to describe desired environments in plain English, then map those descriptions onto predefined configuration templates. By simplifying environment creation and ensuring reproducibility, the system promises to eliminate duplicate setup efforts, accelerate research workflows, and promote consistent experimentation practices across diverse hardware.&lt;/p>
&lt;h2 id="key-outcomes">Key Outcomes&lt;/h2>
&lt;ul>
&lt;li>Working Prototype: A system that automatically generates machine images deployable on bare metal and VM instances, based on user-provided requirements.&lt;/li>
&lt;li>Comprehensive Documentation: Detailed user manuals, guides, and best practices tailored to researchers, ensuring a smooth adoption process.&lt;/li>
&lt;li>Live Demo: A demonstration environment (e.g., a web app or Jupyter notebook) that shows how to request, configure, and launch reproducible cloud environments on both hardware profiles.&lt;/li>
&lt;li>Long-Term Impact: Building blocks for future AI-driven automation of cloud infrastructure, reducing human error and enabling fast, repeatable research pipelines.&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>Topics&lt;/strong>: Reproducibility, AI &amp;amp; NLP, Cloud Computing, DevOps and Automation&lt;/p>
&lt;p>&lt;strong>Skills&lt;/strong>:&lt;/p>
&lt;ul>
&lt;li>Machine Learning / AI: Familiarity with NLP methods to interpret user requirements.&lt;/li>
&lt;li>Python: Primary language for backend services and cloud interactions.&lt;/li>
&lt;li>Cloud API Integration: Experience with OpenStack or similar APIs to provision and configure images on both bare metal and virtual machines.&lt;/li>
&lt;li>DevOps: Automated environment configuration, CI/CD workflows, and containerization.&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>Difficulty&lt;/strong>: Hard&lt;/p>
&lt;p>&lt;strong>Size&lt;/strong>: Large&lt;/p>
&lt;p>&lt;strong>Mentors&lt;/strong>: &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/paul-marshall/">Paul Marshall&lt;/a>&lt;/p>
&lt;p>&lt;strong>Tasks&lt;/strong>:&lt;/p>
&lt;ul>
&lt;li>Requirement Gathering &amp;amp; NLP Design
&lt;ul>
&lt;li>Research the specific needs of researchers building experimental setups.&lt;/li>
&lt;li>Design an NLP pipeline to parse plain-English descriptions (e.g., “I need Python 3.9, CUDA 11, and scikit-learn”) into environment “recipes.”&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>Backend Environment Builder
&lt;ul>
&lt;li>Implement logic that converts parsed user requirements into machine-image definitions for bare metal and VM instances.&lt;/li>
&lt;li>Integrate with Chameleon’s APIs to provision servers, install software, and run configuration validation automatically.&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>Front-End &amp;amp; User Experience
&lt;ul>
&lt;li>Develop an intuitive web or CLI interface that researchers can use to capture experiment environment requirements.&lt;/li>
&lt;li>Provide real-time status updates during environment setup, along with meaningful error messages and quick-start templates.&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>Testing &amp;amp; Validation
&lt;ul>
&lt;li>Conduct end-to-end tests using diverse software stacks (e.g., HPC libraries, machine learning frameworks) on bare metal and VM instances.&lt;/li>
&lt;li>Ensure reproducibility by re-creating the same environment multiple times and comparing configurations.&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>Documentation &amp;amp; Demonstration
&lt;ul>
&lt;li>Produce user-facing documentation, including tutorials and best practices for researchers who frequently run experiments on Chameleon Cloud.&lt;/li>
&lt;li>Create a short live demo or screencast showcasing how to configure an environment for a specific research workflow.&lt;/li>
&lt;/ul>
&lt;/li>
&lt;/ul></description></item><item><title>Widgets for Python-chi in Jupyter</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre25/uchicago/jupyter-widgets/</link><pubDate>Tue, 18 Feb 2025 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre25/uchicago/jupyter-widgets/</guid><description>&lt;h2 id="overview">Overview&lt;/h2>
&lt;p>Reproducibility challenges in research extend beyond code and environments to the experimental workflow itself. When experiments involve dynamic resource allocation, monitoring, and reconfiguration, researchers often struggle to document these interactive steps in a way that others can precisely follow. The lack of structured workflow documentation and real-time feedback creates barriers for reviewers attempting to reproduce experiments, as they cannot easily verify whether their resource configurations match the original experiment&amp;rsquo;s state. This project addresses these challenges by developing interactive Jupyter widgets that make experiment resource management more visual, intuitive, and self-documenting—transforming ad-hoc command sequences into reproducible workflows that automatically log interactions and configuration changes while providing immediate visual feedback on experiment topology and resource states.&lt;/p>
&lt;p>As cloud researchers often work with Jupyter Notebooks for interactive data analysis and experimentation, the &lt;a href="https://python-chi.readthedocs.io/" target="_blank" rel="noopener">python-chi&lt;/a> library offers a powerful way to automate and control resources on &lt;a href="chameleoncloud.org">Chameleon Cloud&lt;/a>. This project will extend python-chi by adding interactive widgets specifically designed for use in Jupyter, empowering users to launch, monitor, and manage their experiments without leaving the notebook environment. By bringing visual and intuitive controls directly into the user’s workflow, we aim to improve both reproducibility and usability for complex resource management tasks.&lt;/p>
&lt;h2 id="key-outcomes">Key Outcomes&lt;/h2>
&lt;ul>
&lt;li>User-Friendly Jupyter Widgets: Develop a suite of widgets to visualize reserved resources, hardware availability, and experiment topologies in real time.&lt;/li>
&lt;li>Integrated Experiment Management: Enable researchers to orchestrate experiments (launch, configure, monitor) within a single, notebook-centric workflow.&lt;/li>
&lt;li>Enhanced Feedback &amp;amp; Usability: Provide clear, asynchronous status updates and resource reconfiguration progress, reducing confusion and user error.&lt;/li>
&lt;li>Improved Reproducibility: By automating and logging widget interactions, experiments become more traceable and easier to replicate.&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>Topics&lt;/strong>: Interactive Data Tools, Cloud Resource Management, DevOps &amp;amp; Automation, User Experience (UX)&lt;/p>
&lt;p>&lt;strong>Skills&lt;/strong>:&lt;/p>
&lt;ul>
&lt;li>Python &amp;amp; Jupyter: Experience creating custom Jupyter widgets, using ipywidgets or similar frameworks.&lt;/li>
&lt;li>Cloud Automation: Familiarity with how resources are provisioned, monitored, and deprovisioned on Chameleon.&lt;/li>
&lt;li>Frontend / GUI Development: Basic understanding of web technologies (HTML/CSS/JavaScript) can be helpful for widget design.&lt;/li>
&lt;li>Software Engineering &amp;amp; CI: Ability to version-control, test, and deploy Python packages.&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>Difficulty&lt;/strong>: Moderate&lt;/p>
&lt;p>&lt;strong>Size&lt;/strong>: Medium&lt;/p>
&lt;p>&lt;strong>Mentor&lt;/strong>: &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/michael-sherman/">Michael Sherman&lt;/a>, &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/mark-powers/">Mark Powers&lt;/a>&lt;/p>
&lt;p>&lt;strong>Tasks&lt;/strong>:&lt;/p>
&lt;ul>
&lt;li>Resource Visualization Widgets
&lt;ul>
&lt;li>Build custom widgets that show reserved resources (nodes, networks, storage) in Jupyter.&lt;/li>
&lt;li>Provide an interactive topology view for experiments, indicating node statuses and connections.&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>Experiment Setup &amp;amp; Execution
&lt;ul>
&lt;li>Add controls for launching and managing experiments directly from notebooks.&lt;/li>
&lt;li>Show feedback (e.g., progress bars, status messages) as resources are being allocated or reconfigured.&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>Hardware Availability &amp;amp; Status Tracking
&lt;ul>
&lt;li>Implement a widget that provides real-time data on Chameleon’s hardware availability (bare metal, VMs, GPU nodes, etc.).&lt;/li>
&lt;li>Allow users to filter or select specific resources based on current hardware states.&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>Usability &amp;amp; Feedback Loop
&lt;ul>
&lt;li>Gather user feedback on the widget designs and workflows.&lt;/li>
&lt;li>Refine the interface to minimize clicks, improve clarity, and reduce friction for common tasks.&lt;/li>
&lt;/ul>
&lt;/li>
&lt;/ul></description></item><item><title>Open Testbed for Reproducible Evaluation of Replicated Systems at the Edges</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre25/umass/edge-replication/</link><pubDate>Sat, 15 Feb 2025 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre25/umass/edge-replication/</guid><description>&lt;h2 id="project-description">Project Description&lt;/h2>
&lt;ul>
&lt;li>&lt;strong>Topics&lt;/strong>: Distributed systems&lt;/li>
&lt;li>&lt;strong>Skills&lt;/strong>: Java, Go, Python, Bash scripting, Linux, Docker.&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="mailto:fikurnia@cs.umass.edu">Fadhil I. Kurnia&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>Replication is commonly employed to improve system availability and reduce latency. By maintaining multiple copies, the system can continue operating even if some replicas fail, thereby ensuring consistent availability. Placing replicas closer to users further decreases latency by minimizing the distance data must travel. A typical illustration of these advantages is a Content Delivery Network (CDN), where distributing content to edge servers can yield latencies of under 10 milliseconds when users and contents are in the same city.&lt;/p>
&lt;p>In recent times, numerous edge datastores have emerged, allowing dynamic data to be served directly from network-edge replicas. Each of these replicated systems may employ different coordination protocols to synchronize replicas, leading to varied performance and consistency characteristics. For instance, Workers KV relies on a push-based coordination mechanism that provides eventual consistency, whereas Cloudflare Durable Objects and Turso deliver stronger consistency guarantees. Additionally, researchers have introduced various coordination protocols—such as SwiftPaxos, EPaxos, OPaxos, WPaxos, Raft, PANDO, and QuePaxa—each exhibiting its own performance profile, especially when being used in geo-distributed deployment.&lt;/p>
&lt;p>This project aims to develop an open testbed for evaluating replicated systems and their coordination protocols under edge deployment. Currently, researchers face challenges in fairly comparing different replicated systems, as they often lack control over replica placement. Many previous studies on coordination protocols and replicated systems relied on mock implementations, particularly for well-known systems like Dynamo and Spanner, which are not open source. An open testbed would provide a standardized environment where researchers can compare various replicated systems, classes of coordination protocols, and specific protocol implementations using common benchmarks. Since the performance of replicated systems and coordination protocols varies depending on the application, workload, and replica placement, this testbed would offer a more systematic and fair evaluation framework. Furthermore, by enabling easier testing and validation, the testbed could accelerate the adoption of research prototypes in the industry.&lt;/p>
&lt;h2 id="project-deliverables">Project Deliverables&lt;/h2>
&lt;ul>
&lt;li>Compilation of traces and applications from various open traces and open benchmarks.&lt;/li>
&lt;li>Distributed workload generator to run the traces and applications.&lt;/li>
&lt;li>Test framework to simulate latency of 100s of edge servers for measurement.&lt;/li>
&lt;li>Open artifact of the traces, applications, workload generator, and test framework, published on Github.&lt;/li>
&lt;/ul></description></item><item><title>Vector Embeddings Dataset</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre25/ucsc/embeddings/</link><pubDate>Tue, 11 Feb 2025 13:00:00 -0800</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre25/ucsc/embeddings/</guid><description>&lt;h3 id="vector-embeddings-dataset">Vector Embeddings Dataset&lt;/h3>
&lt;ul>
&lt;li>&lt;strong>Topics:&lt;/strong> &lt;code>Vector Embeddings&lt;/code> &lt;code>LLMs&lt;/code> &lt;code>Transformers&lt;/code>&lt;/li>
&lt;li>&lt;strong>Skills:&lt;/strong> software development, apis, scripting, python&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="mailto:jayjeetc@ucsc.edu">Jayjeet Chakraborty&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>To benchmark vector search algorithms (aka ANN algorithms), there are several datasets available but none of
them represent actual real world workloads. This is because they usually have small vectors of only a few hundred
dimensions. For vector search experiments to represent real world workloads, we want to have datasets with
several thousand dimensions like what is generated by OpenAIs text-embedding models. This project aims to create a
dataset with 1B embeddings from a wikipedia dataset using open source models. Ideally, we will have 3 versions of this dataset, with 1024, 4096, and 8192 sized embeddings to start with.&lt;/p></description></item><item><title>Brahma</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre25/ucsc/brahma/</link><pubDate>Tue, 11 Feb 2025 12:34:56 -0700</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre25/ucsc/brahma/</guid><description>&lt;p>Brahma is a lightweight framework for building collaborative and cross platform WebXR based experiences using Three.js for the front-end and a simple Node.js/WebSocket script on the backend. It was created at the Social Emotional Technology Lab to facilitate the development of novel collaborative interfaces and virtual environments capable of loading scientific datasets. For example, in the featured image, multiple avatars are exploring a &lt;a href="https://www.science.org/doi/10.1126/science.adf0566" target="_blank" rel="noopener">marine science dataset related to seal migration paths&lt;/a> overlaid on NOAA bathymetry and telemetry data.&lt;/p>
&lt;p>It addresses a gap where prior open-source collaborative VR is no longer available such as the defunct &lt;a href="https://support.mozilla.org/en-US/kb/end-support-mozilla-hubs" target="_blank" rel="noopener">Mozilla Hubs&lt;/a> or proprietary engine based frameworks such as &lt;a href="https://ubiq.online/" target="_blank" rel="noopener">Ubiq&lt;/a>. Furthermore, it uses very little computational resources to run and develop, enabling creators who may not have a powerful computer to run a game engine in order to develop a networked VR application.&lt;/p>
&lt;p>This project involves the first public release of Brahma&amp;ndash; creating a lightweight open source framework that facilitates multi-user games, scientific visualizations and other applications. In order to do so, we need to formalize the framework, provide documentation, and implement key examples so that the open source tool can be extensible and serve a wider community.&lt;/p>
&lt;p>Mentees can expect to learn best practices for VR development and testing and gain familiarity with full stack development practices. Mentees should have access and experience using a VR headset.&lt;/p>
&lt;h1 id="brahma--protoocol-release-and-validation">Brahma / Protoocol Release and Validation&lt;/h1>
&lt;ul>
&lt;li>&lt;strong>Topics:&lt;/strong> &lt;code>Web Development&lt;/code> &lt;code>Software Architecture&lt;/code> &lt;code>VR Development&lt;/code> &lt;code>Computer Graphics&lt;/code> &lt;code>Cloud Platforms&lt;/code>&lt;/li>
&lt;li>&lt;strong>Skills:&lt;/strong> Node.js, Three.js&lt;/li>
&lt;li>&lt;strong>Difficulty:&lt;/strong> Moderate-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="mailto:sghosh17@ucsc.edu">Samir Ghosh&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>The proposed work includes three phases, primarily working on backend code, and API design. In the first phase, to gain familiarity, the mentee will be running and testing the Brahma backend on a variety of cloud platforms such as AWS, Google Cloud, and Azure&amp;ndash; and learning best methods for documentation in the process. Then, in the second phase, the mentee will work on formalizing the protocol for avatar embodiment and other multi-user interfaces, testing the application with a simple pong game. In the third phase, the mentee will address telemetry, logging, and analysis considerations.&lt;/p>
&lt;p>This project is well suited for someone who has interest in virtual reality, especially social VR, multi-user, or collaborative applications&lt;/p>
&lt;h1 id="brahma--allocentric-webxr-interfaces">Brahma / Allocentric WebXR Interfaces&lt;/h1>
&lt;ul>
&lt;li>&lt;strong>Topics:&lt;/strong> &lt;code>Web Development&lt;/code> &lt;code>VR Development&lt;/code> &lt;code>Computer Graphics&lt;/code> &lt;code>UX/UI&lt;/code>&lt;/li>
&lt;li>&lt;strong>Skills:&lt;/strong> Three.js, GLSL, WebSocket&lt;/li>
&lt;li>&lt;strong>Difficulty:&lt;/strong> Moderate-Challenging&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="mailto:sghosh17@ucsc.edu">Samir Ghosh&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>The proposed work primarily involves front-end code and VR interface design. In the first phase, the mentee will gain familiarity with best practices for WebXR development through the implementation and documentation of simple interaction patterns. Then, the mentee will implement a simple multi-user pong game to learn about allocentric interfaces. In the final phase of the project, the mentee will design and implement one or more allocentric interface of their choosing.&lt;/p>
&lt;p>This project is well suited for someone who has interest in virtual reality, especially aspects of graphics and interaction design.&lt;/p></description></item><item><title>WildBerryEye</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre25/ucsc/wildberryeye/</link><pubDate>Tue, 11 Feb 2025 10:15:56 -0700</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre25/ucsc/wildberryeye/</guid><description>&lt;p>WildBerryEye leverages Raspberry Pi and YOLO object detection models to monitor pollinizers like bees and hummingbirds visiting flowers. This initiative aims to enhance environmental research by automating data collection and analysis of pollinator activities, which are crucial for ecological assessments and conservation efforts. The project utilizes video data provided by &lt;a href="https://www.researchgate.net/profile/Rossana-Maguina-Conde" target="_blank" rel="noopener">Dr. Rossana Maguiña&lt;/a>, processed through advanced machine learning techniques to accurately identify and track pollinator interactions in natural habitats.&lt;/p>
&lt;h3 id="develop-web-based-user-interface">Develop web-based user interface&lt;/h3>
&lt;ul>
&lt;li>&lt;strong>Topics:&lt;/strong> &lt;code>Full Stack Development&lt;/code> &lt;code>React&lt;/code> &lt;code>Flask&lt;/code>&lt;/li>
&lt;li>&lt;strong>Skills:&lt;/strong> Experience with full stack development and real time processing&lt;/li>
&lt;li>&lt;strong>Difficulty:&lt;/strong> Moderate to Challenging&lt;/li>
&lt;li>&lt;strong>Size:&lt;/strong> Medium or large (175 or 350 hrs)&lt;/li>
&lt;li>&lt;strong>Mentors:&lt;/strong> &lt;a href="mailto:caiespin@ucsc.edu">Carlos Isaac Espinosa Ramirez&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>Develop a clean and intuitive web-based interface for WildBerryEye, ensuring ease of use for researchers and contributors. The platform should present real-time pollinator detection results, facilitate data visualization, and allow users to interact with system settings efficiently. The website must be accessible, visually appealing, and optimized for both desktop and mobile users, avoiding unnecessary complexity or intrusive elements.&lt;/p>
&lt;p>Specific tasks:&lt;/p>
&lt;ul>
&lt;li>Frontend Development: Continue development to enhance the user interface using React and CSS, ensuring a responsive and user-friendly design.&lt;/li>
&lt;li>Backend Development: Expand functionality using Flask, focusing on efficient API endpoints and seamless interaction with the frontend (excluding database implementation).&lt;/li>
&lt;li>Real-Time Communication: Implement and refine real-time updates between the frontend and backend to enhance system responsiveness.&lt;/li>
&lt;li>Usability &amp;amp; Design Optimization: Research and propose improvements to the system’s usability, design, and overall user experience.&lt;/li>
&lt;/ul></description></item><item><title>AI Data Readiness Inspector (AIDRIN)</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre25/lbl/aidrin/</link><pubDate>Tue, 11 Feb 2025 10:15:00 -0700</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre25/lbl/aidrin/</guid><description>&lt;p>Garbage In Garbage Out (GIGO) is a universally agreed quote by computer scientists from various domains, including Artificial Intelligence (AI). As data is the fuel for AI, models trained on low-quality, biased data are often ineffective. Computer scientists who use AI invest considerable time and effort in preparing the data for AI.&lt;/p>
&lt;p>&lt;a href="https://arxiv.org/pdf/2406.19256" target="_blank" rel="noopener">AIDRIN&lt;/a> (AI Data Readiness INspector) is a framework that provides a quantifiable assessment of the readiness of data for AI processes, covering a broad range of readiness dimensions available in the literature. AIDRIN uses metrics in traditional data quality assessment, such as completeness, outliers, and duplicates, for data evaluation. Furthermore, AIDRIN uses metrics specific to assess data for AI, such as feature importance, feature correlations, class imbalance, fairness, privacy, and FAIR (Findability, Accessibility, Interoperability, and Reusability) principle compliance. AIDRIN provides visualizations and reports to assist data scientists in further investigating the readiness of data.&lt;/p>
&lt;h3 id="aidrin-visualizations-and-science-gateway">AIDRIN Visualizations and Science Gateway&lt;/h3>
&lt;p>The proposed work will include improvements in the AIDRIN framework to (1) enhance, extend, and optimize the visualizations of metrics related to all six pillars of AI data readiness and (2) set up a science gateway on NERSC or AWS cloud service.&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Topics:&lt;/strong> &lt;code>data readiness&lt;/code> &lt;code>AI&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="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/suren-byna/">Suren Byna&lt;/a>&lt;/li>
&lt;/ul></description></item><item><title>h5bench with AI workloads</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre25/lbl/h5bench-ai/</link><pubDate>Tue, 11 Feb 2025 10:15:00 -0700</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre25/lbl/h5bench-ai/</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-with-ai-workloads">h5bench with AI workloads&lt;/h3>
&lt;p>The proposed work will include (1) analyzing and characterizing AI workloads that rely on HDF5 datasets, (2) extracting a kernel of their I/O operations, and (3) implementing and validating the kernel in h5bench.&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="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/suren-byna/">Suren Byna&lt;/a>&lt;/li>
&lt;/ul></description></item><item><title>HAgent</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre25/ucsc/hagent/</link><pubDate>Tue, 11 Feb 2025 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre25/ucsc/hagent/</guid><description>&lt;p>&lt;a href="https://github.com/masc-ucsc/hagent" target="_blank" rel="noopener">HAgent&lt;/a> is a platform to build AI hardware agent engine to support multiple components in chip design, such as code generation, verification, debugging, and tapeout.&lt;/p>
&lt;p>HAgent is build as a compiler for for Hardware Agents, it interfaces with
typical EDA tools like compilers, synthesis, and verification. There are
several projects around enhancing HAgent.&lt;/p>
&lt;h3 id="bugfarm-hagent-step">BugFarm hagent step&lt;/h3>
&lt;p>&lt;strong>Objective&lt;/strong>: Develop a HAgent step (pass) to create bugs in a given design.&lt;/p>
&lt;p>&lt;strong>Description&lt;/strong>: Using LLMs (Hagent APIs), the goal is to add &amp;ldquo;bugs&amp;rdquo; to input Verilog design.
The goal is for other tools passes that need to fix bugs, to use this
infrastructure as a bug generator. There is a MCY
(&lt;a href="https://github.com/YosysHQ/mcy" target="_blank" rel="noopener">https://github.com/YosysHQ/mcy&lt;/a>) that does something similar but it does not
use verilog and create a very different Verilog output. The BugFarm is supposed
to have somewhat similar functionality but edit the Verilog directly which
results in a code with just a few edits. Like MCY, there has to be a step to confirm that
the change affects results. The project should benchmarks and compare with MCY.&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Skills Needed:&lt;/strong> Python, Verilog, and understand agents&lt;/li>
&lt;li>&lt;strong>Difficulty:&lt;/strong> Medium&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/jose-renau/">Jose Renau&lt;/a>, &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/farzaneh-rabiei-kashanaki/">Farzaneh Rabiei Kashanaki&lt;/a>&lt;/li>
&lt;/ul>
&lt;h3 id="hdeval-competition-repository">HDEval Competition Repository&lt;/h3>
&lt;p>&lt;strong>Objective&lt;/strong>: Create a platform for HDL programming challenges and community engagement.&lt;/p>
&lt;p>&lt;strong>Description&lt;/strong>: Develop a repository where users can solve HDL problems in Verilog, Chisel, PyRTL, etc. Implement a points system for successful solutions. Allow users to submit new problems (code, specifications, verification, and tests) that are not easily solvable by LLMs. Automate solution testing and provide feedback on submissions.&lt;/p>
&lt;p>The submissions consist of 4 components: code, specification, verification, and tests. It should be possible to submit also examples of bugs in code/specification/verification/tests during the design.&lt;/p>
&lt;p>If the code is different from Verilog, it should include the HDL (chisel, PyRTL,&amp;hellip;) and also the Verilog.&lt;/p>
&lt;p>The specification is free form. For any given specification, an expert on the area should be able to generate code, verification, and tests. Similarly, from any pair. Any expert should be able to generate the rest. For example, from verification and tests, it should be able to generate the code and specification.&lt;/p>
&lt;p>Typical specifications consist of a plan, API, and a sample usage.&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Skills Needed:&lt;/strong> Web design, some hardware understanding&lt;/li>
&lt;li>&lt;strong>Difficulty:&lt;/strong> Medium&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/jose-renau/">Jose Renau&lt;/a>, &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/farzaneh-rabiei-kashanaki/">Farzaneh Rabiei Kashanaki&lt;/a>&lt;/li>
&lt;/ul>
&lt;h3 id="integrate-silicon-compiler">Integrate Silicon Compiler&lt;/h3>
&lt;p>&lt;strong>Objective&lt;/strong>: &lt;a href="https://github.com/siliconcompiler/siliconcompiler" target="_blank" rel="noopener">Silicon Compiler&lt;/a> is an open-source Python library that allows to interface with many EDA tools. The idea is to integrate it with HAgent to allow prompts/queries to
interface with it.&lt;/p>
&lt;p>&lt;strong>Description&lt;/strong>: The agentic component requires to check with silicon compiler
that the generated Python compiles but also that has reasonable parameters.
This will require a react loop for compiler errors, and likely a judge loop for
testing for reasonable options/flow with feedback from execution. Since there
is not much training examples, it will require a few shot with a database to
populate context accordingly.&lt;/p>
&lt;p>The end result should allow to select different tools and options trhough silicon compiler.&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Skills Needed:&lt;/strong> Backend chip design&lt;/li>
&lt;li>&lt;strong>Difficulty:&lt;/strong> High&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/jose-renau/">Jose Renau&lt;/a>&lt;/li>
&lt;/ul>
&lt;h3 id="comodore-64-or-msx-or-gameboy">Comodore 64 or MSX or Gameboy&lt;/h3>
&lt;p>&lt;strong>Objective&lt;/strong>: Create a prompt-only specification to build a hardware
accelerated for the target platform (Comodore 64, MSX or Gameboy). The
generated code should focus on Verilog, but it is fine to also target some
other HDL. In all the cases, the project should include a generated Verilog
integrated with some emulator for verification.&lt;/p>
&lt;p>&lt;strong>Description&lt;/strong>: Using &lt;a href="https://github.com/masc-ucsc/hagent" target="_blank" rel="noopener">Hagent&lt;/a>, create an
&lt;a href="https://github.com/masc-ucsc/hdeval" target="_blank" rel="noopener">HDLEval&lt;/a> benchmark (set of prompts) that
provide the necessary information to create the Verilog implementation. HDLEval
prompts usually consists of a high-level PLAN or specification, an API to
implement, and a few examples of usage for the given API.&lt;/p>
&lt;p>The result of running the bencharmk, a generated Verilog runs program in the
emulator and the Verilog to compare correctness. The platform should have an
already existing emulator &lt;a href="https://vice-emu.sourceforge.io/" target="_blank" rel="noopener">vice-emu&lt;/a> or
&lt;a href="https://mgba.io/" target="_blank" rel="noopener">mGBA&lt;/a> to perform cosimulation against the generated
specification.&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Skills Needed:&lt;/strong> Verilog for front-end design&lt;/li>
&lt;li>&lt;strong>Difficulty:&lt;/strong> High&lt;/li>
&lt;li>&lt;strong>Size:&lt;/strong> 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/jose-renau/">Jose Renau&lt;/a>&lt;/li>
&lt;/ul></description></item><item><title>Scenic: A Language for Design and Verification of Autonomous Cyber-Physical Systems</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre25/ucsc/scenic/</link><pubDate>Tue, 11 Feb 2025 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre25/ucsc/scenic/</guid><description>&lt;p>&lt;a href="https://scenic-lang.org/" target="_blank" rel="noopener">Scenic&lt;/a> is a probabilistic programming language for the design and verification of autonomous cyber-physical systems like self-driving cars.
Scenic allows users to define &lt;em>scenarios&lt;/em> for testing or training their system by putting a probability distribution on the system&amp;rsquo;s environment: the positions, orientations, and other properties of objects and agents, as well as their behaviors over time.
Sampling these scenarios and running them in a simulator yields synthetic data which can be used to train or test a system.
Since Scenic was released open-source in 2019, our group and many others in academia have used Scenic to find, diagnose, and fix bugs in autonomous cars, aircraft, robots, and other kinds of systems.
In industry, it is being used by companies including Boeing, Meta, Deutsche Bahn, and Toyota in domains spanning autonomous driving, aviation, household robotics, railways, maritime, and virtual reality.&lt;/p>
&lt;p>Our long-term goal is for Scenic to become a widely-used common representation and toolkit supporting the entire design lifecycle of AI-based cyber-physical systems.
Towards this end, we have many summer projects available, ranging from adding new application domains to working on the Scenic compiler and sampler:&lt;/p>
&lt;ol>
&lt;li>3D Driving Scenarios&lt;/li>
&lt;li>A Library for Aviation Scenarios&lt;/li>
&lt;li>Interfacing Scenic to new simulators&lt;/li>
&lt;li>Optimizing and parallelizing Scenic&lt;/li>
&lt;li>Improvements and infrastructure for the VerifAI toolkit&lt;/li>
&lt;/ol>
&lt;p>See the sections below for details.&lt;/p>
&lt;h3 id="3d-driving-scenarios">3D Driving Scenarios&lt;/h3>
&lt;ul>
&lt;li>&lt;strong>Topics:&lt;/strong> &lt;code>Autonomous Driving&lt;/code> &lt;code>3D modeling&lt;/code>&lt;/li>
&lt;li>&lt;strong>Skills:&lt;/strong> Python; basic vector geometry&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/daniel-fremont/">Daniel Fremont&lt;/a>, &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/eric-vin/">Eric Vin&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>Scenic scenarios written to test autonomous vehicles use the &lt;a href="https://docs.scenic-lang.org/en/latest/modules/scenic.domains.driving.html" target="_blank" rel="noopener">driving domain&lt;/a>, a Scenic library defining driving-specific concepts including cars, pedestrians, roads, lanes, and intersections.
The library extracts information about road networks, such as the shapes of lanes, from files in the standard &lt;a href="https://www.asam.net/standards/detail/opendrive/" target="_blank" rel="noopener">OpenDRIVE&lt;/a> format.
Currently, we only generate 2D polygons for lanes, throwing away 3D information.
While this suffices for many driving scenarios, it means we cannot properly model overpasses (the roads appear to overlap) or test driving scenarios where 3D geometry is important, such as hilly terrain.&lt;/p>
&lt;p>The goals of this project are to extend our road network library to generate 3D meshes (instead of 2D polygons) for roads, write new Scenic scenarios which use this new capability, and (if time allows) test autonomous driving software using them.&lt;/p>
&lt;h3 id="a-library-for-aviation-scenarios">A Library for Aviation Scenarios&lt;/h3>
&lt;ul>
&lt;li>&lt;strong>Topics:&lt;/strong> &lt;code>Autonomous Aircraft&lt;/code>&lt;/li>
&lt;li>&lt;strong>Skills:&lt;/strong> Python; ideally some aviation experience&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/daniel-fremont/">Daniel Fremont&lt;/a>, &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/eric-vin/">Eric Vin&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>We have used Scenic to find, diagnose, and fix bugs in software for autonomous aircraft: in particular, &lt;a href="https://arxiv.org/abs/2005.07173" target="_blank" rel="noopener">this paper&lt;/a> studied a neural network-based automated taxiing system using the &lt;a href="https://www.x-plane.com/" target="_blank" rel="noopener">X-Plane&lt;/a> flight simulator.
We also have prototype interfaces to &lt;a href="https://microsoft.github.io/AirSim/" target="_blank" rel="noopener">AirSim&lt;/a> and &lt;a href="https://www.flightsimulator.com/" target="_blank" rel="noopener">Microsoft Flight Simulator&lt;/a>.
However, our experiments so far have mainly focused on simple scenarios involving a single aircraft.&lt;/p>
&lt;p>The goal of this project is to develop an &lt;em>aviation library&lt;/em> for Scenic (like the driving domain mentioned in the previous project) which will allow users to create complex aviation scenarios in a simulator-agnostic way.
The library would define concepts for aircraft, flight paths, weather, etc. and allow importing real-world data about these.
The student would demonstrate the library&amp;rsquo;s functionality by writing some example scenarios and testing either simple aircraft controllers or (if time allows) ML-based flight software.&lt;/p>
&lt;h3 id="interfacing-scenic-to-new-simulators">Interfacing Scenic to New Simulators&lt;/h3>
&lt;ul>
&lt;li>&lt;strong>Topics:&lt;/strong> &lt;code>Simulation&lt;/code> &lt;code>Autonomous Driving&lt;/code> &lt;code>Robotics&lt;/code> &lt;code>LLMs&lt;/code>&lt;/li>
&lt;li>&lt;strong>Skills:&lt;/strong> Python&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/daniel-fremont/">Daniel Fremont&lt;/a>, &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/eric-vin/">Eric Vin&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>Scenic is designed to be &lt;a href="https://docs.scenic-lang.org/en/latest/new_simulator.html" target="_blank" rel="noopener">easily-interfaced to new simulators&lt;/a>.
Depending on student interest, we could pick a simulator which would open up new kinds of applications for Scenic and write an interface for it.
Some possibilities include:&lt;/p>
&lt;ul>
&lt;li>The &lt;a href="https://github.com/tier4/AWSIM" target="_blank" rel="noopener">AWSIM&lt;/a> driving simulator (to allow testing the &lt;a href="https://autoware.org/" target="_blank" rel="noopener">Autoware&lt;/a> open-source autonomous driving software stack)&lt;/li>
&lt;li>The &lt;a href="https://www.coppeliarobotics.com/" target="_blank" rel="noopener">CoppeliaSim&lt;/a> robotics simulator&lt;/li>
&lt;li>NVIDIA&amp;rsquo;s &lt;a href="https://github.com/NVIDIA/Cosmos" target="_blank" rel="noopener">Cosmos&lt;/a>, an LLM which generates videos from text prompts&lt;/li>
&lt;li>NVIDIA&amp;rsquo;s &lt;a href="https://www.nvidia.com/en-us/omniverse/" target="_blank" rel="noopener">Omniverse&lt;/a> (various applications, e.g. simulating virtual factories)&lt;/li>
&lt;li>Various simulators for which we have prototype interfaces that could be generalized and made more usable, including &lt;a href="https://mujoco.org/" target="_blank" rel="noopener">MuJoCo&lt;/a> and &lt;a href="https://developer.nvidia.com/isaac/sim" target="_blank" rel="noopener">Isaac Sim&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>The goal of the project would be to create an interface between Scenic and the new simulator and write scenarios demonstrating it.
If time allows, we could do a case study on a realistic system for publication at an academic conference.&lt;/p>
&lt;h3 id="optimizing-and-parallelizing-scenic">Optimizing and Parallelizing Scenic&lt;/h3>
&lt;ul>
&lt;li>&lt;strong>Topics:&lt;/strong> &lt;code>Optimization&lt;/code> &lt;code>Parallelization&lt;/code>&lt;/li>
&lt;li>&lt;strong>Skills:&lt;/strong> Python&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/daniel-fremont/">Daniel Fremont&lt;/a>, &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/eric-vin/">Eric Vin&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>Large-scale testing with Scenic, when one wants to generate thousands of simulations, can be very computationally-expensive.
In some cases, the bottleneck is the simulator, and being able to easily run multiple simulations in parallel would greatly increase scalability.
In others, Scenic itself spends substantial time trying to sample scenarios satisfying all the given constraints.&lt;/p>
&lt;p>This project would explore a variety of approaches to speeding up scene and simulation generation in Scenic.
Some possibilities include:&lt;/p>
&lt;ul>
&lt;li>Parallelizing scene generation and simulation (e.g. using &lt;a href="https://github.com/ray-project/ray" target="_blank" rel="noopener">Ray&lt;/a>)&lt;/li>
&lt;li>Systematically profiling real-world Scenic programs to characterize the main bottlenecks and propose optimizations&lt;/li>
&lt;li>JIT compiling Scenic&amp;rsquo;s internal sampling code (e.g. using &lt;a href="https://numba.pydata.org/" target="_blank" rel="noopener">Numba&lt;/a>)&lt;/li>
&lt;/ul>
&lt;h3 id="improvements-and-infrastructure-for-the-verifai-toolkit">Improvements and Infrastructure for the VerifAI Toolkit&lt;/h3>
&lt;ul>
&lt;li>&lt;strong>Topics:&lt;/strong> &lt;code>DevOps&lt;/code> &lt;code>Documentation&lt;/code> &lt;code>APIs&lt;/code>&lt;/li>
&lt;li>&lt;strong>Skills:&lt;/strong> Python&lt;/li>
&lt;li>&lt;strong>Difficulty:&lt;/strong> Easy&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/daniel-fremont/">Daniel Fremont&lt;/a>, &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/eric-vin/">Eric Vin&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>&lt;a href="https://github.com/BerkeleyLearnVerify/VerifAI" target="_blank" rel="noopener">VerifAI&lt;/a> is a toolkit for design and analysis of AI-based systems that builds on top of Scenic.
It adds among other features the ability to perform &lt;em>falsification&lt;/em>, intelligently searching for scenarios that will cause a system to behave in an undesirable way.&lt;/p>
&lt;p>The goal of this project is to improve VerifAI&amp;rsquo;s development infrastructure, documentation, and ease of use, which are currently relatively poor compared to Scenic.
Specific tasks could include:&lt;/p>
&lt;ul>
&lt;li>Setting up continuous integration (CI) on GitHub&lt;/li>
&lt;li>Creating processes to help users/developers submit issues and PRs and deal with them in a timely manner&lt;/li>
&lt;li>Writing more documentation, including tutorials and examples (not only for end users of VerifAI but those wanting to develop custom falsification components, for example)&lt;/li>
&lt;li>Refactoring VerifAI&amp;rsquo;s API to make it easier to use and extend&lt;/li>
&lt;/ul></description></item><item><title>Architecting the Future of Scientific Data: Multi-Site Streaming Without Compromise</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre25/anl/scistream/</link><pubDate>Mon, 10 Feb 2025 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre25/anl/scistream/</guid><description>&lt;p>Data is generated at ever-increasing rates, yet it’s often processed more slowly than it’s collected. Scientific instruments frequently operate below their full capacity or discard
valuable data due to network bottlenecks, security domain mismatches, and insufficient real-time processing capabilities.&lt;/p>
&lt;p>&lt;a href="https://github.com/scistream/scistream-proto" target="_blank" rel="noopener">SciStream&lt;/a> reimagines how scientific data moves across modern research infrastructure by providing a framework for high-speed (+100Gbps)
memory-to-memory streaming that doesn’t compromise on security. Whether connecting scientific instruments to analysis clusters or bridging across institutional boundaries, SciStream provides the foundation for next-generation scientific
workflows.&lt;/p>
&lt;p>Building on our &lt;a href="https://dl.acm.org/doi/abs/10.1145/3502181.3531475" target="_blank" rel="noopener">published research&lt;/a>, we’re now expanding the framework’s capabilities through open-source development and community
collaboration. These projects offer an opportunity for
students to gain hands-on experience with cutting-edge networking and security technologies used in high-performance computing (HPC), cloud infrastructure, and large-scale scientific
experiments.&lt;/p>
&lt;h3 id="scistream-securebench-a-framework-for-benchmarking-security-protocols-in-scientific-data-streaming">SciStream-SecureBench: A Framework for Benchmarking Security Protocols in Scientific Data Streaming&lt;/h3>
&lt;p>&lt;strong>Project Idea Description:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Topics&lt;/strong>: Security Protocols, Network Performance, Data Streaming, Reproducibility, High-throughput Computing&lt;/li>
&lt;li>&lt;strong>Skills&lt;/strong>: Python, Scripting, Linux, Network Protocol Analysis, Containers, Benchmarking 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>Ever wondered why large scientific experiments need to move massive amounts of data securely and quickly? While TLS and SSH are standard for secure data transfer,
there’s a surprising lack of benchmarks that evaluate their performance in high-speed scientific workflows. This project aims to fill this gap by developing a benchmarking suite that
measures how different security configurations impact real-time scientific data streaming.&lt;/p>
&lt;h3 id="specific-tasks-of-the-project-include">&lt;strong>Specific Tasks of the Project Include&lt;/strong>&lt;/h3>
&lt;ul>
&lt;li>Developing benchmarking tools that measure key security performance metrics like handshake latency, throughput stability, and computational overhead.&lt;/li>
&lt;li>Running &lt;strong>real-world experiments&lt;/strong> on research testbeds (Chameleon, FABRIC) to simulate scientific data patterns.&lt;/li>
&lt;li>Automating comparative analysis between TLS and SSH, with focus on streaming-specific metrics like &lt;strong>time-to-first-byte and sustained throughput&lt;/strong>.&lt;/li>
&lt;li>Documenting best practices for security protocol selection in high-performance streaming.&lt;/li>
&lt;/ul>
&lt;h3 id="why-this-matters-for-your-career">&lt;strong>Why This Matters for Your Career&lt;/strong>&lt;/h3>
&lt;ul>
&lt;li>Gain expertise in &lt;strong>network security and performance analysis&lt;/strong>, highly valued in cybersecurity, cloud computing, and HPC.&lt;/li>
&lt;li>Work on a &lt;strong>real research challenge&lt;/strong> with potential for publication.&lt;/li>
&lt;/ul>
&lt;h3 id="scistream-streambench-comparative-analysis-of-scientific-streaming-frameworks">SciStream-StreamBench: Comparative Analysis of Scientific Streaming Frameworks&lt;/h3>
&lt;p>&lt;strong>Project Idea Description:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Topics&lt;/strong>: Data Streaming Protocols, Network Performance, Benchmarking, Distributed Systems, Real-time Computing&lt;/li>
&lt;li>&lt;strong>Skills&lt;/strong>: Python, ZeroMQ, EPICS/PVAccess, Linux, Performance Analysis, Visualization&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>Scientific experiments generate enormous amounts of streaming data, but how do we choose the best framework for handling it efficiently? Despite the widespread use of ZeroMQ and
&lt;a href="https://dl.acm.org/doi/10.1145/3624062.3624610" target="_blank" rel="noopener">PVApy&lt;/a>,
there’s little systematic benchmarking comparing their performance. This project will develop &lt;strong>real-world benchmarks&lt;/strong> to evaluate how different frameworks handle scientific data in
&lt;strong>high-speed environments&lt;/strong>.&lt;/p>
&lt;h3 id="the-specific-tasks-of-the-project-include">&lt;strong>The Specific Tasks of the Project Include&lt;/strong>&lt;/h3>
&lt;ul>
&lt;li>Designing benchmarking methodologies to assess key performance metrics like &lt;strong>synchronization overhead, time-to-first-data, and throughput stability&lt;/strong>.&lt;/li>
&lt;li>Developing a test harness that simulates real-world streaming conditions (network variability, concurrent streams, dynamic data rates).&lt;/li>
&lt;li>Running experiments on &lt;strong>Chameleon and FABRIC testbeds&lt;/strong>.&lt;/li>
&lt;li>Automating data collection and visualization to highlight performance trends.&lt;/li>
&lt;li>Documenting best practices and framework-specific optimizations.&lt;/li>
&lt;/ul>
&lt;h3 id="why-this-matters-for-your-career-1">&lt;strong>Why This Matters for Your Career&lt;/strong>&lt;/h3>
&lt;ul>
&lt;li>Get hands-on experience with &lt;strong>real-time data processing&lt;/strong> and &lt;strong>network performance analysis&lt;/strong>.&lt;/li>
&lt;li>Learn benchmarking techniques useful for &lt;strong>distributed systems, cloud computing, and high-performance networking&lt;/strong>.&lt;/li>
&lt;/ul>
&lt;h3 id="scistream-quic-next-generation-proxy-architecture-for-scientific-data-streaming">SciStream-QUIC: Next-Generation Proxy Architecture for Scientific Data Streaming&lt;/h3>
&lt;p>&lt;strong>Project Idea Description:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Topics&lt;/strong>: QUIC Protocol, Network Proxies, Performance Analysis, Protocol Design, Hardware Acceleration&lt;/li>
&lt;li>&lt;strong>Skills&lt;/strong>: Python/C++, Network Programming, QUIC (quiche/aioquic), Linux, Performance Analysis&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/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>Ever wondered how YouTube loads videos faster than traditional web pages? That’s because of &lt;strong>QUIC&lt;/strong>, a next-generation protocol designed for speed and security. Initial evaluations
of federated streaming architectures (&lt;a href="https://par.nsf.gov/servlets/purl/10380551" target="_blank" rel="noopener">INDIS'22
paper&lt;/a>) suggest potential benefits of QUIC, but comprehensive benchmarking is
needed. This project explores whether &lt;strong>QUIC-based proxies&lt;/strong> can outperform traditional &lt;strong>TCP+TLS&lt;/strong> proxies for scientific data streaming, potentially revolutionizing how researchers move
large datasets.&lt;/p>
&lt;h3 id="the-specific-tasks-of-the-project-include-1">&lt;strong>The Specific Tasks of the Project Include&lt;/strong>&lt;/h3>
&lt;ul>
&lt;li>Developing a &lt;strong>QUIC-based proxy&lt;/strong> optimized for scientific workflows.&lt;/li>
&lt;li>Running benchmarks to compare &lt;strong>QUIC vs. traditional TLS proxies&lt;/strong>.&lt;/li>
&lt;li>Investigating &lt;strong>hardware encryption offloading&lt;/strong> for QUIC and TLS.&lt;/li>
&lt;li>Designing &lt;strong>reproducible experiments&lt;/strong> using Chameleon and FABRIC testbeds.&lt;/li>
&lt;li>Documenting best practices for deploying &lt;strong>QUIC proxies in HPC environments&lt;/strong>.&lt;/li>
&lt;/ul>
&lt;h3 id="why-this-matters-for-your-career-2">&lt;strong>Why This Matters for Your Career&lt;/strong>&lt;/h3>
&lt;ul>
&lt;li>Gain experience in &lt;strong>cutting-edge networking protocols&lt;/strong> used in cloud computing (Google, Cloudflare, etc.).&lt;/li>
&lt;li>Learn about &lt;strong>hardware acceleration&lt;/strong> and its role in high-speed networking.&lt;/li>
&lt;/ul>
&lt;h3 id="scistream-auth-modern-authentication-and-user-interface-for-scientific-data-streaming">SciStream-Auth: Modern Authentication and User Interface for Scientific Data Streaming&lt;/h3>
&lt;p>&lt;strong>Project Idea Description:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Topics&lt;/strong>: Authentication Systems, UI/UX Design, Security Integration, Scientific Computing&lt;/li>
&lt;li>&lt;strong>Skills&lt;/strong>: Python, Web Development (React/Vue), OAuth 2.0/SAML, Security Analysis&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>Not a security expert? You can still contribute by designing an interactive front-end!&lt;/p>
&lt;p>In today&amp;rsquo;s scientific computing landscape, authentication and user experience often act as barriers to adoption rather than enabling seamless collaboration. While SciStream excels at
high-speed data transfer, its reliance on a single authentication provider and command-line interface limits its accessibility. This project aims to transform SciStream into a more
versatile platform by implementing a modular authentication system and developing an intuitive graphical interface.&lt;/p>
&lt;p>By expanding beyond Globus Auth to support multiple authentication frameworks, we can enable broader adoption across different scientific communities while maintaining robust security.
Coupled with a modern GUI that visualizes real-time streaming activity, this enhancement will make SciStream more accessible to researchers—allowing them to focus on their science rather
than wrestling with complex configurations.&lt;/p>
&lt;p>This project will design a user-friendly interface that makes secure scientific data streaming as intuitive as using a cloud storage service. You&amp;rsquo;ll also gain hands-on experience with
authentication methods used by industry leaders like Google and Facebook, while directly improving access to scientific data.&lt;/p>
&lt;h3 id="the-specific-tasks-of-the-project-include-2">&lt;strong>The Specific Tasks of the Project Include&lt;/strong>&lt;/h3>
&lt;ul>
&lt;li>Design and implementation of a pluggable authentication system supporting multiple providers (OAuth 2.0, SAML, OpenID Connect, certificate-based auth)&lt;/li>
&lt;li>Development of a modern, responsive GUI using web technologies that provides real-time visualization of system status&lt;/li>
&lt;li>Creation of comprehensive security testing protocols to validate the authentication implementations&lt;/li>
&lt;li>Implementation of session management and secure credential handling within the GUI&lt;/li>
&lt;li>Design of an intuitive interface for managing streaming configurations and monitoring data flows&lt;/li>
&lt;li>Creation of documentation and examples to help facilities integrate their preferred authentication mechanisms&lt;/li>
&lt;/ul></description></item><item><title>Kolmogorov-Arnold-based Transformer for LLMs: Implementation, Evaluation and Benchmarking</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre25/unl/kallm/</link><pubDate>Sun, 09 Feb 2025 10:15:56 -0700</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre25/unl/kallm/</guid><description>&lt;h3 id="project-objectives">Project Objectives&lt;/h3>
&lt;!--- KALLM introduction --->
&lt;!--- importance --->
&lt;p>&lt;a href="https://github.com/saisumanv/KALLM" target="_blank" rel="noopener">KALLM&lt;/a> project proposes a new Kolmogorov-Arnold Network (KAN)-based Transformer implementation of an open-source LLM called SmolLM2. Transformers have found increasing success in many open-source LLMs across language reasoning tasks like text generation, summarization and some tasks imitating advanced critical thinking. However, Kolmogorov-Arnold Networks (KANs) are an attractive alternative to the Multi-Layer Perceptrons (MLPs) which are used in these Transformer architectures by default. KAN-based Transformers (KATs) offer several advantages over MLPs. (i) They follow the universal approximation property and hence can theoretically approximate any function i.e. they can learn from any complex input patterns. (ii) They are more interpretable as they decompose the entire input into multiple manageable components with each layer processing one component. This is unlike MLPs, where each layer processes the input sequences holistically. (iii) KANs can lead to faster convergence on certain reasoning tasks due to their ability to break down the input sequences into simple univariate functions.&lt;/p>
&lt;p>However, currently there exist little to no open-source implementations of KAN-based Transformers in open-source LLMs. Until recently, an efficient implementation of KAN was not available; the same can be said for KAN-based Transformer implementations. With the recent efficient implementations of open-source KAN-based Transformers (KATs), integrating them into open-source LLM engines becomes a possibility. This project will implement KAT as the core architecture of the Transformer in SmolLM2, an open-source LLM and perform evaluation and benchmarking against language reasoning tasks.&lt;/p>
&lt;p align="center">
&lt;img width="760" height="500" src="https://github.com/user-attachments/assets/aa4e2fa1-1a33-4511-a76c-2e95e24feee1">
&lt;/p>
&lt;h3 id="project-methodology-and-milestones">Project Methodology and Milestones&lt;/h3>
&lt;p>The project methodology is a mix of implementation and evaluation. The mentors are well-experienced in working with large codebases and will be available to guide through the technical and non-technical portions of the project. The step-by-step project methodology is outlined as follows.&lt;/p>
&lt;ul>
&lt;li>
&lt;p>&lt;strong>Installation of SmolLM2 from the official Git Repo:&lt;/strong> The open-source implementation of SmolLM2 engine (hereon referred to as smollm plainly) is available on &lt;a href="https://github.com/huggingface/smollm/tree/main/tools/smol_tools" target="_blank" rel="noopener">GitHub&lt;/a>. The project primarily focuses on language reasoning and hence we limit ourselves to the SmolLM2 implementation and forego other forks of SmolLM such as the SmolVLM family.&lt;/p>
&lt;ul>
&lt;li>The project needs to be sanity checked by installing the engine on local computers.&lt;/li>
&lt;li>Following that, the students are to familiarize themselves with basic workflow such as running a sample code using the pretrained model. The instructions for installing SmolLM are located under the “tools” at smollm/tools/smol-tools subfolder.&lt;/li>
&lt;li>Next step is to train the SmolLM using the prepackaged Transformer model called “HF://mlc-ai/SmolLM2-1.7B-Instruct-q0f16-MLC&amp;quot;. The instructions are provided &lt;a href="https://github.com/huggingface/smollm/tree/main/tools/smol_tools" target="_blank" rel="noopener">here&lt;/a>.&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Implementation—KAT in SmolLM:&lt;/strong> The smollm pretrained model is at smollm/tools/smollm_local_inference/mlc.py. The pretrained model is called &amp;ldquo;HF://mlc-ai/SmolLM2-1.7B-Instruct-q0f16-MLC&amp;rdquo;. This is an MLP-based Transformer. However, we will train the smollm with transformers ourselves with the same model as well as with KAT.&lt;/p>
&lt;ul>
&lt;li>A KAT implementation is available on GitHub at &lt;a href="https://github.com/Adamdad/kat" target="_blank" rel="noopener">ICLR2025&lt;/a>. To implement KAT in smollm, we will replace the default Transformer (HF://mlc-ai/SmolLM2-1.7B-Instruct-q0f16-MLC) with the open-source KAT mentioned above.&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Training SmolLM with default Transformer and with KAT:&lt;/strong> This step will require compute resources and requires deployment of the implementation on Chameleon Cloud and/or National Research Platform (NRP). The mentors have access to these two testbeds and will provide the students access to those resources.&lt;/p>
&lt;ul>
&lt;li>The first task of this step is to port to the implementation to Chameleon Cloud before the model can be trained. This task may require around a week’s worth of turnaround time and can be performed in parallel with steps 1 &amp;amp; 2 if needed.&lt;/li>
&lt;li>&lt;strong>Training:&lt;/strong> The FULL dataset for training smollm is called smolltalk located here: &lt;a href="https://huggingface.co/datasets/HuggingFaceTB/smoltalk" target="_blank" rel="noopener">HuggingFaceTB/smoltalk&lt;/a>. The training code and instructions are at &lt;a href="https://github.com/huggingface/alignment-handbook/tree/main/recipes/smollm2" target="_blank" rel="noopener">huggingface/alignment-handbook&lt;/a>. Although the baseline uses SmolLM2-1.7.B-Instruct (pretrained model), we will instead train smollm for SmolLM2-135M-Instruct and SmolLM2-360M-Instruct as noted at the bottom of the page at &lt;a href="https://huggingface.co/datasets/HuggingFaceTB/smoltalk" target="_blank" rel="noopener">HuggingFaceTB/smoltalk&lt;/a>· Datasets at Hugging Face. According to this, for SmolLM2-135M-Instruct and SmolLM2-360M-Instruct we will ONLY use the &lt;a href="https://huggingface.co/datasets/HuggingFaceTB/smol-smoltalk" target="_blank" rel="noopener">smol-smolltalk dataset&lt;/a>.&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Benchmarking:&lt;/strong> Finally, the benchmarks used throughout this project to evaluate our implementations will be the same as those for the release (pretrained) versions SmolLM2-135M-Instruct and SmolLM2-360M-Instruct. The benchmarks for language reasoning will be &lt;a href="https://huggingface.co/spaces/open-llm-leaderboard/open_llm_leaderboard#/" target="_blank" rel="noopener">chosen&lt;/a>.&lt;/p>
&lt;/li>
&lt;/ul>
&lt;h3 id="project-timeline">Project Timeline&lt;/h3>
&lt;p>The following project timeline is anticipated. Some tasks may take longer or shorter than anticipated and hence the timeline is not 100% set in stone. However, it serves as a baseline based on the mentor’s prior experience on working with similar research projects. Each cell in the timeline chart is one week.
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img src="https://github.com/user-attachments/assets/5a91f8fe-fb4c-4844-bff2-75c933e6f73a" alt="image" loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;h3 id="project-testbeds">Project Testbeds&lt;/h3>
&lt;p>Sai Lamba Karanam has adminstrator-level access to the &lt;a href="https://nationalresearchplatform.org/" target="_blank" rel="noopener">National Research Platform (NRP)&lt;/a> and will provide access to cloud resources (compute) to the students working on the project. Both mentors will also have access to &lt;a href="https://www.chameleoncloud.org/" target="_blank" rel="noopener">Chameleon Cloud platform&lt;/a> and will grant access to compute resources for training, evaluation and benchmarking purposes.&lt;/p>
&lt;h3 id="project-deliverables">Project Deliverables&lt;/h3>
&lt;p>KALLM will be hosted on github at this &lt;a href="https://github/saisumanv/KALLM" target="_blank" rel="noopener">repo&lt;/a>. The mentors have extensive experience working with Machine Learning (ML) and Artifical Intelligence (AI) workflows in academic and industry settings. We seek to choose mentees that are willing to learn implementation of AI models and working with semi-large code bases. Mentees will have to become comfortable working with remote cloud testbeds (Chameleon and/or NRP) during the latter-half of the project. Some milestines described in the Project Methodolody can be done in parallel.&lt;/p>
&lt;p>KALLM is part of larger collaborative effort between the mentors and involves milestones and outcomes that fall outside the scope of this project, but are related. The mentors plan to publish the large project outcomes aat ML-based venue(s) towards the end of Fall 2025. The mentees will be added as coauthors.&lt;/p>
&lt;h3 id="kallm">KALLM&lt;/h3>
&lt;ul>
&lt;li>&lt;strong>Topics&lt;/strong>: Towards High Performance NCCL-enabled 2D partitioned PyLops-MPI library&lt;/li>
&lt;li>&lt;strong>Skills&lt;/strong>: Python proficiency, scikit-learn, Experience with Linux, Introductory Experience with Cloud Computing Platforms&lt;/li>
&lt;li>&lt;strong>Difficulty&lt;/strong>: Easy-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/sai-suman-lamba-karanam/">Sai Suman Lamba Karanam&lt;/a>, &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/zahmeeth-sakkaff/">Zahmeeth Sakkaff&lt;/a>&lt;/li>
&lt;/ul></description></item><item><title>Smart Batching for Large Language Models</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre25/ucr/smartbatch/</link><pubDate>Sun, 09 Feb 2025 10:15:56 -0700</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre25/ucr/smartbatch/</guid><description>&lt;p>Sequence tokenization is a crucial step during Large Language Model training, fine-tuning, and inference. User prompts and training data are tokenized and zero-padded before being fed to the model in batches. This process allows models to interpret human language by breaking down complex sentences into simple token units that are numerically represented in a token set. However, the process of sequence padding for maintaining batch dimensions can introduce unnecessary overhead if batching is not properly done.&lt;/p>
&lt;p>In this project, we introduce Smart Batching, where we dynamically batch sequences in a fine-tuning dataset by their respective lengths. With this method, we aim to minimize the amount of zero padding required during sequence batching, which can result in improved and efficient fine-tuning and inference speeds. We also analyze this method with other commonly used batching practices (Longest Sequence, Random Shuffling) on valuable metrics such as runtime and model accuracy.&lt;/p>
&lt;h3 id="project-title">Project Title&lt;/h3>
&lt;ul>
&lt;li>&lt;strong>Topics&lt;/strong>: &lt;code>Large Language Models&lt;/code> &lt;code>Fine-Tuning&lt;/code> &lt;code>AI&lt;/code> &lt;code>Transformers&lt;/code>&lt;/li>
&lt;li>&lt;strong>Skills&lt;/strong>: Python, Pytorch, Large Language Models&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>Mentor&lt;/strong>: [Daniel Wong]&lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/daniel-wong/">Daniel Wong&lt;/a>, [Luanzheng &amp;ldquo;Lenny&amp;rdquo; Guo]&lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/luanzheng-lenny-guo/">Luanzheng &amp;#34;Lenny&amp;#34; Guo&lt;/a>&lt;/li>
&lt;/ul>
&lt;h3 id="project-tasks-and-milestones">Project Tasks and Milestones&lt;/h3>
&lt;ul>
&lt;li>Implement an open source smart batching framework based on HuggingFace to allow for dynamically grouping sequences of similar token lengths into batches&lt;/li>
&lt;li>Analyze runtime, padding, and model accuracy with smart batching and other commonly used batching practices&lt;/li>
&lt;li>Apply smart batching with distributed fine-tuning and observe large language model outputs&lt;/li>
&lt;/ul></description></item><item><title>Towards High Performance NCCL-enabled 2D partitioned PyLops-MPI library</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre25/lbl/pylops-mpi/</link><pubDate>Sun, 09 Feb 2025 10:15:56 -0700</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre25/lbl/pylops-mpi/</guid><description>&lt;h3 id="project-description">Project Description&lt;/h3>
&lt;!--- PyLops and PyLops-MPI introduction --->
&lt;!--- importance --->
&lt;p>&lt;a href="https://github.com/PyLops/pyLops" target="_blank" rel="noopener">PyLops&lt;/a> ecosystem designed to enable large-scale, distributed-memory computations for matrix-free inverse problems. PyLops has achieved more than 400 stars till now. &lt;a href="https://github.com/PyLops/pyLops-mpi" target="_blank" rel="noopener">PyLops-MPI&lt;/a> is an extension of the PyLops. It can be widely used in scientific computation problems. Developed as part of the &lt;a href="https://summerofcode.withgoogle.com/archive/2023/projects/eNJTJO25" target="_blank" rel="noopener">2023 Google Summer of Code&lt;/a>, PyLops-MPI builds on the core PyLops framework by integrating MPI-based parallelism through the mpi4py library. This allows users to efficiently scale PyLops-based computations beyond a single node, leveraging high-performance computing (HPC) clusters for tackling increasingly large problem sizes.&lt;/p>
&lt;p>By extending PyLops&amp;rsquo; modular and user-friendly interface to distributed environments, PyLops-MPI provides researchers and engineers with a powerful tool for developing scalable scientific applications across disciplines, from geophysics to machine learning. As part of the broader PyLops ecosystem, it represents a significant step toward high-performance, parallel inverse problem solving, catering to both academia and industry.&lt;/p>
&lt;p>PyLops-MPI is aimed to provide an efficient and user-friendly distibuted inverse problem solution. The software are designed to handle all three distinct use-cases in the distributed inverse problem: (1) Both model and data are fully distributed across nodes. (2) Data are distributed across nodes but model is available at all nodes. (3) Both model and data are available in all nodes (or just in the master). There are multiple use-cases for PyLops-MPI, e.g. &lt;a href="https://pylops.github.io/pylops-mpi/tutorials/lsm.html#sphx-glr-tutorials-lsm-py" target="_blank" rel="noopener">Least-squares Migration&lt;/a>, &lt;a href="https://pylops.github.io/pylops-mpi/tutorials/mdd.html#sphx-glr-tutorials-mdd-py" target="_blank" rel="noopener">Multi-Dimensional Deconvolution&lt;/a> and &lt;a href="https://pylops.github.io/pylops-mpi/tutorials/poststack.html#sphx-glr-tutorials-poststack-py" target="_blank" rel="noopener">Post Stack Inversion - 3D&lt;/a>. We&amp;rsquo;ve already provided a solution based on mpi4py. With the development of PyLops-MPI, we plan to upgrade the communication infrastructure of PyLops-MPI to better support GPU-based cluster and reduce the overall datavement. This will further boost the performance of PyLops-MPI.&lt;/p>
&lt;p>This project is designed based on the roadmap of PyLops-MPI library. We plan to provide three major functionalities for the PyLops-MPI. Firstly, in the PyLops-MPI library, we support the NVIDIA GPU where we operates data on GPU. We are relying on &lt;a href="https://mpi4py.readthedocs.io/en/stable/tutorial.html#gpu-aware-mpi-python-gpu-arrays" target="_blank" rel="noopener">CUDA-Aware MPI implementaiton&lt;/a> in mpi4py. It requires a CUDA-Aware MPI software stacks which is strict to the system software. Alternatively, we can use NCCL instead of mpi4py when we call GPU routines. NCCL also has better support for NVLink etc. Secondly, the parallelism of PyLops-MPI is achieved through spliting the data and models to different MPI processors. It might not be scalable when we have multiply right hand side inverse problems. We have a &lt;a href="https://github.com/PyLops/pylops-mpi/issues/113" target="_blank" rel="noopener">2D partitioned implementation&lt;/a> while we don&amp;rsquo;t know exactly the performance of the implementation. Thus, we propose to benchmark the scalability of the new 2D partitioned implementation. We are aware that other distibuted matrix-matrix multiplication algorithms such as 2D SUMMA algorithm can be incoporated into the PyLops-MPI library. We would also like to implement the 2D SUMMA algorithm if time permits. Finally, we would like to benchmark MPI one-sided API in PyLops-MPI library since asynchronous execution features of one-sided API will improve the scalability of the algorithm.&lt;/p>
&lt;h3 id="project-objectives">Project Objectives&lt;/h3>
&lt;!--- Our goal 2D parallisem, NCCL, one-sided MPI --->
&lt;p>Aligned with the vision of the 2025 Open Source Research Experience (OSRE), the project aims to benchmark and extend the capability of the PyLops-MPI library in the distributed environment. Below is an outline of the algorithms to be developed in this project:&lt;/p>
&lt;ul>
&lt;li>
&lt;p>&lt;strong>Goal 1: Enabling NCCL API in PyLops-MPI Library&lt;/strong>: Understanding the design of PyLops-MPI. Using NCCL API for collective communication in PyLops-MPI when data is on GPU. Benchmarking the performance of NCCL compared with mpi4py in different scenarios.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Goal 2: Benchmarking 2D Parallelism in PyLops-MPI Library&lt;/strong>: Understanding the design of PyLops-MPI. Understanding the design of 2D partition design in current PyLops-MPI library. Benchmarking the performance of 2D partition design in PyLops-MPI compared with original 1D partition design. If possible, implement the 2D SUMMA algorithm.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Goal 3: Enabling MPI One-sided API in PyLops-MPI Library&lt;/strong>: Understanding the design of PyLops-MPI. Uderstanding the message roofline model and MPI one-sided API. Implementing the one-sided communication strategies in the PyLops-MPI library.&lt;/p>
&lt;/li>
&lt;/ul>
&lt;h3 id="project-benchmark-suites">Project Benchmark Suites&lt;/h3>
&lt;p>We plan to use at least three use cases in the &lt;a href="https://pylops.github.io/pylops-mpi/tutorials/" target="_blank" rel="noopener">tutorial sections&lt;/a> in PyLops-MPI. We will measure the communication volume and time to solution of these use-cases.&lt;/p>
&lt;h3 id="project-benchmark-testbeds">Project Benchmark Testbeds&lt;/h3>
&lt;p>Yuxi Hong is granted access to the world-leading supercomputers such as Delta, Delta-AI through an &lt;a href="https://www.xras.org/public/requests/193551-ACCESS-CIS250038" target="_blank" rel="noopener">ACCESS funded grant&lt;/a>. &lt;a href="https://docs.ncsa.illinois.edu/systems/delta/en/latest/" target="_blank" rel="noopener">Delta&lt;/a> is a dedicated, ACCESS-allocated resource designed by HPE and NCSA, delivering a highly capable GPU-focused compute environment for GPU and CPU workloads. &lt;a href="https://docs.ncsa.illinois.edu/systems/deltaai/en/latest/" target="_blank" rel="noopener">DeltaAI&lt;/a> is a companion system to Delta. Powered by the NVIDIA GH200 Grace Hopper Superchip, DeltaAI provides powerful compute capabilities for simulation and data science. The team also has access to &lt;a href="https://docs.nersc.gov/systems/perlmutter/architecture/" target="_blank" rel="noopener">Perlmutter&lt;/a> supercomputer based in LBNL.&lt;/p>
&lt;h3 id="project-deliverables">Project Deliverables&lt;/h3>
&lt;p>The PyLops-MPI is hosted in github at &lt;a href="https://github.com/PyLops/pyLops-mpi" target="_blank" rel="noopener">Repo&lt;/a>. &lt;a href="https://joss.theoj.org/papers/10.21105/joss.07512" target="_blank" rel="noopener">The paper&lt;/a> mainly describes the design of the PyLops-MPI. Our mentors are the main developers and deisgner of the PyLops-MPI. Our mentors are also experts in HPC and MPI libraries. We will select the proper the mentees for the projects and provide the benchmark results and new functionalities of PyLops-MPI by the end of the projects.
We plan to have two or three mentees for the projects since each goal is a milestone for PyLops-MPI. The three goals can be achieved seperately, they are orthogonal to each other and can be exectuted in parallel.&lt;/p>
&lt;h3 id="pylops-mpi">PyLops-MPI&lt;/h3>
&lt;ul>
&lt;li>&lt;strong>Topics&lt;/strong>: Towards High Performance NCCL-enabled 2D partitioned PyLops-MPI library&lt;/li>
&lt;li>&lt;strong>Skills&lt;/strong>: Proficient in Python, Experience with MPI, Experience with GPU&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/yuxi-hong/">Yuxi Hong&lt;/a>, &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/matteo-ravasi/">Matteo Ravasi&lt;/a>, &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/nan-ding/">Nan Ding&lt;/a>&lt;/li>
&lt;/ul></description></item><item><title>GeFARe: Discovering Reproducible Failure Scenarios and Developing Failure-Aware Scheduling for Genomic Workflows</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre25/uga/gefare/</link><pubDate>Sun, 09 Feb 2025 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre25/uga/gefare/</guid><description>&lt;ul>
&lt;li>&lt;strong>Topics&lt;/strong>: genomic processing (e.g., DNA and RNA alignment), workflow scheduling, resource/cluster management, container orchestration&lt;/li>
&lt;li>&lt;strong>Skills&lt;/strong>: Linux, cloud computing (e.g., OpenStack), cluster manager (e.g., Kubernetes), systems automation (e.g., Bash/Python/Puppet), genomic workflows and applications (e.g., BWA, FastQC, Picard, GATK, STAR)&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>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;h3 id="project-idea-description">&lt;strong>Project Idea description&lt;/strong>&lt;/h3>
&lt;p>Large-scale genomic workflow executions require large-scale computing infrastructure, as well as high utilization of that infrastructure, to maximize throughput. Systems researchers have developed various techniques to achieve this goal, including scheduling, resource harvesting, tail mitigation, and failure recovery. However, many of these large-scale efforts have been carried out by separate groups/institutions that operate such large-scale infrastructure (e.g., major tech companies and national research labs). Reproducing and building upon these works at a similar scale in an academic environment is challenging – even labs with strong ties to these institutions often have to rely on trace-based research, which does not fully capture the complexities of real-world deployments.&lt;/p>
&lt;p>We observe two fundamental reasons for this difficulty: 1) a lack of computational infrastructure at a comparable scale and 2) a lack of representative workloads and software stacks. Although the academic community has sought to broaden access to large-scale infrastructure through testbeds like ChameleonCloud and CloudLab, the representative workloads and software stacks to reproduce aforementioned works remain limited.&lt;/p>
&lt;p>We aim to address this challenge by providing a robust, easy-to-use, and open-source environment for large-scale genomics workflow scheduling. Specifically, this environment will include:
a) a suite of tools to set up infrastructure on academic cloud testbeds,
b) a scheduling research platform for genomic workflows, and
c) software stacks to reproduce large-scale failure scenarios.&lt;/p>
&lt;p>We limit the scope of this project to only one or two major failure scenarios. For example, out-of-memory (OOM) failures occur when genomics applications run with insufficient available memory. However, we aim to make the software stack extendable for other scenarios whenever possible.&lt;/p>
&lt;p>Throughout this project, students will learn to use cloud testbeds (e.g., ChameleonCloud) for workflow scheduling research. They will gain hands-on experience in open-source cluster management and container orchestration tools (e.g., Kubernetes) and will also learn about various aspects of high-performance computing when genomic workflows.&lt;/p>
&lt;p>Finally, we will open-source all the code, software stacks, and datasets created during this project. Using these artifacts, we will also ensure the reproducibility of failure scenarios.&lt;/p>
&lt;h3 id="project-deliverable">&lt;strong>Project Deliverable&lt;/strong>&lt;/h3>
&lt;ul>
&lt;li>Acquire a basic understanding of genomic data processing (will mentor guidance)&lt;/li>
&lt;li>Build tools to set up a multi-node cluster on ChameleonCloud&lt;/li>
&lt;li>Create automation code/tools to set up genomics workflows’ input and containerized applications&lt;/li>
&lt;li>Discovering failure scenarios for genomics workflow execution (will mentor guidance)&lt;/li>
&lt;li>Develop a Kubernetes-based platform to implement scheduling policies (Students may use or build upon existing open-source works)&lt;/li>
&lt;li>Document the steps needed to reproduce the proposed failure scenarios&lt;/li>
&lt;/ul></description></item><item><title>StatWrap</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre25/northwestern/statwrap/</link><pubDate>Sun, 09 Feb 2025 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre25/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="project-search">Project Search&lt;/h3>
&lt;ul>
&lt;li>&lt;strong>Topics&lt;/strong>: &lt;code>search&lt;/code>, &lt;code>user interface&lt;/code>, &lt;code>indexing&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;a href="mailto:ewhitley@northwestern.edu">Eric Whitley&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>The goal of this project is to leverage the information entered by users and passively discovered by StatWrap to facilitate cross-project searching. This functionality will allow investigators to search across projects (current and past) to find relevant projects, assets, and notes. Given the potentially sensitive nature of data included in projects, the indexing of content for searching must be done locally.&lt;/p>
&lt;p>The specific tasks of the project include:&lt;/p>
&lt;ul>
&lt;li>Identify and evaluate open-source projects to index content for searching&lt;/li>
&lt;li>Add a new classification for projects of “Active” and “Past” in the user interface&lt;/li>
&lt;li>Implement the search capability within the user interface&lt;/li>
&lt;li>Develop unit tests and conduct system testing&lt;/li>
&lt;/ul></description></item><item><title>Disentangled Generation and Editing of Pathology Images</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre25/uci/pathology_image_disentanglement/</link><pubDate>Fri, 07 Feb 2025 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre25/uci/pathology_image_disentanglement/</guid><description>&lt;ul>
&lt;li>&lt;strong>Topics:&lt;/strong> computational pathology, image generation, disentangled representations, latent space manipulation, deep learning&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, with experience in machine learning libraries such as PyTorch or TensorFlow.&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>&lt;strong>Generative Models:&lt;/strong>
&lt;ul>
&lt;li>Familiarity with Variational Autoencoders (VAEs), Generative Adversarial Networks (GANs), and contrastive learning methods.&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>&lt;strong>Data Analysis:&lt;/strong>
&lt;ul>
&lt;li>Image processing techniques, statistical analysis, and working with histopathology datasets.&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>&lt;strong>Biomedical Knowledge (preferred):&lt;/strong>
&lt;ul>
&lt;li>Basic understanding of histology, cancer pathology, and biological image annotation.&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). The project involves substantial computational work, model development, and evaluation of generated pathology images.&lt;/li>
&lt;li>&lt;strong>Mentors:&lt;/strong> &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/xi-li/">Xi Li&lt;/a> (contact person), Mentor Name&lt;/li>
&lt;/ul>
&lt;h3 id="project-idea-description">&lt;strong>Project Idea Description&lt;/strong>&lt;/h3>
&lt;p>The project aims to advance the &lt;strong>generation and disentanglement of pathology images&lt;/strong>, focusing on precise control over key histological features. By leveraging generative models, we seek to create synthetic histological images where specific pathological characteristics can be independently controlled.&lt;/p>
&lt;h3 id="challenges-in-current-approaches">&lt;strong>Challenges in Current Approaches&lt;/strong>&lt;/h3>
&lt;p>Current methods in histopathology image generation often struggle with:&lt;/p>
&lt;ol>
&lt;li>&lt;strong>Feature Entanglement:&lt;/strong> Difficulty in isolating individual factors such as cancer presence, severity, or staining variations.&lt;/li>
&lt;li>&lt;strong>Lack of Control:&lt;/strong> Limited capability to manipulate specific pathological attributes without affecting unrelated features.&lt;/li>
&lt;li>&lt;strong>Consistency Issues:&lt;/strong> Generated images often fail to maintain realistic cellular distributions, affecting biological validity.&lt;/li>
&lt;/ol>
&lt;h3 id="project-motivation">&lt;strong>Project Motivation&lt;/strong>&lt;/h3>
&lt;p>This project proposes a &lt;strong>disentangled representation framework&lt;/strong> to address these limitations. By separating key features within the latent space, we aim to:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Control Histological Features:&lt;/strong> Adjust factors such as cancer presence, tumor grade, number of malignant cells, and staining methods.&lt;/li>
&lt;li>&lt;strong>Ensure Spatial Consistency:&lt;/strong> Maintain the natural distribution of cells during image reconstruction and editing.&lt;/li>
&lt;li>&lt;strong>Enable Latent Space Manipulation:&lt;/strong> Provide interpretable controls for editing and generating realistic histopathology images.&lt;/li>
&lt;/ul>
&lt;h3 id="project-objectives">&lt;strong>Project Objectives&lt;/strong>&lt;/h3>
&lt;ol>
&lt;li>&lt;strong>Disentangled Representation Learning:&lt;/strong>
&lt;ul>
&lt;li>Develop generative models (e.g., VAEs, GANs) to separate and control histological features.&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>&lt;strong>Latent Space Manipulation:&lt;/strong>
&lt;ul>
&lt;li>Design mechanisms for intuitive editing of pathology images through latent space adjustments.&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>&lt;strong>Spatial Consistency Validation:&lt;/strong>
&lt;ul>
&lt;li>Implement evaluation metrics to ensure that cell distribution remains biologically consistent during image generation.&lt;/li>
&lt;/ul>
&lt;/li>
&lt;/ol>
&lt;h3 id="project-deliverables">&lt;strong>Project Deliverables&lt;/strong>&lt;/h3>
&lt;ol>
&lt;li>&lt;strong>Generative Model Framework:&lt;/strong>
&lt;ul>
&lt;li>An open-source Python implementation for pathology image generation and editing.&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>&lt;strong>Disentangled Latent Space Tools:&lt;/strong>
&lt;ul>
&lt;li>Tools for visualizing and manipulating latent spaces to control specific pathological features.&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>&lt;strong>Evaluation Metrics:&lt;/strong>
&lt;ul>
&lt;li>Comprehensive benchmarks assessing image quality, feature disentanglement, and biological realism.&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>&lt;strong>Documentation and Tutorials:&lt;/strong>
&lt;ul>
&lt;li>Clear guidelines and code examples for the research community to adopt and build upon this work.&lt;/li>
&lt;/ul>
&lt;/li>
&lt;/ol>
&lt;h3 id="impact">&lt;strong>Impact&lt;/strong>&lt;/h3>
&lt;p>By enabling precise control over generated histology images, this project will contribute to &lt;strong>data augmentation&lt;/strong>, &lt;strong>model interpretability&lt;/strong>, and &lt;strong>biological insight&lt;/strong> in computational pathology. The disentangled approach offers new opportunities for researchers to explore disease mechanisms, develop robust diagnostic models, and improve our understanding of cancer progression and tissue morphology.&lt;/p>
&lt;hr></description></item><item><title>Autograder</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre25/ucsc/autograder/</link><pubDate>Thu, 06 Feb 2025 13:00:00 -0800</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre25/ucsc/autograder/</guid><description>&lt;p>The &lt;a href="https://github.com/edulinq/autograder-server" target="_blank" rel="noopener">EduLinq Autograder&lt;/a> is an open source tool used by several courses at UCSC
to safely and quickly grade programming assignments.
Grading student code is something that may seem simple at first (you just need to run their code!),
but quickly becomes exceeding complex as you get more into the details.
Specifically, grading a student&amp;rsquo;s code securely while providing the &amp;ldquo;last mile&amp;rdquo; service of getting code from students
and sending results to instructors/TAs and the course&amp;rsquo;s LMS (e.g., Canvas) can be very difficult.
The Autograder provides all of this in a free and open source project.
The &lt;a href="https://linqs.org" target="_blank" rel="noopener">LINQS Lab&lt;/a> has made many contributions to the maintain and improve the Autograder.&lt;/p>
&lt;p>As an open source project, there are endless opportunities for development, improvements, and collaboration.
Here, we highlight some specific projects that will work well in the summer mentorship setting.&lt;/p>
&lt;p>All students interested in LINQS projects for OSRE/GSoC 2025 should fill out &lt;a href="https://forms.gle/RxGqnQiCDeHSX6tq6" target="_blank" rel="noopener">this form&lt;/a>.
Towards the end of the application window, we will contact those who we believe to be a good fit for a LINQS project.
The form will stop accepting responses once the application window closes.
Do not post on any of the project repositories about OSRE/GSoC
(e.g., comment on an issue that you want to tackle it as a part of OSRE/GSoC 2025).
Remember, these are active repositories that were not created for OSRE/GSoC.&lt;/p>
&lt;h3 id="llm-detection">LLM Detection&lt;/h3>
&lt;ul>
&lt;li>&lt;strong>Topics:&lt;/strong> &lt;code>AI/ML&lt;/code> &lt;code>LLM&lt;/code> &lt;code>Research&lt;/code> &lt;code>Backend&lt;/code>&lt;/li>
&lt;li>&lt;strong>Skills:&lt;/strong> software development, backend, systems, data munging, go, docker&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="mailto:linqs.osre25@gmail.com">Eriq Augustine&lt;/a>, &lt;a href="mailto:linqs.osre25@gmail.com">Fabrice Kurmann&lt;/a>, &lt;a href="mailto:linqs.osre25@gmail.com">Lise Getoor&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>As &lt;a href="https://en.wikipedia.org/wiki/Large_language_model" target="_blank" rel="noopener">Large Language Model (LLM)&lt;/a> tools like ChatGPT become more common and powerful,
instructors need tools to help determine if students are the actual authors of the code they submit.
More classical instances of plagiarism are often discovered by code similarity tools like &lt;a href="https://theory.stanford.edu/~aiken/moss/" target="_blank" rel="noopener">MOSS&lt;/a>.
However these tools are not sufficient for detecting code written not by a student,
but by an AI model like &lt;a href="https://en.wikipedia.org/wiki/ChatGPT" target="_blank" rel="noopener">ChatGPT&lt;/a> or &lt;a href="https://en.wikipedia.org/wiki/GitHub_Copilot" target="_blank" rel="noopener">GitHub Copilot&lt;/a>.&lt;/p>
&lt;p>The task for this project is to create a system that provides a score indicating the system&amp;rsquo;s confidence that a given piece of code was written by an AI tool and not a student.
This will supplement the existing code analysis tools in the Autograder.
There are many approaches to completing this task that will be considered.
A more software development approach can consist of levering exiting systems to create a production-ready system,
whereas a more research approach can consist of creating a novel approach complete with a paper and experiments.&lt;/p>
&lt;p>See Also:&lt;/p>
&lt;ul>
&lt;li>&lt;a href="https://github.com/edulinq/autograder-server" target="_blank" rel="noopener">Repository for Autograder Server&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://github.com/edulinq/autograder-server/issues/140" target="_blank" rel="noopener">GitHub Issue&lt;/a>&lt;/li>
&lt;/ul>
&lt;h3 id="code-analysis-gui">Code Analysis GUI&lt;/h3>
&lt;ul>
&lt;li>&lt;strong>Topics:&lt;/strong> &lt;code>Frontend&lt;/code>&lt;/li>
&lt;li>&lt;strong>Skills:&lt;/strong> software development, frontend, data munging, js, css, go&lt;/li>
&lt;li>&lt;strong>Difficulty:&lt;/strong> Easy&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="mailto:linqs.osre25@gmail.com">Eriq Augustine&lt;/a>, &lt;a href="mailto:linqs.osre25@gmail.com">Fabrice Kurmann&lt;/a>, &lt;a href="mailto:linqs.osre25@gmail.com">Lise Getoor&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>The Autograder has existing functionality to analyze the code in a student&amp;rsquo;s submission for malicious content.
Relevant to this project is that the Autograder can run a pairwise similarity analysis against all submitted code.
This is how most existing software plagiarism systems detect offending code.
The existing infrastructure provides detailed statistics on code similarity,
but does not currently have a visual way to display this data.&lt;/p>
&lt;p>The task for this project is to create a web GUI using the Autograder REST API
to display the results of a code analysis.
The size of this project depends on how many of the existing features are going to be supported by the web GUI.&lt;/p>
&lt;p>See Also:&lt;/p>
&lt;ul>
&lt;li>&lt;a href="https://github.com/edulinq/autograder-web" target="_blank" rel="noopener">Repository for Autograder Web GUI&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://github.com/edulinq/autograder-server/issues/142" target="_blank" rel="noopener">GitHub Issue&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://github.com/edulinq/autograder-server/blob/main/internal/model/analysis.go#L78" target="_blank" rel="noopener">Pairwise Code Analysis Type&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://github.com/edulinq/autograder-py/blob/main/tests/api/testdata/courses/assignments/submit/analysis/course_assignments_submissions_analysis_pairwise_wait.json" target="_blank" rel="noopener">Sample API Data&lt;/a>&lt;/li>
&lt;/ul>
&lt;h3 id="web-gui">Web GUI&lt;/h3>
&lt;ul>
&lt;li>&lt;strong>Topics:&lt;/strong> &lt;code>Frontend&lt;/code>&lt;/li>
&lt;li>&lt;strong>Skills:&lt;/strong> software development, frontend, js, css&lt;/li>
&lt;li>&lt;strong>Difficulty:&lt;/strong> Easy&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="mailto:linqs.osre25@gmail.com">Eriq Augustine&lt;/a>, &lt;a href="mailto:linqs.osre25@gmail.com">Fabrice Kurmann&lt;/a>, &lt;a href="mailto:linqs.osre25@gmail.com">Lise Getoor&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>The Autograder contains dozens of &lt;a href="https://github.com/edulinq/autograder-server/blob/main/resources/api.json" target="_blank" rel="noopener">API endpoints&lt;/a>,
most directly representing a piece of functionality exposed to the user.
All of these features are exposed in the &lt;a href="https://github.com/edulinq/autograder-py" target="_blank" rel="noopener">Autograder&amp;rsquo;s Python Interface&lt;/a>.
However, the Python interface is a purely command-line interface.
And although command-line interface are objectively (read: subjectively) the best,
a web GUI would be more accessible to a wider audience.
The autograder already has a web GUI,
but it does not cover all the features available in the Autograder.&lt;/p>
&lt;p>The task for this project is to augment the Autograder&amp;rsquo;s web GUI with more features.
Specifically, add support for more tools used to create and administer courses.&lt;/p>
&lt;p>See Also:&lt;/p>
&lt;ul>
&lt;li>&lt;a href="https://github.com/edulinq/autograder-web" target="_blank" rel="noopener">Repository for Autograder Web GUI&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://github.com/edulinq/autograder-server/issues/61" target="_blank" rel="noopener">GitHub Issue&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://github.com/edulinq/autograder-server/blob/main/resources/api.json" target="_blank" rel="noopener">Autograder API Endpoints&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://github.com/edulinq/autograder-py" target="_blank" rel="noopener">Autograder&amp;rsquo;s Python Interface&lt;/a>&lt;/li>
&lt;/ul></description></item><item><title>LMS Toolkit</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre25/ucsc/lms-toolkit/</link><pubDate>Thu, 06 Feb 2025 13:00:00 -0800</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre25/ucsc/lms-toolkit/</guid><description>&lt;p>The &lt;a href="https://github.com/edulinq/py-canvas" target="_blank" rel="noopener">EduLinq LMS Toolkit&lt;/a> (also called the &amp;ldquo;Canvas Tool&amp;rdquo; or &amp;ldquo;py-canvas&amp;rdquo;) is a suite of tools used by several courses at UCSC
to interact with Canvas from the command line or Python.
A &lt;a href="https://en.wikipedia.org/wiki/Learning_management_system" target="_blank" rel="noopener">Learning Management System&lt;/a> (LMS) is a system that institutions use to manage courses, assignments, students, and grades.
The most popular LMSs are
&lt;a href="https://en.wikipedia.org/wiki/Instructure#Canvas" target="_blank" rel="noopener">Canvas&lt;/a>,
&lt;a href="https://en.wikipedia.org/wiki/Blackboard_Learn" target="_blank" rel="noopener">Blackboard&lt;/a>,
&lt;a href="https://en.wikipedia.org/wiki/Moodle" target="_blank" rel="noopener">Moodle&lt;/a>,
and &lt;a href="https://en.wikipedia.org/wiki/D2L#Brightspace" target="_blank" rel="noopener">Brightspace&lt;/a>.
These tools can be very helpful, especially from an administrative standpoint, but can be hard to interact with.
They can be especially difficult when instructors and TAs want to do something that is not explicitly supported by their built-in GUIs
(e.g., when an instructor wants to use a special grading policy).
The LMS Toolkit project is an effort to create a single suite of command-line tools (along with a Python interface)
to connect to all the above mentioned LMSs in a simple and uniform way.
So, not only can instructors and TAs easily access the modify the data held in an LMS (like a student&amp;rsquo;s grades),
but they can also do it the same way on any LMS.
The &lt;a href="https://linqs.org" target="_blank" rel="noopener">LINQS Lab&lt;/a> has made many contributions to the maintain and improve the Quiz Composer.&lt;/p>
&lt;p>Currently, the LMS Toolkit only supports Canvas, but this suite of projects hopes to not only expand existing support,
but add support for more LMSs.&lt;/p>
&lt;p>All students interested in LINQS projects for OSRE/GSoC 2025 should fill out &lt;a href="https://forms.gle/RxGqnQiCDeHSX6tq6" target="_blank" rel="noopener">this form&lt;/a>.
Towards the end of the application window, we will contact those who we believe to be a good fit for a LINQS project.
The form will stop accepting responses once the application window closes.
Do not post on any of the project repositories about OSRE/GSoC
(e.g., comment on an issue that you want to tackle it as a part of OSRE/GSoC 2025).
Remember, these are active repositories that were not created for OSRE/GSoC.&lt;/p>
&lt;h3 id="advanced-canvas-support">Advanced Canvas Support&lt;/h3>
&lt;ul>
&lt;li>&lt;strong>Topics:&lt;/strong> &lt;code>Backend&lt;/code> &lt;code>Teaching Tools&lt;/code> &lt;code>API&lt;/code>&lt;/li>
&lt;li>&lt;strong>Skills:&lt;/strong> software development, backend, rest api, data munging, http request inspection, python&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="mailto:linqs.osre25@gmail.com">Eriq Augustine&lt;/a>, &lt;a href="mailto:linqs.osre25@gmail.com">Batuhan Salih&lt;/a>, &lt;a href="mailto:linqs.osre25@gmail.com">Lise Getoor&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>The LMS Toolkit already has basic read-write support for core Canvas functionality (working with grades and assignments).
However, there are still many more features that can be supported such as
&lt;a href="https://github.com/edulinq/py-canvas/issues/17" target="_blank" rel="noopener">group management&lt;/a>,
&lt;a href="https://github.com/edulinq/py-canvas/issues/7" target="_blank" rel="noopener">quiz management&lt;/a>,
&lt;a href="https://github.com/edulinq/py-canvas/issues/10" target="_blank" rel="noopener">quiz statistics&lt;/a>,
and &lt;a href="https://github.com/edulinq/py-canvas/issues/19" target="_blank" rel="noopener">assignment statuses&lt;/a>.&lt;/p>
&lt;p>The task for this project is to implement chose of set of advanced Canvas features to support
(not limited to those features mentioned above),
design an LMS-agnostic way to support those features,
and implement those features.
The flexibility in the features chosen to implement account for the variable size of this project.&lt;/p>
&lt;p>See Also:&lt;/p>
&lt;ul>
&lt;li>&lt;a href="https://github.com/edulinq/py-canvas" target="_blank" rel="noopener">Repository for LMS Toolkit&lt;/a>&lt;/li>
&lt;li>GitHub Issues
&lt;ul>
&lt;li>&lt;a href="https://github.com/edulinq/py-canvas/issues/17" target="_blank" rel="noopener">Group Management&lt;/a>,&lt;/li>
&lt;li>&lt;a href="https://github.com/edulinq/py-canvas/issues/7" target="_blank" rel="noopener">Quiz Management&lt;/a>,&lt;/li>
&lt;li>&lt;a href="https://github.com/edulinq/py-canvas/issues/10" target="_blank" rel="noopener">Quiz Statistics&lt;/a>,&lt;/li>
&lt;li>&lt;a href="https://github.com/edulinq/py-canvas/issues/19" target="_blank" rel="noopener">Assignment Statuses&lt;/a>.&lt;/li>
&lt;/ul>
&lt;/li>
&lt;/ul>
&lt;h3 id="new-lms-support-moodle">New LMS Support: Moodle&lt;/h3>
&lt;ul>
&lt;li>&lt;strong>Topics:&lt;/strong> &lt;code>Backend&lt;/code> &lt;code>Teaching Tools&lt;/code> &lt;code>API&lt;/code>&lt;/li>
&lt;li>&lt;strong>Skills:&lt;/strong> software development, backend, rest api, data munging, http request inspection, 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:linqs.osre25@gmail.com">Eriq Augustine&lt;/a>, &lt;a href="mailto:linqs.osre25@gmail.com">Batuhan Salih&lt;/a>, &lt;a href="mailto:linqs.osre25@gmail.com">Lise Getoor&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>The goal of the LMS toolkit is to provide a single interface for all LMSs.
It is a lofty goal, however there is currently only support for &lt;a href="https://en.wikipedia.org/wiki/Instructure#Canvas" target="_blank" rel="noopener">Canvas&lt;/a>.
&lt;a href="https://en.wikipedia.org/wiki/Moodle" target="_blank" rel="noopener">Moodle&lt;/a> is one of the more popular LMSs.
Naturally, the LMS Toolkit wants to support Moodle as well.
Moodle is open source, so adding support in the LMS Toolkit should not be too challenging.&lt;/p>
&lt;p>The task for this project is to add basic support for the Moodle LMS.
It is not necessary to support all the same features that are supported for Canvas,
but at least the core features of score and assignment management should be implemented.&lt;/p>
&lt;p>See Also:&lt;/p>
&lt;ul>
&lt;li>&lt;a href="https://github.com/edulinq/py-canvas" target="_blank" rel="noopener">Repository for LMS Toolkit&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://en.wikipedia.org/wiki/Moodle" target="_blank" rel="noopener">Moodle Wiki Page&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://github.com/edulinq/py-canvas/issues/22" target="_blank" rel="noopener">GitHub Issue&lt;/a>&lt;/li>
&lt;/ul>
&lt;h3 id="new-lms-support-blackboard">New LMS Support: Blackboard&lt;/h3>
&lt;ul>
&lt;li>&lt;strong>Topics:&lt;/strong> &lt;code>Backend&lt;/code> &lt;code>Teaching Tools&lt;/code> &lt;code>API&lt;/code>&lt;/li>
&lt;li>&lt;strong>Skills:&lt;/strong> software development, backend, rest api, data munging, http request inspection, python&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="mailto:linqs.osre25@gmail.com">Eriq Augustine&lt;/a>, &lt;a href="mailto:linqs.osre25@gmail.com">Batuhan Salih&lt;/a>, &lt;a href="mailto:linqs.osre25@gmail.com">Lise Getoor&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>The goal of the LMS toolkit is to provide a single interface for all LMSs.
It is a lofty goal, however there is currently only support for &lt;a href="https://en.wikipedia.org/wiki/Instructure#Canvas" target="_blank" rel="noopener">Canvas&lt;/a>.
&lt;a href="https://en.wikipedia.org/wiki/Blackboard_Learn" target="_blank" rel="noopener">Blackboard&lt;/a> (also called &amp;ldquo;Blackboard Learn&amp;rdquo;) is one of the more popular LMSs.
Naturally, the LMS Toolkit wants to support Blackboard as well.
However, a challenge in supporting Blackboard is that it is not open source (unlike Canvas).
Therefore, support and testing on Blackboard may be very challenging.&lt;/p>
&lt;p>The task for this project is to add basic support for the Blackboard LMS.
It is not necessary to support all the same features that are supported for Canvas,
but at least the core features of score and assignment management should be implemented.
The closed nature of Blackboard makes this a challenging and uncertain project.&lt;/p>
&lt;p>See Also:&lt;/p>
&lt;ul>
&lt;li>&lt;a href="https://github.com/edulinq/py-canvas" target="_blank" rel="noopener">Repository for LMS Toolkit&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://en.wikipedia.org/wiki/Blackboard_Learn" target="_blank" rel="noopener">Blackboard Wiki Page&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://github.com/edulinq/py-canvas/issues/21" target="_blank" rel="noopener">GitHub Issue&lt;/a>&lt;/li>
&lt;/ul>
&lt;h3 id="new-lms-support-brightspace">New LMS Support: Brightspace&lt;/h3>
&lt;ul>
&lt;li>&lt;strong>Topics:&lt;/strong> &lt;code>Backend&lt;/code> &lt;code>Teaching Tools&lt;/code> &lt;code>API&lt;/code>&lt;/li>
&lt;li>&lt;strong>Skills:&lt;/strong> software development, backend, rest api, data munging, http request inspection, python&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="mailto:linqs.osre25@gmail.com">Eriq Augustine&lt;/a>, &lt;a href="mailto:linqs.osre25@gmail.com">Batuhan Salih&lt;/a>, &lt;a href="mailto:linqs.osre25@gmail.com">Lise Getoor&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>The goal of the LMS toolkit is to provide a single interface for all LMSs.
It is a lofty goal, however there is currently only support for &lt;a href="https://en.wikipedia.org/wiki/Instructure#Canvas" target="_blank" rel="noopener">Canvas&lt;/a>.
&lt;a href="https://en.wikipedia.org/wiki/D2L#Brightspace" target="_blank" rel="noopener">D2L Brightspace&lt;/a> is one of the more popular LMSs.
Naturally, the LMS Toolkit wants to support Brightspace as well.
However, a challenge in supporting Brightspace is that it is not open source (unlike Canvas).
Therefore, support and testing on Brightspace may be very challenging.&lt;/p>
&lt;p>The task for this project is to add basic support for the Brightspace LMS.
It is not necessary to support all the same features that are supported for Canvas,
but at least the core features of score and assignment management should be implemented.
The closed nature of Brightspace makes this a challenging and uncertain project.&lt;/p>
&lt;p>See Also:&lt;/p>
&lt;ul>
&lt;li>&lt;a href="https://github.com/edulinq/py-canvas" target="_blank" rel="noopener">Repository for LMS Toolkit&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://en.wikipedia.org/wiki/D2L#Brightspace" target="_blank" rel="noopener">Brightspace Wiki Page&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://github.com/edulinq/py-canvas/issues/23" target="_blank" rel="noopener">GitHub Issue&lt;/a>&lt;/li>
&lt;/ul>
&lt;h3 id="testing--ci-infrastructure">Testing / CI Infrastructure&lt;/h3>
&lt;ul>
&lt;li>&lt;strong>Topics:&lt;/strong> &lt;code>Backend&lt;/code> &lt;code>Teaching Tools&lt;/code> &lt;code>Testing&lt;/code> &lt;code>CI&lt;/code>&lt;/li>
&lt;li>&lt;strong>Skills:&lt;/strong> software development, backend, testing, ci, docker&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="mailto:linqs.osre25@gmail.com">Eriq Augustine&lt;/a>, &lt;a href="mailto:linqs.osre25@gmail.com">Batuhan Salih&lt;/a>, &lt;a href="mailto:linqs.osre25@gmail.com">Lise Getoor&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>The goal of the LMS toolkit is to provide a single interface for all LMSs.
This means that our system must communicate with several different (the LMSs),
each with their own systems, data patterns, versions, and quirks.
Testing will be essential to ensure that our tools keep working as the different LMSs evolve and update.
The LMS Toolkit currently tests with Canvas by
&lt;a href="https://github.com/edulinq/py-canvas/tree/main/tests/api/test_cases" target="_blank" rel="noopener">mocking API responses&lt;/a>.
However, this tactic does not scale well with multiple LMSs (and multiple versions of each system).
A more scalable approach would be to have test instances of the different LMSs that our testing infrastructure can interact with
both interactively and in &lt;a href="https://en.wikipedia.org/wiki/Continuous_integration" target="_blank" rel="noopener">continuous integration&lt;/a> (CI).&lt;/p>
&lt;p>The task for this project is to create testing infrastructure that
connects to test instances of different LMS systems (e.g., Canvas).
This task does not require that all the LMSs in this document are used,
but the testing infrastructure should be robust enough to support them all.
The open source LMSs (Canvas and Moodle) will likely be much easier to setup than the others,
and should be targeted first.
We should be able to run tests locally as well as in CI,
and will likely heavily use &lt;a href="https://en.wikipedia.org/wiki/Docker_%28software%29" target="_blank" rel="noopener">Docker&lt;/a> containers.&lt;/p>
&lt;p>See Also:&lt;/p>
&lt;ul>
&lt;li>&lt;a href="https://github.com/edulinq/py-canvas" target="_blank" rel="noopener">Repository for LMS Toolkit&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://github.com/edulinq/py-canvas/issues/24" target="_blank" rel="noopener">GitHub Issue&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://github.com/edulinq/py-canvas/tree/main/tests/api/test_cases" target="_blank" rel="noopener">Mocked API Responses&lt;/a>.&lt;/li>
&lt;/ul></description></item><item><title>Quiz Composer</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre25/ucsc/quiz-composer/</link><pubDate>Thu, 06 Feb 2025 13:00:00 -0800</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre25/ucsc/quiz-composer/</guid><description>&lt;p>The &lt;a href="https://github.com/edulinq/quizgen" target="_blank" rel="noopener">EduLinq Quiz Composer&lt;/a> (also called the &amp;ldquo;Quiz Generator&amp;rdquo;) is a tool used by several courses at UCSC
to create and maintain platform-agnostic quizzes (including exams and worksheets).
Knowledge assessments like quizzes, exams, and tests are a core part of the learning process for many courses.
However maintaining banks of questions, collaborating on new questions, and converting quizzes to new formats can use up a lot of time,
taking time away from actually working on improving course materials.
The Quiz Composer helps by providing a single text-based format that can be stored in a repository and &amp;ldquo;compiled&amp;rdquo; into many different formats including:
HTML, LaTeX, PDF, Canvas, GradeScope, and QTI.
The &lt;a href="https://linqs.org" target="_blank" rel="noopener">LINQS Lab&lt;/a> has made many contributions to the maintain and improve the Quiz Composer.&lt;/p>
&lt;p>As an open source project, there are endless opportunities for development, improvements, and collaboration.
Here, we highlight some specific projects that will work well in the summer mentorship setting.&lt;/p>
&lt;p>All students interested in LINQS projects for OSRE/GSoC 2025 should fill out &lt;a href="https://forms.gle/RxGqnQiCDeHSX6tq6" target="_blank" rel="noopener">this form&lt;/a>.
Towards the end of the application window, we will contact those who we believe to be a good fit for a LINQS project.
The form will stop accepting responses once the application window closes.
Do not post on any of the project repositories about OSRE/GSoC
(e.g., comment on an issue that you want to tackle it as a part of OSRE/GSoC 2025).
Remember, these are active repositories that were not created for OSRE/GSoC.&lt;/p>
&lt;h3 id="canvas-import">Canvas Import&lt;/h3>
&lt;ul>
&lt;li>&lt;strong>Topics:&lt;/strong> &lt;code>Backend&lt;/code> &lt;code>Teaching Tools&lt;/code> &lt;code>API&lt;/code>&lt;/li>
&lt;li>&lt;strong>Skills:&lt;/strong> software development, backend, rest api, data munging, http request inspection, python&lt;/li>
&lt;li>&lt;strong>Difficulty:&lt;/strong> Moderate&lt;/li>
&lt;li>&lt;strong>Size:&lt;/strong> Medium (175 hours)&lt;/li>
&lt;li>&lt;strong>Mentors:&lt;/strong> &lt;a href="mailto:linqs.osre25@gmail.com">Eriq Augustine&lt;/a>, &lt;a href="mailto:linqs.osre25@gmail.com">Lucas Ellenberger&lt;/a>, &lt;a href="mailto:linqs.osre25@gmail.com">Lise Getoor&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>The Quiz Composer houses quizzes and quiz questions in a simple and unambiguous format based
on &lt;a href="https://en.wikipedia.org/wiki/JSON" target="_blank" rel="noopener">JSON&lt;/a> and &lt;a href="https://en.wikipedia.org/wiki/Markdown" target="_blank" rel="noopener">Markdown&lt;/a> (specifically, the &lt;a href="https://commonmark.org" target="_blank" rel="noopener">CommonMark specification&lt;/a>).
This allows the Quiz Composer to unambiguously create versions of the same quiz in many different formats.
However, creating a quiz in the Quiz Composer format can be a daunting task for those not familiar with JSON or Markdown.
Instead, it would be easier for people to import quizzes from another format into the Quiz Composer format,
and then edit it as they see fit.
Unfortunately not all other quiz formats, namely Canvas in this case, are unambiguous.&lt;/p>
&lt;p>The task for this project is to implement the functionality of importing quizzes from Canvas to the standard Quiz Composer format.
The unambiguous nature of Canvas quizzes makes this task non-trivial,
and adds an additional element of design decisions to this task.
It will be impossible to import quizzes 100% correctly,
but we want to be able to get close enough that most people can import their quizzes without issue.&lt;/p>
&lt;p>See Also:&lt;/p>
&lt;ul>
&lt;li>&lt;a href="https://github.com/edulinq/quizgen" target="_blank" rel="noopener">Repository for Quiz Composer&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://github.com/edulinq/quizgen/issues/27" target="_blank" rel="noopener">GitHub Issue&lt;/a>&lt;/li>
&lt;/ul>
&lt;h3 id="google-forms-export">Google Forms Export&lt;/h3>
&lt;ul>
&lt;li>&lt;strong>Topics:&lt;/strong> &lt;code>Backend&lt;/code> &lt;code>Teaching Tools&lt;/code> &lt;code>API&lt;/code>&lt;/li>
&lt;li>&lt;strong>Skills:&lt;/strong> software development, backend, rest api, data munging, python&lt;/li>
&lt;li>&lt;strong>Difficulty:&lt;/strong> Moderate&lt;/li>
&lt;li>&lt;strong>Size:&lt;/strong> Medium (175 hours)&lt;/li>
&lt;li>&lt;strong>Mentors:&lt;/strong> &lt;a href="mailto:linqs.osre25@gmail.com">Eriq Augustine&lt;/a>, &lt;a href="mailto:linqs.osre25@gmail.com">Lucas Ellenberger&lt;/a>, &lt;a href="mailto:linqs.osre25@gmail.com">Lise Getoor&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>The Quiz Composer can export quizzes to many different formats,
each with a varying level of interactivity and feature support.
For example, quizzes can be exported to PDFs which will be printed and the students will just write down their answers to be checked in the future.
Quizzes can also be exported to interactive platforms like Canvas where students can enter answers that may be automatically checked with feedback immediately provided to the student.
On potential platform with functionality somewhere between the above two examples is &lt;a href="https://workspace.google.com/products/forms/" target="_blank" rel="noopener">Google Forms&lt;/a>.
&amp;ldquo;Forms&amp;rdquo; (an entity on Google Forms) can be something like a survey or (as of more recently) a quiz.&lt;/p>
&lt;p>The task for this project is to add support for exporting quizzes from the Quiz Composer to Google Forms.
There is a large overlap in the quiz features supported in Canvas (which the Quiz Composer already supports) and Google Forms,
so most settings should be fairly straightforward.
There may be some design work around deciding what features are specific to one quiz platform
and what features can be abstracted to work across several platforms.&lt;/p>
&lt;p>See Also:&lt;/p>
&lt;ul>
&lt;li>&lt;a href="https://github.com/edulinq/quizgen" target="_blank" rel="noopener">Repository for Quiz Composer&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://github.com/edulinq/quizgen/issues/19" target="_blank" rel="noopener">GitHub Issue&lt;/a>&lt;/li>
&lt;/ul>
&lt;h3 id="template-questions">Template Questions&lt;/h3>
&lt;ul>
&lt;li>&lt;strong>Topics:&lt;/strong> &lt;code>Backend&lt;/code> &lt;code>Teaching Tools&lt;/code> &lt;code>API&lt;/code>&lt;/li>
&lt;li>&lt;strong>Skills:&lt;/strong> software development, backend, data munging, python&lt;/li>
&lt;li>&lt;strong>Difficulty:&lt;/strong> Moderate-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="mailto:linqs.osre25@gmail.com">Eriq Augustine&lt;/a>, &lt;a href="mailto:linqs.osre25@gmail.com">Lucas Ellenberger&lt;/a>, &lt;a href="mailto:linqs.osre25@gmail.com">Lise Getoor&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>Questions in the Quiz Composer are described using &lt;a href="https://en.wikipedia.org/wiki/JSON" target="_blank" rel="noopener">JSON&lt;/a> and &lt;a href="https://en.wikipedia.org/wiki/Markdown" target="_blank" rel="noopener">Markdown&lt;/a>
files which contain the question prompt, possible answers, and the correct answer.
(Of course there are many differ &lt;a href="https://github.com/edulinq/quizgen/blob/main/docs/question-types.md" target="_blank" rel="noopener">question types&lt;/a>,
each with different semantics and requirements.)
However, a limitation of this is that each question is always the same.
You can have multiple copies of a question with slightly different prompts, numbers, and answers;
but you are still limited to each question being static and unchanging.
It would be useful to have &amp;ldquo;template questions&amp;rdquo; that can dynamically create static questions from a template
and collection of replacement data.&lt;/p>
&lt;p>The task for this project is to add support for the &amp;ldquo;template questions&amp;rdquo; discussed above.
Much of the high-level design work for this issue has &lt;a href="https://github.com/edulinq/quizgen/issues/26" target="_blank" rel="noopener">already been completed&lt;/a>.
But there is still the implementation and low-level design decision left to do.&lt;/p>
&lt;p>See Also:&lt;/p>
&lt;ul>
&lt;li>&lt;a href="https://github.com/edulinq/quizgen" target="_blank" rel="noopener">Repository for Quiz Composer&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://github.com/edulinq/quizgen/issues/26" target="_blank" rel="noopener">GitHub Issue&lt;/a>&lt;/li>
&lt;/ul></description></item><item><title>LLMSeqRec: LLM Enhanced Contextual Sequential Recommender</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre25/sf/llmseqrec/</link><pubDate>Thu, 06 Feb 2025 10:15:56 -0700</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre25/sf/llmseqrec/</guid><description>&lt;h3 id="project-description">Project Description&lt;/h3>
&lt;p>Sequential Recommender Systems are widely used in scientific and business applications to analyze and predict patterns over time. In biology and ecology, they help track species behavior by suggesting related research on migration patterns and environmental changes. Medical applications include personalized treatment recommendations based on patient history and predicting disease progression. In physics and engineering, these systems optimize experimental setups by suggesting relevant past experiments or simulations. Environmental and climate science applications include forecasting climate trends and recommending datasets for monitoring deforestation or pollution. In business and e-commerce, sequential recommenders enhance user experiences by predicting consumer behavior, suggesting personalized products, and optimizing marketing strategies based on browsing and purchase history. By leveraging sequential dependencies, these recommender systems enhance research efficiency, knowledge discovery, and business decision-making across various domains. Traditional sequential recommendation systems rely on historical user interactions to predict future preferences, but they often struggle with capturing complex contextual dependencies and adapting to dynamic user behaviors. Existing models primarily use predefined embeddings and handcrafted features, limiting their ability to generalize across diverse recommendation scenarios. To address these challenges, we propose LLM Enhanced Contextual Sequential Recommender (LLMSeqRec), which leverages Large Language Models (LLMs) to enrich sequential recommendations with deep contextual understanding and adaptive reasoning.
By integrating LLM-generated embeddings and contextual representations, LLMSeqRec enhances user intent modeling, cold-start recommendations, and long-range dependencies in sequential data. Unlike traditional models that rely solely on structured interaction logs, LLMSeqRec dynamically interprets and augments sequences with semantic context, leading to more accurate and personalized recommendations. This fusion of LLM intelligence with sequential modeling enables a more scalable, adaptable, and explainable recommender system, bridging the gap between traditional sequence-based approaches and advanced AI-driven recommendations.&lt;/p>
&lt;h3 id="project-objectives">Project Objectives&lt;/h3>
&lt;p>Aligned with the vision of the 2025 Open Source Research Experience (OSRE), this project aims to develop an LLM-Enhanced Contextual Sequential Recommender (LLMSeqRec) to improve sequential recommendation accuracy across various scientific and business applications. Sequential recommender systems are widely used to analyze and predict patterns over time, assisting in fields such as biology, ecology, medicine, physics, engineering, environmental science, and e-commerce. However, traditional models often struggle with capturing complex contextual dependencies and adapting to dynamic user behaviors, as they primarily rely on vanilla sequential Id orders.
To address these limitations, this project will leverage Large Language Models (LLMs) to enhance context-aware sequential recommendations by dynamically integrating LLM-generated embeddings and contextual representations. The core challenge lies in designing LLMSeqRec, a unified and scalable model capable of enriching user intent modeling, mitigating cold-start issues, and capturing long-range dependencies within sequential data. Unlike conventional systems that rely solely on structured interaction logs, LLMSeqRec will interpret and augment sequences with semantic context, resulting in more accurate, adaptable, and explainable recommendations. Below is an outline of the methodologies and models that will be developed in this project:&lt;/p>
&lt;ul>
&lt;li>
&lt;p>&lt;strong>Step 1: Data Preprocessing &amp;amp; Feature Creation&lt;/strong>:
Develop a data processing pipeline to parse user’s sequential interaction behaviors into sequential data points for LLM-based embeddings and contextual sequential transformer modeling; Extract user behavior sequences, items’ metadata, and temporal patterns to create context-aware sequential representations for training, validation and testing; The data source can be from Amazon open public data or Movie Lense data set. The data points creation can follow SASRec (in the reference 1).&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Step 2: Model Development&lt;/strong>:
Design and implement LLM-enhanced sequential recommendation models, integrating pretrained language models to augment user-item interactions with semantic context; Develop an adaptive mechanism to incorporate external contextual signals, such as product descriptions, reviews into the sequential recommendation process; The baseline model can be SASRec pytorch implementation.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Step 3: Evaluation&lt;/strong>: :
Benchmark LLMSeqRec against state-of-the-art sequential recommenders, evaluating on accuracy, NDCG and cold-start performance; Conduct ablation studies to analyze the impact of LLM-generated embeddings on recommendation quality; Optimize model inference speed and efficiency for real-time recommendation scenarios.&lt;/p>
&lt;/li>
&lt;/ul>
&lt;h3 id="project-deliverables">Project Deliverables&lt;/h3>
&lt;p>This project will deliver three components, software, model training, validation and performance evaluation and demo. The software which implements the above LLMSeqRec model will be hosted on the github repo as open-access repositories. The evaluation results and demo will be published along the github repo .&lt;/p>
&lt;h3 id="llmseqrec">LLMSeqRec&lt;/h3>
&lt;ul>
&lt;li>&lt;strong>Topics&lt;/strong>: LLM Enhanced Contextual Sequential Recommender&lt;/li>
&lt;li>&lt;strong>Skills&lt;/strong>: Proficiency in Python, Pytorch, Github, Self-attention, Transformer&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/linsey-pang/">Linsey Pang&lt;/a>, &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/bin-dong/">Bin Dong&lt;/a>&lt;/li>
&lt;/ul>
&lt;h3 id="references">References:&lt;/h3>
&lt;ul>
&lt;li>Self-Attentive Sequential Recommendation (SASRec)&lt;/li>
&lt;li>BERT4Rec: Sequential Recommendation with Bidirectional Encoder Representations from Transformer&lt;/li>
&lt;li>Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks&lt;/li>
&lt;li>Amazon Dataset: &lt;a href="https://cseweb.ucsd.edu/~jmcauley/datasets.html#amazon_reviews" target="_blank" rel="noopener">https://cseweb.ucsd.edu/~jmcauley/datasets.html#amazon_reviews&lt;/a>&lt;/li>
&lt;li>Movie Lense Data: &lt;a href="https://grouplens.org/datasets/movielens/" target="_blank" rel="noopener">https://grouplens.org/datasets/movielens/&lt;/a>&lt;/li>
&lt;/ul></description></item><item><title>ReIDMM: Re-identifying Multiple Objects across Multiple Streams</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre25/lbl/reidmm/</link><pubDate>Thu, 06 Feb 2025 10:15:56 -0700</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre25/lbl/reidmm/</guid><description>&lt;h3 id="project-description">Project Description&lt;/h3>
&lt;p>Re-identifying multiple objects across multiple streams (ReIDMM) is essential in scientific research and various industries. It involves tracking and analyzing entities across different viewpoints or time frames. In astronomy, ReIDMM helps track celestial objects like asteroids and space debris using multiple observatories. In biology and ecology, it enables the identification of animals across different camera traps and aids in tracking microscopic organisms in laboratory studies. In physics and engineering, it is used for tracking particles in high-energy physics experiments, monitoring structural changes in materials, and identifying robots or drones in lab automation. Beyond scientific applications, ReIDMM plays a critical role in industries such as retail, where it tracks customer behavior across multiple stores and improves sales and prevents theft. In smart cities, it supports traffic monitoring by identifying vehicles across intersections for improved traffic flow management. In manufacturing, it enables supply chain tracking by locating packages across conveyor belts and warehouse cameras. In autonomous systems, ReIDMM enhances multi-camera sensor fusion and warehouse robotics by identifying pedestrians, obstacles, and objects across different camera views.&lt;/p>
&lt;h3 id="project-objectives">Project Objectives&lt;/h3>
&lt;p>Aligned with the vision of the 2025 Open Source Research Experience (OSRE), this project aims to develop an open-source algorithm for multiple-object re-identification across diverse open-source data streams. As highlighted earlier, this method is expected to have wide-ranging applications in both scientific research and industry. Utilizing an open-source dataset, our focus will be on re-identifying common objects such as vehicles and pedestrians. The primary challenge lies in designing a unified algorithm, ReIDMM, capable of performing robust multi-object re-identification across multiple streams. Users will be able to tag any object as a target in a video or image for tracking across streams. Below is an outline of the algorithms to be developed in this project:&lt;/p>
&lt;ul>
&lt;li>
&lt;p>&lt;strong>Step 1: Target Object Identification&lt;/strong>: Randomly select a target object from an image or video using object detection models such as YOLOv7. These models detect objects by generating bounding boxes around them. Target objects could include vehicles, pedestrians, animals, or other recognizable entities. This step ensures an initial object of interest is chosen for re-identification.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Step 2: Feature Extraction and Embedding&lt;/strong>: Once the target object is identified, extract relevant features such as bounding box coordinates, timestamp, location metadata (if available), and visual characteristics. A multimodal embedding approach is used, where these features are transformed into a numerical representation (embedding vector) that captures the object&amp;rsquo;s unique identity. This allows for efficient comparison across different images or videos.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Step 3: Searching and Matching&lt;/strong>: To find the target object in other images or videos: (1) Extract embeddings of all objects detected in the other images/videos; (2) Compute similarity between the target object’s embedding and those of all detected objects using metrics like cosine similarity or Euclidean distance. (3) Rank objects by similarity, returning the most probable matches. The highest-ranked results are likely to be the same object observed from different angles, lighting conditions, or time frames.&lt;/p>
&lt;/li>
&lt;/ul>
&lt;h3 id="project-deliverables">Project Deliverables&lt;/h3>
&lt;p>This project will deliver three things, software, evaluation results and demo. The software which implements the above ReIDMM algorithm will be hosted on the github repo as open-access repositories. The evaluation results and demo will be published along the github repo.&lt;/p>
&lt;h3 id="reidmm">ReIDMM&lt;/h3>
&lt;ul>
&lt;li>&lt;strong>Topics&lt;/strong>: ReIDMM: Re-identifying Multiple Objects across Multiple Streams`&lt;/li>
&lt;li>&lt;strong>Skills&lt;/strong>: Proficient in Python, Experience with images processing, 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>, &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/linsey-pang/">Linsey Pang&lt;/a>&lt;/li>
&lt;/ul>
&lt;h3 id="reference">Reference:&lt;/h3>
&lt;ul>
&lt;li>&lt;a href="https://medium.datadriveninvestor.com/multiple-object-tracking-using-person-re-identification-f9b7360cda1a" target="_blank" rel="noopener">multiple-object-tracking-using-person&lt;/a>&lt;/li>
&lt;li>Dataset: &lt;a href="https://paperswithcode.com/task/vehicle-re-identification" target="_blank" rel="noopener">Vehicle re-identification dataset and paper&lt;/a> and &lt;a href="https://paperswithcode.com/task/person-re-identification" target="_blank" rel="noopener">Person re-identification data and paper&lt;/a>&lt;/li>
&lt;/ul></description></item><item><title>Seam: Kubernetes-Aware Programmable Networking &amp; Cloud Provisioning</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre25/ucsd/seam/</link><pubDate>Wed, 05 Feb 2025 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre25/ucsd/seam/</guid><description>&lt;p>Seam is a project focused on building a Kubernetes-aware programmable networking and cloud provisioning system. It combines Python, Kubernetes, P4 programming, and SmartNICs to create a robust framework for managing cloud resources, optimizing networking, and provisioning virtual machines. Students will learn about cutting-edge technologies such as Kubernetes, Docker, P4 programming, SmartNICs, KubeVirt, Prometheus, Grafana, and Flask, while working on real-world applications in high-performance computing environments. This project will help students understand the intricacies of cloud resource management and programmable networking, providing them with valuable skills for future careers in software engineering, networking, and DevOps.&lt;/p>
&lt;p>The project involves creating a &lt;strong>Python library&lt;/strong> for provisioning Kubernetes resources, including virtual machines and networking, using tools such as &lt;strong>KubeVirt&lt;/strong> for VM provisioning and &lt;strong>ESnet SENSE&lt;/strong> for network configuration. The library will also integrate monitoring solutions with &lt;strong>Prometheus&lt;/strong> and &lt;strong>Grafana&lt;/strong> for real-time metrics collection and visualization. Students will develop &lt;strong>Flask-based dashboards&lt;/strong> for managing these resources, implement automated pipelines using &lt;strong>GitLab CI/CD&lt;/strong>, and explore full-stack web development, database management with &lt;strong>PostgreSQL&lt;/strong>, and API design.&lt;/p>
&lt;p>In addition, students will gain hands-on experience with &lt;strong>programmable networking&lt;/strong> using &lt;strong>P4&lt;/strong> and &lt;strong>SmartNICs&lt;/strong>, learning how to write P4 programs for dynamic routing, security, and network policy enforcement at the hardware level. The integration of &lt;strong>Kubernetes&lt;/strong>, &lt;strong>SmartNICs&lt;/strong>, and &lt;strong>P4 programming&lt;/strong> will allow for advanced optimizations and efficient management of high-performance cloud environments.&lt;/p>
&lt;p>Thus far, the framework has been developed to allow provisioning of resources within Kubernetes, integrating Prometheus and Grafana for monitoring, and providing an interface for users to manage cloud resources. We aim to extend this by incorporating advanced network policies and improving the web interface.&lt;/p>
&lt;h3 id="seam--kubernetes-resource-provisioning-and-management">Seam / Kubernetes Resource Provisioning and Management&lt;/h3>
&lt;p>The proposed work includes expanding the Python library to support comprehensive &lt;strong>Kubernetes resource provisioning&lt;/strong>, &lt;strong>network management&lt;/strong>, and &lt;strong>virtual machine provisioning&lt;/strong> using &lt;strong>KubeVirt&lt;/strong>. Students will enhance the current implementation to allow users to define &lt;strong>resource limits, CPU/GPU quotas, and network policies&lt;/strong>. They will also integrate with &lt;strong>ESnet SENSE&lt;/strong> to facilitate &lt;strong>L2 networking&lt;/strong>, and explore the use of &lt;strong>Prometheus&lt;/strong> and &lt;strong>Grafana&lt;/strong> for real-time performance monitoring and metrics collection.&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Topics:&lt;/strong> Kubernetes, Python, Cloud Computing, Networking, Programmable Networking, Monitoring, CI/CD&lt;/li>
&lt;li>&lt;strong>Skills:&lt;/strong> Python, Kubernetes, P4 programming, KubeVirt, ESnet SENSE, Docker, GitLab CI/CD, Prometheus, Grafana, PostgreSQL, Flask&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/mohammad-firas-sada/">Mohammad Firas Sada&lt;/a>, &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/thomas-a.-defanti/">Thomas A. DeFanti&lt;/a>, &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/jeffrey-weekley/">Jeffrey Weekley&lt;/a>, &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/derek-weitzel/">Derek Weitzel&lt;/a>, &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/dmitry-mishin/">Dmitry Mishin&lt;/a>&lt;/li>
&lt;/ul>
&lt;h3 id="seam--full-stack-web-development-and-dashboard">Seam / Full-Stack Web Development and Dashboard&lt;/h3>
&lt;p>The proposed work includes building a &lt;strong>Flask-based web dashboard&lt;/strong> using &lt;strong>Bootstrap&lt;/strong> for UI, integrating it with the &lt;strong>Python library&lt;/strong> to enable users to easily provision resources, monitor network performance, and track resource usage in real-time. The dashboard will support &lt;strong>role-based access control (RBAC)&lt;/strong>, allowing for secure multi-user management. Students will also integrate &lt;strong>PostgreSQL&lt;/strong> for managing and storing configurations, logs, and performance metrics.&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Topics:&lt;/strong> Full-Stack Web Development, Flask, Bootstrap, PostgreSQL, Kubernetes, Monitoring, DevOps&lt;/li>
&lt;li>&lt;strong>Skills:&lt;/strong> Web Development, Flask, Bootstrap, PostgreSQL, API Development, Kubernetes&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/mohammad-firas-sada/">Mohammad Firas Sada&lt;/a>, &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/thomas-a.-defanti/">Thomas A. DeFanti&lt;/a>, &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/jeffrey-weekley/">Jeffrey Weekley&lt;/a>, &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/derek-weitzel/">Derek Weitzel&lt;/a>, &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/dmitry-mishin/">Dmitry Mishin&lt;/a>&lt;/li>
&lt;/ul>
&lt;h3 id="seam--cicd-and-gitlab-integration">Seam / CI/CD and GitLab Integration&lt;/h3>
&lt;p>The proposed work includes setting up &lt;strong>GitLab CI/CD pipelines&lt;/strong> for automated &lt;strong>testing, deployment&lt;/strong>, and &lt;strong>maintenance&lt;/strong> of the Python library, Kubernetes resources, and web dashboard. Students will automate the deployment of &lt;strong>P4 programs&lt;/strong>, &lt;strong>Kubernetes deployments&lt;/strong>, and &lt;strong>networking configurations&lt;/strong>. They will also focus on &lt;strong>unit testing, integration testing&lt;/strong>, and the &lt;strong>automation of benchmarking experiments&lt;/strong> to ensure reproducibility of results.&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Topics:&lt;/strong> CI/CD, GitLab, Python, Kubernetes, DevOps, Testing, Automation&lt;/li>
&lt;li>&lt;strong>Skills:&lt;/strong> GitLab CI/CD, Python, Kubernetes, Docker, Automation, Testing, Benchmarking&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/mohammad-firas-sada/">Mohammad Firas Sada&lt;/a>, &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/thomas-a.-defanti/">Thomas A. DeFanti&lt;/a>, &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/jeffrey-weekley/">Jeffrey Weekley&lt;/a>, &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/derek-weitzel/">Derek Weitzel&lt;/a>, &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/dmitry-mishin/">Dmitry Mishin&lt;/a>&lt;/li>
&lt;/ul>
&lt;h3 id="seam--networking--smartnic-programming">Seam / Networking &amp;amp; SmartNIC Programming&lt;/h3>
&lt;p>The proposed work includes writing &lt;strong>P4 programs&lt;/strong> to control network traffic flow, enforce network security policies, and optimize data transfer across the Kubernetes cluster. Students will gain experience with &lt;strong>SmartNICs&lt;/strong> (Xilinx Alveo U55C, SN1000, NVIDIA Bluefield 2) and &lt;strong>Tofino switches&lt;/strong>, using P4 to write &lt;strong>network policies&lt;/strong> and integrate with the &lt;strong>Kubernetes network layer&lt;/strong> (Multus, Calico). Students will also explore &lt;strong>gRPC APIs&lt;/strong> for dynamically adjusting network policies and provisioning virtual network interfaces in real time.&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Topics:&lt;/strong> Networking, P4 Programming, SmartNICs, Kubernetes Networking, Cloud Computing&lt;/li>
&lt;li>&lt;strong>Skills:&lt;/strong> P4, Networking, SmartNICs, Kubernetes Networking, Multus, Calico, gRPC&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/mohammad-firas-sada/">Mohammad Firas Sada&lt;/a>, &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/thomas-a.-defanti/">Thomas A. DeFanti&lt;/a>, &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/jeffrey-weekley/">Jeffrey Weekley&lt;/a>, &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/derek-weitzel/">Derek Weitzel&lt;/a>, &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/dmitry-mishin/">Dmitry Mishin&lt;/a>&lt;/li>
&lt;/ul></description></item><item><title>WaDAR</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre25/ucsc/wadar/</link><pubDate>Wed, 05 Feb 2025 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre25/ucsc/wadar/</guid><description>&lt;p>&lt;a href="https://github.com/jlab-sensing/wadar" target="_blank" rel="noopener">WaDAR&lt;/a> (Water Radar) is an innovative, low-cost, hybrid approach to soil moisture sensing that combines the benefits of in-ground (in situ) and remote sensing technologies. Traditional soil moisture measurement methods suffer from drawbacks: in situ sensors are expensive and difficult to maintain, while remote sensing offers lower accuracy and resolution. WaDAR bridges this gap by using inexpensive underground backscatter tags paired with above-ground radars, enabling completely wireless, high-resolution soil moisture monitoring.&lt;/p>
&lt;h2 id="key-features-of-wadar">Key Features of WaDAR&lt;/h2>
&lt;ul>
&lt;li>Uses &lt;strong>RF backscatter tags&lt;/strong> buried underground to provide high-accuracy soil moisture readings.&lt;/li>
&lt;li>Uses &lt;strong>ultra-wideband radar&lt;/strong> for above-ground sensing.&lt;/li>
&lt;li>Offers an average error of just 1.4%, comparable to state-of-the-art commercial sensors.&lt;/li>
&lt;li>Reduces deployment costs significantly, making it accessible for widespread agricultural use.&lt;/li>
&lt;li>Supports real-time, scalable, and maintenance-free soil moisture monitoring for farmers.&lt;/li>
&lt;/ul>
&lt;h3 id="improving-and-optimizing-data-processing-pipeline-for-more-accurate-soil-moisture-measurements">Improving and Optimizing Data Processing Pipeline for More Accurate Soil Moisture Measurements&lt;/h3>
&lt;ul>
&lt;li>&lt;strong>Topics:&lt;/strong> &lt;code>Digital Signal Processing&lt;/code> &lt;code>Machine Learning&lt;/code>&lt;/li>
&lt;li>&lt;strong>Skills:&lt;/strong> C/embedded, signal processing, machine learning, MATLAB (optional)&lt;/li>
&lt;li>&lt;strong>Difficulty:&lt;/strong> Moderate&lt;/li>
&lt;li>&lt;strong>Size:&lt;/strong> Medium (175 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="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/eric-vetha/">Eric Vetha&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>Enhance the accuracy of soil moisture measurements by refining the data processing pipeline.&lt;/p>
&lt;p>Tasks:&lt;/p>
&lt;ul>
&lt;li>Develop and test algorithms for noise reduction and signal improvement.&lt;/li>
&lt;li>Implement advanced filtering and statistical techniques to improve measurement precision.&lt;/li>
&lt;li>Validate improvements using real-world field data.&lt;/li>
&lt;li>Translate algorithms into embedded to be implemented in real-time embedded hardware.&lt;/li>
&lt;/ul>
&lt;h3 id="improving-backscatter-tag-pcb">Improving Backscatter Tag PCB&lt;/h3>
&lt;ul>
&lt;li>&lt;strong>Topics:&lt;/strong> &lt;code>Hardware Design&lt;/code> &lt;code>Signal Processing&lt;/code>&lt;/li>
&lt;li>&lt;strong>Skills:&lt;/strong> PCB design, RF knowledge&lt;/li>
&lt;li>&lt;strong>Difficulty:&lt;/strong> Moderate&lt;/li>
&lt;li>&lt;strong>Size:&lt;/strong> Medium (175 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="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/eric-vetha/">Eric Vetha&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>Enhance the performance of WaDAR&amp;rsquo;s backscatter tags by optimizing PCB design for improved signal-to-noise ratio (SNR) and implementing a communication protocol for tag identification.&lt;/p>
&lt;p>Tasks:&lt;/p>
&lt;ul>
&lt;li>Redesign PCB for improved readings.&lt;/li>
&lt;li>Implement and test a communication protocol to distinguish between multiple tags.&lt;/li>
&lt;li>Evaluate hardware changes in real-world field conditions.&lt;/li>
&lt;li>Optimize power consumption and scalability for practical deployment.&lt;/li>
&lt;/ul></description></item><item><title>Mediglot</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre25/ucsc/polyphy/</link><pubDate>Tue, 04 Feb 2025 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre25/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>. Recent projects, such as &lt;a href="https://github.com/PolyPhyHub/PolyGlot" target="_blank" rel="noopener">Polyglot&lt;/a> and &lt;a href="https://github.com/Ayush-Sharma410/MediGlot" target="_blank" rel="noopener">Mediglot&lt;/a> have focused on using PolyPhy to better visualize language embeddings.&lt;/p>
&lt;h3 id="medicinal-language-embeddings">Medicinal Language Embeddings&lt;/h3>
&lt;ul>
&lt;li>&lt;strong>Topics:&lt;/strong> &lt;code>Large Language Models&lt;/code> &lt;code>NLP&lt;/code> &lt;code>Embeddings&lt;/code> &lt;code>Medicine&lt;/code>&lt;/li>
&lt;li>&lt;strong>Skills:&lt;/strong> Python, JavaScript, Data Science, Technical Communication&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:kdeol@ualberta.ca">Kiran Deol&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>This project aims to refine and enhance Mediglot, a web application for visualizing 3D medicinal embeddings, which extends the Polyglot app and leverages the PolyPhy toolkit for network-inspired data science. Mediglot currently enables users to explore high-dimensional vector representations of medicines (derived from their salt compositions) in a 3D space using UMAP, as well as analyze similarity through the innovative Monte-Carlo Physarum Machine (MCPM) metric. Unlike traditional language data, medicinal embeddings do not have an inherent sequential structure. Instead, we must work with the salt compositions of each medicine to create embeddings that are faithful to the intended purpose of each medicine.&lt;/p>
&lt;p>This year, we would like to focus on exploring and integrating state-of-the-art AI techniques and algorithms to improve Mediglot&amp;rsquo;s clustering capabilities and its representation of medicinal data in 3D. The contributor will experiment with advanced large language models (LLMs) and cutting-edge AI methods to develop innovative approaches for refining clustering and extracting deeper insights from medicinal embeddings. Beyond LLMs, we would like to experiment with more traditional language processing methods to design novel embedding procedures. Additionally, we would like to experiment with other similarity metrics. While the similarity of two medicines depends on the initial embedding, we would like to examine the effects of different metrics on the kinds of insights a user can extract. Finally, the contributor is expected to evaluate and compare different algorithms for dimensionality reduction to enhance the faithfulness of the visualization and its interpretability.&lt;/p>
&lt;p>The ideal contributor for this project has experience with Python (and common scientific toolkits such as NumPy, Pandas, SciPy). They will also need some experience with JavaScript and web development (MediGlot is distributed as a vanilla JS web app). Knowledge of embedding techniques for language processing is highly recommended.&lt;/p>
&lt;p>&lt;strong>Specific tasks:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>Closely work with the mentors to understand the context of the project and its detailed requirements in preparation for the proposal.&lt;/li>
&lt;li>Become acquainted with the tooling (PolyPhy, PolyGlot, Mediglot) prior to the start of the project period.&lt;/li>
&lt;li>Explore different embedding techniques for medicinal data (including implementing novel embedding procedures).&lt;/li>
&lt;li>Explore different dimensionality reduction techniques, with a focus on faithful visualizations.&lt;/li>
&lt;li>Document the process and resulting findings in a publicly available report.&lt;/li>
&lt;/ul>
&lt;h3 id="enhancing-polyphy-web-application">Enhancing PolyPhy Web Application&lt;/h3>
&lt;ul>
&lt;li>&lt;strong>Topics:&lt;/strong> &lt;code>Web Development&lt;/code> &lt;code>UI/UX Design&lt;/code> &lt;code>Full Stack Development&lt;/code> &lt;code>JavaScript&lt;/code> &lt;code>Next.js&lt;/code> &lt;code>Node.js&lt;/code>&lt;/li>
&lt;li>&lt;strong>Skills:&lt;/strong> Full Stack Web Development, UI/UX Design, JavaScript, Next.js, Node.js, Technical Communication&lt;/li>
&lt;li>&lt;strong>Difficulty:&lt;/strong> Challenging&lt;/li>
&lt;li>&lt;strong>Size:&lt;/strong> Medium (175 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:kdeol@ualberta.ca">Kiran Deol&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>This project aims to revamp and enhance the PolyPhy web platform to better support contributors, users, and researchers. The goal is to optimize the website’s UI/UX, improve its performance, and integrate Mediglot to provide users with a seamless experience in visualizing both general network structures and 3D medicinal embeddings.&lt;/p>
&lt;p>The contributor will be responsible for improving the website’s overall look, feel, and functionality, ensuring a smooth and engaging experience for both contributors and end-users. This includes addressing front-end and back-end challenges, optimizing the platform for better accessibility, and ensuring seamless integration with Mediglot.&lt;/p>
&lt;p>The ideal candidate should have experience in full-stack web development, particularly with &lt;strong>Next.js&lt;/strong>, &lt;strong>JavaScript&lt;/strong>, and &lt;strong>Node.js&lt;/strong>, and should be familiar with UI/UX design principles. A strong ability to communicate effectively, both in writing and through code, is essential for this role.&lt;/p>
&lt;p>&lt;strong>Specific tasks:&lt;/strong>&lt;/p>
&lt;ol>
&lt;li>&lt;strong>Collaborate with mentors&lt;/strong> to understand the project&amp;rsquo;s goals and the specific requirements for the website improvements.&lt;/li>
&lt;li>&lt;strong>UI/UX Redesign&lt;/strong>:
&lt;ul>
&lt;li>Redesign and enhance the website’s navigation, layout, and visual elements to create an intuitive and visually engaging experience.&lt;/li>
&lt;li>Improve mobile responsiveness for broader accessibility across devices.&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>&lt;strong>Website Performance &amp;amp; Stability&lt;/strong>:
&lt;ul>
&lt;li>Identify and resolve performance bottlenecks, bugs, or issues affecting speed, stability, and usability.&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>&lt;strong>Mediglot Integration&lt;/strong>:
&lt;ul>
&lt;li>Integrate the Mediglot web application with PolyPhy, ensuring seamless functionality and a unified user experience for visualizing medicinal data alongside general network reconstructions.&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>&lt;strong>Documentation&lt;/strong>:
&lt;ul>
&lt;li>Document the development process, challenges, and solutions in a clear and organized manner, ensuring transparent collaboration with mentors and the community.&lt;/li>
&lt;/ul>
&lt;/li>
&lt;/ol></description></item><item><title>Type Narrowing: A Language Design Benchmark</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre25/uutah/type-narrowing/</link><pubDate>Sat, 01 Feb 2025 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre25/uutah/type-narrowing/</guid><description>&lt;p>Untyped languages such as JavaScript and Python provide a flexible starting
point for software projects, but eventually, the lack of reliable types
makes code hard to debug and maintain.
Gradually typed languages such
as
&lt;a href="https://www.typescriptlang.org/" target="_blank" rel="noopener">TypeScript&lt;/a>,
&lt;a href="https://flow.org/" target="_blank" rel="noopener">Flow&lt;/a>,
&lt;a href="https://www.mypy-lang.org/" target="_blank" rel="noopener">Mypy&lt;/a>,
and
&lt;a href="https://microsoft.github.io/pyright/#/" target="_blank" rel="noopener">Pyright&lt;/a>
address the problem with type checkers that can reason about an
ever-growing subset of untyped code.
Widening the subset with precise types is an ongoing challenge.&lt;/p>
&lt;p>Furthermore, designs for precise gradual types need to be reproducible
across languages.
Ideas that works well in one language need to be validated
in other contexts in a principled, scientific way to separate
deep insights from language-specific hacks.&lt;/p>
&lt;p>Type narrowing is a key feature of gradual languages.
Narrowing uses type tests in code to refine types and push
information forward along the paths that the program may follow.
For example, when a type test checks an object field, later
code can trust the type of the field:&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">// item :: JSON Object
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">if typeof(item[&amp;#34;price&amp;#34;] == &amp;#34;number&amp;#34;):
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> // item :: JSON Object,
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> // where field &amp;#34;price&amp;#34; :: Number
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> return item[&amp;#34;price&amp;#34;] + (item[&amp;#34;price&amp;#34;] * 0.30) // add tax
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Nearly every gradual language agrees that &lt;em>some form&lt;/em> of type narrowing is needed,
but there is widespread disagreement about how much support is enough.
TypeScript lets users define custom type tests, but it does not analyze
those tests to see whether they are reliable.
Flow does analyze tests.
TypeScript does not allow asymmetric type tests (example: &lt;code>is_even_number&lt;/code>),
but Flow, Mypy and Pyright all do!
None of the above track information compositionally through program
execution, but another gradual language called Typed Racket does
Is the extra machinery in Typed Racket really worth the effort?&lt;/p>
&lt;p>Over the past several months, we have curated a language design
benchmark for type narrowing, &lt;strong>If-T&lt;/strong>:&lt;/p>
&lt;ul>
&lt;li>&lt;a href="https://github.com/utahplt/ift-benchmark" target="_blank" rel="noopener">https://github.com/utahplt/ift-benchmark&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>The benchmark presents type system challenges in a language-agnostic way
to facilitate reproducibility across languages.
It also includes a &lt;a href="https://github.com/utahplt/ifT-benchmark/blob/main/DATASHEET.md" target="_blank" rel="noopener">&lt;em>datasheet&lt;/em>&lt;/a>
to encourage cross-language comparisons
that focus on fundamental typing features rather than incidental difference
between languages.
So far, we have implemented the benchmark for five gradual languages.
There are many others to explore, and much more to learn.&lt;/p>
&lt;p>The goal of this project is to replicate and extend the If-T type narrowing
benchmark.
Outcomes include a deep understanding of principled type narrowing,
and of how to construct a benchmark that enables reproducible
cross-language comparisons.&lt;/p>
&lt;p>Related Work:&lt;/p>
&lt;ul>
&lt;li>Type Narrowing in TypeScript
&lt;a href="https://www.typescriptlang.org/docs/handbook/2/narrowing.html" target="_blank" rel="noopener">https://www.typescriptlang.org/docs/handbook/2/narrowing.html&lt;/a>&lt;/li>
&lt;li>Type Narrowing in Python
&lt;a href="https://typing.readthedocs.io/en/latest/spec/narrowing.html#typeguard" target="_blank" rel="noopener">https://typing.readthedocs.io/en/latest/spec/narrowing.html#typeguard&lt;/a>&lt;/li>
&lt;li>Logical Types for Untyped Languages
&lt;a href="https://doi.org/10.1145/1863543.1863561" target="_blank" rel="noopener">https://doi.org/10.1145/1863543.1863561&lt;/a>&lt;/li>
&lt;/ul>
&lt;h3 id="evaluate-new-gradual-languages">Evaluate New Gradual Languages&lt;/h3>
&lt;ul>
&lt;li>Topics: &lt;code>benchmark implementation&lt;/code>, &lt;code>programming languages&lt;/code>, &lt;code>types&lt;/code>&lt;/li>
&lt;li>Skills: Ruby, Lua, Python, Clojure, or PHP&lt;/li>
&lt;li>Difficulty: Medium&lt;/li>
&lt;li>Size: Small&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>Bring the If-T Benchmark to new typecheckers.
Examples include
&lt;a href="https://sorbet.org/" target="_blank" rel="noopener">Sorbet&lt;/a>,
&lt;a href="https://hacklang.org/" target="_blank" rel="noopener">Hack&lt;/a>,
&lt;a href="https://luau.org/" target="_blank" rel="noopener">Luau&lt;/a>,
&lt;a href="https://pyre-check.org/" target="_blank" rel="noopener">Pyre&lt;/a>,
&lt;a href="https://github.com/facebookincubator/cinder" target="_blank" rel="noopener">Cinder / Static Python&lt;/a>,
&lt;a href="https://typedclojure.org/" target="_blank" rel="noopener">Typed Clojure&lt;/a>,
and
(potentially) &lt;a href="https://elixir-lang.org/blog/2024/06/12/elixir-v1-17-0-released/" target="_blank" rel="noopener">Elixir&lt;/a>.
Conduct a scientific, cross-language analysis to discuss the implications
of benchmark results.&lt;/p>
&lt;h3 id="do-unsound-narrowings-lead-to-exploits">Do Unsound Narrowings Lead to Exploits?&lt;/h3>
&lt;ul>
&lt;li>Topics: &lt;code>corpus study&lt;/code>, &lt;code>types&lt;/code>, &lt;code>counterexamples&lt;/code>&lt;/li>
&lt;li>Skills: TypeScript or Python&lt;/li>
&lt;li>Difficulty: Medium&lt;/li>
&lt;li>Size: Small&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>Investigate type narrowing in practice through a corpus study of software projects.
Use the GitHub or Software Heritage APIs to search code for user-defined predicates
and other instances of narrowing. Search for vulnerabilities due to the unsound
typing of user-defined predicates.&lt;/p></description></item><item><title>Environmental NeTworked Sensor (ENTS)</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre25/ucsc/ents/</link><pubDate>Fri, 31 Jan 2025 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre25/ucsc/ents/</guid><description>&lt;h3 id="ents-i-web-portal-for-large-scale-sensor-networks">ENTS I: Web portal for large-scale sensor networks&lt;/h3>
&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/osre25/ucsc/ents/osp1_huda3c1d46887767e16b865c47973b8288_360491_2d797937cbe25a879de96b44cb5c65b3.webp 400w,
/project/osre25/ucsc/ents/osp1_huda3c1d46887767e16b865c47973b8288_360491_baae6484e015277af7b09e866b6869f5.webp 760w,
/project/osre25/ucsc/ents/osp1_huda3c1d46887767e16b865c47973b8288_360491_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre25/ucsc/ents/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, Frontend, 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:alevy1@ucsc.edu">Alec Levy&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>The Environmental NeTworked Sensor (ENTS) platform, formally Open Sensing Platform (OSP), implements data visualization website 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;p>Below is a list of project ideas that would be beneficial to the ENTS project. You are not limited to the following projects, and encourage new ideas that enhance the platform:&lt;/p>
&lt;ul>
&lt;li>Improve streaming functionality&lt;/li>
&lt;li>Generic interface for sensor measurements&lt;/li>
&lt;li>Logger registration&lt;/li>
&lt;li>Over the air (OTA) configuration updates&lt;/li>
&lt;li>Implement unit tests and API documentation&lt;/li>
&lt;/ul>
&lt;h3 id="ents-ii-hardware-to-for-large-scale-field-sensor-networks">ENTS II: Hardware to for large-scale field sensor networks&lt;/h3>
&lt;p>
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="Hardware" srcset="
/project/osre25/ucsc/ents/featured_huecd1356655ddd10d106d2d602a359510_6281233_b1317e5e84a756a1081cbeec0e17af86.webp 400w,
/project/osre25/ucsc/ents/featured_huecd1356655ddd10d106d2d602a359510_6281233_2fc59e21c5096f7f08aea36f5769242e.webp 760w,
/project/osre25/ucsc/ents/featured_huecd1356655ddd10d106d2d602a359510_6281233_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre25/ucsc/ents/featured_huecd1356655ddd10d106d2d602a359510_6281233_b1317e5e84a756a1081cbeec0e17af86.webp"
width="760"
height="460"
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> 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:jlin143@ucsc.edu">Jack Lin&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>The Environmental NeTworked Sensor (ENTS) node 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-21/" target="_blank" rel="noopener">TEROS-21 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>ENTS 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;p>Below is a list of project ideas that would be beneficial to the ENTS project. You are not limited to the following projects, and encourage new ideas that enhance the platform:&lt;/p>
&lt;ul>
&lt;li>Backup logging via SD card&lt;/li>
&lt;li>I2C multiplexing for multiple of the same sensors&lt;/li>
&lt;li>Batch sensor measurement uploading&lt;/li>
&lt;/ul></description></item><item><title>Causeway: Scaling Experiential Learning Through Micro-Roles</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre25/ucsc/causeway/</link><pubDate>Thu, 30 Jan 2025 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre25/ucsc/causeway/</guid><description>&lt;p>&lt;a href="https://causeway.web.app" 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 UI components of a web application as well as containers that contain multiple UI components and are responsible for fetching data from the backend and handling events and updates to the database. We&amp;rsquo;d like to extend the content to cover defining the database schema and entire applications, and to other topics beyond web development like AI/ML. We&amp;rsquo;d like to add quizzes to the experience and explore ways to use Generative AI to augment the learning experience, e.g. to support planning, reflection, and assessment. Finally, we&amp;rsquo;d like to instrument the application with logs and analytics so we can better measure impact and learning outcomes, and develop a stronger CI/CD pipeline.&lt;/p>
&lt;h3 id="causeway--improving-the-core-infrastructure">Causeway / Improving the Core Infrastructure&lt;/h3>
&lt;p>The proposed work includes adding logging, analytics, and a production-level CI/CD pipeline, adding a robust testing framework, and refactoring some of our code into seperate modules. Both roles will also contribute to running usability studies and documenting the platform.&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--quizzes-and-generative-ai">Causeway / Quizzes and Generative AI&lt;/h3>
&lt;p>The proposed work includes extending the application to support quizzes, adding quizzes for the existing tasks, and exploring the use of generative AI to support the quizzes feature. Both roles will also contribute to running usability studies and documenting the platform.&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, Generative AI&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></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/osre25/openroad/openroad/</link><pubDate>Sun, 19 Jan 2025 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre25/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="improving-code-quality-in-openroad">Improving Code Quality in OpenROAD&lt;/h3>
&lt;ul>
&lt;li>&lt;strong>Topics&lt;/strong>: &lt;code>Coding Best Practices in C++&lt;/code>, &lt;code>Code Quality Tooling&lt;/code>, &lt;code>Continuous Integration&lt;/code>&lt;/li>
&lt;li>&lt;strong>Skills&lt;/strong>: C++&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>Mentors&lt;/strong>: &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/matt-liberty/">Matt Liberty&lt;/a> &amp;amp; &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/arthur-koucher/">Arthur Koucher&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>OpenROAD is a large and complex program. This project is to improve the code quality through resolving issues flagged by tools like Coverity and clang-tidy. New tools like the clang sanitizers ASAN/TSAN/UBSAN should also be set up and integrated with the Jenkins CI.&lt;/p>
&lt;h3 id="gui-testing-in-openroad">GUI Testing in OpenROAD&lt;/h3>
&lt;ul>
&lt;li>&lt;strong>Topics&lt;/strong>: &lt;code>Testing&lt;/code>, &lt;code>Continuous Integration&lt;/code>&lt;/li>
&lt;li>&lt;strong>Skills&lt;/strong>: C++, Qt&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/matt-liberty/">Matt Liberty&lt;/a> &amp;amp; &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/peter-gadfort/">Peter Gadfort&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>The OpenROAD GUI is a crucial set of functionality for users to see and investigate their design. GUI testing is specialized and rather different from standard unit testing. The GUI therefore needs improvements to its testing to cover both interaction and rendering. The GUI uses the Qt framework. An open-source testing tool like &lt;a href="https://github.com/faaxm/spix" target="_blank" rel="noopener">https://github.com/faaxm/spix&lt;/a> will be set up and key tests developed. This will provide the framework for all future testing.&lt;/p>
&lt;h3 id="rectilinear-floorplans-in-openroad">Rectilinear Floorplans in OpenROAD&lt;/h3>
&lt;ul>
&lt;li>&lt;strong>Topics&lt;/strong>: &lt;code>Electronic Design Automation&lt;/code>, &lt;code>Algorithms&lt;/code>&lt;/li>
&lt;li>&lt;strong>Skills&lt;/strong>: C++, data structures and algorithms&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/eder-monteiro/">Eder Monteiro&lt;/a> &amp;amp; &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/augusto-berndt/">Augusto Berndt&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>OpenROAD supports block floorplans that are rectangular in shape. Some designs may require more complex shapes to fit. This project extends the tool to support rectilinear polygon shapes as floorplans. This will require upgrading data structures and algorithms in various parts of OpenROAD including floor plan generation, pin placement, and global placement.&lt;/p>
&lt;h3 id="lef-reader-and-database-enhancements-in-openroad">LEF Reader and Database Enhancements in OpenROAD&lt;/h3>
&lt;ul>
&lt;li>&lt;strong>Topics&lt;/strong>: &lt;code>Electronic Design Automation&lt;/code>, &lt;code>Database&lt;/code>, &lt;code>Parsing&lt;/code>&lt;/li>
&lt;li>&lt;strong>Skills&lt;/strong>: Boost Spirit parsers, Database, C++&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>Mentors&lt;/strong>: &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/osama-hammad/">Osama Hammad&lt;/a> &amp;amp; &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/ethan-mahintorabi/">Ethan Mahintorabi&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>LEF (Library Exchange Format) is a standard format for describing physical design rules for integrated circuits. OpenROAD has support for many constructs but some newer ones for advanced process nodes are not supported. This project is to support parsing such information and storing in the OpenDB for use by the rest of the tool.&lt;/p>
&lt;h3 id="orassistant---llm-data-engineering-and-testing">ORAssistant - LLM 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;code>Full-Stack Development&lt;/code>&lt;/li>
&lt;li>&lt;strong>Skills&lt;/strong>: large language model engineering, database, evaluation, CI/CD, open-source or related software development, full-stack&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/jack-luar/">Jack Luar&lt;/a> &amp;amp; &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/palaniappan-r/">Palaniappan R&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>This project is aimed at enhancing robustness and accuracy for &lt;a href="https://woset-workshop.github.io/PDFs/2024/11_ORAssistant_A_Custom_RAG_ba.pdf" target="_blank" rel="noopener">OR Assistant&lt;/a>, the &lt;a href="https://github.com/The-OpenROAD-Project/ORAssistant" target="_blank" rel="noopener">conversational assistant for OpenROAD&lt;/a> through comprehensive testing and evaluation. You will work with members of the OpenROAD team and other researchers to enhance the existing dataset to cover a wide range of use cases to deliver accurate responses more efficiently. This project will focus on data engineering and benchmarking and you will collaborate on a project on the LLM model engineering. Tasks include: creating evaluation pipelines, building databases to gather feedback, improving CI/CD, writing documentation, and improving the backend and frontend services as needed (non-exhaustive). You will gain valuable experience and skills in understanding chip design flows and applications. Open to proposals from all levels of ML practitioners.&lt;/p>
&lt;h3 id="orassistant---llm-model-engineering">ORAssistant - LLM Model Engineering&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/jack-luar/">Jack Luar&lt;/a> &amp;amp; &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/palaniappan-r/">Palaniappan R&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>This project is aimed at enhancing robustness and accuracy for &lt;a href="https://woset-workshop.github.io/PDFs/2024/11_ORAssistant_A_Custom_RAG_ba.pdf" target="_blank" rel="noopener">OR Assistant&lt;/a>, the &lt;a href="https://github.com/The-OpenROAD-Project/ORAssistant" target="_blank" rel="noopener">conversational assistant for OpenROAD&lt;/a> through enhanced model architectures. You will work with members of the OpenROAD team and other researchers to explore alternate architectures beyond the existing RAG-based implementation. This project will focus on improving reliability and accuracy of the existing model architecture. You will collaborate on a tandem project on data engineering for OR assistant. Tasks include: reviewing and understanding the state-of-the-art in retrieval augmented generation, implementing best practices, caching prompts, improving relevance and accuracy metrics, writing documentation and improving the backend and frontend services as needed (non-exhaustive). You will gain valuable experience and skills in understanding chip design flows and applications. Open to proposals from all levels of ML practitioners.&lt;/p></description></item><item><title>RAG-ST: Retrieval-Augmented Generation for Spatial Transcriptomics</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre25/uci/rag-st/</link><pubDate>Wed, 15 Jan 2025 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre25/uci/rag-st/</guid><description>&lt;ul>
&lt;li>&lt;strong>Topics:&lt;/strong> bioinformatics, spatial transcriptomics, gene expression generation, retrieval-augmented generation, large models&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 familiarity with machine learning libraries such as PyTorch.&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>&lt;strong>Data Analysis:&lt;/strong>
&lt;ul>
&lt;li>Experience with spatial transcriptomics datasets and statistical modeling.&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>&lt;strong>Machine Learning:&lt;/strong>
&lt;ul>
&lt;li>Understanding of vision models, retrieval-based systems, and MLP architectures.&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>&lt;strong>Bioinformatics Knowledge (preferred):&lt;/strong>
&lt;ul>
&lt;li>Familiarity with scRNA-seq data integration and computational biology tools.&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 RAG models, building a robust database, and ensuring interpretable predictions, this project involves substantial computational and data preparation work.&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;h3 id="project-idea-description">&lt;strong>Project Idea Description&lt;/strong>&lt;/h3>
&lt;p>Spatial transcriptomics (ST) is a revolutionary technology that provides spatially resolved gene expression measurements, enabling researchers to study cellular behaviour within tissues with unprecedented detail. This technology has transformed our understanding of complex biological systems, such as disease progression, tissue development, and cellular heterogeneity. However, the widespread adoption of ST is limited by its high cost and technical requirements.&lt;/p>
&lt;p>Histology imaging, on the other hand, is far more accessible and cost-effective. If gene expression could be accurately predicted from histology images, it would enable researchers to leverage these abundant images for high-resolution biological insights without the need for expensive spatial transcriptomics experiments. This task has immense potential to democratize spatial transcriptomics research and significantly reduce costs.&lt;/p>
&lt;h3 id="challenges-in-current-approaches">&lt;strong>Challenges in Current Approaches&lt;/strong>&lt;/h3>
&lt;p>Current methods for predicting gene expression from histology images typically involve:&lt;/p>
&lt;ol>
&lt;li>Using large vision models to encode histology image patches into embeddings.&lt;/li>
&lt;li>Employing Multi-Layer Perceptrons (MLPs) to map these embeddings to gene expression profiles.&lt;/li>
&lt;/ol>
&lt;p>While these approaches have shown promise, they suffer from two critical limitations:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Accuracy&lt;/strong>: The MLP-based mappings often fail to fully capture the biological complexity encoded in the histology images, leading to suboptimal predictions.&lt;/li>
&lt;li>&lt;strong>Interpretability&lt;/strong>: These models act as black boxes, providing no insight into the underlying biological rationale for the predictions. Researchers cannot determine why a specific gene expression profile was generated, limiting trust and utility in biological contexts.&lt;/li>
&lt;/ul>
&lt;h3 id="project-motivation">&lt;strong>Project Motivation&lt;/strong>&lt;/h3>
&lt;p>To overcome these limitations, this project proposes a novel &lt;strong>Retrieval-Augmented Generation (RAG)&lt;/strong> framework for spatial transcriptomics. Instead of relying solely on black-box MLPs, RAG-ST will:&lt;/p>
&lt;ul>
&lt;li>Retrieve relevant examples from a curated database of paired histology images, scRNA-seq data, and gene expression profiles.&lt;/li>
&lt;li>Use these retrieved examples to inform and enhance the generation process, resulting in predictions that are both more accurate and biologically interpretable.&lt;/li>
&lt;/ul>
&lt;p>This approach not only grounds predictions in biologically meaningful data but also provides transparency by revealing which database entries influenced the results.&lt;/p>
&lt;h3 id="project-objectives">&lt;strong>Project Objectives&lt;/strong>&lt;/h3>
&lt;ol>
&lt;li>&lt;strong>Database Construction&lt;/strong>:
&lt;ul>
&lt;li>Curate a large and diverse database of histology images paired with scRNA-seq and gene expression data.&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>&lt;strong>Model Development&lt;/strong>:
&lt;ul>
&lt;li>Develop a RAG framework combining vision-based encoders and retrieval-enhanced generation techniques.&lt;/li>
&lt;li>Incorporate interpretability mechanisms to link predicted gene expressions to retrieved examples.&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>&lt;strong>Evaluation and Benchmarking&lt;/strong>:
&lt;ul>
&lt;li>Assess RAG-ST against state-of-the-art methods, focusing on accuracy, interpretability, and biological validity.&lt;/li>
&lt;/ul>
&lt;/li>
&lt;/ol>
&lt;h3 id="project-deliverables">&lt;strong>Project Deliverables&lt;/strong>&lt;/h3>
&lt;ol>
&lt;li>&lt;strong>Curated Database&lt;/strong>:
&lt;ul>
&lt;li>A publicly available, well-documented database of histology images and gene expression profiles.&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>&lt;strong>RAG-ST Framework&lt;/strong>:
&lt;ul>
&lt;li>An open-source Python implementation of the RAG-ST model, with retrieval, generation, and visualization tools.&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>&lt;strong>Benchmark Results&lt;/strong>:
&lt;ul>
&lt;li>Comprehensive evaluations demonstrating the benefits of RAG-ST over conventional pipelines.&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>&lt;strong>Documentation and Tutorials&lt;/strong>:
&lt;ul>
&lt;li>User-friendly guides to facilitate adoption by the spatial transcriptomics research community.&lt;/li>
&lt;/ul>
&lt;/li>
&lt;/ol>
&lt;h3 id="impact">&lt;strong>Impact&lt;/strong>&lt;/h3>
&lt;p>By integrating retrieval-augmented generation with large models, RAG-ST represents a paradigm shift in spatial transcriptomics. It offers a cost-effective, accurate, and interpretable solution for gene expression prediction, democratizing access to high-quality spatial transcriptomic insights and fostering advancements in biological research.&lt;/p>
&lt;hr></description></item><item><title>Writing a blog about your OSRE 2025 project</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre25/ucsc/admin/20241021-admin/</link><pubDate>Mon, 21 Oct 2024 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre25/ucsc/admin/20241021-admin/</guid><description>&lt;p>OSRE participants are required to blog three times during their summer program. The first blog is a chance to introduce yourself and your project. The second blog occurs around the mid-point of the project and a final blog post is expected as part of you final project delverable. The organization administrator will send emails with specific dates. Instructions for the blog are indicated below. All blogs should include links to proposals, presentations, links to any deliverables/products as well as an overview of the student&amp;rsquo;s experience. Check out the student pages from previous years to get an idea of content / size.&lt;/p>
&lt;p>We will also ask students and contributors to provide regular status updates which will help track your activities. The organization administrator will provide more details once the program work begins.&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>- 2025 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/osre25/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. &lt;a href="mailto:ospo-info-group@ucsc.edu/">Email OSRE Admins&lt;/a> with questions.&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;osre25&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/osre25/ORGANIZATION/PROJECTNAME) my [proposal](https://...) under the mentorship of MENTOR aims to ...
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div></description></item><item><title>Improving Usability and Performance in cc-snapshot: My Midterm Update</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre25/uchicago/cc-snapshot/20250724-zahratm/</link><pubDate>Wed, 24 Jul 2024 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre25/uchicago/cc-snapshot/20250724-zahratm/</guid><description>&lt;p>Hi! I&amp;rsquo;m Zahra Temori, a rising junior studying Computer Science at the University of Delaware. This summer, I’ve had the exciting opportunity to participate in the Chameleon Summer Reproducibility Program, where I’ve been working under the mentorship of Paul Marshall.
In this blog post, I’d love to share a midterm update on my project &lt;a href="https://github.com/ChameleonCloud/cc-snapshot" target="_blank" rel="noopener">cc-snapshot&lt;/a> and highlight what I’ve accomplished so far, what I’ve learned, and what’s coming next. It&amp;rsquo;s been a challenging but rewarding experience diving into real-world research and contributing to tools that help make science more reproducible!&lt;/p>
&lt;h2 id="project-overview">Project Overview&lt;/h2>
&lt;p>CC-Snapshot is a powerful tool on the Chameleon testbed that enables users to package their customized environments for reproducibility and experiment replication. In research, reproducibility is essential. It allows scientists to run experiments consistently, share complete setups with others, and avoid environment-related errors. However, the current snapshotting mechanism has limitations that make it unreliable and inefficient, particularly in terms of usability and performance. These issues can slow down workflows and create barriers for users trying to reproduce results. Our goal is to improve both the usability and performance of the cc-snapshot tool. A more user-friendly and optimized system means that users can create and restore snapshots more quickly and easily, without needing to manually rebuild environments, ultimately saving time and improving reliability in scientific computing.&lt;/p>
&lt;h2 id="progress-so-far">Progress So Far&lt;/h2>
&lt;p>To structure the work, we divided the project into two main phases:&lt;/p>
&lt;ol>
&lt;li>Improving usability, and&lt;/li>
&lt;li>Optimizing performance.&lt;/li>
&lt;/ol>
&lt;p>I’ve nearly completed the first phase and have just started working on the second.&lt;/p>
&lt;h2 id="phase-one--usability-improvements">Phase One – Usability Improvements&lt;/h2>
&lt;p>The original version of the cc-snapshot tool had several usability challenges that made it difficult for users to interact with and for developers to maintain. These issues included a rigid interface, lack of flexibility, and limited testing support. All of which made the tool harder to use and extend.
To address these, I worked on the following improvements:&lt;/p>
&lt;p>&lt;strong>Problem&lt;/strong>: The command-line interface was limited and inflexible. Users couldn’t easily control features or customize behavior, which limited their ability to create snapshots in different scenarios.&lt;/p>
&lt;p>&lt;strong>Solution&lt;/strong>: I enhanced the CLI by adding:&lt;/p>
&lt;ul>
&lt;li>A flag to disable automatic updates, giving users more control.&lt;/li>
&lt;li>A &amp;ndash;dry-run flag to simulate actions before actually running them which is useful for testing and safety.&lt;/li>
&lt;li>Support for a custom source path, allowing snapshots of specific directories. This makes the tool much more useful for testing smaller environments.&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>Problem&lt;/strong>: The code lacked automated tests. Without tests, developers have to manually verify everything, which is time-consuming and error-prone.&lt;/p>
&lt;p>&lt;strong>Solution&lt;/strong>: I implemented a basic test suite and integrated it with GitHub Actions, so the tool is automatically tested on every pull request.&lt;/p>
&lt;p>&lt;strong>Problem&lt;/strong>: The tool didn’t follow a modular design. The logic was tightly coupled, making it hard to isolate or extend parts of the code.&lt;/p>
&lt;p>&lt;strong>Solution&lt;/strong>: I refactored the code by extracting key functions. This makes the code cleaner, easier to understand, and more maintainable in the long term.&lt;/p>
&lt;h2 id="next-steps--phase-two-performance-optimization">Next Steps – Phase Two: Performance Optimization&lt;/h2>
&lt;p>After improving the usability of the cc-snapshot tool, the next phase of the project focuses on addressing key performance bottlenecks. Currently, the snapshotting process can be slow and resource-intensive, which makes it less practical for frequent use especially with large environments.&lt;/p>
&lt;p>&lt;strong>Problem 1: Slow Image Compression&lt;/strong>
The current implementation uses the qcow2 image format with zlib compression, which is single-threaded and often inefficient for large disk images. This leads to long snapshot creation times and high CPU usage.&lt;/p>
&lt;p>&lt;strong>Solution&lt;/strong>: I will benchmark and compare different compression strategies, specifically:&lt;/p>
&lt;ul>
&lt;li>qcow2 with no compression&lt;/li>
&lt;li>qcow2 with zstd compression, which is faster and multi-threaded&lt;/li>
&lt;li>raw image format, which has no compression but may benefit from simpler processing&lt;/li>
&lt;/ul>
&lt;p>These tests will help determine which method provides the best tradeoff between speed, size, and resource usage.&lt;/p>
&lt;p>&lt;strong>Problem 2: Suboptimal Storage Backend&lt;/strong>
Snapshots are currently uploaded to Glance, which can be slow and unreliable. Uploading large images can take several minutes, and this slows down the user workflow.&lt;/p>
&lt;p>&lt;strong>Solution&lt;/strong>: I will compare Glance with a faster alternative, the Object Store. Smaller, compressed images may upload significantly faster to the Object Store e.g. 30 seconds vs. 2 minutes. By measuring upload speeds and reliability, I can recommend a better default or optional backend for users.&lt;/p>
&lt;h2 id="how-i-will-measure-performance">How I will Measure Performance&lt;/h2>
&lt;p>To understand the impact of different strategies, I will try to collect detailed metrics across three stages:&lt;/p>
&lt;ol>
&lt;li>Image creation: How long it takes to build the image, depending on compression and format&lt;/li>
&lt;li>Image upload: How quickly the snapshot can be transferred to Glance or Object Store&lt;/li>
&lt;li>Instance boot time: How fast a new instance can start from that image (compressed formats must be decompressed)&lt;/li>
&lt;/ol>
&lt;p>I will run multiple tests for each scenario and record performance metrics like CPU usage, memory usage, disk throughput, and total time for each step. This will help identify the most efficient and practical configuration for real-world use.&lt;/p>
&lt;h2 id="conclusion">Conclusion&lt;/h2>
&lt;p>Addressing the current usability and performance issues in cc-snapshot is essential to improving the overall user experience. By making the tool easier to use, faster, and more flexible, we can support researchers and developers who depend on reproducible computing for their work. So far, I’ve worked on enhancing the tool’s interface, adding testing support, and refactoring the codebase for better maintainability. In the next phase, I’ll be focusing on benchmarking different compression methods, image formats, and storage backends to improve speed and efficiency.
These improvements will help make cc-snapshot a more powerful and user-friendly tool for the scientific community.&lt;/p>
&lt;p>Stay tuned for the next update and thank you for following my journey!&lt;/p></description></item></channel></rss>