<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>SoR'23 | UCSC OSPO</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/category/sor23/</link><atom:link href="https://deploy-preview-1007--ucsc-ospo.netlify.app/category/sor23/index.xml" rel="self" type="application/rss+xml"/><description>SoR'23</description><generator>Wowchemy (https://wowchemy.com)</generator><language>en-us</language><lastBuildDate>Wed, 25 Oct 2023 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>SoR'23</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/category/sor23/</link></image><item><title>Final Blog Measuring Open-source Database Systems under TPC-C Benchmark with Unreported Settings</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre23/osu/missingsettings/20231030-ren.450/</link><pubDate>Wed, 25 Oct 2023 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre23/osu/missingsettings/20231030-ren.450/</guid><description>&lt;p>In my final blog, I will first introduce the project, then describe the achievements after the midterm and summarize our experiments. As part of the &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre23/osu/missingsettings">Measuring Research Prototypes under Unreported Settings&lt;/a> my &lt;a href="https://drive.google.com/file/d/1ouFre-qMDCL_LiH5jFNUCOI1yAYHdWcS/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/yang-wang/">Yang Wang&lt;/a> and &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/miao-yu/">Miao YU&lt;/a> aims to understand the impact of missing settings in artifact evaluation.&lt;/p>
&lt;p>In my midterm blog(/report/osre23/osu/missingsettings/20230802-ren.450/), I took three paratmeters as the PostgreSQL config to test the performance of TPC-C benchmark and got some initial results about the effect of different parameters separately on throughput performance. After the midterm, I continue doing experiments on these four parameters (shared_buffer, min_wal_size, max_wal_size and effective_cache_size) with more values and associate them to measure the effect on performance. These parameters are related to memory consumption, checkpoints and planner cost in the database server. You can refer to my previous blog for details.&lt;/p>
&lt;p>For the experiment, we continue to measure the throughput performanace for the benchmark by setting scalefactor as 10 and incrementing worker terminals. The settings for database server are all default values except the four parameters we choose to tune. For the shared_buffer parameter, we choose from initial 128mb to 8gb, in total 6 values. Then for each shared_buffer setting, effective_cache_size includes three values, from initial 4gb to 16gb. Next, for each effective_cache_size setting we tune the min_wal_size and max_wal_size as a tuple, min_wal_size has two values and max_wal_size has four values, in total 6 values. We conduct the experiments by running three rounds for each setting and get all three throughput numbers and calculate their average values.&lt;/p>
&lt;p>Based on the &lt;a href="https://docs.google.com/spreadsheets/d/12OeSwZGq2G4-YGY5BTH5uZbVcAaxcZqYhqciCaBiF2E/edit?usp=sharing" target="_blank" rel="noopener">results&lt;/a>, the observation holds as the conclusion from midterm blog. The throughput of the benchmark can be affected by tuning shared_buffer and max_wal_size. Effective_cache_size and min_wal_size do not have obvious effect for this benchmark. The improvement is limited after shared_buffer and max_wal_size reach a certain value.&lt;/p>
&lt;p>In our experiment, we only choose three possible parameters for one benchmark. The experiment is expensive considering the consuming time. There are also more values of above mentioned parameters to test. This experiment can also indicate we may need to sample a subset of settings to generate observations that match those from a full extensive artifact evaluation.&lt;/p></description></item><item><title>Public Artifact and Data Visualization: A Journey to Empower</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre23/intel/artifactviz/20231024-zjyhhhhh/</link><pubDate>Tue, 24 Oct 2023 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre23/intel/artifactviz/20231024-zjyhhhhh/</guid><description>&lt;p>​
Hola Amigos!
​
As we draw the curtains on our project titled &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre23/intel/artifactviz">Public Artifact and Data Visualization&lt;/a> we&amp;rsquo;re thrilled to present the incredible advancements we&amp;rsquo;ve achieved since our mid-term update. Our mission has been to foster a deeper understanding of data and empower users to make informed decisions. Let&amp;rsquo;s delve into the remarkable evolution of our project.&lt;/p>
&lt;h2 id="unveiling-new-functionalities">Unveiling New Functionalities&lt;/h2>
&lt;ol>
&lt;li>Modular Architecture: Your Way, Your Choice&lt;/li>
&lt;/ol>
&lt;ul>
&lt;li>At the core of our project is a modular architecture designed to cater to your unique preferences. We firmly believe that choice empowers users. Thus, we&amp;rsquo;ve given you the option to select between a Graphical User Interface (GUI) and a Command-Line Interface (CLI). It&amp;rsquo;s about providing a platform that adapts to your specific requirements and style of interaction.&lt;/li>
&lt;/ul>
&lt;ol start="2">
&lt;li>Real-time Backend Environment Monitoring: Data as it Happens&lt;/li>
&lt;/ol>
&lt;ul>
&lt;li>Real-time monitoring of backend environment data is at the heart of our project. It&amp;rsquo;s not just about collecting data; it&amp;rsquo;s about providing continuous insights into system performance. This feature empowers you to make real-time, data-driven decisions—an essential capability in today&amp;rsquo;s fast-paced computing landscape.&lt;/li>
&lt;/ul>
&lt;ol start="3">
&lt;li>Visualizing Environment Variables: Clarity Amidst Complexity&lt;/li>
&lt;/ol>
&lt;ul>
&lt;li>We&amp;rsquo;ve placed a strong emphasis on user-friendly data visualization. Our enhancements enable you to navigate through detected variables effortlessly and compare iterations within different buckets. The result is a visual representation of complex data, making it easier to comprehend and analyze.&lt;/li>
&lt;/ul>
&lt;ol start="4">
&lt;li>Predefined Monitoring Commands: Your Head Start&lt;/li>
&lt;/ol>
&lt;ul>
&lt;li>We understand that monitoring can be a daunting task. To simplify the process, we&amp;rsquo;ve introduced predefined monitoring commands such as mpstat and iostat. These templates serve as a launchpad for monitoring common system metrics, helping you get started quickly and efficiently.&lt;/li>
&lt;/ul>
&lt;ol start="5">
&lt;li>Comprehensive Customization: Tailoring the Experience&lt;/li>
&lt;/ol>
&lt;ul>
&lt;li>Recognizing that every user has unique needs, our platform now offers extensive documentation. This documentation serves as a guide, enabling users to fine-tune their monitoring commands. It&amp;rsquo;s about tailoring the platform to match your specific requirements and preferences. The power to customize is firmly in your hands.&lt;/li>
&lt;/ul>
&lt;ol start="6">
&lt;li>Import and Export Functionality: Seamless Collaboration&lt;/li>
&lt;/ol>
&lt;ul>
&lt;li>In an era where collaboration and data management are essential, we&amp;rsquo;ve introduced the capability to import and export environment data. This feature simplifies data management and supports collaborative efforts, making it easy to share monitoring data and conduct analysis across various environments.&lt;/li>
&lt;/ul>
&lt;h2 id="exploring-our-repositories">Exploring Our Repositories&lt;/h2>
&lt;p>​
As mentioned earlier, we have completed the core functionalities of our platform, and we would love to have you try it out and provide us with valuable feedback. Here are the links to our repositories where you can explore and experiment with our platform:
​&lt;/p>
&lt;ol>
&lt;li>&lt;a href="https://github.com/PublicExperimentDatabase/PublicExperimentGUI" target="_blank" rel="noopener">GUI Repository&lt;/a> and &lt;a href="https://github.com/PublicExperimentDatabase/PublicExperimentCLI" target="_blank" rel="noopener">CLI Repository&lt;/a>
&lt;ul>
&lt;li>The journey begins with a choice. Our repositories cater to a diverse range of user preferences. Inside the README.md file of the GUI repository, you&amp;rsquo;ll find meticulous installation instructions to guide you through setting up the Graphical User Interface (GUI). It&amp;rsquo;s your portal to a user-friendly experience&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>&lt;a href="https://github.com/PublicExperimentDatabase/test-experiment" target="_blank" rel="noopener">Sample Repository&lt;/a>
&lt;ul>
&lt;li>For those eager to embark on their monitoring journey, our Sample Repository is a valuable resource. It provides scripts that not only enable you to run our program but also serve as templates. These templates are designed to simplify the monitoring of your own programs, tailored to your unique requirements.
​&lt;/li>
&lt;/ul>
&lt;/li>
&lt;/ol>
&lt;h2 id="project-demo">Project Demo&lt;/h2>
&lt;p>​
To provide you with a glimpse of what our project can do, here are some demo images showcasing the capabilities and features of &amp;ldquo;Public Artifact and Data Visualization.&amp;rdquo;
​
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="" srcset="
/report/osre23/intel/artifactviz/20231024-zjyhhhhh/feature1_hub6eb130c638c788b954d77fd05b17dc2_80420_39e93d5df25c8b9261ed5b60f3a49091.webp 400w,
/report/osre23/intel/artifactviz/20231024-zjyhhhhh/feature1_hub6eb130c638c788b954d77fd05b17dc2_80420_435c9e662168ef7e029d1c36702fca84.webp 760w,
/report/osre23/intel/artifactviz/20231024-zjyhhhhh/feature1_hub6eb130c638c788b954d77fd05b17dc2_80420_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre23/intel/artifactviz/20231024-zjyhhhhh/feature1_hub6eb130c638c788b954d77fd05b17dc2_80420_39e93d5df25c8b9261ed5b60f3a49091.webp"
width="760"
height="396"
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="" srcset="
/report/osre23/intel/artifactviz/20231024-zjyhhhhh/feature2_hu70b57a5e19005e11cc3a42881b456609_84702_df590742e12a23dea8d1f3414c9e5c16.webp 400w,
/report/osre23/intel/artifactviz/20231024-zjyhhhhh/feature2_hu70b57a5e19005e11cc3a42881b456609_84702_b47182cd4c3ea07108c723e7c18875e4.webp 760w,
/report/osre23/intel/artifactviz/20231024-zjyhhhhh/feature2_hu70b57a5e19005e11cc3a42881b456609_84702_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre23/intel/artifactviz/20231024-zjyhhhhh/feature2_hu70b57a5e19005e11cc3a42881b456609_84702_df590742e12a23dea8d1f3414c9e5c16.webp"
width="760"
height="396"
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="" srcset="
/report/osre23/intel/artifactviz/20231024-zjyhhhhh/feature3_hu17639a210c97ec1be7d726068aef2aa2_44169_6117bb9125bca9a4f63ad1631b5f7bcc.webp 400w,
/report/osre23/intel/artifactviz/20231024-zjyhhhhh/feature3_hu17639a210c97ec1be7d726068aef2aa2_44169_3979a5588d47e6a37a482b5f2184d3af.webp 760w,
/report/osre23/intel/artifactviz/20231024-zjyhhhhh/feature3_hu17639a210c97ec1be7d726068aef2aa2_44169_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre23/intel/artifactviz/20231024-zjyhhhhh/feature3_hu17639a210c97ec1be7d726068aef2aa2_44169_6117bb9125bca9a4f63ad1631b5f7bcc.webp"
width="736"
height="656"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
​&lt;/p>
&lt;h2 id="thank-you-for-joining-us">Thank You for Joining Us&lt;/h2>
&lt;p>​
We appreciate your support and participation in this journey of data visualization and empowerment. Our commitment to enhancing the world of data comprehension remains unwavering. As we mark the end of this chapter, we eagerly anticipate the exciting future that awaits in the realm of data visualization. The path doesn&amp;rsquo;t end here; it&amp;rsquo;s just the beginning of a new chapter in our collective exploration of data&amp;rsquo;s potential.`
​&lt;/p></description></item><item><title>GPU Emulator for Easy Reproducibility of DNN Training -- Final Blog Post</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre23/utexas/gpuemulator/20231006-haoranwu/</link><pubDate>Fri, 06 Oct 2023 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre23/utexas/gpuemulator/20231006-haoranwu/</guid><description>&lt;h2 id="introduction">Introduction&lt;/h2>
&lt;p>For the second half of the project, I spent some time reproducing the figures and then focused on hacking the source code of PyTorch to distinguish the Inter-GPU Computation (1GPU vs. 2GPUs).&lt;/p>
&lt;h4 id="summarization">Summarization&lt;/h4>
&lt;ul>
&lt;li>Finished reproducing figure 3, 4, 5, 6 from &lt;a href="https://ospo.ucsc.edu/project/osre23/utexas/gpuemulator" target="_blank" rel="noopener">GPU Emulator for Easy Reproducibility of DNN Training&lt;/a>.&lt;/li>
&lt;li>Explored into inter-GPU computation in order to reproduce figure 9.&lt;/li>
&lt;/ul>
&lt;h4 id="reporsitory-of-reproducing-figures">Reporsitory of Reproducing Figures&lt;/h4>
&lt;p>I have placed the repository of the deliverable here: &lt;a href="https://github.com/FarFlyField/OSRE_DELIVERABLE/tree/main" target="_blank" rel="noopener">https://github.com/FarFlyField/OSRE_DELIVERABLE/tree/main&lt;/a>
To use the repository, you can use any machine with just CPU, or you may check the results by renting GPU from Chameleon, comparing the result with the emulator&amp;rsquo;s.&lt;/p>
&lt;p>The repository covers how to setup and understand the data produced from it. You will need to understand the spreadsheet and some of the graphing files.&lt;/p>
&lt;h4 id="study-of-inter-gpu-computation">Study of Inter-GPU Computation&lt;/h4>
&lt;p>I have dissected the source code in PyTorch to identify the computation time differences between using 1 GPU and 2 GPUs (inter-GPUs computation time). The one most significant difference is managed throughout the forward process. Here are a few most significant features that make the computation time longer when using 2 GPUs:&lt;/p>
&lt;ul>
&lt;li>When using 1 GPU, PyTorch would put the images used to train the model onto the GPU in the main application once and for all. However, using 2 GPUs, PyTorch will transfer the images before running forward using a parallel function. The function contains two features:
&lt;ul>
&lt;li>It dissects the images into multiple sections and puts them onto the GPUs respectively.&lt;/li>
&lt;li>It copied the model we need to train into the # of GPUs and create threads to train the models parallelly on these separate GPUs.&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>These two steps create a major time difference for the computation time we have for training multiple GPUs and also make the transfer time for using 2 GPUs smaller because we are counting the transferring time of images toward computation time.&lt;/li>
&lt;li>After finishing running forward, the parallel function will gather the outputs from the two GPUs and send the output to the first GPU.&lt;/li>
&lt;/ul>
&lt;p>After gathering the output to the first GPU, the code will train the next batch and repeat the steps of transferring data, copying images, running parallel forwarding, and gathering the outputs once again.&lt;/p>
&lt;p>The second significant difference that I’m working on right now is when PyTorch runs backward functions, which are more or less similar to forward but not the same at all. I have located the function loss.backward() function in our application code as the only contributor to the time difference in computation time. Here are a few tasks I did after locating it:&lt;/p>
&lt;ul>
&lt;li>Recorded the functions’ call stack when using 1 GPU and 2 GPUs.&lt;/li>
&lt;li>Recorded the time spent in the functions in the call stack of the functions.&lt;/li>
&lt;li>Identified the inconsistency when measuring data, repeated and verified until the consistency is reached.&lt;/li>
&lt;/ul>
&lt;p>I have finished the basic measuring and drafting out the call stack but I haven’t figured out the exact differences. Because most of the functions are done in C++, printing out the inputs to evaluate the functions will be slightly harder but doable.&lt;/p>
&lt;p>The data recorded and analyzed are placed here:
&lt;a href="https://docs.google.com/spreadsheets/d/1vFj-UE3mjtsHIc5OesKX1sDvr6fpPwtPUMl0pM3V8SA/edit?usp=sharing" target="_blank" rel="noopener">https://docs.google.com/spreadsheets/d/1vFj-UE3mjtsHIc5OesKX1sDvr6fpPwtPUMl0pM3V8SA/edit?usp=sharing&lt;/a>
Summarized doc:
&lt;a href="https://docs.google.com/document/d/10XWNwCZ3kLzy4i6WgJ6KPsujEs2X1gzXblZtUoqMuJw/edit" target="_blank" rel="noopener">https://docs.google.com/document/d/10XWNwCZ3kLzy4i6WgJ6KPsujEs2X1gzXblZtUoqMuJw/edit&lt;/a>&lt;/p></description></item><item><title>Reproducible Evaluation of Multi-level Erasure Coding (Midterm)</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre23/ornl/multilevelerasure/20230801-zhiyanw/</link><pubDate>Sat, 05 Aug 2023 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre23/ornl/multilevelerasure/20230801-zhiyanw/</guid><description>&lt;p>Hi Everyone,&lt;/p>
&lt;p>I hope everything goes well! This is my second blog post for my project &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre23/ornl/MultiLevelErasure">Reproducible Evaluation of Multi-level Erasure Coding&lt;/a> under the mentorship of &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/john-bent/">John Bent&lt;/a>, &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/anjus-george/">Anjus George&lt;/a>, and Meng Wang. In summary, my project aims to build a platform to reproducibly evaluate the performance and durability of MLEC (Multi-Level Erasure Coding) for large-scale storage systems under different design configurations. The details are in this &lt;a href="https://docs.google.com/document/d/1dO1aING1QcSB---XklzUjNz0usVh7qWffVGC3GZq2AE/edit?usp=sharing" target="_blank" rel="noopener">proposal&lt;/a>.&lt;/p>
&lt;p>In the course of these few weeks, I&amp;rsquo;ve completed several tasks to achieve the aim of this project, including&lt;/p>
&lt;ul>
&lt;li>Literature Review&lt;/li>
&lt;li>Studying the Erasure Coding Simulator and Creating Reproducible Evaluations, with the following policies
&lt;ul>
&lt;li>Clustered/Declustered Local-level SLEC&lt;/li>
&lt;li>Clustered/Declustered Network-level SLEC&lt;/li>
&lt;li>MLEC with C/C, C/D, D/C, D/D configuration&lt;/li>
&lt;/ul>
&lt;/li>
&lt;/ul>
&lt;h2 id="literature-review">Literature Review&lt;/h2>
&lt;p>Prior to developing the simulator, my first step was to delve into various literature related to distinct Erasure Coding policies. To understand a simulator for complex Erasure coding policy such as MLEC, I want to start from the simpler EC policies, and then extend my knowledge to more complex ones such as MLEC. Moreover, I also aimed to contrast the durability of MLEC with other comparable EC policies like LRC in my evaluations, making it vital to understand the implementation of these policies.&lt;/p>
&lt;p>Over the first week, I read several papers regarding different chunk placement policies regarding erasure coding, including LRC (Local Reconstruction Codes), CL-LRC (Combined Locality for Local Reconstruction Codes), SODP (Single Overlap declustered parity), and MLEC (Multi-Level Erasure Coding). These papers offered a fundamental comprehension of each policy, their respective advantages and drawbacks, and their practical usage in production environments.&lt;/p>
&lt;h2 id="simulator-reproduction">Simulator Reproduction&lt;/h2>
&lt;p>After gaining some understanding with the papers I read, I started to study the EC simulator by building the simulator myself. I got the MLEC simulator from the mentors. However, the simulator lacks documentation and guides, making it hard for others to reproduce evaluation results. The simulator is also complicated to understand, as it simulates various EC schemes, chunk placements, and rebuild policies, which results in 13,000 LOC. Therefore, my goal is to understand the design and implementation details of the simulator, after which I will create guides for reproducible evaluations.&lt;/p>
&lt;p>In order to fully understand the simulator, the best way is to rebuild the simulator by myself. The simulator is designed to mimic disk failures over the span of a year under varying chunk placement policies. Once successfully rebuilt, the simulator will enable me to assess the durability of MLEC in relation to other widely-used chunk placement policies. I followed the given simulator and rewrote it on my own in Python.&lt;/p>
&lt;p>Based on the skeleton of the given simulator, I first rebuilt a simple simulator that simulates SLEC (single level erasure coding, in both local and network settings) with clustered parities. With the arguments given, the simulator can run arbitrary numbers of iterations that simulate disk failures in one year. The simulator then collects iterations in which there is a data loss. The ratio of failed iterations to total executed iterations is the durability of the erasure coding policy. This simulation allows us to evaluate the durability of SLEC, laying foundations for later evaluation of MLEC.&lt;/p>
&lt;p>Next, I extended my simulator from local-level SLEC implementation by adding more policies. I began by introducing a network-level SLEC policy with clustered parities. This differs slightly from the local-level EC as it necessitates the consideration of factors like network bandwidth within the simulator.&lt;/p>
&lt;p>In addition, I have delved deeper into simulating declustered parities and successfully discovered a method to simulate disk failures. Basically, the simulator generates failures within a one-year timeframe and subsequently repairs them using priority queues. The disks associated with stripes experiencing the most failures are given the highest repair priority. With this construction, the simulator is capable of simulating local-level declustered parities, with the ability to specify parameters.&lt;/p>
&lt;p>Upon successfully simulating local-level declustered parities, the construction of the simulator for network level declustered parities was rather straightforward. I then validated it using the simulator and math models provided by the mentors. The results perfectly agree with each other, which proves the correctness of my understanding for the SLEC declustered placements. By implementing the simulator myself, I strengthened my understanding of erasure coding designs and the simulation techniques, which equipped me with a solid foundation to continue to reproduce MLEC simulations.&lt;/p>
&lt;p>Based on my knowledge gained from implementing SLEC simulators myself, I then reverse-engineered the MLEC simulator provided by the mentors from their MLEC paper. I choose to start from the simplest policy, which is clustered parities in both levels. After spending a considerable time digging into the simulator source codes, I was able to understand the simulation workflows, different repair methods that it implements, and the splitting method that it uses to simulate high durabilities. I then revised my simulator based on my understanding. I also tried to run a few experiments using the same configuration setups as specified in the paper. The results agree well with those in the paper, which verified the success of my reproducing work.&lt;/p>
&lt;h2 id="technical-issues">Technical Issues&lt;/h2>
&lt;p>In the process of building the MLEC, I&amp;rsquo;ve encountered many issues, conceptual or technical. The mentors are super helpful and responsive in the process, so I was able to have steady progress.&lt;/p>
&lt;h2 id="summary">Summary&lt;/h2>
&lt;p>Overall, I&amp;rsquo;ve rebuilt a python simulator for various EC policies, and the simulator can successfully reproduce the results from paper.&lt;/p>
&lt;h2 id="next-steps">Next Steps&lt;/h2>
&lt;p>My next step would be to package the simulator into reprodTrovi artifact, so others can reproduce evaluations on performance and durability of various EC policies, in particular MLEC&lt;/p></description></item><item><title>Reproducible Analysis &amp; Models for Predicting Genomics Workflow Execution Time (Midterm Blog Post)</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre23/uga/genomicswfmodels/20230803-charishulu/</link><pubDate>Thu, 03 Aug 2023 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre23/uga/genomicswfmodels/20230803-charishulu/</guid><description>&lt;h2 id="introduction">Introduction&lt;/h2>
&lt;p>As part of the &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre23/uga/genomicswfmodels/">Reproducible Analysis &amp;amp; Models for Predicting Genomics Workflow Execution Time&lt;/a>, our goal was to characterize the tools on genomic workflows in terms of system metrics and data quality to build machine learning models to predict the elapsed time of genomic workflows. While Shayantan (another contributor) did the analysis on data quality metrics, I contributed to the system metrics analysis. We are getting closer to that goal because we have managed to collect datasets and do some analysis.&lt;/p>
&lt;h2 id="steps">Steps&lt;/h2>
&lt;p>In this project, we selected DNA-Seq Pipeline as the workflow to be analyzed. This pipeline consists of four tools for processing single-end reads, namely BWA-mem, Samtool-view, Picard-SortSam, Picard-MarkDuplicates. For each tool we executed it using various configurations and stored system metrics for each execution. To do this, we have to take two steps:&lt;/p>
&lt;ul>
&lt;li>Step 1: Building the tools execution environment.&lt;/li>
&lt;li>Step 2: Developing a program to execute tools using some configurations and collect runtime parameters (eg. CPU, RSS, VSZ, and IO) automatically.&lt;/li>
&lt;/ul>
&lt;h2 id="execution-environment">Execution Environment&lt;/h2>
&lt;p>Tools are executed on Chameleon instances by submitting them using Slurm. The machine used in collecting system metrics is a Haswell instance of the Chameleon Texas server. This instance uses Intel(R) Xeon(R) CPU E5-2670 v3 @ 2.30GHz with following detailed specifications.&lt;/p>
&lt;table>
&lt;tr>
&lt;th>Number of CPUs&lt;/th>
&lt;td>48&lt;/td>
&lt;/tr>
&lt;tr>
&lt;th>Number of threads per core&lt;/th>
&lt;td>2&lt;/td>
&lt;/tr>
&lt;tr>
&lt;th>Number of cores per socket&lt;/th>
&lt;td>12&lt;/td>
&lt;/tr>
&lt;tr>
&lt;th>Number of sockets&lt;/th>
&lt;td>2&lt;/td>
&lt;/tr>
&lt;/table>
&lt;p>In this experiment, we use n+1 instances, where there are n compute nodes and 1 master node. Each execution is done by submitting a job, which is a tool with a certain configuration, from a master node and it will be processed by one of the compute nodes. In order for the tool to be executed, we need to set the master node to be a common container using NFS. This common container is used to store input files and commands for executing tools so that all nodes can access them without having to download and install them.&lt;/p>
&lt;h2 id="executing-and-collecting-system-metrics">Executing and Collecting System Metrics&lt;/h2>
&lt;p>Tools will be executed in various specific configurations by varying parameters such as input size, number of CPU allocation, memory allocation and threads. For example, for BWA-mem respectively the number of variations in values for the number of CPU allocations, memory allocations, and threads is 5, 4, and 5 using 10 different files so that there are 5 x 4 x 5 x 10 = 1000 configuration combinations. For each configuration will be executed 8 times so that there are 8000 data points. Configuration details can be seen in the following table.&lt;/p>
&lt;table>
&lt;tr>
&lt;th>&lt;/th>
&lt;th>#repetions&lt;/th>
&lt;th>#files&lt;/th>
&lt;th>#allocated CPU&lt;/th>
&lt;th>#allocated memory&lt;/th>
&lt;th>#threads&lt;/th>
&lt;th>total&lt;/th>
&lt;/tr>
&lt;tr>
&lt;th>BWA-mem&lt;/th>
&lt;td>8&lt;/td>
&lt;td>10&lt;/td>
&lt;td>2, 4, 8, 16, 32&lt;/td>
&lt;td>8, 16, 32, 64&lt;/td>
&lt;td>2, 4, 8, 16, 32&lt;/td>
&lt;td>8000&lt;/td>
&lt;/tr>
&lt;tr>
&lt;th>Samtool-view&lt;/th>
&lt;td>10&lt;/td>
&lt;td>10&lt;/td>
&lt;td>2, 4, 8, 16, 32&lt;/td>
&lt;td>8, 16, 32, 64&lt;/td>
&lt;td>-&lt;/td>
&lt;td>2000&lt;/td>
&lt;/tr>
&lt;tr>
&lt;th>Picard-Sortsam&lt;/th>
&lt;td>10&lt;/td>
&lt;td>10&lt;/td>
&lt;td>2, 4, 8, 16, 32&lt;/td>
&lt;td>8, 16, 32, 64&lt;/td>
&lt;td>-&lt;/td>
&lt;td>2000&lt;/td>
&lt;/tr>
&lt;tr>
&lt;th>Picard-MarkDuplicates&lt;/th>
&lt;td>10&lt;/td>
&lt;td>10&lt;/td>
&lt;td>2, 4, 8, 16, 32&lt;/td>
&lt;td>8, 16, 32, 64&lt;/td>
&lt;td>-&lt;/td>
&lt;td>2000&lt;/td>
&lt;/tr>
&lt;/table>
&lt;p>Meanwhile, to run the tools, we use the following commands:&lt;/p>
&lt;ul>
&lt;li>BWA-mem&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-shell" data-lang="shell">&lt;span class="line">&lt;span class="cl">&lt;span class="nv">$BWA&lt;/span> mem -t &lt;span class="nv">$threads&lt;/span> &lt;span class="nv">$REF_DIR&lt;/span>/hg19.fa &lt;span class="si">${&lt;/span>&lt;span class="nv">INPUT_DIR&lt;/span>&lt;span class="si">}&lt;/span>/&lt;span class="si">${&lt;/span>&lt;span class="nv">sra_id&lt;/span>&lt;span class="si">}&lt;/span>*.fastq &amp;gt; &lt;span class="si">${&lt;/span>&lt;span class="nv">OUTPUT_DIR&lt;/span>&lt;span class="si">}&lt;/span>/&lt;span class="si">${&lt;/span>&lt;span class="nv">sra_id&lt;/span>&lt;span class="si">}&lt;/span>.sam
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ul>
&lt;li>Samtool-view&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-shell" data-lang="shell">&lt;span class="line">&lt;span class="cl">&lt;span class="nv">$SAMTOOLS&lt;/span> view &lt;span class="nv">$INPUT_DIR&lt;/span>/&lt;span class="si">${&lt;/span>&lt;span class="nv">sra_id&lt;/span>&lt;span class="si">}&lt;/span>.sam -Shb -o &lt;span class="nv">$OUTPUT_DIR&lt;/span>/&lt;span class="si">${&lt;/span>&lt;span class="nv">sra_id&lt;/span>&lt;span class="si">}&lt;/span>.bam
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ul>
&lt;li>Picard-SortSam&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-shell" data-lang="shell">&lt;span class="line">&lt;span class="cl">java -jar &lt;span class="nv">$PICARD&lt;/span> SortSam &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span>&lt;span class="nv">CREATE_INDEX&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="nb">true&lt;/span> &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span>&lt;span class="nv">INPUT&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="nv">$INPUT_DIR&lt;/span>/&lt;span class="si">${&lt;/span>&lt;span class="nv">sra_id&lt;/span>&lt;span class="si">}&lt;/span>.bam &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span>&lt;span class="nv">OUTPUT&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="nv">$OUTPUT_DIR&lt;/span>/&lt;span class="si">${&lt;/span>&lt;span class="nv">sra_id&lt;/span>&lt;span class="si">}&lt;/span>.bam &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span>&lt;span class="nv">SORT_ORDER&lt;/span>&lt;span class="o">=&lt;/span>coordinate &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span>&lt;span class="nv">VALIDATION_STRINGENCY&lt;/span>&lt;span class="o">=&lt;/span>STRICT
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ul>
&lt;li>Picard-MarkDuplicates&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-shell" data-lang="shell">&lt;span class="line">&lt;span class="cl">java -jar &lt;span class="nv">$PICARD&lt;/span> MarkDuplicates &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span>&lt;span class="nv">CREATE_INDEX&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="nb">true&lt;/span> &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span>&lt;span class="nv">INPUT&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="nv">$INPUT_DIR&lt;/span>/&lt;span class="si">${&lt;/span>&lt;span class="nv">sra_id&lt;/span>&lt;span class="si">}&lt;/span>.bam &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span>&lt;span class="nv">OUTPUT&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="nv">$OUTPUT_DIR&lt;/span>/&lt;span class="si">${&lt;/span>&lt;span class="nv">sra_id&lt;/span>&lt;span class="si">}&lt;/span>.bam &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span>&lt;span class="nv">METRICS_FILE&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="nv">$OUTPUT_DIR&lt;/span>/&lt;span class="si">${&lt;/span>&lt;span class="nv">sra_id&lt;/span>&lt;span class="si">}&lt;/span>_rmd.txt &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span>&lt;span class="nv">VALIDATION_STRINGENCY&lt;/span>&lt;span class="o">=&lt;/span>STRICT
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>In Slurm, each job has a job id. In addition, there is a &lt;code>scontrol listpids&lt;/code> command to see the job id to PID mapping. Using this, we can obtain system metrics for a job by gathering information from the &lt;code>/proc/$PID&lt;/code> system file. Information that can be obtained from it is the use of CPU, physical memory, virtual memory, read bytes, and write bytes at a particular time. So that in collecting this data, we will record these features along with the timestamp at 1 second intervals throughout the execution process.&lt;/p>
&lt;h2 id="results">Results&lt;/h2>
&lt;p>We also have calculated the correlation for each feature with the elapsed time. For BWA-mem, the features that correlate more than absolute of 0.5 are Input size, Average CPU Usage, and Output file size , which is in SAM format. For samtools there are input size, average cpu usage and output size in BAM.
For Sortsam, there are input size, write operation, and BAM output size. For MarkDuplicates, there are input size and BAM output size.&lt;/p>
&lt;table>
&lt;tr>
&lt;th>Features\Tools&lt;/th>
&lt;th>BWA-mem&lt;/th>
&lt;th>Samtool-view&lt;/th>
&lt;th>Picard-SortSam&lt;/th>
&lt;th>Picard-MarkDuplicates&lt;/th>
&lt;/tr>
&lt;tr>
&lt;th>Allocated CPU&lt;/th>
&lt;td>-0.145&lt;/td>
&lt;td>-0.095&lt;/td>
&lt;td>-0.179&lt;/td>
&lt;td>-0.156&lt;/td>
&lt;/tr>
&lt;tr>
&lt;th>Allocated physical memory&lt;/th>
&lt;td>-0.010&lt;/td>
&lt;td>-0.038&lt;/td>
&lt;td>-0.069&lt;/td>
&lt;td>0.132&lt;/td>
&lt;/tr>
&lt;tr>
&lt;th>Input size&lt;/th>
&lt;td>&lt;b>0.583&lt;/b>&lt;/td>
&lt;td>&lt;b>0.651&lt;/b>&lt;/td>
&lt;td>&lt;b>0.937&lt;/b>&lt;/td>
&lt;td>&lt;b>0.922&lt;/b>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;th>Threads&lt;/th>
&lt;td>-0.072&lt;/td>
&lt;td>-&lt;/td>
&lt;td>-&lt;/td>
&lt;td>-&lt;/td>
&lt;/tr>
&lt;tr>
&lt;th>Average CPU&lt;/th>
&lt;td>&lt;b>-0.607&lt;/b>&lt;/td>
&lt;td>&lt;b>-0.567&lt;/b>&lt;/td>
&lt;td>-0.479&lt;/td>
&lt;td>-0.480&lt;/td>
&lt;/tr>
&lt;tr>
&lt;th>Peak CPU&lt;/th>
&lt;td>-0.175&lt;/td>
&lt;td>0.174&lt;/td>
&lt;td>-0.170&lt;/td>
&lt;td>0.046&lt;/td>
&lt;/tr>
&lt;tr>
&lt;th>Average RSS&lt;/th>
&lt;td>0.040&lt;/td>
&lt;td>0.034&lt;/td>
&lt;td>0.131&lt;/td>
&lt;td>0.182&lt;/td>
&lt;/tr>
&lt;tr>
&lt;th>Peak RSS&lt;/th>
&lt;td>0.068&lt;/td>
&lt;td>0.046&lt;/td>
&lt;td>0.314&lt;/td>
&lt;td>0.175&lt;/td>
&lt;/tr>
&lt;tr>
&lt;th>Average VSZ&lt;/th>
&lt;td>0.032&lt;/td>
&lt;td>-0.349&lt;/td>
&lt;td>-0.127&lt;/td>
&lt;td>0.090&lt;/td>
&lt;/tr>
&lt;tr>
&lt;th>Peak VSZ&lt;/th>
&lt;td>0.048&lt;/td>
&lt;td>0.074&lt;/td>
&lt;td>-0.130&lt;/td>
&lt;td>0.088&lt;/td>
&lt;/tr>
&lt;tr>
&lt;th>Write bytes&lt;/th>
&lt;td>0.037&lt;/td>
&lt;td>0.190&lt;/td>
&lt;td>&lt;b>0.735&lt;/b>&lt;/td>
&lt;td>0.244&lt;/td>
&lt;/tr>
&lt;tr>
&lt;th>Read bytes&lt;/th>
&lt;td>-0.031&lt;/td>
&lt;td>0.109&lt;/td>
&lt;td>0.070&lt;/td>
&lt;td>0.110&lt;/td>
&lt;/tr>
&lt;tr>
&lt;th>Output SAM size&lt;/th>
&lt;td>&lt;b>0.589&lt;/b>&lt;/td>
&lt;td>-&lt;/td>
&lt;td>-&lt;/td>
&lt;td>-&lt;/td>
&lt;/tr>
&lt;tr>
&lt;th>Output BAM size&lt;/th>
&lt;td>-&lt;/td>
&lt;td>&lt;b>0.763&lt;/b>&lt;/td>
&lt;td>&lt;b>0.934&lt;/b>&lt;/td>
&lt;td>&lt;b>0.923&lt;/b>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;th>Output BAI size&lt;/th>
&lt;td>-&lt;/td>
&lt;td>-&lt;/td>
&lt;td>0.400&lt;/td>
&lt;td>0.399&lt;/td>
&lt;/tr>
&lt;/table>
&lt;h2 id="future-works">Future Works&lt;/h2>
&lt;p>For further work, we will analyze the correlation between elapsed time and features whose scores are below an absolute 0.5. Because there is a possibility that these features are actually correlated with the elapsed time but do not appear to be correlated because the measurements are made by calculating the overall data. So we also need to calculate the feature correlation for each data grouped by input file. Then, we create a machine learning model to predict elapsed time.&lt;/p></description></item><item><title>[FLASHNET]: Leveraging ML-augmented I/O in Linux</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre23/uchicago/flashnet/20230802-justin08784/</link><pubDate>Wed, 02 Aug 2023 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre23/uchicago/flashnet/20230802-justin08784/</guid><description>&lt;p>Hello everyone,&lt;/p>
&lt;p>This is my second blog post for SoR 2023. As you may recall from my &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre23/uchicago/flashnet/20230530-justin08784/">initial blogpost&lt;/a>, I am working on the &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre23/uchicago/flashnet/">Flashnet&lt;/a> project under the mentorship of &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/haryadi-s.-gunawi/">Haryadi S. Gunawi&lt;/a>.&lt;/p>
&lt;p>I&amp;rsquo;ve been assigned two major tasks under Flashnet:&lt;/p>
&lt;ol>
&lt;li>Perform post-training quantization (PTQ) on existing Flashnet models&lt;/li>
&lt;li>Implement a rocksDB client (to interface with the Flashnet kernel) with 3-way replication&lt;/li>
&lt;/ol>
&lt;h2 id="task-1-perform-post-training-quantization-ptq-on-existing-flashnet-models">Task 1: Perform post-training quantization (PTQ) on existing Flashnet models&lt;/h2>
&lt;p>Since all of our models are currently built using the keras API, I decided to use the tensorflow-lite library, which supports direct conversion. Unfortunately, I encountered several persistent bugs while attempting to apply full-integer quantization on our binary neural network model:&lt;/p>
&lt;h3 id="shapedimension-distortion">Shape/dimension distortion:&lt;/h3>
&lt;p>Bug description: The quantized tflite model produces outputs of shape (8, 1) –– same as input shape–– when the original model produces single-value outputs (1, 1).&lt;/p>
&lt;p>Status: Resolved&lt;/p>
&lt;ul>
&lt;li>The original model has an input dimension of 8 for each input/x-value and there could be several inputs grouped in a single batch.&lt;/li>
&lt;li>Input/batch size is also determined implicitly in the normalization layer of the original model&lt;/li>
&lt;li>However, the &amp;ldquo;interpreter&amp;rdquo; in the quantized model runs inference one by one, and so batch size needs to be explicitly set to &amp;ldquo;1&amp;rdquo; i.e. a shape of single input, (1,8)&lt;/li>
&lt;li>Doing so resolves the model distortion&lt;/li>
&lt;/ul>
&lt;h3 id="incorrect-y-value-range">Incorrect y-value range:&lt;/h3>
&lt;p>Bug description: There are no variation in the quantized model outputs (i.e. it spits out the same value for each input row)&lt;/p>
&lt;p>In the original model, each inference output is a floating point value between 0 and 1. Outputs also vary according to input. This output is rounded towards 0 or 1 using a 0.5 standard cutoff (i.e. x &amp;gt; 0.5 → x = 1). Since the quantized model condenses 32-bit floats into 8-bit integers, we should expect a similar variation in output values across an 8-bit integer range.&lt;/p>
&lt;p>Printing the quantized model weights, I discovered that weight burst/exploding gradient may be occur during quantization process i.e. the values of weights are exploding to infinity or vanishing to 0, and therefore unable to deliver any meaningful value. The likely consequence of this is that the inference output always equals the bias matrix (since the Wx term in y = Wx + B gets zeroed out).&lt;/p>
&lt;p>Status: Open&lt;/p>
&lt;ul>
&lt;li>Multiple potential causes were considered, without any success:
&lt;ul>
&lt;li>Improper quantization of inputs/outputs&lt;/li>
&lt;li>Insufficient training time/number of epochs&lt;/li>
&lt;li>Incompatible model type/structure&lt;/li>
&lt;li>Incompatible tensorflow-lite version&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>At this point, I concluded that tensorflow-lite is too bug-ridden to make making any further attempts with the library not worthwhile.&lt;/li>
&lt;/ul>
&lt;h2 id="task-2-implement-a-rocksdb-client-to-interface-with-the-flashnet-kernel-with-3-way-replication">Task 2: Implement a rocksDB client (to interface with the Flashnet kernel) with 3-way replication&lt;/h2>
&lt;p>rocksdb is an embedded database for key-value data. Our Flashnet team is currently implementing a Flashnet client in ceph, and so they have tasked me to explore an implementation in rocksdb as an alternative.&lt;/p>
&lt;p>I&amp;rsquo;ve started on this segment of the project only recently, so my current work is still in its formative stages. As of writing, I&amp;rsquo;ve been primarily concerned with setup of software (on a new chameleon instance), running toy db examples, and educating myself on basic terminology/rocksdb documentation.&lt;/p>
&lt;h2 id="future-work">Future work&lt;/h2>
&lt;p>I expect to continue working on Task 1 (do quantization from ground-up or use a different library) and Task 2 as detailed above. I also hope to implement a transformer-based model to supplement our existing suite of Flashnet models.&lt;/p></description></item><item><title>[Midterm] FlashNet: Towards Reproducible Continual Learning for Storage System</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre23/uchicago/flashnet/20230807-rannnayy/</link><pubDate>Wed, 02 Aug 2023 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre23/uchicago/flashnet/20230807-rannnayy/</guid><description>&lt;h2 id="mid-term-report">Mid-Term Report&lt;/h2>
&lt;p>As part of the &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre23/uchicago/flashnet">FlashNet&lt;/a> my &lt;a href="https://drive.google.com/file/d/1EhJm3kqrpybOkpXiiRMfqVxGeKe9iIsh/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/haryadi-s.-gunawi/">Haryadi S. Gunawi&lt;/a> and &lt;strong>Daniar Kurniawan&lt;/strong> aims to implement and optimize the FlashNet model in real-world storage systems using continual learning techniques. We focus on predicting I/Os latency to decide whether or not the I/O should be failovered to other SSD. The following sections elaborates the work description, major milestones achieved, accomplishments, and challenges during the first half of summer.&lt;/p>
&lt;h2 id="work-description-major-milestones-achieved-and-accomplishments">Work Description, Major Milestones Achieved, and Accomplishments&lt;/h2>
&lt;p>For the first half of the summer, I implemented continual learning pipeline of the model and several drift detection algorithms. After that, I evaluated the effectiveness. Below are the detailed description for each subtask.&lt;/p>
&lt;h3 id="1-continual-learning-pipeline">1. Continual Learning pipeline&lt;/h3>
&lt;p>Firstly, I designed the pipeline. As shown on the graph below, the pipeline contains 4 main modules, namely initial train, retrain, inference, and monitor.&lt;/p>
&lt;p>
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="Pipeline Flowchart" srcset="
/report/osre23/uchicago/flashnet/20230807-rannnayy/cl-pipeline_hubf4c27ce042fa200bb9ef46ed6f9b5dd_194399_2067e763ad30087275106bc5b2921a5a.webp 400w,
/report/osre23/uchicago/flashnet/20230807-rannnayy/cl-pipeline_hubf4c27ce042fa200bb9ef46ed6f9b5dd_194399_fcd6d4a25c164fcfc872329662c36fa5.webp 760w,
/report/osre23/uchicago/flashnet/20230807-rannnayy/cl-pipeline_hubf4c27ce042fa200bb9ef46ed6f9b5dd_194399_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre23/uchicago/flashnet/20230807-rannnayy/cl-pipeline_hubf4c27ce042fa200bb9ef46ed6f9b5dd_194399_2067e763ad30087275106bc5b2921a5a.webp"
width="760"
height="249"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;p>The modules were first developed in Python using linear regression model. Turns out, linear regression model is not good enough that it gave bad accuracy. To overcome this problem, I introduced more models and learning task.&lt;/p>
&lt;p>Hence, in the final implementation, we have random forest and neural networks model for both regression and classification task. Aforementioned models outperforms linear regression. The pipeline is also already optimized.&lt;/p>
&lt;h3 id="2-drift-detection-algorithms">2. Drift detection algorithms&lt;/h3>
&lt;p>Sometimes, the built model&amp;rsquo;s performance may degrade when facing recent I/Os having different characteristics than what it was trained upon. Hence, there should be a retrain process. Retrain should be triggered. The trigger could be as simple as periodically, or using technique called drift detection. While retraining too often might cause big overhead for computation, retraining too seldom might also cause performance degradation. Hence, we should build a good and reliable drift detection algorithm that can sense the presence of concept and covariate drift in recent data.&lt;/p>
&lt;p>In order to build a good algorithm, I used heuristics derivated from the understanding about latency and throughput change over time. However, the result turns out not really good. Thus, I&amp;rsquo;ve been relying on using statistical tests as the drift detector. By far, Kalmogorov-Smirnov Test&amp;ndash;commonly known as ks-test&amp;ndash;is the best drift detector.&lt;/p>
&lt;h3 id="3-evaluation">3. Evaluation&lt;/h3>
&lt;p>The featured image in the headline of this blog, also shown below, is the result of the evaluation. I evaluated the models and drift detection algorithms using Cumulative Distribution Function (CDF) graph, to see if any tail cut is made.&lt;/p>
&lt;p>
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="Evaluation" srcset="
/report/osre23/uchicago/flashnet/20230807-rannnayy/featured_hua13ad1b86612ea35a1f0d083114566fc_25432_4866e846612d96725d801519edf06392.webp 400w,
/report/osre23/uchicago/flashnet/20230807-rannnayy/featured_hua13ad1b86612ea35a1f0d083114566fc_25432_9203cd36fc4c6de03e02a799cd564f1d.webp 760w,
/report/osre23/uchicago/flashnet/20230807-rannnayy/featured_hua13ad1b86612ea35a1f0d083114566fc_25432_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre23/uchicago/flashnet/20230807-rannnayy/featured_hua13ad1b86612ea35a1f0d083114566fc_25432_4866e846612d96725d801519edf06392.webp"
width="760"
height="396"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;h2 id="challenges">Challenges&lt;/h2>
&lt;p>During the implementation, I encountered several challenges as follows,&lt;/p>
&lt;h3 id="1-choice-of-model">1. Choice of Model&lt;/h3>
&lt;p>Since we want to integrate the pipeline to real storage systems, we had to be mindful of model choice. Machine learning based models are lighter than deep learning based models. However, deep learning based models offer higher accuracy, thus more preferable. Hence, I implemented both and examine the effectivity of the models.&lt;/p>
&lt;h3 id="2-choice-of-drift-detection-algorithm">2. Choice of Drift Detection Algorithm&lt;/h3>
&lt;p>Continual learning technique is chosen for this task may require the model to be retrained since the workload may change over time. However, the implication is we need to have a condition that triggers the retraining to be done. As training model is costly, we need to retrain it mindfully. Thus, we use drift detection algorithm to detect whether or not retraining is needed.&lt;/p>
&lt;p>There are two types of drift detection algorithms, namely statistical based test and model based drift detection. For minimizing overhead reason, we pick statistical tests. There exists various algorithms of choice. I picked 5 of them to be implemented and evaluated.&lt;/p>
&lt;h2 id="plan">Plan&lt;/h2>
&lt;p>For the second half of the summer, I am going to study Riak and create Chameleon Trovi artifact for deploying Riak in a cluster.&lt;/p></description></item><item><title>Midterm Blog Measuring Open-source Database Systems under TPC-C Benchmark with Unreported Settings</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre23/osu/missingsettings/20230802-ren.450/</link><pubDate>Wed, 02 Aug 2023 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre23/osu/missingsettings/20230802-ren.450/</guid><description>&lt;p>As part of the &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre23/osu/missingsettings">Measuring Research Prototypes under Unreported Settings&lt;/a> my &lt;a href="https://drive.google.com/file/d/1ouFre-qMDCL_LiH5jFNUCOI1yAYHdWcS/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/yang-wang/">Yang Wang&lt;/a> and &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/miao-yu/">Miao YU&lt;/a> aims to understand the impact of missing settings in artifact evaluation.&lt;/p>
&lt;p>Based on our project proposal, the first step is to test the benchmark application on targeted systems. We pick open-source database system PostgreSQL as the target system. We test the TPC-C benchmark on PostgreSQL under default settings. We measure the throughput performanace for the benchmark by setting scalefactor as 10 and incrementing worker terminals. The settings for database server are all default values. We will take these results as baseline. In order to test on more parameters and system settings, we need to choose an association of parameters to get optimal throughput.&lt;/p>
&lt;p>We use an online tool &lt;a href="https://pgtune.leopard.in.ua/#/" target="_blank" rel="noopener">PGTune&lt;/a>, which aims to tune PostgreSQL config by the hardware. We select shared_buffer, min/max_wal_size and effective_cache_size as first set of parameters to measure. They are related to memory consumption, checkpoints and planner cost in the database server. Based on PostgreSQL &lt;a href="https://www.postgresql.org/docs/current/runtime-config.html" target="_blank" rel="noopener">official documentation&lt;/a>, shared_buffer sets the amount of memory the database server uses for shared memory buffers. Max_wal_size sets the maximum size to let the WAL grow during automatic checkpoints. Larger settings for shared_buffers usually require a corresponding increase in max_wal_size, in order to spread out the process of writing large quantities of new or changed data over a longer period of time. Effective_cache_size sets the planner&amp;rsquo;s assumption about the effective size of the disk cache that is available to a single query. This is factored into estimates of the cost of using an index; a higher value makes it more likely index scans will be used, a lower value makes it more likely sequential scans will be used.&lt;/p>
&lt;p>We conduct the experiments by setting the parameters with increments and compare the throughput performance with each other and the baseline. Based on the results, the throughput of the benchmark with larger shared_buffer and max_wal_size is up to 1.5X of the performance under default settings. The improvement by tuning max_wal_size is larger than that of tuning shared_buffer. The increased effective_cache_size does not have effect for this benchmark workload compared to its default value of the system.&lt;/p>
&lt;p>There are more values of above mentioned parameters to test. Next, I will test those parameters with increments of the values. Furthemore, we need to choose an association of more parameters to get optimal throughput. Also, the tuning tool may not generate optimal values for very high memory systems based on its description. This requires we test more possible parameters and their values for better performance.&lt;/p></description></item><item><title>Mid-term blog post for Public Artifact Data and Visualization</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre23/intel/artifactviz/20230731-zjyhhhhh/</link><pubDate>Mon, 31 Jul 2023 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre23/intel/artifactviz/20230731-zjyhhhhh/</guid><description>&lt;p>Over the past few weeks, our platform development has been progressing steadily, and we are excited to share the milestones we have achieved so far. As planned in our &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre23/intel/artifactviz/20230617-zjyhhhhh">introductory blog&lt;/a>, we have successfully laid the groundwork for the platform with the guidance and support of our mentor.&lt;/p>
&lt;h2 id="milestones-and-accomplishments">Milestones and Accomplishments&lt;/h2>
&lt;p>Here are some of the key functionalities we have implemented so far:&lt;/p>
&lt;ol>
&lt;li>Modular Architecture: We successfully designed the platform with a modular architecture, separating the Graphical User Interface (GUI) and Command-Line Interface (CLI) functionalities. This modularity allows users to interact with the platform in their preferred way.&lt;/li>
&lt;li>Experiment and Bucket Creation: Users can now create experiments, buckets (for storing different implementations of experiments), and iterations using either the GUI or CLI.&lt;/li>
&lt;li>Real-time Backend Environment Monitoring: Through the command line interface, users have the capability to control the monitoring of backend environment data, allowing for real-time tracking and analysis of important metrics.&lt;/li>
&lt;li>Visualizing Environment Variables: Users can now visualize detected environment variables on the platform. Moreover, they can compare iterations within different buckets and gain more insights by observing the timeseries data, such as CPU usage, in a graphical format.&lt;/li>
&lt;/ol>
&lt;h2 id="challenges">Challenges&lt;/h2>
&lt;p>In the early stages of designing our platform, we encountered significant challenges at the system design level. One of the most daunting obstacles we faced was devising an effective method to monitor backend environment variables. To tackle this obstacle, we engaged in extensive discussions and sought guidance from our mentor. After careful consideration, we decided to adopt a multi-process approach to monitor the backend environment variables effectively. Specifically, we devised a meticulous strategy of creating a separate process in the background for each specific metric we needed to monitor. By allocating a dedicated process to each metric, we ensured a streamlined and efficient monitoring process.&lt;/p>
&lt;p>Currently, we are facing a challenge related to monitoring metrics. Since different users have varying monitoring requirements, it is impractical for us to manually write monitoring solutions for each user. To address this issue, we are actively working on implementing a pluggable design that allows users to configure their own monitoring preferences.&lt;/p>
&lt;p>Our approach involves providing users with the flexibility to define their custom configuration files or write monitoring programs following our documented guidelines. This way, users can specify the specific metrics they wish to monitor and tailor the monitoring process to their individual needs.&lt;/p>
&lt;h2 id="try-it-out">Try it Out!&lt;/h2>
&lt;p>As mentioned earlier, we have completed the core functionalities of our platform, and we would love to have you try it out and provide us with valuable feedback. Here are the links to our repositories where you can explore and experiment with our platform:&lt;/p>
&lt;ol>
&lt;li>&lt;a href="https://github.com/PublicExperimentDatabase/PublicExperimentGUI" target="_blank" rel="noopener">GUI Repository&lt;/a> and &lt;a href="https://github.com/PublicExperimentDatabase/PublicExperimentCLI" target="_blank" rel="noopener">CLI Repository&lt;/a>
&lt;ul>
&lt;li>In the README.md file of GUI repo, you will find detailed installation instructions to set up the Graphical User Interface (GUI). Follow the steps provided to get started with our platform.&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>&lt;a href="https://github.com/PublicExperimentDatabase/test-experiment" target="_blank" rel="noopener">Sample Repository&lt;/a>
&lt;ul>
&lt;li>In this repository, we have included scripts that allow you to run our program. Additionally, you can use these scripts as templates to monitor your own programs according to your specific requirements.&lt;/li>
&lt;/ul>
&lt;/li>
&lt;/ol>
&lt;p>We welcome you to take the platform for a test drive and feel free to raise any issues you encounter during the installation process. Your feedback is invaluable to us, as it helps us identify and address any potential installation challenges and improve the user experience.&lt;/p></description></item><item><title>Enhancing Drift Detection through Fine-Tuning Llama2</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre23/anl/perfdrift/20230730-kangrui/</link><pubDate>Sun, 30 Jul 2023 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre23/anl/perfdrift/20230730-kangrui/</guid><description>&lt;p>Greetings everyone, I&amp;rsquo;m Kangrui. Over the past few weeks, we&amp;rsquo;ve dedicated our efforts and have consequently made significant progress in our drift detection methods. Now, I&amp;rsquo;m excited to present to you a detailed elaboration on how we prompted and fine-tuned Llama2 to efficiently carry out the drift detection task.&lt;/p>
&lt;h2 id="motivation">Motivation&lt;/h2>
&lt;h3 id="why-llm-in-drift-detection-method">Why LLM in drift detection method?&lt;/h3>
&lt;p>The use of large language models (LLMs) in drift detection methods presents numerous benefits that place it as a prominent solution in this domain.&lt;/p>
&lt;ol>
&lt;li>
&lt;p>&lt;strong>Rapid Development:&lt;/strong> LLMs are in the vanguard of technological advancement. This field is evolving rapidly with continuous enhancements in model architecture, training techniques, and data handling. With every new version, these models are showing an increasing capacity to understand and generate human-like text, pushing the limits of what is achievable in Natural Language Processing (NLP) and Artificial Intelligence (AI) as a whole.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Superior Performance:&lt;/strong> Traditional drift detection methodologies such as Page-Hinkley, EDDM, and HDDM have their merits and have found success in numerous scenarios. Even Deep Learning (DL) techniques, like training a predictive model based on error rates, have made significant strides in the field. However, when handling complex, high-dimensional, and real-time data, LLMs have demonstrated exceptional results. They are not only able to effectively predict and respond to drifts but also adapt to new trends more swiftly. Our experiments using LLMs like GPT-3.5-turbo have yielded impressive results, notably outperforming other methods.&lt;/p>
&lt;/li>
&lt;/ol>
&lt;p>
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="GPT-3.5-turbo Performance" srcset="
/report/osre23/anl/perfdrift/20230730-kangrui/gpt-3.5-performance_hudb1929583c62f83e6182026371c0950a_147441_986c57531b096aac2ea5604c7942efed.webp 400w,
/report/osre23/anl/perfdrift/20230730-kangrui/gpt-3.5-performance_hudb1929583c62f83e6182026371c0950a_147441_534b4ca0b9e767d820ed9b45d754db9f.webp 760w,
/report/osre23/anl/perfdrift/20230730-kangrui/gpt-3.5-performance_hudb1929583c62f83e6182026371c0950a_147441_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre23/anl/perfdrift/20230730-kangrui/gpt-3.5-performance_hudb1929583c62f83e6182026371c0950a_147441_986c57531b096aac2ea5604c7942efed.webp"
width="760"
height="303"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;p>&lt;em>Fig. 1: Concept dirfts detected by GPT-3.5-turbo in Cori dataset&lt;/em>&lt;/p>
&lt;ol start="3">
&lt;li>&lt;strong>Flexibility:&lt;/strong> One of the major advantages of using LLMs is their flexibility in dealing with different types of input and output. In contrast to traditional methods, which are confined to single feature concept drift detection and can only process numerical values, LLMs can handle a range of input types including text, numbers, and more complex data structures. This capability allows them to detect multi-feature concept drifts, thereby broadening the scope and complexity of problems they can tackle. Moreover, the generation capability of LLMs can provide rich and detailed output, facilitating more comprehensive insights into the detected drifts.&lt;/li>
&lt;/ol>
&lt;h2 id="why-llama2-in-drift-detection-method">Why Llama2 in drift detection method?&lt;/h2>
&lt;p>Llama2 presents a series of advantages that make it an excellent choice for applying llm in drift detection. Here&amp;rsquo;s a breakdown of the key reasons:&lt;/p>
&lt;ol>
&lt;li>
&lt;p>&lt;strong>Performance Guarantee:&lt;/strong> As a newly released model, Llama2 has undergone extensive development and testing, providing a reliable guarantee of performance. It represents the cutting edge in AI technology, having benefited from the latest research and advancements in language model design.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Accessibility Guarantee:&lt;/strong> One significant advantage of Llama2 is that it is open-source. It is readily accessible on HuggingFace, which also provides a range of mature tools to fine-tune and deploy the model.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Flexibility for Fine-Tuning:&lt;/strong> Llama2 comes in different sizes, such as 7B, 13B, and 75B parameters, which allows for flexibility in model selection based on the task&amp;rsquo;s requirements and computational resources.&lt;/p>
&lt;/li>
&lt;/ol>
&lt;h2 id="data">Data&lt;/h2>
&lt;h3 id="dataset">Dataset&lt;/h3>
&lt;p>In our study, we employed &lt;a href="https://github.com/alipsgh/data-streams" target="_blank" rel="noopener">Synthetic data streams&lt;/a> for the fine-tuning of Llama2. Synthetic data streams serve as an invaluable resource for controlled experiments in the domain of drift detection. These curated datasets encompass varied types of drifts, providing us with the capability to assess the efficacy of our detection algorithms under diverse scenarios.&lt;/p>
&lt;p>Here is a brief introduction to the synthetic datasets we used:&lt;/p>
&lt;ol>
&lt;li>
&lt;p>&lt;strong>Sine1 &amp;amp; Sine2:&lt;/strong> These datasets induce abrupt concept drift within a two-dimensional feature space. The classification rule, a sine function, dictates the instance labels, which are flipped at every drift point.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Mixed:&lt;/strong> This dataset, characterized by its combination of numeric and boolean features, uses a composite classification rule. The abrupt concept drift is simulated via a periodic reversal of class labels.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Stagger:&lt;/strong> This categorical dataset incorporates abrupt concept drift by periodically altering the classification rules tied to the features.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Circles &amp;amp; LED:&lt;/strong> These datasets are designed to simulate gradual concept drift. In Circles, the classification of instances is determined by their spatial relation to specific circles. LED imitates a seven-segment digit display, introducing drift by interchanging the pertinent attributes.&lt;/p>
&lt;/li>
&lt;/ol>
&lt;p>Typically, the synthetic datasets contain 100,000 or 1,000,000 instances. The concept drift happens every 25000 or 33333 instances each portraying either abrupt (with drifting period of 50 instances) or gradual concept drifts (with drifting period of 500 instances).&lt;/p>
&lt;h3 id="data-preprocessing-and-metrics">Data Preprocessing and Metrics&lt;/h3>
&lt;p>Given the token limit of Llama2 and the specific requirements of our project, we needed to transform the data into an appropriate format.&lt;/p>
&lt;p>As such, we processed each data stream into three sections: the &amp;lsquo;undrifted&amp;rsquo; period, the &amp;lsquo;drifting&amp;rsquo; period, and the &amp;lsquo;drifted&amp;rsquo; period. All instances in each section were randomly and independently drawn from the original data stream, summing up to a maximum of 100 instances. The number of instances for the undrifted and drifted periods ranged from 20 to 50, and for the drifting period, it ranged from 10 to 20.&lt;/p>
&lt;p>For instance, let&amp;rsquo;s consider a dataset containing 100,000 instances where the concept drift occurs every 25,000 instances, causing abrupt concept drift. To format a data point, we could draw 20 to 50 instances from the first 25,000 as the undrifted period. Then, we could draw 10 to 20 instances from the 25,001st to 25,050th instance as the drifting period. Finally, we would draw 10 to min(100 - num(undrifted period) - num(drifting period), 50) from the 25,051st to 50,050th instance as the drifted period. This newly formatted data stream would then be fed into Llama2.&lt;/p>
&lt;p>We also included some additional information to assist Llama2&amp;rsquo;s inference process. A typical data point in our processed dataset includes:&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="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s2">&amp;#34;before_period&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="mi">0&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="mi">31&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;transition_period&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="mi">32&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="mi">38&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;after_period&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="mi">39&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="mi">59&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;before_index&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="mi">196&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="mi">19963&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;transition_index&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="mi">20002&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="mi">20030&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;after_index&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="mi">20310&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="mi">39984&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;meta&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;Dataset: MIXED&lt;/span>&lt;span class="se">\n\t&lt;/span>&lt;span class="s2">v&amp;#39;s type is nominal, range is (&amp;#39;False&amp;#39;, &amp;#39;True&amp;#39;)&lt;/span>&lt;span class="se">\n\t&lt;/span>&lt;span class="s2">w&amp;#39;s type is nominal, range is (&amp;#39;False&amp;#39;, &amp;#39;True&amp;#39;)&lt;/span>&lt;span class="se">\n\t&lt;/span>&lt;span class="s2">x&amp;#39;s type is numeric&lt;/span>&lt;span class="se">\n\t&lt;/span>&lt;span class="s2">y&amp;#39;s type is numeric&lt;/span>&lt;span class="se">\n\t&lt;/span>&lt;span class="s2">class&amp;#39;s type is nominal, range is (&amp;#39;p&amp;#39;, &amp;#39;n&amp;#39;)&lt;/span>&lt;span class="se">\n&lt;/span>&lt;span class="s2">&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="s2">&amp;#34;data_stream&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="o">...&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>From this dictionary, the &amp;ldquo;meta&amp;rdquo; and &amp;ldquo;data_stream&amp;rdquo; entries are fed into Llama2. The &amp;ldquo;transition_period&amp;rdquo; serves as the criterion: if Llama2&amp;rsquo;s answer lies within the &amp;ldquo;transition_period&amp;rdquo;, we deem it correct.&lt;/p>
&lt;h2 id="llama2">Llama2&lt;/h2>
&lt;h3 id="inference">Inference&lt;/h3>
&lt;p>We experimented with three variations of prompts during the inference phase.&lt;/p>
&lt;p>&lt;strong>Prompt Version 1:&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">[INST] &amp;lt;&amp;lt;SYS&amp;gt;&amp;gt;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> You are a helpful, respectful, and honest assistant. Always provide the most helpful responses possible while ensuring safety. Ensure that your responses are socially unbiased, positive, and free from harmful, unethical, racist, sexist, toxic, dangerous, or illegal content. If a question lacks coherence or sense, explain why instead of providing incorrect information. If you are uncertain about an answer, refrain from sharing false information.
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &amp;lt;&amp;lt;/SYS&amp;gt;&amp;gt;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> Your task is to identify the index in a given data stream where the relationship between the features and labels begins to change. The data stream is formatted as a list, with each element being a two-element list: the first represents the features (also a list), and the second is the label. If your answer is &amp;#39;x&amp;#39;, it indicates that the data pattern starts shifting at the xth data point in the stream.
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> Here&amp;#39;s an example of the data&amp;#39;s metadata: Dataset: SINE1
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> x&amp;#39;s type is numeric
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> y&amp;#39;s type is numeric
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> class&amp;#39;s type is nominal, range is (&amp;#39;p&amp;#39;, &amp;#39;n&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"> The given data stream is: [[[0.7, 0.07], &amp;#39;p&amp;#39;], [[0.45, 0.78], &amp;#39;n&amp;#39;], ..., [[0.64, 0.45], &amp;#39;n&amp;#39;]]
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> Your task is to respond with a single index. No additional information is required.
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">[/INST]
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>&lt;strong>Prompt Version 2:&lt;/strong>&lt;/p>
&lt;p>The same as Prompt 1, but with a specific range for the index response:&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">Please provide an index ranging from 0 to 96. No additional information is required.
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>&lt;strong>Prompt Version 3:&lt;/strong>&lt;/p>
&lt;p>This prompt uses an instruction-input-output design, which we adopted for fine-tuning:&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">Below is an instruction paired with an input that provides further context. Write a response that appropriately completes the request.
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">### Instruction:
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Identify the index in a given data stream where the relationship between features and labels begins to change. The data stream is formatted as a list, each element being a two-element list: the first represents the features (also a list), and the second is the label. For instance, if the response is &amp;#39;x&amp;#39;, it means that the data pattern starts shifting at the xth data point in the stream. Only respond with an index, no further information is necessary.
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">### Input:
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Meta Data:
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Dataset: SINE1
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> x&amp;#39;s type is numeric
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> y&amp;#39;s type is numeric
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> class&amp;#39;s type is nominal, range is (&amp;#39;p&amp;#39;, &amp;#39;n&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">Data stream:
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">[[[0.7, 0.07], &amp;#39;p&amp;#39;], [[0.45, 0.78], &amp;#39;n&amp;#39;], .., [[0.64, 0.45], &amp;#39;n&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">### Response:
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Despite minor differences between Prompt Version 1 and Version 2, both suggested by Meta, the results varied significantly, a topic we will delve into in the following section. Prompt Version 3, employing the instruction-input-output structure, was used during our fine-tuning process.&lt;/p>
&lt;h3 id="fine-tuning">Fine-Tuning&lt;/h3>
&lt;p>We utilized the tools provided by &lt;a href="https://github.com/facebookresearch/llama-recipes" target="_blank" rel="noopener">llama-recipes&lt;/a> to fine-tune Llama2. The key command used to initiate the fine-tuning process is illustrated below:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-shell" data-lang="shell">&lt;span class="line">&lt;span class="cl">python llama_finetuning.py --use_peft &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> --peft_method lora &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> --quantization &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> --model_name meta-llama/Llama-2-13b-chat-hf &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> --output_dir ./fine_tuned_model/Llama-2-13b-chat-hf-test_finetune &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> --dataset alpaca_dataset &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> --batch_size_training &lt;span class="m">40&lt;/span> &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> --num_epochs &lt;span class="m">1&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Some explaination about the parameters:&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">--use_peft: This flag indicates the use of the Parameter-Efficient Fine-Tuning (PEFT) method. PEFT allows us to fine-tune the model more efficiently.
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">--peft_method lora: Here, we specify that the Lora (Layer-wise Optimal Brain Surgeon with Relevance-based Adjustment) method should be used for PEFT.
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">--quantization: The quantization flag is used to reduce the memory footprint of the model during the inference stage. It does so by reducing the precision of the model&amp;#39;s weights.
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">--dataset alpaca_dataset: Specifies the dataset setting used for fine-tuning, in this case, the &amp;#39;alpaca_dataset&amp;#39; indicates the instruction-input-output structure for fine-tuning.
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="results">Results&lt;/h2>
&lt;p>The performance of various models and prompt versions is depicted in Fig. 2.&lt;/p>
&lt;p>
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="All Performance" srcset="
/report/osre23/anl/perfdrift/20230730-kangrui/performance_plot_hu026976f577cb17db71cb82cd3675225d_101027_f4b54b1d163428a3bbdd2373c5e7d6c6.webp 400w,
/report/osre23/anl/perfdrift/20230730-kangrui/performance_plot_hu026976f577cb17db71cb82cd3675225d_101027_ba09d14d8674a9735bf9bb60ce301dae.webp 760w,
/report/osre23/anl/perfdrift/20230730-kangrui/performance_plot_hu026976f577cb17db71cb82cd3675225d_101027_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre23/anl/perfdrift/20230730-kangrui/performance_plot_hu026976f577cb17db71cb82cd3675225d_101027_f4b54b1d163428a3bbdd2373c5e7d6c6.webp"
width="760"
height="608"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;p>&lt;em>Fig. 2: Performance comparison of different models and prompt versions.&lt;/em>&lt;/p>
&lt;p>It is evident from the results that the design of the prompt has a significant impact on Llama2&amp;rsquo;s performance. Furthermore, due to computational resource constraints, we have only managed to fine-tune Llama2 on a portion of our dataset (approximately 1,000 instances). The entire training set consists of 19,000 instances, and the test set includes 5,000 instances. Despite these limitations, a performance increase is noticeable after fine-tuning.&lt;/p></description></item><item><title>GPU Emulator for Easy Reproducibility of DNN Training -- Interim Blog Post</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre23/utexas/gpuemulator/20230730-haoranwu/</link><pubDate>Sun, 30 Jul 2023 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre23/utexas/gpuemulator/20230730-haoranwu/</guid><description>&lt;h2 id="introduction">Introduction&lt;/h2>
&lt;h4 id="motivation">Motivation&lt;/h4>
&lt;p>The growing popularity of Deep Neural Networks has resulted in a substantial increase in demand for Graphics Processing Units (GPUs). GPUs are crucial for conducting matrix computations in DNN training and inference. However, they are expensive to purchase for personal use, and the limited availability of GPU resources in public research clouds like Chameleon further exacerbates the issue. This scarcity of resources can cause delays in DNN-related research projects. Therefore, building an emulator can ameliorate the trouble of reserving GPUs, and the emulator can be modified to gather the profiles needed for optimization much quicker.&lt;/p>
&lt;h4 id="overture">Overture&lt;/h4>
&lt;p>The follwing sections will introduce the completed tasks and specify the details within each. The contents are briefly summarized and will try to present the necessary information only. We finished the following tasks:&lt;/p>
&lt;ul>
&lt;li>Literature Review&lt;/li>
&lt;li>Emulator implementation:
&lt;ul>
&lt;li>Time Profiling&lt;/li>
&lt;li>Pinned Memory&lt;/li>
&lt;li>Inter-GPUs Computation&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>Reproducing Figures&lt;/li>
&lt;/ul>
&lt;p>I will introduce them and the importance of each one.&lt;/p>
&lt;h2 id="tasks--reason">Tasks + Reason&lt;/h2>
&lt;h4 id="literature-review">Literature Review&lt;/h4>
&lt;p>While waiting for the measurements, I started reading about other GPU-related papers, especially the ones about GPU Schedulers. We found that besides emulating computation and transfer time, we should also emulate the GPU memory profile in order to reproduce some other papers. Fortunately, it’s doable. In fact, without actually using a GPU, we can emulate many aspects of the GPU, more than just its timing. I found several papers that are reproducible theoretically, but they use Tensorflow while my current work targets Pytorch. Therefore I need to keep looking for the ones that use Pytorch.&lt;/p>
&lt;p>Afterwards, we started doing more paper reviews and looked over the papers about GPU Scheduling from 2018-2023 to see if we can reproduce figures from other papers. We went over 150 papers to search for the ones that do have implementation in PyTorch and the complemented GitHub page. We managed to find about 15 papers built in PyTorch and 6 of them were published on GitHub.&lt;/p>
&lt;p>We found the paper “CoGNN: Efficient Scheduling for Concurrent GNN Training on GPUs” and its GitHub page. The paper has three badges of “Artifacts Available, Evaluated, and Reproduced.” The paper’s content is implemented in PyTorch which means we can probably emulate this paper’s result with the emulator we already have by adding more features. We have started testing out to see if we can set up a similar environment and reproduce the experiments in the paper. After checking out the reproducibility of the paper, we will try to reproduce it using our emulator, and we might add new features to our emulator during this process.&lt;/p>
&lt;p>Firstly, I tried to reproduce the figures in the paper “CoGNN: Efficient Scheduling for Concurrent GNN Training on GPUs”, but stopped after a considerable number of attempts because the README was incomplete and too hard to follow. I first headed to the GitHub of the paper. I read the paper and understood that the GNN’s training was not the same as regular deep learning training, because it had input irregularity, and CoGNN helped better schedule the jobs to the machines by their algorithm. However, when I tried to install the software by the requirement of their environment README in order to reproduce the figures, many dependency issues were there, and barely any packages required were installed successfully. Their README in the software module was unclear on how to run the experiments too. Following the experiment setup did not give me the expected results. After a set of struggles with even completing one suggested experiment, we eventually decided to move on with other papers and abandoned this paper, reminding me the importance of reproducibility again.&lt;/p>
&lt;p>Secondly, we found another paper “Beware of Fragmentation: Scheduling GPU-Sharing Workloads with Fragmentation Gradient Descent”. After reading the paper, we figured that the main focus was on distributing the resources (CPU, GPU) of the nodes to the jobs that were distributed by the Kubernetes Scheduler. In this way, there would be less GPU fragmentation and a higher utility rate of the resources. The paper used a simulator to simulate a large number of nodes and run the jobs by simulation. I successfully ran the experiments demonstrated in the repo and even created a smaller sample so that we could gain the result faster, because their original experiment takes 1020 times which will take about a month. However, when we dug deeper into their paper, we soon realized that their emulator is not a “real” one. Although their emulator is built off Kubernetes, the side where they used to create the figures are mere simulators and therefore doesn’t fit with our goal of emulating only GPU-related parts while running other real-system parts.&lt;/p>
&lt;h5 id="reason">Reason:&lt;/h5>
&lt;p>The purpose is to figure out which papers can be reproduced using the emulator, and what other features are needed for the emulator to work.&lt;/p>
&lt;h4 id="emulator-implementation">Emulator implementation&lt;/h4>
&lt;h5 id="time-profiling">Time Profiling&lt;/h5>
&lt;p>I did the performance profiling of different GPUs, which included CPU-to-GPU data transfer time and GPU computation time. These two elements will always be rather constant on GPUs so they can be easily emulated by profiling first and then utilized in the emulation. We did it for 6 different GPUs including k80, rtx6000, m40, a100pcie, v100, and p100.&lt;/p>
&lt;p>After having the performance profiling information of a few types of GPU nodes, I implemented the first naive version of the emulator. I used the profile recorded and sleep() function to represent the amount of time that each step needs to accomplish. Meanwhile, the time also varies with the command given so some simple arithmetics were implemented too. It’s implemented on a CPU node yet if we want to know the time profile of a GPU, we can still get them just like on a real GPU node.&lt;/p>
&lt;h5 id="reason-1">Reason:&lt;/h5>
&lt;p>The time profile collected can be compared with Data Wait Time to conduct research on minimizing pipeline stall across different GPUs and models.&lt;/p>
&lt;h5 id="pinned-memory">Pinned Memory&lt;/h5>
&lt;p>Pin memory threads – GPU-based Pytorch utilizes such threads to copy data from SHM to pinned memory, but CPU-based Pytorch doesn’t do so. Therefore, I need to implement an emulation of the pin mem threads. Fortunately, the data copy time is predictable. I have already found out that pin mem time has little to do with # of workers or the model type but only the batch size. I still need to find out if it has anything to do with the GPU nodes, which I assume not at this point.&lt;/p>
&lt;p>While implementing the features, We first emulated the CPU-to-GPU transfer time and GPU computation time for the p100 GPU based on the profiled information. Another CUDA behavior that requires emulation is that CUDA copies data from shared memory to pinned memory. In order to emulate it, we measured and emulated the time for copying such data (pinned memory). However, the emulator did not behave exactly as the real GPU. This was because we only emulated the time cost of using pinned_memory, but didn’t emulate its memory cost. In order to resolve the problem above, we wrote a CPython module to manually allocate page-locked memory (which behaves the same as CUDA’s pinned_memory). After we implemented this mechanism, the emulator’s fundamental functions were equipped and properly mimicked CUDA’s behaviors.&lt;/p>
&lt;h5 id="reason-2">Reason:&lt;/h5>
&lt;p>After collecting the GPU profile, I did a comparison with the actual GPU but noticed some differences in their IO time, meaning there was a difference between the emulation-based Pytorch and the actual GPU-based Pytorch.&lt;/p>
&lt;h5 id="inter-gpus-computation">Inter-GPUs Computation&lt;/h5>
&lt;p>We worked on the emulation of inter-GPU computation time in order to emulate Figure 9 in the DNN stall paper. This is one of the influential factors in multi-GPU training and we decided to first figure out how to implement this feature. As claimed in the paper, the larger the batch size, the less time it took to update the model. However, our current emulator would give out the same computation time since we have not added features to emulate inter-GPU behaviors. The smaller the batch size, more overheads were proven to be larger. The first step was to rent a lease that had 2 GPUs and saw the effects of inter-GPUs on computation time. We found that there was a small amount of overhead when running two GPUs instead of 1 GPU on the p100 node. My job was to find out where and how these overheads happened and find ways to emulate these features in order to reproduce Figure 9. We used resnet18, 4 workers, 10 batches to separately run 128 batch-size with 1 GPU (Group A) and 256 batch-size with 2 GPUs (Group B). With our current emulator, we would get the same computation time for both experiments to finish 1 batch. However, we saw that the computation time of Group B was longer than Group A, meaning there were some overheads in computation time. I then hacked into the source code of PyTorch and successfully figured out one part of the overhead contributing factors.&lt;/p>
&lt;h5 id="reason-3">Reason:&lt;/h5>
&lt;p>To better complete the emulator so that it can procide accurate emulation even when using more than 1 GPU on a machine.&lt;/p>
&lt;h4 id="reproducing-figures">Reproducing Figures&lt;/h4>
&lt;p>After implementing the emulator, we managed to use it to reproduce Figures 3, 4, 5, and 6 in the paper &lt;a href="chrome-extension://efaidnbmnnnibpcajpcglclefindmkaj/https://vldb.org/pvldb/vol14/p771-mohan.pdf">“Analyzing and Mitigating Data Stalls in DNN Training”&lt;/a> after a series of experiments and testing. It was noted that some environments in the paper were not the same as what we ran in the past week, but general patterns did apply to the expected hypothesis and measurements. We double checked all the data and figures produced and found out that our prototype meets our expectations, and it was time to look for other papers to reproduce to make the emulator more interesting.
The orginial comparing with the reproduced figures are demonstrated as below, you can notice that the patterns do reflect our expected results:
Original Figure 3:
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="original_figure3" srcset="
/report/osre23/utexas/gpuemulator/20230730-haoranwu/original_figure3_hu4825ad7506f6235ff41682e84b760224_101661_b55e965312579f5be79be0c6d21c853a.webp 400w,
/report/osre23/utexas/gpuemulator/20230730-haoranwu/original_figure3_hu4825ad7506f6235ff41682e84b760224_101661_def01bfdab18fc7d262d08c4c2388828.webp 760w,
/report/osre23/utexas/gpuemulator/20230730-haoranwu/original_figure3_hu4825ad7506f6235ff41682e84b760224_101661_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre23/utexas/gpuemulator/20230730-haoranwu/original_figure3_hu4825ad7506f6235ff41682e84b760224_101661_b55e965312579f5be79be0c6d21c853a.webp"
width="710"
height="399"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
Reproduced Figure 3:
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="reproduced_figure3" srcset="
/report/osre23/utexas/gpuemulator/20230730-haoranwu/reproduced_figure3_hu7ba68c9ce0c1781ae4d515ec33f3be68_90176_8b936fcb3ddfc9bb3592d7628c1f8641.webp 400w,
/report/osre23/utexas/gpuemulator/20230730-haoranwu/reproduced_figure3_hu7ba68c9ce0c1781ae4d515ec33f3be68_90176_7e97d9d32a7ef0dc9e6fd3817d59f028.webp 760w,
/report/osre23/utexas/gpuemulator/20230730-haoranwu/reproduced_figure3_hu7ba68c9ce0c1781ae4d515ec33f3be68_90176_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre23/utexas/gpuemulator/20230730-haoranwu/reproduced_figure3_hu7ba68c9ce0c1781ae4d515ec33f3be68_90176_8b936fcb3ddfc9bb3592d7628c1f8641.webp"
width="676"
height="760"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
Original Figure 4:
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="original_figure4" srcset="
/report/osre23/utexas/gpuemulator/20230730-haoranwu/original_figure4_huf7912859d14522ea127e57f50e29e6e8_97339_981ac3e3445c520fd3934870e4eddab4.webp 400w,
/report/osre23/utexas/gpuemulator/20230730-haoranwu/original_figure4_huf7912859d14522ea127e57f50e29e6e8_97339_d783b7ce2dba6c9c3d988fc836f9f0ca.webp 760w,
/report/osre23/utexas/gpuemulator/20230730-haoranwu/original_figure4_huf7912859d14522ea127e57f50e29e6e8_97339_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre23/utexas/gpuemulator/20230730-haoranwu/original_figure4_huf7912859d14522ea127e57f50e29e6e8_97339_981ac3e3445c520fd3934870e4eddab4.webp"
width="687"
height="390"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
Reproduced Figure 4:
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="reproduced_figure4" srcset="
/report/osre23/utexas/gpuemulator/20230730-haoranwu/reproduced_figure4_hubf1eec72de057c79eda887bdba386155_82657_05469d8674723f8da1bb12f8f7e3e989.webp 400w,
/report/osre23/utexas/gpuemulator/20230730-haoranwu/reproduced_figure4_hubf1eec72de057c79eda887bdba386155_82657_60c661b4eb6240ac2765c6540bcaf26c.webp 760w,
/report/osre23/utexas/gpuemulator/20230730-haoranwu/reproduced_figure4_hubf1eec72de057c79eda887bdba386155_82657_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre23/utexas/gpuemulator/20230730-haoranwu/reproduced_figure4_hubf1eec72de057c79eda887bdba386155_82657_05469d8674723f8da1bb12f8f7e3e989.webp"
width="695"
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="reproduced_figure4a" srcset="
/report/osre23/utexas/gpuemulator/20230730-haoranwu/reproduced_figure4a_huce40b0ef347fbe8c5dda7cd64b89a82a_83431_6b8b84d9f461863c0223d3d2992f1557.webp 400w,
/report/osre23/utexas/gpuemulator/20230730-haoranwu/reproduced_figure4a_huce40b0ef347fbe8c5dda7cd64b89a82a_83431_732e04a2227ba54fb9fb64e0dbe90717.webp 760w,
/report/osre23/utexas/gpuemulator/20230730-haoranwu/reproduced_figure4a_huce40b0ef347fbe8c5dda7cd64b89a82a_83431_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre23/utexas/gpuemulator/20230730-haoranwu/reproduced_figure4a_huce40b0ef347fbe8c5dda7cd64b89a82a_83431_6b8b84d9f461863c0223d3d2992f1557.webp"
width="687"
height="701"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
Original Figure 5:
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="original_figure5" srcset="
/report/osre23/utexas/gpuemulator/20230730-haoranwu/original_figure5_hua788af616c21c63d77c26ece571c44f2_48006_c74d4ac38263a1767beef877888c7a0e.webp 400w,
/report/osre23/utexas/gpuemulator/20230730-haoranwu/original_figure5_hua788af616c21c63d77c26ece571c44f2_48006_01b1945b0dc6c47dee7de7ade64b50bc.webp 760w,
/report/osre23/utexas/gpuemulator/20230730-haoranwu/original_figure5_hua788af616c21c63d77c26ece571c44f2_48006_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre23/utexas/gpuemulator/20230730-haoranwu/original_figure5_hua788af616c21c63d77c26ece571c44f2_48006_c74d4ac38263a1767beef877888c7a0e.webp"
width="549"
height="299"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
Reproduced Figure 5:
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="reproduced_figure5" srcset="
/report/osre23/utexas/gpuemulator/20230730-haoranwu/reproduced_figure5_hu19c2897350abb8738bf9073d8758691e_57335_fdba37e325a306223f6a391e9a69a4ac.webp 400w,
/report/osre23/utexas/gpuemulator/20230730-haoranwu/reproduced_figure5_hu19c2897350abb8738bf9073d8758691e_57335_8c9f78e75740fb2681a32c842527250b.webp 760w,
/report/osre23/utexas/gpuemulator/20230730-haoranwu/reproduced_figure5_hu19c2897350abb8738bf9073d8758691e_57335_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre23/utexas/gpuemulator/20230730-haoranwu/reproduced_figure5_hu19c2897350abb8738bf9073d8758691e_57335_fdba37e325a306223f6a391e9a69a4ac.webp"
width="719"
height="750"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
Original Figure 6:
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="original_figure6" srcset="
/report/osre23/utexas/gpuemulator/20230730-haoranwu/original_figure6_hu28381534680632c929008cb2ca5db00c_55137_a24c7a3b53c18cb5a6f22a52536fd86f.webp 400w,
/report/osre23/utexas/gpuemulator/20230730-haoranwu/original_figure6_hu28381534680632c929008cb2ca5db00c_55137_5f6250df82bf4852c73c925bc3934b14.webp 760w,
/report/osre23/utexas/gpuemulator/20230730-haoranwu/original_figure6_hu28381534680632c929008cb2ca5db00c_55137_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre23/utexas/gpuemulator/20230730-haoranwu/original_figure6_hu28381534680632c929008cb2ca5db00c_55137_a24c7a3b53c18cb5a6f22a52536fd86f.webp"
width="527"
height="304"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
Reproduced Figure 6:
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="reproduced_figure6" srcset="
/report/osre23/utexas/gpuemulator/20230730-haoranwu/reproduced_figure6_hu932abfdff2db3be7f25d6ea6fa38efc4_57111_1c46178f0a8f8ccef8efa61f5fe40809.webp 400w,
/report/osre23/utexas/gpuemulator/20230730-haoranwu/reproduced_figure6_hu932abfdff2db3be7f25d6ea6fa38efc4_57111_97e1110894b3975f840ad24bcbc0df12.webp 760w,
/report/osre23/utexas/gpuemulator/20230730-haoranwu/reproduced_figure6_hu932abfdff2db3be7f25d6ea6fa38efc4_57111_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre23/utexas/gpuemulator/20230730-haoranwu/reproduced_figure6_hu932abfdff2db3be7f25d6ea6fa38efc4_57111_1c46178f0a8f8ccef8efa61f5fe40809.webp"
width="760"
height="626"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;h5 id="reason-4">Reason:&lt;/h5>
&lt;p>Our origninal goal was to reproduce papers. Therefore, reproducing figures is a really good step to achieve that.&lt;/p>
&lt;h2 id="summary--coming-future">Summary + Coming Future&lt;/h2>
&lt;p>We will keep on trying to complete the emulator and figure out the exact mechanisms needed for the implementation. We will also seek for more features and see if it&amp;rsquo;s possible to add in better features into the emulator.&lt;/p></description></item><item><title>Reproducible Analysis &amp; Models for Predicting Genomics Workflow Execution Time</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre23/uga/genomicswfmodels/20230616-charishulu/</link><pubDate>Fri, 16 Jun 2023 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre23/uga/genomicswfmodels/20230616-charishulu/</guid><description>&lt;p>Hi! I&amp;rsquo;m Charis, an undergraduate student in the IT and Big Data Analytics program at the Calvin Institute of Technology. As part of the &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre23/uga/genomicswfmodels/">Reproducible Analysis &amp;amp; Models for Predicting Genomics Workflow Execution Time&lt;/a> my &lt;a href="https://drive.google.com/file/d/1dFkC2A0HUVaWd6NpCbTjRZVfYxQ7jRxJ/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/in-kee-kim/">In Kee Kim&lt;/a> and &lt;strong>Martin Putra&lt;/strong> aims to gain insight into features that are highly correlated with execution times of genomics workflows and build machine learning models for predicting workflow execution time.&lt;/p>
&lt;p>Genomics workflows exhibit a long-tail pattern in their execution times. According to the previous project team&amp;rsquo;s findings, approximately 2% of genomics workflows had a median execution time of up to 15%, resulting in weeks of execution. Interestingly, it was observed that input quality plays a role in these execution time differences. Therefore, we will analyze features such as the quality of input data as well as the amount of resources allocated in the execution of genomics workflows to find features that correlate with execution time. Based on these features we will build a machine learning model that can predict the execution time of genomics workflows.&lt;/p>
&lt;p>By collaborating with Shayantan Banerjee (another contributor) who will study data quality, I will study the system metrics of genomics workflows both at workflow-level and tool-level. Metrics will be collected by running genomics workflows using the Slurm workload manager under various resource allocation conditions. Genomics workflows will be executed on Chameleon clusters of different sizes.&lt;/p></description></item><item><title>GPU Emulator for Easy Reproducibility of DNN Training</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre23/utexas/gpuemulator/20230613-haoranwu/</link><pubDate>Tue, 13 Jun 2023 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre23/utexas/gpuemulator/20230613-haoranwu/</guid><description>&lt;p>Hi! I’m Haoran Wu, a third year at the University of Chicago majoring in Economics and Computer Science. With my &lt;a href="https://docs.google.com/document/d/1CcNbvbNAmY0XkV9ckjHnILdMh92h1wqLUYqpT6qIsZY/edit?usp=sharing" target="_blank" rel="noopener">proposal&lt;/a>, I’m working on the &lt;a href="https://ospo.ucsc.edu/project/osre23/utexas/gpuemulator" target="_blank" rel="noopener">GPU Emulator for Easy Reproducibility of DNN Training&lt;/a> project with Professor &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/vijay-chidambaram/">Vijay Chidambaram&lt;/a>. A Deep Neural Network (DNN) is an advanced artificial neural network that employs multiple layers to process intricate patterns and relationships within data. It finds applications in various fields such as image and speech recognition, natural language processing, and predictive modeling. The layers in a DNN progressively extract higher-level features from raw input data, enabling the network to learn and generalize patterns effectively.&lt;/p>
&lt;p>The growing popularity of Deep Neural Networks has resulted in a substantial increase in demand for Graphics Processing Units (GPUs). GPUs are crucial for conducting matrix computations in DNN training and inference. However, they are expensive to purchase for personal use, and the limited availability of GPU resources in public research clouds like Chameleon further exacerbates the issue. This scarcity of resources can cause delays in DNN-related research projects.&lt;/p>
&lt;p>Nevertheless, not all DNN research experiments require the use of a GPU. System researchers, for instance, may be primarily interested in performance profiles and not necessarily in the accuracy of training or inference. These researchers might focus on optimizing the storage layer and data loading of DNN training. In such cases, a GPU emulator that accurately replicates GPU behavior without needing a physical GPU can fulfill their requirements. By utilizing a GPU emulator, system researchers can evaluate their system optimizations&amp;rsquo; performance without competing for limited GPU resources in the cloud, thereby avoiding unnecessary delays in their research progress. Our work will eventually be open source and benefit the community.&lt;/p></description></item><item><title>FlashNet: Towards Reproducible Continual Learning for Storage System</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre23/uchicago/flashnet/20230604-rannnayy/</link><pubDate>Sun, 04 Jun 2023 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre23/uchicago/flashnet/20230604-rannnayy/</guid><description>&lt;p>Hello! I&amp;rsquo;m Rani, a third year undergraduate student at Institut Teknologi Bandung majoring at Informatics. As part of the &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre23/uchicago/flashnet">FlashNet&lt;/a> my &lt;a href="https://drive.google.com/file/d/1EhJm3kqrpybOkpXiiRMfqVxGeKe9iIsh/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/haryadi-s.-gunawi/">Haryadi S. Gunawi&lt;/a> and &lt;strong>Daniar Kurniawan&lt;/strong> aims to implement and optimize the FlashNet model in real-world storage systems using continual learning techniques.&lt;/p>
&lt;p>In real world workloads, it is known that the I/O stream changes and varies. Hence, the performance of I/O read/write could vary and introduce the tail latency. We would like to predict the latency of I/O read to cut the tail and improve the system&amp;rsquo;s performance. This project focuses on improving the FlashNet pipeline and introducing adaptability to the machine learning models built.&lt;/p>
&lt;p>During the summer, we planned to implement the continual learning pipeline using machine learning models we have built previously in the project. Of course, continual learning isn&amp;rsquo;t a continual learning without the ability of self-motivated retraining. Thus, we will implement several drift detection algorithms, evaluate, and test them. Besides, we will also build a visualization platform to evaluate and monitor the performance of the models built. Lastly, we planned to create Chameleon Trovi artifacts to demonstrate our experiments and make these implementations available and reproducible to the public.&lt;/p></description></item><item><title>Reproducible Evaluation of Multi-level Erasure Coding</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre23/ornl/multilevelerasure/20230531-zhiyanw/</link><pubDate>Wed, 31 May 2023 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre23/ornl/multilevelerasure/20230531-zhiyanw/</guid><description>&lt;p>Hi! My name is Alex, an undergraduate student at the University of Chicago. As part of the &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre23/ornl/MultiLevelErasure">Reproducible Evaluation of Multi-level Erasure Coding&lt;/a>, my &lt;a href="https://docs.google.com/document/d/1dO1aING1QcSB---XklzUjNz0usVh7qWffVGC3GZq2AE/edit?usp=sharing" target="_blank" rel="noopener">proposal&lt;/a> under the mentorship of &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/john-bent/">John Bent&lt;/a> and &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/anjus-george/">Anjus George&lt;/a> aims to build a platform to reproducibly evaluate the performance and durability of MLEC (Multi-Level Erasure Coding) for large-scale storage systems under different design configurations.&lt;/p>
&lt;p>To provide some context, Erasure Coding (EC) is a common approach to protect data from disk failures. Data centers nowadays increasingly use Multi-Level Erasure Coding (MLEC), a newly developed erasure coding method that aims to deal with the drawbacks of Single-Level Erasure Coding (SLEC). Despite its increasing popularity, there have not been many systematic studies to analyze and evaluate MLEC, which is the focus of this project.&lt;/p>
&lt;p>The evaluation will primarily be conducted through simulations, since modifying configurations in a real large-scale system is costly and impractical. The expected deliverables of this project will be:&lt;/p>
&lt;ul>
&lt;li>An MLEC simulator that can reproducibly simulate different configurations of the MLEC system, e.g. coding parameter selection, chunk placement scheme, repair method choice, etc.&lt;/li>
&lt;li>An analysis of the performance and durability tradeoffs between different MLEC design choices based on the evaluation results from the simulation&lt;/li>
&lt;li>Reproduced SLEC evaluation results using existing SLEC simulators&lt;/li>
&lt;li>A comparison between MLEC and SLEC on performance and durability tradeoffs&lt;/li>
&lt;li>Well-written documents and detailed guides on how to reproduce the evaluation results&lt;/li>
&lt;/ul>
&lt;p>Our plan is to build the simulator throughout the summer. We hope our simulator and evaluation results can provide designers of large-scale storage systems with valuable insights on choosing the most appropriate erasure coding configuration per their needs.&lt;/p></description></item><item><title>[FLASHNET]: Leveraging ML-augmented I/O in Linux</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre23/uchicago/flashnet/20230530-justin08784/</link><pubDate>Tue, 30 May 2023 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre23/uchicago/flashnet/20230530-justin08784/</guid><description>&lt;p>Hi! I&amp;rsquo;m Justin, an undergraduate at the University of Chicago. As part of the &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre23/uchicago/flashnet">Flashnet&lt;/a> project my &lt;a href="https://drive.google.com/file/d/1gsNaYUYOgdN2ilpyPOmI7jjLeoZh219J/view" target="_blank" rel="noopener">proposal&lt;/a> under the mentorship of
&lt;strong>Daniar Kurniawan&lt;/strong> and &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/haryadi-s.-gunawi/">Haryadi S. Gunawi&lt;/a> aims to port the Flashnet model into the Linux kernel.&lt;/p>
&lt;p>In this attempt, I will borrow architecture/design choices from LAKE (to take advantage of its integration of ML-focused hardware acceleration in the kernel) and evaluation criteria from LinnOS to test for model inference accuracy. I also plan to support latency &amp;ldquo;bucket&amp;rdquo; inference output to improve accuracy. Ultimately, my goal is to gain further insight into best practices for integrating ML models into real-life operating systems like Linux and to inform general design choices for the Flashnet pipeline.&lt;/p></description></item><item><title>Automatic Cluster Performance Shifts Detection Toolkit</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre23/anl/perfdrift/20230527-kangrui/</link><pubDate>Sat, 27 May 2023 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre23/anl/perfdrift/20230527-kangrui/</guid><description>&lt;p>Hi! I am Kangrui, a Pre-doc student at the University of Chicago. As part of the &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre23/anl/perfdrift">Automatic Cluster Performance Shifts Detection Toolkit&lt;/a> my &lt;a href="https://drive.google.com/file/d/1AxpgWLzF3oKTFlD8q6JYS35CxxJ6c76X/view?usp=share_link" target="_blank" rel="noopener">proposal&lt;/a> under the mentorship of &lt;strong>Sandeep Madireddy&lt;/strong> and &lt;strong>Ray Andrew&lt;/strong> aims to design a real-time performance shift detection algorithm for high-performance computing clusters, ensuring minimal overheads.&lt;/p>
&lt;p>This project focuses on developing a real-time performance shift detection algorithm tailored to heterogeneous workloads, aiming to promptly inform administrators about performance changes. The primary goal is to design an algorithm that efficiently detects shifts in real-time, with minimal system overheads.&lt;/p>
&lt;p>In addition to algorithm development, we plan to enhance the Darshan toolkit&amp;rsquo;s functionality by integrating our algorithm, offering users early performance shift detection. This integration will aid administrators in making informed system utilization and scheduling decisions.&lt;/p>
&lt;p>To promote transparency and reproducibility, we&amp;rsquo;ll encapsulate our findings, scripts, and profiling data within a Jupyter notebook, especially Chameleon Trovi, enabling other researchers to reproduce our experiments easily.&lt;/p>
&lt;p>Looking ahead, we plan to expand the algorithm&amp;rsquo;s applicability to cater to diverse HPC workloads and infrastructures. Other areas of interest include its use in detecting shifts in financial markets or monitoring IoT data streams. Further refinement of our algorithm, to reduce overheads and improve real-time detection capabilities, is also a part of our future endeavours. This task may involve evaluating various shift detection methods and noise filtering techniques.&lt;/p></description></item><item><title>Measuring Open-source Database Systems under TPC-C Benchmark with Unreported Settings</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre23/osu/missingsettings/20230526-ren.450/</link><pubDate>Thu, 25 May 2023 00:00:00 +0000</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/report/osre23/osu/missingsettings/20230526-ren.450/</guid><description>&lt;p>As part of the &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre23/osu/missingsettings">Measuring Research Prototypes under Unreported Settings&lt;/a> my &lt;a href="https://drive.google.com/file/d/1ouFre-qMDCL_LiH5jFNUCOI1yAYHdWcS/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/yang-wang/">Yang Wang&lt;/a> and &lt;a href="https://deploy-preview-1007--ucsc-ospo.netlify.app/author/miao-yu/">Miao YU&lt;/a> aims to understand the impact of missing settings in artifact evaluation.&lt;/p>
&lt;p>The project plans to measure the impact of different missing settings for open-source database systems, such as MySQL and PostgreSQL particularly under the TPC-C Benchmark. The objective requires to run experiments on popular settings that are not reported and fix any problems during the experiments for the target systems. The project will compare the performance characteristics, and analyze the impact of missing settings on the performance of the target systems.&lt;/p></description></item></channel></rss>