← All AI Engineer talks

AI Engineer World's Fair 2025

Strategies for LLM Evals (GuideLLM, lm-eval-harness, OpenAI Evals Workshop) — Taylor Jordan Smith

Read the talk

Building LLM evaluations from serving performance to safety

A production evaluation strategy starts with the workload your system must serve, then adds checks for formatting, accuracy, safety and the behavior of the complete application.

From a talk by Taylor Jordan Smith

Before you start: Basic familiarity with LLM inference, retrieval-augmented generation and terminal commands will help you follow the workshop.

From a working chatbot to a dependable service

What does it take to turn a convincing generative AI experiment into a scalable, reliable and safe production system? Taylor Jordan Smith, working in developer advocacy and technical marketing in Red Hat’s AI business unit, approaches that question through evaluation and hands-on benchmarking. The opening cartoon captures the gap: a boardroom proposes transforming the business with AI that has just been used to write a poem about a dog.

Slide with a boardroom cartoon proposing business transformation using AI just used to write a poem about a dog.
The challenge of taking generative AI into production.

Enterprises usually cross that gap incrementally. They begin with automation or a chatbot, add retrieval-augmented generation, and then explore agents. Smith describes Red Hat customers as largely working through those early phases, rather than starting with a complex multi-agent framework. Each step introduces behavior that needs testing before the next layer becomes dependable.

The constraints extend beyond answer quality:

  • Organizational policy: teams may be restricted in which services they can use. Smith gives the example of Gemini only recently becoming officially available inside Red Hat.
  • Legal exposure and harmful advice: an answer can create a customer-facing incident, as the glue-in-pizza example will illustrate.
  • Bias and discrimination: Smith points to Eurocentric and US-heavy public internet data as a source of skew that teams need to recognize and mitigate.
  • Cost and performance: serving at scale requires acceptable throughput, latency and operating cost.
  • Knowledge freshness: a model with an older training cutoff cannot supply newer information from its weights alone. Retrieval and agents can bring current information into the system, while adding components that also need evaluation.
0:160:49
Suggest correction

This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.

0:16 · section reference included

Measure the bottleneck under realistic load

A capable model still needs a serving system that can keep up. Smith’s inference diagram shows green, yellow and orange request dots converging on a bottleneck. A customer-support agent, developer copilot or RAG pipeline can encounter this problem as concurrent requests accumulate. The runtime must handle that traffic efficiently; Smith names TRT, SGLang and vLLM as relevant inference runtimes, with Red Hat focusing on vLLM.

Evaluating that capacity is itself expensive. Realistic runs require multiple parameter configurations, consume compute, and depend on datasets that work with the chosen model. Hardware sizing adds another dimension: the model must fit, but the deployment must also use the GPU investment efficiently. Cost estimation then requires connecting observed inference performance to the token workload the application will actually generate. A benchmark with an unrepresentative workload can therefore mislead both capacity planning and budgeting.

5:015:16
Suggest correction

This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.

5:01 · section reference included

Test the failures customers should never discover first

Performance is only one failure surface. Smith first uses Stable Diffusion to illustrate bias, then turns to the recommendation to put glue in pizza. In her account, a joke on Reddit entered an AI overview as advice because the system failed to recognize satire. The failure is especially relevant to retrieval-based applications: retrieving information does not establish that it is appropriate to repeat as an instruction.

Article headline about Google AI suggesting glue in pizza, with photographs of glue on pizza, a person eating a slice, and a reaction image.
An AI recommendation to put glue in pizza becomes a concrete failure example.

A further concern is repeated training on generated material. Smith describes successive generations moving away from human-anchored data, potentially losing output diversity and precision. That motivates accuracy evaluations capable of detecting degradation over time; it should not be read as a claim that every use of synthetic data inevitably damages a model.

The goal is to find these problems before a model or application release. Smith discusses additional safeguards, including satire detection, retrieval-related mitigations and bias guardrails, but explicitly treats the details of closed-source implementations as speculative. The practical requirement is to turn known failure modes into tests and mitigations, rather than wait for a public incident to reveal them.

7:137:23
Suggest correction

This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.

7:13 · section reference included

Benchmarks belong inside a broader evaluation strategy

Benchmarking is a subset of evaluation. Evaluation can assess many components and behaviors across a system; benchmarking uses controlled tasks and datasets to make comparisons possible.

ApproachPurposeExample
EvaluationAssess required behaviorAn application-specific correctness or safety test
BenchmarkingCompare under controlled conditionsLatency across model and hardware setups; MMLU scores

The workshop includes both comparative benchmarks and custom evaluations that do not need to be benchmarks. The distinction matters because a standardized score cannot cover every requirement of a particular application.

The stakes also change between a laptop experiment and a customer-facing deployment. Unexpected output in a private test is an opportunity to learn; the same behavior in production can harm customers and damage the organization’s credibility. Because no initial suite catches everything, evaluation needs a continuous-improvement process: expand and refine tests as the system and its observed failure modes change.

9:279:43
Suggest correction

This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.

9:27 · section reference included

Build coverage around components, then their interactions

