The estimation part tripped me up more than the architecture itself.
Start by clarifying requirements and constraints (e.g., model size, latency SLA, hardware). Then walk through a high-level architecture, perform back-of-envelope calculations for memory and bandwidth, and discuss latency optimization and OOM mitigation strategies. Emphasize trade-offs and justify your choices.
Pro tip: At Waymo, safety and reliability are paramount, so highlight redundancy, failover, and graceful degradation in your design. Also, consider edge vs. cloud inference trade-offs, as latency and bandwidth are critical for autonomous driving.
Ask about model size, latency SLA, throughput, hardware (GPU/TPU/CPU), and deployment environment (cloud/edge). Confirm assumptions like peak load vs. average load.
Propose a scalable architecture: load balancers, inference servers (with model replicas), caching, and possibly a message queue for async requests. Consider edge inference for low latency.
Calculate memory per model instance, total memory for replicas, and bandwidth for input/output data. Use QPS = 100M DAU * average requests per user per day / 86400 seconds.
Discuss techniques: model quantization, pruning, batching, caching, hardware acceleration (GPU/TPU), and edge deployment. Mention tail latency and how to mitigate it.
Address OOM risks: memory pooling, gradient checkpointing (if training), model sharding, swapping, and monitoring. Suggest autoscaling and graceful degradation.
AI-generated suggestions, not part of the candidate's original notes. May be inaccurate — verify before relying on them.