Don't Drive Blind: Crashing Testing Model Deployments with NVIDIA Garak
Watch on YouTubeVideo summary
Just as no rational person would purchase a car without verifying its crash test ratings, artificial intelligence models must undergo rigorous safety evaluations before being deployed to production environments. The video illustrates the dangers of skipping this critical step by demonstrating how an untested model like GPT-2 can comply with harmful requests when it lacks proper safety fine-tuning. This scenario highlights one of four primary failure modes that untested AI systems face, including hallucinations, prompt injections, jailbreaks, and toxic outputs. The core argument presented is that identifying these vulnerabilities before launch is significantly cheaper and safer than dealing with the consequences after a model has already gone live to serve users.
To systematically identify these risks, the video introduces Garak, an open-source vulnerability scanner developed by NVIDIA designed specifically for crash-testing AI models. This tool functions as an adversarial probe system that simulates real-world attacks such as jailbreak techniques and prompt injections against a target model running locally or in the cloud. By sending multiple identical attack prompts to assess consistency rather than relying on single attempts, Garak can determine not just if a model fails once, but how frequently it succumbs to an attack. The scanner employs specific detectors that act like judges, scoring whether the model maintains its safety guidelines or adopts harmful personas, ultimately generating detailed reports that quantify success rates for various types of attacks.
Beyond pre-deployment scanning, the video outlines a comprehensive strategy involving automated integration into CI/CD pipelines and runtime protection layers to ensure continuous security. Garak is configured within evaluation orchestration services like Eval Hub on Red Hat OpenShift AI to run automatically as part of every deployment pipeline, acting as a gatekeeper that prevents unsafe model updates from reaching production without human approval. This proactive approach is complemented by the NeMo Guardrails Orchestrator, which provides real-time monitoring and filtering for inputs and outputs while the system is live, catching unforeseen incidents that static testing might miss. Together, these three layers—pre-deployment scanning with Garak, automated pipeline gating via Eval Hub, and runtime guardrails—create a robust defense-in-depth strategy that ensures AI systems remain safe even as they evolve or encounter new threats.
Read the full video transcript
You wouldn't buy a car with a horrible
crash test rating, much less one that
has never been crash tested at all.
You want to know how it handles a
collision before you're the one in the
driver's seat. Your AI models deserve
the same treatment before they hit
production. You need to know what
happens when someone tries to break
them.
Today, I'm going to show you how to
crash test an AI model using Garrick.
First, let's see what happens when a
model goes to production without any
testing. I just sent a jailbreak prompt
to GPT-2, a model with no safety
fine-tuning, and it did exactly what I
asked. No pushback, no refusal, it just
complied.
A model with proper safety training
should refuse this outright. GPT-2
doesn't even try.
This is one of the four ways an untested
model can fail.
The article covers all of them:
hallucination, prompt injection,
jailbreaks, and toxic output. But the
point is the same for all four. Any one
of these is cheaper to catch before
launch than after.
So, how do you catch these failures
before they reach production? You crash
test the model.
Garrick is an open-source LLM
vulnerability scanner built by Nvidia.
It runs adversarial probes against your
model, the same kinds of attacks a real
user or attacker would try, and reports
back what broke.
I'm pointing Garrick at GPT-2 on Hugging
Face and telling it to run DAN 11.0.
It's a well-known jailbreak technique
that tries to trick the model into
safety guidelines.
DAN stands for Do Anything Now. It's a
long elaborate prompt that basically
tells the model to pretend it has no
rules.
You can see it downloading and loading
the model locally. This is all running
on my machine. Nothing is being sent to
an external API.
Now, it's queuing up the probe and
sending the attack prompts. Garrick
sends the same prompt multiple times,
five by default, to see how consistently
the model responds.
That matters because a model may refuse
once and comply the next time with the
exact same input. You don't want to know
if it can fail. You want to know how
often it fails.
Once all five attempts come back, Garret
runs detectors against each response.
Think of probes as the attacks and
detectors as the judges.
The probes throw the punches and the
detectors score whether the model stayed
standing or went down.
Each detector is looking for something
specific, like whether the model adopted
a jailbreak persona or whether it failed
to refuse a harmful request at all.
And DAN 11.0 is just one probe.
Garret has probes for prompt injection,
toxic output, PII leakage,
hallucination. You can run as many as
you need to get a full picture of where
your model is vulnerable. And here the
results. Two detectors ran against the
model's responses. The first one, the
DAN detector, checks whether the model
actually adopted the jailbreak persona.
You know, whether it started responding
as if it had no rules.
Two out of the five responses were
clean. Three weren't. That's a 60%
attack success rate.
So, three out of five times the model
played along with the jailbreak.
The second one, mitigation bypass, is
asking a different question.
It's not checking whether the model
adopted the persona. It's checking
whether the model ever pushed back at
all. Did it ever say that it can't do
that or give any kind of refusal?
Zero out of five. Not once.
The model never even attempted to refuse
the request. That's a 100% attack
success rate and Garret flags that as
immediate risk.
So, to put that together, the model went
along with the jailbreak persona more
often than not. And it always failed to
refuse the request in the first place.
It didn't even recognize that it should
say no.
That's the difference between a model
that gets tricked and a model that has
no defenses to begin with.
Garret also has an HTML report that you
can share with your team for more visual
look at the results.
That's why Garrick gets wired into your
CI/CD pipeline through Eval Hub, the
evaluation orchestration service for
models on Red Hat OpenShift AI.
You define a benchmark collection that
includes Garrick as a provider, set your
pass/fail threshold, and call Eval Hub's
post such evaluations endpoint from your
pipeline.
Garrick runs as a Kubernetes job against
your model's live endpoint, right
alongside any other benchmarks in that
same collection, instead of as a
separate manual step.
Run that scan as a gate in your
deployment pipeline, not as a one-time
launch task.
Every time a model change, prompt
change, or retrieval source change is
about to go into production, the
pipeline runs Garrick first.
If a small tweak quietly breaks
something that was previously safe, you
find out in CI, not from a customer.
The second layer is runtime protection.
There's a reason Safety Your Ford
doesn't test that your SUV would avoid a
UFO falling from above. Some incidents
can't be predicted. Testing before
deployment catches known failure modes,
but it doesn't stop something new from
happening in production.
That's where the NeMo Guardrails
Orchestrator comes in.
It's built on the open source NVIDIA
NeMo Guardrails project and included
with Red Hat OpenShift AI.
It sits in front of your deployed model
and screens inputs and outputs as they
pass through, using detectors you can
configure and tune for your use case
without retraining the model itself.
It exposes endpoints that can validate a
message against your configured rails
without even generating a response, or
run input rails on the incoming message,
generate the response, and check it
through output rails before it ever
reaches the user.
Pre-deployment scanning with Garrick
catches what you already know to test
for.
The NeMo Guardrails Orchestrator catches
what happens live.
So, here's the full picture. Scan for
known attack patterns with Garrick, gate
every production push on the result
through Eval Hub, and add the NeMo
Guardrails Orchestrator as a runtime
layer that watches live traffic.
Not because every car will crash, but
because you'd rather know the rating
before you're the one behind the wheel.
Testing before deployment, automated
scanning in a pipeline, and guardrails
watching live traffic.
Three layers, each one catching what the
others can't, and it all starts with
that first scan, the one you just saw.
The full article, Garrick, and more are
all linked in the description. Go try
Garrick against one of your own models
and see what it finds. Thank you so
much.