Greg’s blog
  • Blog
  • Experiments
Categories
clip
code
compute
diffusion
GAN
hardware
infrastructure
kubernetes
LaTeX
LLM
MAB
mdp
nn
NST
python
pytorch
reinforcement learning
ssl
tech
vqgan

Blog

Research Compute Infrastructure, Revisited: A Kubernetes Migration

compute
infrastructure
kubernetes

Three years after standing up our Kubernetes-based research cluster, preparing it for PyTorch with CUDA 13.x exposed a GPU Operator we could not bump without upgrading Kubernetes. The audit that followed found an unsupported control-plane version skew, a retired ingress controller, and a load balancer that nobody had actually upgraded. This post covers the migration that followed, planned and executed with Claude Code: eleven Kubernetes minor-version upgrades, a JupyterHub major-version bump, and the incidents along the way.

Aug 7, 2026
11 min

Finally Teaching a Network to See Without Labels

pytorch
ssl

A small CIFAR-10 study of how SimCLR, DeepCluster, and BYOL try to learn useful image representations without class labels, including the limits of one failed BYOL implementation.

Jul 21, 2026
10 min

VQGAN+CLIP: Hallucinating Images from Text

pytorch
vqgan
clip
GAN

CLIP can score how well an image matches a text prompt, but on its own it has no way to produce one. VQGAN+CLIP closes that gap by optimizing a latent vector fed through a pretrained VQGAN decoder, descending a loss that measures how far the decoded image’s CLIP embedding sits from the prompt’s. The decoder supplies a learned prior over realistic image structure, so optimization changes the latent that generates the image rather than pixels directly.

Jul 11, 2026
22 min

Diffusion Models

pytorch
diffusion

A worked implementation of a small DDPM and classifier-free guidance, with attention to the assumptions, shortcuts, and limits that affect the results.

Jul 3, 2026
10 min

Generation throughput for Qwen 3.6 35B-A3B with UD-Q4_K_XL weights as context depth increases across the runnable KV-cache and offload configurations.

Down the Rabbit Hole: Setting Up a Local LLM with llama.cpp

tech
LLM
hardware
This post describes how I turned an underused NVIDIA GeForce RTX 3090 with 24 GB of VRAM into a personal LLM endpoint. It is not a complete llama.cpp installation guide. I…
Jun 7, 2026
16 min

Reinforcement Learning: Tabular Q-Learning

code
python
mdp
reinforcement learning

This post implements tabular Q-learning for deterministic FrozenLake environments in Gymnasium. It connects the update equation to the training loop and explains what the stored state, action, Q-value, reward, and episode-length plots measure.

Dec 17, 2025
7 min

Bernoulli Multi-Armed Bandit Problem

python
code
MAB
reinforcement learning

A practical introduction to the exploration-exploitation trade-off through epsilon-greedy, upper confidence bounds, and Thompson Sampling on Bernoulli bandits.

Dec 16, 2025
12 min

Building a No-Fluff Report Template in LaTeX

LaTeX

This post presents ministate, a compact LaTeX class for short reports. It reduces page margins and title spacing, keeps document metadata in running headers, and lets the same class support documents with or without a displayed title block.

May 7, 2025
3 min

Visualizing Feature Maps from VGG11 and ResNet50 in PyTorch

pytorch
nn

Convolutional neural networks produce intermediate activation maps whose channel count and spatial resolution change across the architecture. This post records selected maps from pretrained VGG-11 and ResNet-50 models with PyTorch forward hooks, then displays individual channels and principal-component summaries.

May 6, 2025
5 min

Research Compute Infrastructure

compute
infrastructure

Our research lab needed a practical way to share CPU, memory, storage, and GPUs among researchers. We built a single-node Kubernetes cluster that allocates those resources through JupyterHub while preserving a familiar notebook workflow. This post describes the original architecture, its design goals, and its availability limitations.

Nov 20, 2023
20 min

Generative Adversarial Networks

pytorch
GAN

This post implements a multilayer perceptron GAN and a Deep Convolutional GAN (DCGAN) in PyTorch, then trains both on MNIST and Fashion-MNIST. The goal is to connect the GAN objective to a working training loop and compare how the two architectures behave. In these single-seed runs, the dense model had smoother loss curves, while the convolutional model produced samples that looked sharper to me.

Oct 10, 2023
8 min

Neural Style Transfer

pytorch
NST

Neural Style Transfer (NST) optimizes an image so its high-level content features match one source image while correlations between lower-level features match another. I implement the method described by Gatys et al. in PyTorch and document several practical deviations.

Sep 15, 2023
10 min
No matching items
 

© Copyright 2021, Gregor Cerar