<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>benchmark | UCSC OSPO</title><link>https://ucsc-ospo.netlify.app/tag/benchmark/</link><atom:link href="https://ucsc-ospo.netlify.app/tag/benchmark/index.xml" rel="self" type="application/rss+xml"/><description>benchmark</description><generator>Wowchemy (https://wowchemy.com)</generator><language>en-us</language><lastBuildDate>Mon, 09 Nov 2026 00:00:00 +0000</lastBuildDate><image><url>https://ucsc-ospo.netlify.app/media/logo_hub6795c39d7c5d58c9535d13299c9651f_74810_300x300_fit_lanczos_3.png</url><title>benchmark</title><link>https://ucsc-ospo.netlify.app/tag/benchmark/</link></image><item><title>Final Report: From Lookup to Reasoning, an Allocation-Aware Resource Advisor for Chameleon</title><link>https://ucsc-ospo.netlify.app/report/osre26/ucsc/chameleon-advisor/20261109-vivek-rai/</link><pubDate>Mon, 09 Nov 2026 00:00:00 +0000</pubDate><guid>https://ucsc-ospo.netlify.app/report/osre26/ucsc/chameleon-advisor/20261109-vivek-rai/</guid><description>&lt;p>Hello! I&amp;rsquo;m Vivek Rai, and this is my final report for my Summer of Reproducibility project on the &lt;a href="https://www.chameleoncloud.org/" target="_blank" rel="noopener">Chameleon&lt;/a> testbed, under the mentorship of Paul Marshall. Since this is my only blog post for the project, I&amp;rsquo;ll go over the whole thing here: the problem, how the system works, how I evaluated it, and what I learned along the way.&lt;/p>
&lt;p>The code and benchmark are available at &lt;a href="https://github.com/Odysseus707/chameleon-advisor" target="_blank" rel="noopener">github.com/Odysseus707/chameleon-advisor&lt;/a>, and my final presentation slides are &lt;a href="final-presentation.pdf">here&lt;/a>.&lt;/p>
&lt;h2 id="background">Background&lt;/h2>
&lt;p>Chameleon is a testbed where researchers can reserve real hardware, from full bare-metal servers to small edge devices like Raspberry Pis and Jetsons (through CHI@Edge). Before running any experiment, a user has to figure out which device or node type to use, whether one is available, which image to run, and how long to reserve it for.&lt;/p>
&lt;p>Chameleon already has a documentation chatbot that answers questions from the docs. However, it doesn&amp;rsquo;t know what hardware exists or what is currently reserved, and it never looks at real experiments. So when I asked it a basic reservation question, this is what came back:&lt;/p>
&lt;figure id="figure-the-deployed-assistant-before-this-project">
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="The deployed assistant before this project." srcset="
/report/osre26/ucsc/chameleon-advisor/20261109-vivek-rai/before_hu37056465bef03fa45050c07372a6becf_76842_144867cdd3b89f5a2de4c7063b25e4f5.webp 400w,
/report/osre26/ucsc/chameleon-advisor/20261109-vivek-rai/before_hu37056465bef03fa45050c07372a6becf_76842_44d47f5003f24d2e3bca148f82f1e201.webp 760w,
/report/osre26/ucsc/chameleon-advisor/20261109-vivek-rai/before_hu37056465bef03fa45050c07372a6becf_76842_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://ucsc-ospo.netlify.app/report/osre26/ucsc/chameleon-advisor/20261109-vivek-rai/before_hu37056465bef03fa45050c07372a6becf_76842_144867cdd3b89f5a2de4c7063b25e4f5.webp"
width="760"
height="165"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;figcaption>
The deployed assistant before this project.
&lt;/figcaption>&lt;/figure>
&lt;p>The goal of my project was to change that. Given a workload described in plain language, the assistant should recommend hardware that can do the job, check that it is actually free, and give the user a reservation they can run.&lt;/p>
&lt;h2 id="how-the-advisor-works">How the advisor works&lt;/h2>
&lt;p>The advisor sits behind the existing chatbot and only runs when the question is about resources. Everything else still goes through the normal documentation path.&lt;/p>
&lt;figure id="figure-how-a-question-flows-through-the-system">
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="How a question flows through the system." srcset="
/report/osre26/ucsc/chameleon-advisor/20261109-vivek-rai/architecture_hu0f50a9b84a12a1c4d1cc049c7ede84c2_189913_d18239ff5e749c35c63d2f96facd7f18.webp 400w,
/report/osre26/ucsc/chameleon-advisor/20261109-vivek-rai/architecture_hu0f50a9b84a12a1c4d1cc049c7ede84c2_189913_1562907690c0ef836a41cee45dba6334.webp 760w,
/report/osre26/ucsc/chameleon-advisor/20261109-vivek-rai/architecture_hu0f50a9b84a12a1c4d1cc049c7ede84c2_189913_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://ucsc-ospo.netlify.app/report/osre26/ucsc/chameleon-advisor/20261109-vivek-rai/architecture_hu0f50a9b84a12a1c4d1cc049c7ede84c2_189913_d18239ff5e749c35c63d2f96facd7f18.webp"
width="760"
height="578"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;figcaption>
How a question flows through the system.
&lt;/figcaption>&lt;/figure>
&lt;p>For a resource question, the advisor gathers information from four places:&lt;/p>
&lt;ul>
&lt;li>The &lt;strong>Reference API&lt;/strong>, for hardware details like RAM, CPUs and GPUs.&lt;/li>
&lt;li>&lt;strong>Blazar&lt;/strong>, Chameleon&amp;rsquo;s reservation service, for what is available right now. This was especially important for edge devices, since the Reference API doesn&amp;rsquo;t list any CHI@Edge hardware at all.&lt;/li>
&lt;li>A small &lt;strong>capability table&lt;/strong> of published hardware specs, such as CUDA and tensor core counts.&lt;/li>
&lt;li>&lt;strong>Trovi artifacts&lt;/strong>, which are experiments other researchers have published on Chameleon.&lt;/li>
&lt;/ul>
&lt;p>The model (Llama-3.3-70B, the same one the deployed chatbot uses) then reasons over this information and returns a recommended device or node type, a count and duration, python-chi code to make the reservation, and links to the artifacts it used. Here is the same question from before:&lt;/p>
&lt;figure id="figure-the-same-question-with-the-advisor-on">
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="The same question with the advisor on." srcset="
/report/osre26/ucsc/chameleon-advisor/20261109-vivek-rai/after_hu2033f2083edc0f705fea73214a2307e0_521056_ddfddea6820b02dd910fb42d909ea2c4.webp 400w,
/report/osre26/ucsc/chameleon-advisor/20261109-vivek-rai/after_hu2033f2083edc0f705fea73214a2307e0_521056_72158073ef67f503d91c163f11c32c1c.webp 760w,
/report/osre26/ucsc/chameleon-advisor/20261109-vivek-rai/after_hu2033f2083edc0f705fea73214a2307e0_521056_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://ucsc-ospo.netlify.app/report/osre26/ucsc/chameleon-advisor/20261109-vivek-rai/after_hu2033f2083edc0f705fea73214a2307e0_521056_ddfddea6820b02dd910fb42d909ea2c4.webp"
width="760"
height="626"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;figcaption>
The same question with the advisor on.
&lt;/figcaption>&lt;/figure>
&lt;h2 id="using-artifacts-as-evidence">Using artifacts as evidence&lt;/h2>
&lt;p>Trovi artifacts are a good record of what hardware real experiments use, so I wanted the advisor to learn from them. I went through 205 artifacts and kept the 96 whose code actually reserves hardware through a Chameleon API call.&lt;/p>
&lt;p>The tricky part was how to ingest them. The documentation chatbot splits text into chunks and searches over them, which works well for docs. But most of an artifact is the experiment itself, and only a few lines actually reserve hardware. When those artifacts were chunked like regular text, the important lines got lost. Instead, I parse the code and pull out only the reservation calls along with the device type, image and duration, and store them as small tagged records.&lt;/p>
&lt;figure id="figure-docs-are-chunked-as-text-while-artifacts-are-parsed-into-structured-records">
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="Docs are chunked as text, while artifacts are parsed into structured records." srcset="
/report/osre26/ucsc/chameleon-advisor/20261109-vivek-rai/ingestion_hu1c06ad3e3c4344e0a29ed860750fd9f2_169600_bff127c108bf02476fd491806e0f5703.webp 400w,
/report/osre26/ucsc/chameleon-advisor/20261109-vivek-rai/ingestion_hu1c06ad3e3c4344e0a29ed860750fd9f2_169600_8e61f2a983fa1e4b2561caa28eaf44a7.webp 760w,
/report/osre26/ucsc/chameleon-advisor/20261109-vivek-rai/ingestion_hu1c06ad3e3c4344e0a29ed860750fd9f2_169600_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://ucsc-ospo.netlify.app/report/osre26/ucsc/chameleon-advisor/20261109-vivek-rai/ingestion_hu1c06ad3e3c4344e0a29ed860750fd9f2_169600_bff127c108bf02476fd491806e0f5703.webp"
width="760"
height="350"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;figcaption>
Docs are chunked as text, while artifacts are parsed into structured records.
&lt;/figcaption>&lt;/figure>
&lt;h2 id="building-a-benchmark">Building a benchmark&lt;/h2>
&lt;p>To check whether any of this actually helps, I built a benchmark with two parts: 134 questions for edge devices and 136 for bare metal. Each part has questions that ask the model to write reservation code, and questions that ask it to choose the right hardware.&lt;/p>
&lt;figure id="figure-the-two-parts-of-the-benchmark">
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="The two parts of the benchmark." srcset="
/report/osre26/ucsc/chameleon-advisor/20261109-vivek-rai/benchmark_hu411abb0e46570df3184a06c34471a9eb_94989_98c3aa70493a07938398228029a95766.webp 400w,
/report/osre26/ucsc/chameleon-advisor/20261109-vivek-rai/benchmark_hu411abb0e46570df3184a06c34471a9eb_94989_5651b639457f50f38a4f1183939fb532.webp 760w,
/report/osre26/ucsc/chameleon-advisor/20261109-vivek-rai/benchmark_hu411abb0e46570df3184a06c34471a9eb_94989_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://ucsc-ospo.netlify.app/report/osre26/ucsc/chameleon-advisor/20261109-vivek-rai/benchmark_hu411abb0e46570df3184a06c34471a9eb_94989_98c3aa70493a07938398228029a95766.webp"
width="760"
height="296"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;figcaption>
The two parts of the benchmark.
&lt;/figcaption>&lt;/figure>
&lt;p>Each answer is graded by automated checks in five groups: whether it uses the right API calls (mechanism), the right values like site and duration (specifics), avoids calls that would break things (safety), picks hardware that is actually free (feasibility), and picks hardware that can do the job (capability). I kept these groups separate instead of combining them into one score, because a common mistake was getting all the values right but using the wrong reservation call, for example reserving a Raspberry Pi with the bare-metal call. One combined score would hide that.&lt;/p>
&lt;h2 id="results">Results&lt;/h2>
&lt;p>&lt;strong>Artifacts help, mostly with writing the code.&lt;/strong> When given the right artifact, fully correct answers went from 2% to 31% for the chatbot and from 13% to 40% for Claude. Most of the improvement was in mechanism and specifics, meaning the artifacts mostly teach how to write the reservation rather than which hardware to choose.&lt;/p>
&lt;figure id="figure-results-with-and-without-the-right-artifact-edge-questions">
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="Results with and without the right artifact, edge questions." srcset="
/report/osre26/ucsc/chameleon-advisor/20261109-vivek-rai/artifact-experiment_hud68f50d6c989b2e2a1b39ddcddaa1db3_135997_12c500adb3c17b89a9ce91e63e20fd46.webp 400w,
/report/osre26/ucsc/chameleon-advisor/20261109-vivek-rai/artifact-experiment_hud68f50d6c989b2e2a1b39ddcddaa1db3_135997_f50ec4cd2fbb14664436b6a43e3e6aae.webp 760w,
/report/osre26/ucsc/chameleon-advisor/20261109-vivek-rai/artifact-experiment_hud68f50d6c989b2e2a1b39ddcddaa1db3_135997_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://ucsc-ospo.netlify.app/report/osre26/ucsc/chameleon-advisor/20261109-vivek-rai/artifact-experiment_hud68f50d6c989b2e2a1b39ddcddaa1db3_135997_12c500adb3c17b89a9ce91e63e20fd46.webp"
width="760"
height="395"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;figcaption>
Results with and without the right artifact, edge questions.
&lt;/figcaption>&lt;/figure>
&lt;p>&lt;strong>The advisor helps with choosing hardware.&lt;/strong> With the advisor turned on, capability went from 11% to 60% and feasibility went from 41% to 71%. In other words, the chatbot started recommending devices that could actually do the job and were free at the time of asking.&lt;/p>
&lt;figure id="figure-results-with-the-advisor-off-and-on-edge-questions">
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="Results with the advisor off and on, edge questions." srcset="
/report/osre26/ucsc/chameleon-advisor/20261109-vivek-rai/advisor-edge_hu497042041525e7b6f5ce3eddd8093683_113523_62b0c6cf83ab4d5ef759d0ebb4d593e1.webp 400w,
/report/osre26/ucsc/chameleon-advisor/20261109-vivek-rai/advisor-edge_hu497042041525e7b6f5ce3eddd8093683_113523_c8a815067a56e4ab25b8db60b7f5a3bb.webp 760w,
/report/osre26/ucsc/chameleon-advisor/20261109-vivek-rai/advisor-edge_hu497042041525e7b6f5ce3eddd8093683_113523_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://ucsc-ospo.netlify.app/report/osre26/ucsc/chameleon-advisor/20261109-vivek-rai/advisor-edge_hu497042041525e7b6f5ce3eddd8093683_113523_62b0c6cf83ab4d5ef759d0ebb4d593e1.webp"
width="760"
height="395"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;figcaption>
Results with the advisor off and on, edge questions.
&lt;/figcaption>&lt;/figure>
&lt;p>A few other results stood out:&lt;/p>
&lt;ul>
&lt;li>When I separated the advisor&amp;rsquo;s fixed rules from the model&amp;rsquo;s reasoning, the rules accounted for most of the gain (44 of the 58 points on capability). I had expected the model to be doing most of the work.&lt;/li>
&lt;li>The results held up on bare metal, where fully correct answers went from 0 to 58 out of 136. Without any help, the model mostly suggested portal steps or OpenStack commands instead of python-chi.&lt;/li>
&lt;li>The advisor made things worse for hardware that no artifact covers. Capability dropped from 45% to 21% on those questions.&lt;/li>
&lt;/ul>
&lt;figure id="figure-capability-results-based-on-how-well-the-artifacts-cover-the-requested-hardware">
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="Capability results based on how well the artifacts cover the requested hardware." srcset="
/report/osre26/ucsc/chameleon-advisor/20261109-vivek-rai/coverage_hu5ccdb3c3bb9893dcbb08c7b808fddc7a_128887_4fd5d40dea1f0846e26458377dacc206.webp 400w,
/report/osre26/ucsc/chameleon-advisor/20261109-vivek-rai/coverage_hu5ccdb3c3bb9893dcbb08c7b808fddc7a_128887_c7a13763c80cc979adb40414b54a3b9c.webp 760w,
/report/osre26/ucsc/chameleon-advisor/20261109-vivek-rai/coverage_hu5ccdb3c3bb9893dcbb08c7b808fddc7a_128887_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://ucsc-ospo.netlify.app/report/osre26/ucsc/chameleon-advisor/20261109-vivek-rai/coverage_hu5ccdb3c3bb9893dcbb08c7b808fddc7a_128887_4fd5d40dea1f0846e26458377dacc206.webp"
width="760"
height="395"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;figcaption>
Capability results based on how well the artifacts cover the requested hardware.
&lt;/figcaption>&lt;/figure>
&lt;p>That last result came down to the data. None of the artifacts I found document any of the accelerators on CHI@Edge, like the Jetsons or Coral boards. So the advisor can only be as good as the experiments people have shared.&lt;/p>
&lt;h2 id="challenges">Challenges&lt;/h2>
&lt;p>There were quite a few things that didn&amp;rsquo;t go as planned:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Missing edge data.&lt;/strong> The Reference API lists no CHI@Edge devices, and the first version of the integration was also returning no edge availability. I switched to reading this directly from Blazar.&lt;/li>
&lt;li>&lt;strong>Model size.&lt;/strong> I started with Qwen2.5-32B running on a Chameleon node. It barely improved with the extra context, while the 70B model improved a lot. When that node also became unavailable, I moved to Llama-3.3-70B on TACC.&lt;/li>
&lt;li>&lt;strong>Chunking artifacts.&lt;/strong> My first approach treated artifacts like documentation, which didn&amp;rsquo;t work and led to the code-parsing approach above.&lt;/li>
&lt;li>&lt;strong>Measuring the right thing.&lt;/strong> My first benchmark only checked whether the code was correct. I later realized the harder part is choosing the hardware, so I added the hardware-choice questions and the bare-metal set.&lt;/li>
&lt;/ul>
&lt;h2 id="future-work">Future work&lt;/h2>
&lt;p>There are a few directions I&amp;rsquo;d like to see this go next:&lt;/p>
&lt;ul>
&lt;li>Letting the assistant make the reservation directly after the user confirms, instead of just giving code.&lt;/li>
&lt;li>Hosting the service in production, which needs its own credentials.&lt;/li>
&lt;li>Improving retrieval. Right now the correct artifact only shows up in the top 3 results about a third of the time.&lt;/li>
&lt;li>Getting more artifacts that cover edge accelerators, since that is where the advisor struggles most.&lt;/li>
&lt;/ul>
&lt;h2 id="acknowledgements">Acknowledgements&lt;/h2>
&lt;p>This project taught me a lot about how much of research is about measuring things carefully. Several of my early assumptions only turned out to be wrong once I had an experiment that could test them. I&amp;rsquo;d like to thank my mentor Paul Marshall for his detailed feedback and guidance throughout the summer, Kate Keahey for her questions and input on reproducibility artifacts, and the UC Santa Cruz OSPO team for running this program.&lt;/p></description></item></channel></rss>