The architecture determines what to measure. A RAG application may use Ragas to assess retrieval and generation, while an agent needs checks for function and tool calling. Trying to evaluate every component and interaction immediately is costly, so Smith recommends starting with a bounded, high-priority surface. In the RAG example, that could be chunk retrieval, followed by a latency and throughput benchmark for the LLM. The highlighted retrieval and LLM components on the slide make those initial boundaries concrete.

RAG flow diagram connecting a knowledge base, vector database, retrieval, ranking, prompt augmentation, and an LLM; retrieval and the LLM are highlighted yellow.
A RAG pipeline highlights retrieval and the pretrained LLM.

From there, extend coverage using the familiar software testing pyramid:

  1. Component tests: evaluate an individual retrieval step or model endpoint.
  2. Integration tests: check whether the components work correctly together.
  3. End-to-end tests: assess the experience exposed through the application’s UI.

This lets the framework grow alongside the system without making exhaustive coverage a prerequisite for the first useful test.

Smith then introduces a complementary pyramid for model evaluation. Its base is system performance: throughput, support for concurrent users and GPU utilization. Above that come formatting checks, such as consistently producing the JSON an application requires; factual-accuracy checks across subjects; and checks against information used in fine-tuning. Higher layers address safety, bias and application-specific behavior. These are different questions, so success at one layer does not answer the others.

11:3411:43
Suggest correction

This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.

11:34 · section reference included

Choose the workload before running GuideLLM

The first exercise uses GuideLLM, a project associated with vLLM, to benchmark serving performance. The workflow starts by choosing a model and dataset, then inspecting throughput, time to first token and inter-token latency in its terminal interface. The intended application determines whether the results are acceptable.

Input and output token lengths are central workload parameters. A chatbot and a RAG application can place different demands on the same endpoint: retrieved context changes the input, while the expected answer changes the output. Adjusting those lengths lets the benchmark approximate the use case instead of treating every request as interchangeable.

The hosted workshop required email sign-in and a workshop password. Instructions appeared on the left, with two terminal sessions connected to the same RHEL machine on the right. Each machine had one L4 GPU, and tmux was available for additional terminal organization. Smith initially allotted roughly 15–20 minutes to the first of three activities, with discussion breaks planned between them. The opening page provided background and preparation instructions; the terminals were available through another tab.

Browser showing the Beyond Benchmarks workshop introduction on the left and a blank workspace pane with tabs on the right.
The hosted workshop opens with instructions beside a workspace pane.
14:5315:06
Suggest correction

This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.

14:53 · section reference included

Keep the model server running while the benchmark applies load

The demonstration first prepares the serving endpoint:

  1. Install the container toolkit missing from the workshop machine so the inference container can use the required hardware.
  2. Obtain a Hugging Face token for model access. Smith suggests trying an incognito window when participants encounter trouble obtaining a token.
  3. Launch the containerized vLLM runtime with vllm serve, using an IBM Granite model.
  4. Allow time for model loading before proceeding to the benchmark.

Smith mentions local installation as another deployment option, but the exercise itself uses the container. She watches the green INFO startup messages to follow loading progress.

Smith contrasts vLLM’s support for safetensors with the model-format conversion required in the TRT workflow she describes, reporting fewer configuration steps and lower storage needs. The runtime also has its own tuning parameters. She gives reducing the maximum context window as an example of a configuration change that may improve performance in a suitable workload, though runtime tuning is outside this exercise. The benchmark workload and the serving configuration are therefore separate sets of variables to track.

With the endpoint running in the upper terminal, Smith activates the environment already provided by the workshop and installs GuideLLM. The lower terminal runs the client that generates load; the server must remain available throughout. These are the basic installation and option-discovery commands used in that workflow:

bash

pip install guidellm
guidellm --help

The benchmark configuration supplies a target endpoint and selects a sweep. A sweep varies the offered load and measures performance at those loads; latency is an observed metric, not a request rate. Smith uses a setting of five to keep the demonstration short. The recording’s historical rate terminology differs from the current benchmark guide, which uses guidellm run, --profile and a separate sweep-size setting; the historical five should not be interpreted as five requests per second.

17:5718:07
Suggest correction

This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.

17:57 · section reference included

Interpret distributions in their workload and hardware context

GuideLLM places benchmark information above the benchmark statistics, while the workshop instructions explain how to read the output. Smith identifies constant-rate rows of 3.63 and 6.93 requests per second in the demonstration. These describe offered request rates, not latency measurements or independently established production capacity. She explains that changing the workshop setting from five to ten would produce more rows at progressively increasing rates.

Whether the resulting performance is useful depends on the application and serving configuration. Smith corrects the model size to two billion parameters, running on one L4 GPU, and cautions against treating that workshop setup as sufficient for concurrent production traffic. The output includes mean, median and P99 performance. P99 captures the tail that matters when an SLO must account for slow requests rather than just the typical experience. Results can also be exported as JSON for closer inspection.

The next step is to change the input and output token parameters and compare runs—for example, to represent a RAG workload instead of the initial configuration. That comparison makes the exercise useful for planning: the question becomes how a specific workload change affects the distribution of performance, rather than whether a single number looks impressive.

