Emilio Girard
I measure AI systems on real hardware, from 5-watt boards to a B200 ⚡📏🤖
In plain terms: I make AI models run faster and cheaper on hardware that has limits, and I measure what they actually cost in watts, joules and GPU time. That means robot policies on a 15 W Jetson, speculative decoding on a single GPU, and serving records on a B200. I publish my failed experiments along with the ones that worked.
Status: Montréal, remote-first. Open to conversations about ML-systems and inference-infrastructure work (research engineer, performance engineer, edge deployment).
Email me; I answer within a day.
Timeline
- TradeDEP in Machining Techniques, Rosemount Technology Centre, Montréal. Operator on a Mazak Integrex e-670H at Mecaer America (Laval), machining F-35 landing gear steering head components in titanium.
- Nov 2025DGX Spark (GB10) becomes the daily driver. Pylox Systems Inc. starts as a one-person lab.
- Feb 2026Eva, a WhatsApp coordination agent, goes into daily production at a construction firm. Pylox Vision, an 8-camera Jetson detection and re-identification stack, runs at a pilot site (74K events).
- Apr 2026First public fine-tunes on Hugging Face, each with a benchmark table against its base model.
- May 2026Three published-paper reproductions on the Jetson Orin Nano. Hochelaga-8B, the first open-weights Québec French model. Quatroo Llama-8B serving records on a single B200, cross-validated in two datacenters.
- Jun 2026Full-duplex 7B speech model answering a real Montréal phone number. Connectome-as-reservoir experiments across 14 connectomes.
- Jul 2026Maxim, a Québécois voice assistant, first serves the public web; in August it moves onto the Spark on my desk.
- Aug 2026Joules Per Task: first hardware energy measurements for a VLA policy, then a four-policy spectrum. Per-block drafter selection: 7,309 counterfactual blocks across four drafters.
- Sep 2026Starting a college AI program in Montréal alongside the lab work.
Hardware I've worked on
| Device | What I did on it |
| Raspberry Pi 5 | agentosd daemon; rootless stripped-OS builds; cluster node |
| 2x Jetson Orin Nano | the JPT energy measurements; TensorRT ports of three published papers at INT8/FP16; 263 fps terrain navigation; MAXN tuning, Tegra cuBLAS quirks |
| Apple M2 Studio / M4 MacBook | Metal targets; SwiftUI clients for the camera and voice systems |
| NVIDIA DGX Spark (GB10, sm_121) | daily driver: 24B full-parameter CPT, EAGLE-3/DFlash drafter training, NVFP4 serving, a live voice product served from my desk, unified-memory wall daemons |
| RTX 3080 | the first live deployment of the Maxim voice stack |
| RTX 5090 | 33.8x warm sustained speculation; the 6,361-block counterfactual collection; F5-TTS render farm |
| RTX Pro 6000 Blackwell | production voice serving; 30B diffusion-LM training experiments; MoshiRAG |
| A100 | full-duplex speech serving for the phone line |
| H100 | trained the full-duplex speech model on its 147-hour joual corpus, FSDP across two cards |
| B200 (up to 4x, sm_100) | full-parameter 24B pretrain; the Llama-8B serving records, verified across two datacenters; the 70B single-stream record runs |
| 42-CPU Ray cluster | distributed CPU work across the whole fleet, Pi to Spark |
Stack
| GPU architectures | sm_87 (Orin) · sm_100 (B200) · sm_120 (5090, Pro 6000) · sm_121 (GB10) · Apple Metal |
| Inference engines | TensorRT · TensorRT-LLM · vLLM · SGLang · llama.cpp · ONNX Runtime |
| Quantization | NVFP4 · MXFP4 · FP8 KV-cache · INT8 QDQ with calibration · GGUF (IQ3_XXS, Q4_K_M) · TensorRT Model Optimizer |
| Speculative decoding | EAGLE-3 · DFlash · Medusa · MTP · suffix automaton · n-gram · grammar-constrained trees · self-distilled drafters · SpecForge |
| Training | full-parameter CPT · SFT · DPO · GRPO · distillation · FSDP2/DTensor · LoRA · QLoRA · DoRA · PiSSA · rsLoRA · NeMo · Unsloth · LLaMA-Factory · Axolotl |
| Speech | Moshi/Mimi full-duplex · PersonaPlex · F5-TTS · Whisper · NVIDIA Canary · custom codec upsamplers |
| Vision | YOLO (v8 to 11) · RT-DETR · OSNet Re-ID · Frigate NVR · go2rtc · COLMAP · gaussian splatting (gsplat, NeRFStudio) · RoomPlan LiDAR |
| Retrieval and data | Qdrant · Neo4j · Postgres · SQLite · full-text search at 554K documents · BM25 + dense hybrid · embedding pipelines |
| Systems | CUDA · PyTorch · Ray · ROS 2 · Gazebo · Docker · systemd · Ansible · PM2 · Cloudflare tunnels and Pages · Tailscale · Telnyx telephony · MQTT · Linux from kernel boot params up |
| Apps | Node.js · FastAPI · Next.js · SwiftUI · hand-written WebGL2 |
Papers with public code and data
Joules Per Task: Energy Measurements for Learned Policies on Embedded Hardware.
code
Preparing submission. First energy numbers for a vision-language-action policy in the literature, now extended across four policies spanning 0.2M to 450M parameters on one Jetson. A 19M diffusion policy costs 5x a 30M transformer policy, so parameter count is a bad proxy for edge energy. Includes the vision-reuse failure boundary and six documented deployment traps.
Per-Block Drafter Selection in Speculative Decoding.
code
In preparation. 7,309 blocks with four drafters verified on identical prefixes across two GPUs. Workload-level routing is a measured null at 0.6% headroom; per-block confidence selection captures 61% of a 13.3% oracle gap, and transfers to code, math and chat but carries no signal on copy. Every number has a bootstrap interval, and the wall-clock break-even condition is stated rather than assumed.
Work in progress
Listed so the scope is visible; none of these has a public artifact yet, so treat them as claims about work in flight rather than results.
Aesthetic Attractors in Recursive Multi-Model Diffusion.
Draft complete. Seven models fed their own output for 1,000 iterations each converge to distinct attractors; ~8,000-frame dataset.
Hochelaga: Québec-Native Foundation Modeling on Blackwell.
In progress. Corpus assembly, tokenizer extension, CPT and evaluation of the first open-weights Québec French model.
Quatroo: Llama-8B Serving Records on a Single B200.
Technical report with cross-datacenter validation and the honest diverse-workload ceiling; reproduction scripts written, public release pending.
Connectome Topology as a Reservoir Substrate.
Results complete, write-up pending. One positive result and two nulls across 14 connectomes and four phyla.
Achievements
- First published hardware energy measurements for a VLA policy: 963 J per successful task, cut to 489 J with no accuracy loss.
- Measured that inference structure, not parameter count, sets edge energy: a 19M diffusion policy burns 5x a 30M transformer policy, and the identical vision-reuse optimization returns 18.9x on one and 1.55x on the other.
- 43,509 to 69,461 tok/s aggregate serving Llama-3.1-8B on a single B200, verified across two datacenters. 3,492 to 5,025 tok/s sustained single-stream.
- Hochelaga-8B scores 85.44% accuracy on QFrCoLA against 83.85% for Claude Opus 4.7, both on the same 7,546-item test split of graalul/qfrcola, the Opus number measured by me through the API with the same prompt. Table and setup in the model card. First open-weights Québec-native model, trained on a corpus I assembled.
- Full-parameter continued pretrain of a 24B on 4x B200 under FSDP2.
- A full-duplex 7B answering a real Montréal phone number, with mid-conversation answer injection from a larger model.
- A Québécois voice assistant live on the public web, served entirely from a DGX Spark on my desk, 0.5 s median voice latency.
- Real neural wiring beats degree-matched random graphs as a reservoir computer: R² 0.759 ± 0.014 vs 0.612 ± 0.047, winning 10 of 10 seeds.
- Typed system operations cut an agent's tool round-trips from 3 to 1 and its token cost by 3.1x to 3.7x, on a small two-task benchmark.
- Three published-paper reproductions on a 15 W Jetson with added energy measurements.
Projects
- Maxim: Québécois voice assistant, live on the public web, served from the DGX Spark on my desk. Open it and talk to it.
- The phone line: a full-duplex 7B answering a real Montréal number with mid-conversation answer injection.
- Mach engine (private): hand-written 13-variant speculative-decoding harness; cascades, best-of-N, grammar-pruned trees. The per-block counterfactual logs it produced are public in per-block-drafter-selection.
- agentos: stripped OS plus typed-operation daemon for measuring and reducing agent round-trips.
- Hochelaga corpus: provenance-tracked Québec French pretraining corpus; Hansard, CanLII, joual speech.
- 10 public models: legal, SQL, customer support, voice, agents, Hochelaga; benchmark tables in every card, including three adapters that lose to their base model in pairwise judging (15%, 32% and 14% win rates, stated on the cards).
- risk-aware-terrain-jetson: IEEE T-IV reproduction on the Orin with added energy numbers.
- cbcl-pr-jetson: class-incremental learning reproduction, five seeds, quantization ablation.
- pylox-vision-demo: 8-camera detection and re-identification stack.
- joules-per-task: energy measurement harness for learned policies on Jetson, with the full export pipeline and paper.
- Splat Montréal: iPhone-to-gaussian-splat capture pipeline, run as a service.
- Anvil: 554K-document full-text index over 1,659 CUDA/NVIDIA repos, wired into a coding agent.
- Eva: WhatsApp coordination agent in daily production use at a construction firm.
- Everything else, including the failures: the full ledger.