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: energy per successful task for a VLA policy on the Jetson Orin Nano, then a four-policy spectrum. Per-block drafter selection: 7,309 counterfactual blocks across four drafters.
- Sep 2026SeabedNet: Churchill corridor bathymetry completion, validated on 6.46 million held-out soundings, atlas and report live. Starting 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. Energy per successful task for a vision-language-action policy on the smallest Jetson, concurrent with a Shanghai Jiao Tong study on larger Jetsons that reports energy separately from success. 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.
SeabedNet Churchill Corridor Report: Model-Completed Bathymetry and a Shoal-Hazard Field for the Churchill Trade Corridor.
report ·
atlas ·
code and validation cells
Technical report, September 2026. A masked-completion network trained on the public CHS NONNA archive, scored on depths it never saw. Trained only on pre-2016 soundings, it predicts 6.46 million post-2016 soundings in the corridor to 13.3 m mean error against 18.8 m for the nearest published sounding and 18.1 m for the gravity prior. On 109,044 independent shelf multibeam cells: 4.9 m against 5.5 m gravity and 13.4 m nearest; below 400 m the gravity prior wins and the product defers to it. A separate shoal model predicts the shallowest point within 500 m to 2.6 m where a sounding exists (10.7 m if the archive depth is taken as the shoal). Six TSB groundings hindcast from pre-incident soundings: four fall above the 90th hazard percentile. A 1,314-cell forecast is sealed by SHA-256 and OpenTimestamps for the next survey to grade. Planning prior, not for navigation.
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
- A seabed-completion model trained on pre-2016 Canadian Hydrographic Service soundings predicts 6.46 million later soundings under the Churchill corridor to 13.3 m, against 18.1 m for the gravity-derived bathymetry that global charts fall back on; the forecast for unsounded cells is sealed and timestamped so the next survey can grade it.
- A VLA policy measured on a Jetson Orin Nano at 963 J per successful task, cut to 489 J with no accuracy loss and no training. Energy is charged to successes, so a config that saves power by failing more pays for it.
- 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
- SeabedNet: model-completed bathymetry, calibrated uncertainty and shoal hazard for every 100 m cell of the Churchill trade corridor, with a sigma-ranked survey plan. Live atlas, public validation cells, sealed forecast.
- 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.