Provisioning constraints change the workshop’s pacing at this point. Smith expects another 10–15 machines, drops the planned discussion breaks, and asks participants to progress independently through the remaining activities. An additional access URL initially offers three machines, with more provisioning and the same password. The initial availability estimate is noon or early afternoon; it is extended later in the session.

21:3321:42
Suggest correction

This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.

21:33 · section reference included

Move from serving performance to accuracy and custom safety tests

The second activity moves into the accuracy layer with MMLU-Pro; the third addresses safety, bias and custom evaluation. MMLU-Pro measures performance on reasoning-focused multiple-choice questions, so its score should not stand in for the factual reliability of an entire application. Participants can move between activities according to their interests.

A question about proprietary datasets leads to a useful distinction between a benchmark’s format and its data. An organization can build an MMLU-style multiple-choice evaluation using its own questions and answers. Smith describes a Red Hat product evaluation for models fine-tuned on proprietary data as a branch of MMLU, and points to modifying open-source evaluation code and changing its data sources as a way to support custom accuracy tests. This makes the evaluation relevant to the knowledge the fine-tuning was meant to add.

The hosted instructions do not include Smith’s latest changes to the third activity, so she supplies a repository link through the public event Slack channel workshop-beyond-benchmarks. The linked material begins at activity two and also provides activity three. Event emails and badge backs explain how to reach Slack, and the channel remains a place for follow-up questions about the tools.

In the wrap-up, Smith extends environment access to the end of the day and points participants to the repository’s reading material. She identifies LM Evaluation Harness as the framework used for MMLU-Pro, with other evaluation tasks available through the same framework. Smith reports that the workshop’s MMLU-Pro exercise took about ten minutes, despite being selected as the quickest option she considered. That duration belongs to this workshop run, not to MMLU-Pro as a fixed runtime.

The safety exercise uses promptfoo. Its custom tests and repository examples provide a starting point for evaluating application-specific behavior beyond standardized accuracy benchmarks. The progression now covers serving performance, multiple-choice accuracy and a safety-focused custom evaluation. Smith returns to the testing pyramid to show how these checks can become layers of a strategy spanning the whole system.

SWE Test Pyramid with Unit Tests at the base, Service Tests in the middle, UI Tests at the top, and an arrow marking more isolation below and more integration above.
The software testing pyramid illustrates a layered testing strategy.
25:3325:46
Suggest correction

This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.

25:33 · section reference included

Make evaluation part of the delivery process

The final audience question connects prompt tests, dataset tests and model swaps to a harder concern: how do you check that performance with real customers matches the expectations established during evaluation? Smith frames the answer as integrating evaluation tests into CI/CD, much as a software project runs unit tests. That gives the evaluation suite a recurring role in delivery instead of leaving it as a one-time experiment. The answer establishes an automation pattern, but does not describe a mechanism for evaluating live customer traffic.

The workshop repository remains the continuing resource, with Slack available for questions after the session. Smith’s final estimate places the temporary environment shutdown around 5 PM that evening, correcting an initial mention of 6 PM. The lasting work is to carry the useful tests out of that temporary environment and into the application’s normal development and delivery cycle.

30:4430:53
Suggest correction

This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.

30:44 · section reference included

Resources

From the talk

Updates since the talk

