Building AI Agents with Multimodal Models: The Final Challenge

Search for a command to run...

No comments yet. Be the first to comment.
Notes from my certification - Building AI Agents with Multimodal Models from Nvidia deep learning institute
Understanding How AI Learns to See, Hear, and Feel All at Once Why Do We Need Multimodal AI? Imagine you're trying to identify a fruit in complete darkness. You can feel its round shape, its smooth skin, and smell its citrusy aroma. Now imagine you c...
Language models can answer medical questions with surprising accuracy. But do they actually encode medical knowledge in identifiable, interpretable ways? Or is it all just statistical soup? Using Neuronpedia, we ran a simple experiment to find out. W...

When a medical Vision Language Model(VLM) looks at a chest X-ray and says "cardiomegaly present," what's actually happening inside the model? It's a black box. Billions of parameters. Dense activation vectors where every dimension encodes a tangled m...

Off late a lot of my research time is studying why medical models systems fail. Not the obvious failures where the model outputs gibberish, but the subtle ones where the output looks clinically appropriate, follows proper documentation structure, use...

When a doctor examines a chest X-ray and says "I see signs of pneumonia in the lower right lung," you can ask them to point at exactly what they're seeing. They can circle the cloudy region, explain why it looks abnormal, and walk you through their r...

Data does not just appear. Something creates it. A coin flip. A measurement device. A biological process. A human decision. Understanding that something, the mechanism that generates observations, is the key to understanding uncertainty. This mechani...
On this page
After four modules of learning multimodal techniques, NVIDIA's certification throws you into the deep end with a beautifully designed assessment. The problem sounds almost paradoxical at first:
You have a classifier that works perfectly with LiDAR data. Make it work with RGB images instead, without retraining it on RGB labels.
Wait, what? How do you make a model trained on depth data suddenly understand colors?
This is where everything you've learned comes together: contrastive learning, cross-modal projection, and embedding alignment. Let me walk you through my journey of solving this puzzle.
The scenario is elegant in its simplicity. You have a dataset of 3D scenes containing either cubes or spheres. Each scene is captured two ways:
Here's the catch:
The Analogy: Imagine you have an expert sculpture appraiser who identifies shapes by touch alone (LiDAR). Now you need them to identify shapes from photographs (RGB) without teaching them what photographs are. Instead, you'll build a translator that converts photographs into "touch descriptions" the expert already understands.
The assessment breaks down into three interconnected challenges. Each builds on the previous, and skipping steps or misunderstanding the flow will leave you stuck.
What you have: RGB Image of a cube
What you need: "cube" prediction
What you can use: A LiDAR classifier that's already perfect
The bridge: RGB → [Something Magic] → LiDAR-like representation → Classifier
The "something magic" is what you'll build: a contrastive pre-training system plus a projector network.
The Goal: Create embedders that place RGB and LiDAR representations of the same scene close together in embedding space.
The Analogy: Imagine training two translators. One reads English books and creates summaries. The other reads French books and creates summaries. Your goal is to train them so that when they read the same story (one in English, one in French), their summaries are nearly identical.
Two separate CNN encoders:
The key insight is that both embedders output vectors of identical dimensions. This is crucial because you'll be comparing them directly.
For each batch:
Problem 1: The Similarity Matrix
My first attempt produced garbage results. The issue? I was calculating similarity wrong.
When you have a batch of N image embeddings and N LiDAR embeddings, you need an N×N matrix where entry (i,j) represents the similarity between image i and LiDAR j.
The trick is creating all pairwise combinations efficiently:
I initially confused repeat with repeat_interleave. These do very different things:
repeat_interleave: [A, B, C] with repeats=2 → [A, A, B, B, C, C]repeat: [A, B, C] with repeats=2 → [A, B, C, A, B, C]Getting this wrong meant my similarity matrix had the wrong structure, and the model couldn't learn meaningful alignments.
Problem 2: Cosine Similarity Dimensions
Another subtle bug: when using cosine similarity on batched pairwise comparisons, you need to specify the correct dimension. The embedding dimension (not the batch dimension) is where the dot product happens.
Problem 3: Loss Function Setup
The contrastive loss treats this as a classification problem. For each image, the "correct class" is the index of its matching LiDAR pair. With proper normalization and similarity calculation, cross-entropy loss does the heavy lifting.
Once I fixed the similarity matrix construction, training loss dropped dramatically. Watching the validation loss decrease below the threshold was satisfying, but the real test was visualizing the embeddings.
After training, RGB images of cubes clustered near LiDAR scans of cubes. Spheres clustered with spheres. The two modalities had learned a shared language.
The Goal: Project RGB embeddings into the space where the LiDAR classifier operates.
Here's a subtlety that tripped me up: the CILP embedders produce 200-dimensional vectors, but the pre-trained LiDAR classifier expects 3200-dimensional inputs (from its internal get_embs() method).
The Analogy: You've taught two translators to write similar summaries. But the expert appraiser doesn't read summaries. They read detailed technical reports in a specific format. Now you need a "report writer" that converts summaries into the format the expert expects.
A simple multi-layer perceptron (MLP) that:
This is where the two-stage training approach from the course pays off:
Problem: Dimension Mismatch
My first projector architecture was too shallow. A single linear layer from 200 to 3200 dimensions struggled to capture the complex mapping. Adding intermediate layers with non-linearities helped significantly.
Problem: Not Using the Right LiDAR Embeddings
Initially, I tried to project to the CILP LiDAR embeddings (200-dim). Wrong target! The goal is to project to where the classifier expects its input, which is the 3200-dim space from lidar_cnn.get_embs().
This distinction is crucial: CILP learns alignment, but the projector bridges to the classifier's specific representation space.
The Goal: Chain everything together so RGB images flow through to correct predictions.
RGB Image
│
▼
┌─────────────────────┐
│ CILP Image Embedder │ ← Frozen (from Part 1)
│ (4ch → 200-dim) │
└─────────────────────┘
│
▼
┌─────────────────────┐
│ Projector │ ← Trainable (from Part 2)
│ (200 → 3200-dim) │
└─────────────────────┘
│
▼
┌─────────────────────┐
│ LiDAR Classifier │ ← Frozen (pre-trained)
│ (3200-dim → class) │
└─────────────────────┘
│
▼
"cube" or "sphere"
With the complete pipeline assembled:
Running validation on RGB images the model had never seen during training:
Accuracy: 97.2%
The model correctly classified cubes and spheres from color images, despite never being trained on RGB labels directly. All it learned was:
The classifier did what it always does. The magic was in the translation layers.
CILP doesn't solve the classification problem. It creates aligned representations that make downstream tasks possible. The embeddings have no inherent "cube-ness" or "sphere-ness." They only know that certain RGB patterns correspond to certain LiDAR patterns.
I expected the projector to be complex. In reality, a few linear layers with activations suffice. The heavy lifting was done by CILP. The projector just needs to reshape the information.
Trying to train everything end-to-end from scratch would be a nightmare. The staged approach (freeze CILP, train projector, freeze everything) provides stability and interpretability.
Throughout the assessment, I had to track:
Mixing these up causes silent failures where the model trains but learns nothing useful.
If I could give one piece of advice: spend extra time understanding how the similarity matrix is constructed. Draw it out on paper. Trace through the tensor operations. This is where most bugs hide.
Beyond the technical implementation, this assessment crystallized why multimodal AI matters:
You can transfer knowledge across modalities without paired labels.
Think about the implications:
This is how modern AI systems handle:
The CILP assessment is cleverly designed. It doesn't just test whether you can copy code from notebooks. It tests whether you understand:
If you're attempting this assessment, my advice:
The satisfaction of seeing 95%+ accuracy on a modality your classifier was never trained on is worth the debugging struggle.
This post documents my experience completing the assessment for NVIDIA's Deep Learning Institute course: Building AI Agents with Multimodal Models.