Cases2 cases
1 to 2 of 2
IL-0024Expensive cache-backed API calls and uncancelled database requests overloaded MongoDB and took the Hugging Face Hub down three timesHugging Face2024- Symptoms
At 08:45 CET on 22 April 2024 the Hugging Face Hub became unstable, and by 09:30 it was unresponsive. For most users the website was slow or could not be reached at all.
- Trigger
Bursts of requests to revision endpoints that read heavily from the *_info_cache collections: a call to https://huggingface.co/api/datasets/lighteval/mmlu/revision/main rose sharply right before the first crash, and a call to https://huggingface.co/api/models/sentence-transformers/all-mpnet-base-v2/revision/main, a model with 300+ associated spaces, lined up with the crash at 21:30 on 23 April.
- Root cause
- Component
- Contributing factor
- Detection
Instability started at 08:45 on 22 April and the Hub was unresponsive by 09:30; the team followed MongoDB Atlas metrics and a MongoDB support case. The root cause was found days later from a new graph of requests per URL.
- Remediation
- Added a firewall rule blocking all requests with a Java/* user agent
- Disabled the quicksearch feature on the Hub
- Scaled the MongoDB Atlas cluster by hand from tier 2 to tier 3
- Switched the Hub to maintenance mode with a 503 page through AWS WAF and blocked incoming traffic
- Scaled all Hub pods down to 0 and brought them back
- Set an aggressive rate limit
- Added timeouts to requests and reworked database queries that were slow or returned large bodies
- Action items
- Add timeouts to requests based on their usual completion time
- Optimise requests that took too long or returned a large body, and rework poorly designed database queries
- Remove old unused indexes from the database
- Build new dashboards and monitoring metrics
- Move the *_info_cache collections to Redis
- Make it possible to abort any database request when the client aborts theirs
- Lessons
Finding the root cause took two to three days: the existing charts did not show it, and a per-URL request breakdown did. Not cancelling database work when a client goes away turns a strained database into a thundering herd. A close inspection of the database exposed architectural flaws and bottlenecks, such as a collection with large unused indexes, and taught the team which metrics need closer watching to anticipate crashes. Unrelated failures happening at the same time added to the stress and made restoring service harder.
IL-0115One of OpenAI's three production AKS clusters went offline through a human error, and rebuilding it took 10½ hours because an AKS Kubernetes upgrade broke the ingress and AKS cannot be downgradedOpenAI2022- Symptoms
At 18:56 PDT on 23 June 2022 (01:56 UTC on 24 June) several models went offline at once: some fine-tuned curie and davinci models, the Codex beta models code-davinci-001 and code-cushman-001, the legacy GPT models curie, babbage and ada, and all Embeddings models.
- Trigger
A destructive operation on one of the three production clusters, caused by human error that the existing safeguards did not catch, took the whole cluster offline.
- Root cause
- Component
- Contributing factor
- Remediation
- re-allocated the models from the lost cluster to the remaining two clusters
- rebuilt the VPN link with Azure support after losing the connection to AKS during cluster setup
- built workarounds with Azure support after losing the connection to Azure Private Link
- tore down the cluster and rebuilt it from scratch after the upgraded Kubernetes version broke the ingress
- moved traffic back into the rebuilt cluster between 05:30 and 06:30 PDT
- Action items
- Add checks and locks so that this and similar production-critical infrastructure cannot be modified by accident
- Add better visibility into the operations being performed and make parts of the system more lexicographically distinct
- Keep working with Azure on the AKS network connectivity issues so they do not disrupt new cluster operations
- Update playbooks with the new cluster failure modes and change the setup steps for new clusters and infrastructure
- Upgrade Kubernetes systematically and set aside time so the clusters do not fall behind again
- Shard fine-tuned models across multiple clusters and work towards more automatic cross-cluster replication
- Distribute and replicate Azure Blob Storage so fine-tuned models load faster and more reliably
- Finish rolling out node-to-node caching to relieve Azure Blob Storage bottlenecks
- Change how model weights are stored so they are more efficient and faster to load
- Lessons
Losing one of three clusters exhausted the GPU headroom, and GPUs could not be added on short notice, so full recovery depended on bringing the same cluster back. Rebuilding it exposed a deferred Kubernetes upgrade: the newer version broke the ingress, and because AKS cannot downgrade there was no way back except a full rebuild. Recovering many large models at once is limited by the bandwidth of the storage they load from, and the caches that normally hide this do not help when everything moves to a different cluster.
These 2 cases involve Model hub and Cluster autoscaler. kubegap audits a Kubernetes cluster for gaps like these, read-only, from Claude Code or Codex; its checks cite public reports like the ones in this library.
By root cause2
Software defect1 case
- Contributing factor
- Organisation
Operator error1 case
- Component
- Contributing factor
- Organisation