Read the complete timestamped transcript
  1. 0:00

    [on hold music] Hello, everybody.

  2. 0:16

    Um, my name is Taylor Smith. I am an AI developer advocate slash evangelist slash technical marketing and other titles depending on where I am. Um, I work at Red Hat in our AI business unit 'cause yes, we do also do AI too now.

  3. 0:35

    Great. Um, I'm really happy to be here. This is my first time at this conference, so I'm new to the conference, new to speaking at this conference, ready to have a good time and also relax in about an hour and a half and just learn stuff.

  4. 0:49

    Stoked that this was at nine AM. Um, my presentation clicker isn't working, so I'm gonna be a little bit glued over here. But to kind of overview what we're gonna do today, I'm gonna talk a little bit about kind of the issues of setting up a large language model in production and the reason why you need evaluations

  5. 1:07

    and benchmarks and all of these things, and why that is so critical. And then I do have some hands-on activities that we'll get to do to use some evaluation, um, methods and benchmark tools to kind of get a sense of what is out there to use, how we can use those tools, what that might look like to

  6. 1:26

    put it all together for an actual production system. So

  7. 1:31

    ready? Are you excited?

  8. 1:33

    Mm-hmm. Yeah.

  9. 1:33

    Yay. First thing in the morning, love that. I'm glad it's nine AM 'cause that feels like a reasonable start time. I don't like that eight AM stuff that happens.

  10. 1:42

    Um, setting up generative AI tech in production, if you think about it, crazy pants, okay? And there's so many things that could go wrong. This is such a complex type of technology that is very creative.

  11. 1:56

    Setting this up to be scalable and reliable and safe is challenging, okay? That's why we need evaluations, that's why we need all of these tests and we need to be careful, we need to understand the technology we're working with when we're looking to implement this as well.

  12. 2:10

    So hard to do. Most organizations, so they don't typically start off with a multi-agent framework, right, and go crazy. Typically, they're gonna have a kind of standard repeatable path to maturity.

  13. 2:26

    They might start out with, "Okay, how can I automate some things with AI? Can I have like a chatbot type of situation?" That's kind of the standard that everybody starts out with.

  14. 2:34

    "Okay, I maybe wanna implement a RAG setup. All right, let's start to look at agents." To-- For, uh, on the Red Hat side, we're still dealing with probably like the first three phases of this maturity with our customers, and that's where a lot of people, um, still are.

  15. 2:47

    But we get to talk about all the cool advanced stuff at this conference, so we can plan ahead and think about what we want to implement. But enterprises, they need to take an incremental approach to do this successfully.

  16. 3:01

    GenAI models, they have a number of drawbacks, right? And we all know about these things. Policy restrictions. Typically, if you're a developer at a company or have whatever type of role, you're restricted in the type of AI that you can use.

  17. 3:16

    Red Hat was just, um, allowed to use ma-- what-- Gemini was just made available to us, but before that, we weren't really allowed to use anything

  18. 3:26

    officially. [chuckles] Um, so the company policy restrictions of the tools you can use and the AI you can use is pretty locked down typically. The legal exposures and risks of these models, you know, there was the glue incident.

  19. 3:42

    Um, they're gonna say crazy stuff sometimes. How do we guardrail against that and how do we protect our customers against that and account for that when that does happen because it's hard to, um, completely avoid?

  20. 3:53

    There's the bias and discrimination issues. Most of the internet data is still largely Eurocentric and US-based, so the models trained on this public internet data, of course, is gonna be a little skewed, right?

  21. 4:06

    So we need to be aware of it, just like in re-regular everyday life. We know that bias and discrimination exists. How do we account and kind of provide guardrails to make sure that we adjust and prevent what we can?

  22. 4:20

    Cost and performance, that's probably kind of a baseline big one. How much these GenAI models cost to run at scale and production, and the performance, throughput, latency, et cetera, that we need to account for when we have these production systems set up.

  23. 4:36

    And then the knowledge cutoff as well is another limitation. You know, these large frontier models have a knowledge cutoff 'cause they're not consistently trained, so you might be working with a model that was cut off a year ago, so it's not gonna have that up-to-date information, which is why they, you know, implement RAG systems and agent systems

  24. 4:53

    to look out into the internet for more up-to-date info. These are just some of the kind of drawbacks we need to be aware of and account for.

  25. 5:01

    Inference at scale. No matter how-- I'm gonna go kind of into these categories a little more in depth. No matter how good your model is, if it's not fast, if it's not reliable, if it's not affordable, you're screwed a little bit from the get-go, okay?

  26. 5:16

    So this graphic, it shows a classic bottleneck type of scenario. You got concurrent user requests, which might be represented by those green, yellow, and orange dots flowing into a system.

  27. 5:25

    But then traditional inference runtimes typically can't handle that kind of load officially. Um, to serve real world traffic, whether you're powering a customer support agent, a developer type of copilot system, or maybe a RAG pipeline, you need an inference engine that's purpose-built for scale.

  28. 5:42

    So that's where inference runtimes like TRT, SGLang, which I know we have a session on or at least a couple sessions on, vLLM, um, that's where Red Hat's kind of focusing.

  29. 5:53

    That's where those type of production-grade inference runtimes really need to be utilized.

  30. 6:00

    There's a lot of pain points with inference that I just want to double down on, and some of the activity will be benchmarking and evaluating, um, these types of metrics.

  31. 6:10

    Model inference performance evaluation under enterprise-level workload scenarios, it's very complicated to actually evaluate this appropriately. It requires manual setup of evaluation runs with various parameters you have to test.

  32. 6:26

    The compute load just for performance evaluations as well is also pretty taxing. Um, you have to make sure the datasets that you're using for benchmarking are compatible with the models that you're using.

  33. 6:38

    The resource optimization and identifying sizing so that you're efficiently using your hardware appropriately for whatever model size you're using, that's a big challenge, um, for enterprises today, making sure they're efficiently using their GPU investments.

  34. 6:54

    And then actually cost estimating is a little bit of a black magic thing. Like, it's really hard to do that appropriately. Um, you have to, like, backwards math map inference performance to tokens, and it's a whole thing.

  35. 7:08

    So these are what enterprises are trying to achieve, and it's hard.

  36. 7:13

    Um, just a little kind of more examples of the challenges. So we have, you know, this is just an example of stable diffusion bias. Like I said, most of our data is Eurocentric.

  37. 7:23

    This is going to be there, so how do we-- what tools can we use to provide guardrails against this type of behavior?

  38. 7:30

    The glue incident, this was because there was re- something on Reddit was, like, it-- like a joke, um, satire, and, uh, this AI overview tool used that information and didn't have the right mitigation techniques in place to identify that's satire.

  39. 7:47

    So then it came out in that, um, AI overview, uh, suggestion.

  40. 7:53

    And then we have this, um, like, mad situation where a lot of the-- we're getting into a lot of synthetic data on the internet, and each generation of these AI models that come out are consuming more and more AI-generated data, which over time is going to get you-- Oh, there's music happening.

  41. 8:12

    Um, further away from that original human-anchored data. So this is going to lead to a loss of output diversity, a loss of pr- a loss of precision. This would be an area where you would need to use those kind of accuracy evals to mitigate aga- and identify that this is occurring.

  42. 8:31

    So just to cover, of course, Google and the Stable Diffusion project, they have m- introduced additional evaluation frameworks and mitigation techniques to address this. Um, just like any time we have any story like that, right?

  43. 8:45

    They are certainly working to make sure that that does not happen again. We don't know with the closed source, um, AI offerings how exactly they're doing that, but we can speculate.

  44. 8:55

    You know, the AI overview technology maybe introduced more RAG mitigations to where it, uh, helps to identify that that was satire or whatever the case is. Um, it has more safeguarding triggers.

  45. 9:09

    Um, the Stable Diffusion model likely introduced some level of bias mitigation guardrails. So we need-- So of course, they've been working to fix this, but ideally, we don't run into this, and we prevent it ahead of time before a model release or before an application release.

  46. 9:27

    So how do we prevent these kinds of issues at scale in production environments? I want to just look at a couple of definitions because sometimes evaluation and benchmarking are terms used, um, kind of-- they kind of conflate a little bit, and people kind of use them for whatever they want.

  47. 9:43

    So benchmarking is just a subcategory of evaluation. Evaluation is a comprehensive process to assess a model end to end, and it could include a lot of different kinds of evaluations about a lot of different components.

  48. 9:57

    Benchmarking is very specifically controlled specific datasets and specific tasks typically used to compare models against one another. So this would be like a latency score that compares different hardware setups and different models or, like, the MMLU benchmark scoring, things like that.

  49. 10:17

    We'll look at both custom evals that aren't benchmarking and also some benchmarks in our hands-on.

  50. 10:24

    These are just some examples of what is typically considered a model evaluation versus a benchmarking specific test, just to kind of get a little bit of a sense. Um, but again, like, there's so many types of evaluations, so many tools.

  51. 10:40

    You can customize it in so many different ways, but this kind of helps hopefully a little bit with the definitions.

  52. 10:47

    So hopefully kind of seeing all these challenges with GenAI, we understand that this is a critical process. Um, you need to manage risk for customers. Like, there's less of a concern, right, when I'm tinkering on my laptop, whatever, you know.

  53. 11:02

    I see something weird, who cares? But when we're talking about a production-level environment, we're serving thousands, whatever, customers, we need to think about these things obviously more in these types of scenarios.

  54. 11:12

    The credibility of the company, when those stories come out, that takes a hit for a good chunk of time. Um, and you obviously also need to continuously improve your evaluation frameworks as well because you're not going to catch everything.

  55. 11:26

    You need that CI process to make sure you are continuously improving your evaluations and benchmark setups.

  56. 11:34

    It's also going to very much depend on the type of system that you have, what you set up. So again, it's very much there's tons of tools. This could look a lot of different ways.

  57. 11:43

    We'll get a sense of it today. If you have a RAG setup, you're going to be maybe focused on a-- the RAGS, um, benchmark or evaluation tool, agents. You need to look at function tool calling capabilities, et cetera.

  58. 11:58

    You can kind of get a sense there's going to be specific metrics that you need to set up and look for depending on the system that you have, which requires a lot of planning in advance and kind of architecture scoping.

  59. 12:12

    I'll give an example of a RAG use case, and also it's incremental too, 'cause you could-- And I'll, I'll talk about this a bit. Like, you could literally evaluate every single part of things, but that's going to be, um, time and resource extensive to set up immediately.

  60. 12:29

    So you likely wanna take an incremental approach with these types of setups. So you might start out with, "Okay, I'm just going to evaluate the chunk retrieval, my retrieval application in a RAG system.

  61. 12:40

    I wanna set up some kind of evaluation test there. I might just want to set up a latency throughput eva- um, benchmark test for my LLM output." You can start with those kind of incremental approaches for specific components, and then from there, based on priority levels as well, branch out into a full system eval that covers all

  62. 13:02

    the components, the integration layer of how the components work together, the UI end-to-end experience, and kind of have a software engineering kind of test period approach to this, where you have that unit test layer kind of approach at the bottom, um, integration layer in the middle, and that UI end-to-end at the top.

  63. 13:22

    And you can take that layer by layer as you're building this evaluation framework for your systems.

  64. 13:30

    So there-- we created this-- or we-- there is this pyramid [chuckles] also for model evaluation that represents the same kind of setup for, um, that, that software engineering pyramid, um, represents as well.

  65. 13:43

    So the base layer and, uh, very base layer is the system performance, 'cause like I said, no matter how good your model is, if you don't have fast throughput, you aren't able to handle concurrent users, you're gonna be in a bit of a pickle.

  66. 13:55

    GPU utilization, et cetera, you need to make sure kind of the basics are handled, uh, the, the-- as the main kind of event. Um, and we'll talk about-- That'll be the first hands-on activity is, is evaluating the system performance.

  67. 14:09

    Formatting might be making sure it's, um, religiously giving you JSON output that you need for your application, something like that. The factual accuracy, which we'll also talk about, um, in one of our hands-on, that would be like the MMLU benchmark, so evaluating that it's performing well on various subjects, kind of standard large language model accuracy, as well

  68. 14:31

    as if you've fine-tuned a model, potentially making sure that it's accurate based on the information that you fine-tuned that model on. And you kind of go up from there into, you know, safety, bias.

  69. 14:43

    S-- There might be specific custom evaluations that are very specific to your application. So gives you kind of a sense of the tiered approach that can be taken here.

  70. 14:53

    So we're gonna talk first system performance, and we're gonna have our first hands-on around this. We're gonna be looking at GuideLLM, which is kind of a new project that is associated with the vLLM inference runtime project.

  71. 15:06

    Um, we're gonna use that for system performance benchmarks like latency, throughput, and you'll get a little bit of hands-on there. The general user flow there is like you, you know, you select your model, you select your particular dataset that you wanna use to test throughput and to test inter-token latency, time to first token, those types of metrics.

  72. 15:28

    And then GuideLLM allows-- gives you a nice kind of, um, in-terminal UI to visualize the results of that. Uh, and then once you get kind of the results that you want based on your use case, again, then you're ready to deploy.

  73. 15:45

    We-- You'll see this in the hands-on as well, but you wanna test based on the use case, and the pri-- one of the primary ways you test via, via GuideLLM is adjusting the input and output tokens.

  74. 15:56

    So if you have a chatbot use case, a RAG use case, you can adjust the, um, input and output token levels based on your use case, and you'll see that in the hands-on and have an opportunity to kind of play around with that, depending on what you're most interested in.

  75. 16:10

    So we're gonna start with the hands-on. That is the link. That red.ht/evals is the link to the workshop. You will be signing in with your email. I have no marketing game.

  76. 16:24

    It just requires you to do that, so I'm not gonna haunt you after this. Um, you'll put in your email, and that is the password.

  77. 16:34

    And let me... Hold on. I just wanna show you. Well, I don't wanna take up one of the systems, um, otherwise I would show you. But you're going to get instruct-- Once you are in the workshop, you're gonna get your instructions on the left-hand side, and you're gonna have two terminals avail-- two terminal sessions available to you

  78. 16:51

    on the right-hand side to the same system. It's a RHEL system. Um, the instructions will overview what the system includes a little bit for you so you get a sense.

  79. 17:00

    Um, they each have an L4 GPU, as an example. Um, anything else I wanna call out before we get started? That'll be primarily what you use. It has Tmux enabled, if you like to use that to open up different things, and it gives you some flexibility.

  80. 17:17

    We have three different activities. I'm gonna pause after each activity, so we can have a little bit of a discussion in between. Um, we'll kind of get-- This is my first time running this particular, uh, activity, so we'll gauge kind of the time it takes, but I'm gonna give it about fifteen, twenty minutes for this first one.

  81. 17:38

    Okay, so I'm also pulling up a system, and I'm just gonna like walk through some of the stuff. The initial page is just gonna give you... If, of course, if it loads.

  82. 17:46

    Jesus. The internet. Um, the initial page is just gonna give you a little bit of background and preparing your system instructions, and then my terminals are on this second tab.

  83. 17:57

    And everything is gonna be glacial pace. Um, so the first thing I have to do, these systems don't have the container toolkit installed, so I just gotta do that.

  84. 18:07

    Just some, uh, system logistics because I'm gonna be running vLLM inference runtime in a container, and I need that to work. So that's what that's doing. And then I'm gonna deploy a model with vllm.

  85. 18:23

    I-- So you're gonna have to grab a Hugging Face token. Probably have gotten there by now. Probably most of us have a Hugging Face token, but just disclaimer there.

  86. 18:30

    So incognito window, if you're hitting the Hugging Face rate limit to grab a new token.

  87. 18:37

    So vllm you can also install locally, like if you have a Mac or whatever, um, Linux machine, but we're deploying it as a container here.

  88. 18:48

    So I'm gonna get that deployed. And I'm, um, you can see the vllm serve command at the end, so that's just the vllm CLI tool, and I'm using an IBM Granite model because, you know, Red Hat, IBM.

  89. 18:59

    Um, so we'll be working with that for a chunk of the activity. And it takes a bit for vllm to load the model, so you're gonna be waiting for info, the words "info" like four times in green, and then it's deployed.

  90. 19:16

    What's nice about vllm is that it is, um, it's compatible with the Safetensor format. So... And has anybody used TRT to load up a model? Okay, anyway, it's crazy, [chuckles] um, because it requires you to also convert the model formats initially.

  91. 19:31

    Um, so there's less kind of configuration steps with vllm. Takes up less space too.

  92. 19:37

    So when you do these kinds of system and performance, um, benchmarks, you can make a lot of adjustments like the, um, the input and output tokens that I mentioned, um, for the GuideLLM configurations.

  93. 19:49

    But there's a lot of also configuration opportunities for the inference runtime itself, um, depending on what you're trying to do. So sometimes we'll reduce the max, um, the context window of the model so it runs more quickly, because if it's a big context window, it's gonna be pretty beefy.

  94. 20:06

    There's a lot of knobs you can use for vllm. We're not really gonna touch that, um, this particular time, but just so you're aware. So I have my, my three in-- green infos, so that means it's working and the model is successfully deployed.

  95. 20:20

    So I'm going to, um, get into my virtual environment, which is already in place. And then I already have GuideLLM installed, but I'm going to pip install GuideLLM. And these are copy buttons, by the way, so you can just easily copy-paste things over.

  96. 20:39

    So once I have that up, then this command is set up to just work with the, um, model deployed by vllm, and that I'm just keeping up here in the top terminal.

  97. 20:49

    You can run this in the background, but I'm just not doing that. And this is... So I have my target. Um, the rate type is a sweep of, uh, various benchmarks like intertoken latency.

  98. 21:02

    There's various types of benchmarks that it'll run that you'll see in the output. Um, but these are all things that can be adjusted. You can run one particular benchmark at a time, for instance.

  99. 21:11

    You can take a look at, I think it's, uh, GuideLLM dash dash help, typical type of commands. You can kind of see what the-- where all the knobs are.

  100. 21:19

    And the documentation is pretty good too. So that'll take a couple of minutes to run because I have it, um, set at a rate of five to reduce the amount of time that it takes to process.

  101. 21:33

    So you can kind of get a sense of the output here once it all processes. And I have explainers on the left-hand side of kind of how to read some of this.

  102. 21:42

    Um, the mean performance for each... So we have the, the benchmark info on the top and then benchmark stats on the bottom. Um,

  103. 21:52

    so the-- for the constant rate, the-- on the le- very left-hand side, so those are the number of requests sent to the model per second at that particular rate.

  104. 22:01

    So three-- the constant at three point six three, six point nine three. If I did written, um, the GuideLLM command rate and it was five, if I did rate ten, you would see more lines of that at, at, um, more progressive rates.

  105. 22:21

    And, like, whether or not these numbers are good also totally depend on your use case as well. And I would be comparing... I would have a better hardware configuration obviously in production as well, because again, I'm j-- I'm running an eight billion parameter size or two?

  106. 22:35

    Two, hmm, two billion parameter size model, um,

  107. 22:40

    on an L4, which is, like, okay. But obviously if you're doing anything concurrently and at scale, like, that's going to go bonkers pretty quickly.

  108. 22:53

    So you get like the mean performance, the median performance in P99, which is like the, the extreme level, um, which matters for SLOs and things like that.

  109. 23:04

    And you can also output this into, um, JSON format as well to take a closer look.

  110. 23:11

    So once you reach this, you can try also with an additional... Like tweak the parameters and then maybe compare the results and kind of see what, what that changed if you do a RAG setup.

  111. 23:24

    Um, so I think we had-- I forget what we had, what the initial command said. Um, but you can adjust those based on a different use case and kind of compare and contrast what the stats look like after because it just takes a couple minutes to run.

  112. 23:41

    Who's done with this first exercise? Okay, good. Great. We're a few minutes away from the additional, um, ten to fifteen systems being ready, so.

  113. 24:02

    Just for the sake of time, I- Am not gonna do breaks for kind of discussion in between, if everybody's okay with that, and we can kind of just converse independently, and I'll just awkwardly walk around the room.

  114. 24:15

    Um, so if you're done with activity one, move on to activity two, because there are three activities, and I wanna make sure everybody has appropriate time for each that they would like.

  115. 24:25

    Um, but we will also have the systems up until probably about noon. I don't know, early afternoon. Um, we'll keep them up all-- if you wanted to also go back and look at it after.

  116. 24:35

    So is that good with everybody? We just kinda steamroll power through. Steam through. Okay. That's a different problem. Yes.

  117. 24:51

    So I have a new URL where we have three more available so far, but others are provisioning [chuckles] and I just wanted to go ahead and put the URL up.

  118. 24:59

    It'll come... They'll appear here. And it's the same password, right, you said? It's the same password. Sorry? It's the same password you said?

  119. 25:14

    Yeah. Okay. Okay, so that's the new URL. Three more systems, but they'll-- more will appear.

  120. 25:33

    Um, I put descriptions on the left, um, to explain that, but I just wanted to heads up, we're kinda moving from system performance to now that kind of factual accuracy part of the pyramid, um, so you get a sense of...

  121. 25:46

    So, so we're gonna be doing the MMLU Pro, um, in the second activity. And then the third activity is gonna be focused on safety and bias and more custom evals.

  122. 25:54

    So that's the trajectory of activities. Feel free-- If one is also more interesting than the other, feel free to skip around. Totally fine. Can you explain more about the MMLU Pro?

  123. 26:03

    I'm curious about [audio cuts out] or, you know, like, uh, proprietary datasets, if that's a thing. You can cu- you can basically customize everything because every-- like, all these things are open source, so you can create a similar type of eval in that multiple choice format that MMLU does with your own dataset.

  124. 26:24

    Um, there's different ways to do custom accuracy evals with your fine-tuned data. So we kind of do it in a-- We have-- So as part of one of the products, we, we incorporate an eval for, um, our fine-tuned models on your proprietary data, and we do like a branch of MMLU, essentially.

  125. 26:42

    So there's kind of-- there's a lot of ways to skin a cat, even though I love cats, um, in regards to how to set up the evals and a lot of tools available. [faintly]

  126. 26:51

    Yeah. So yeah, yes. Okay. [chuckles] You can just like fork it and ch- and change the data sources. Yeah, yeah. Okay. Oh, great. Yeah, that's all.

  127. 27:07

    Yeah. Put that link back up. The instructions don't-- Some of the instructions don't look updated as I expected, so I'm going-- what I'm going to do, um... Is everybody in the Slack for AI Engineer World Fair?

  128. 27:24

    I created a, um, Slack channel called Work- Workshop Beyond Benchmarks, um, and I'm going to put

  129. 27:34

    some of the... So activity three, does anybody see activity three? No. Okay. I'm putting content in this, um, in this Slack. Yeah. If people can-- The-- It's a public channel.

  130. 27:47

    If people can go there, my, um... You'll see starting I'm-- the link is at activity two, but then you'll also see at the page for activity three.

  131. 28:00

    It didn't-- Um, approaching activity three and are looking for that. The systems for some reason didn't render my latest changes yesterday where I improved on activity three, but I put the link to it, to my repo in the Slack channel, in this channel, if you search for it.

  132. 28:22

    But there's information about the Slack in the emails that we got about the event, but also on the back of our badges as well to navigate there. And this will be good for after if anybody has any questions, and I can send more info about any particular tool here as well.

  133. 28:40

    I wanted to have a wrap-up moment because we ha- we have about eight minutes, so please feel free to continue working. I put the link to the activities in the Slack channel.

  134. 28:49

    These environments will be available, um, until the end of the day today, so you have time also to tinker around with whatever you want. Um, so you-- Just to kind of recap, we went through the fir-- This feels-- [chuckles]

  135. 29:02

    Sounds funny. Um, the first was at that system performance latency throughput level. Did everybody kinda get through that successfully? Of course, there's-- I tried to include reading material and stuff to kind of look more into things after because it is, it is a very big topic, and there's a lot going on, and there's a lot of terms,

  136. 29:21

    and it is very complicated. Um, so hopefully you can use it as a learning resour-- my GitHub repository as a learning resource to kind of poke around after. But we started there, and then we moved into the MMLU Pro with ML Eval Harness, um, which also allows you to do a lot of other evaluation, um, benchmarks as

  137. 29:37

    a part of that ML Eval Harness framework. Um, I happened to choose MMLU Pro because it took the least amount of time, even though it took still ten minutes.

  138. 29:46

    Um, but there's other ones also that you can play around with, um, within that ML Eval Harness repository. You can see the different, um, evals you can run there.

  139. 29:56

    And then we ended with a safety evaluation with Prompt, which-- with Prompt Foo, which, um, is a tool that allows you to do a lot of customizing, um, and do your own evals.

  140. 30:06

    Like, you can do all kinds of custom tests with Prompt Foo. So I wanted to get you exposed to that tool so that you can start looking around there as well.

  141. 30:15

    That repository on GitHub also has a lot of different examples. So we used that particular, um, safety-focused example. But if you look at the Prompt Foo repository, it's very easy to play around with other types of examples as well.

  142. 30:29

    Um, so we kind of moved up the pyramid throughout the activity, so hopefully you get a sense of kind of how you can layer this approach when you're looking at and trying to plan for how to strategically implement evals across your entire system.

  143. 30:44

    Um, does anybody have any kind of questions or general what they experienced,

  144. 30:53

    notes of import? Does this feel, like, valuable? I'm curious also about use cases and happy to talk to you after too. Yeah.

  145. 31:02

    So, um, I'm, like, super new to evals and stuff.

  146. 31:05

    Mm-hmm.

  147. 31:06

    Uh, so, like, when I'm doing evals, it's like, uh, testing my prompts and, like, my data sensor if I wanna switch, like, models out and stuff. For now, I'm actively thinking about, like, those evals, connecting those actually to, like, my production, like, running, like, use cases to, like, track that, like, my real performance matches kind of like

  148. 31:27

    the drive-

  149. 31:28

    Yeah

  150. 31:28

    ... to see what is, like-- is there, like, a word for that concept or like-

  151. 31:32

    Um, so for me, what I hear is the kind of CI/CD automation implementation of an evaluation framework, just like with software engineering testing, is kind of what I hear from that.

  152. 31:43

    Um-

  153. 31:43

    Exactly. Yeah

  154. 31:43

    ... you know? Yeah. So I don't know. It, it's evaluation, but in a more CI/CD format.

  155. 31:49

    Like, when it's actually running for, like, customers and stuff.

  156. 31:52

    Yeah. You should have a CI/CD framework that includes these evaluation tests, just like for unit testing setups.

  157. 31:57

    Gotcha.

  158. 32:02

    Yeah. Anybody else?

  159. 32:05

    It's on.

  160. 32:06

    Okay. Thank you, everybody. I really appreciate it. Of course, feel free to... [audience applauding] Thank you.

  161. 32:12

    Feel free to, um, continue to use the repo. [laughs] Message me on Slack. Again, the environment will be up until about 6:00 PM... 5:00 PM tonight. So thank you, everybody. [outro music]