A frontier-class language model in the bank's own rack: AI for 100 staff without a prompt leaving the building
A regional bank and wealth manager in the Midwest, a leader in its segment.
- Scale
- ~100 staff, 1 flagship open-weight model (671B parameters), 2 active-active GPU nodes + 1 utility node, air-gapped inference tier
- Engagement
- Model bake-off, build and go-live in about 16 weeks, then managed operations
The challenge
Staff were already pasting loan files and client statements into consumer chatbots, and compliance had to shut it down. The chief information officer then asked for something that sounds contradictory: the quality of the best hosted models, with no third party ever processing the data. The material was about as sensitive as a bank holds: account data, credit memos, wealth-client portfolios and suspicious-activity narratives that are legally confidential. The board added one rule: no internet path from the inference tier, ever.
A regional bank and wealth manager wanted what the best hosted models can do, on data that could not leave its walls. Staff had begun pasting loan files and client statements into consumer chatbots, and compliance had stopped it. The data in question included account balances, credit memos and suspicious-activity narratives, which are legally confidential. Under the GLBA Safeguards Rule and the amended SEC Regulation S-P, the bank is responsible for what its service providers do with customer information, and the board's answer was simple: no internet path from the inference tier.
We started with evidence, not a brand. Around 1,400 anonymized tasks from the bank's own work (credit memos, anti-money-laundering review, policy questions, code and long-document extraction) went to several open-weight models, graded blind by senior staff against a leading cloud model. A very large mixture-of-experts model came closest. All of its 671 billion parameters sit in memory but only about 37 billion work on each token, which is why it answers quickly, and its architecture keeps the memory for long conversations manageable.
The hardware is two 8‑GPU HGX B200 servers running active-active, so either can be patched or lose a part without anyone noticing, and a third HGX H200 node handles embeddings, reranking, OCR and speech. The flagship model's FP8 weights take roughly 700 GB, less than half the memory of one node, and most of the rest holds the working memory of active conversations. We chose retrieval over fine-tuning: domain knowledge comes from the bank's own documents, so when a better open model arrives the bank can swap it in over a weekend.
We measured speed against what people feel. In our modeled benchmarks on one B200‑class node (FP8 weights, speculative decoding) a single user sees about 118 tokens per second. At the busiest hour, with about 32 streams at once, each user still sees about 60, which is twice the 30 tokens per second we set as a target and roughly ten times the 5 to 8 at which people read. The node then produces about 1,950 tokens per second in total. The wait before the first word depends on the prompt: about 0.4 seconds at the median for a 4,000‑token prompt (about 1.4 seconds for the slowest 5 percent), and about 12 seconds for a 128,000‑token prompt, roughly a 300‑page loan file. Long prompts are slow on any hardware, and caching a reused prefix removes most of the wait.
Security is the point of the design. The inference tier has no default route, the firewall denies and logs all egress, and new model weights arrive through a one-way path after a hash check and scan. A gateway applies role-based access, redacts card numbers and writes every prompt and response to write-once storage. Retrieval checks permissions per document, so the model never sees a file the user could not open. Before launch we attacked it ourselves with poisoned PDFs, role-boundary attempts and jailbreaks aimed at tipping-off language, and fixed every serious finding. The economics deserve honesty: per token, local inference costs more than a cloud API at this scale, so the real comparison is against doing without AI, or against the hours it saves. Throughput and latency figures are modeled from published hardware specifications and open benchmarks, and the engagement is illustrative. A quarterly model-risk review in the spirit of SR 11-7 keeps the model inventory, evaluation drift and bias checks current, and the same pattern scales to a different firm, model and rack.
What our team delivered
- A blind evaluation of several open-weight models on about 1,400 anonymized tasks from the bank's own work, graded by senior staff who did not know which model wrote each answer
- A mixture-of-experts flagship model (671 billion parameters, about 37 billion active per token) served in its native FP8 precision, with a lighter model beside it for autocomplete, classification and short rewrites
- Two 8-GPU HGX B200 servers running active-active, so either can be patched or fail without an outage, plus an HGX H200 node for embeddings, reranking, OCR and speech
- Retrieval over the bank's own documents instead of fine-tuning, which keeps the model swappable when a better one ships
- An air-gapped inference VLAN with no default route, a firewall that denies and logs all egress, and model weights brought in through a one-way, hash-checked update path
- A gateway that applies per-role access, redacts card numbers, enforces rate limits and writes every prompt and response to write-once storage
- Document-level access checks at retrieval time, so the model never sees a file the user could not open, and sign-in with phishing-resistant multi-factor authentication
- Red-teaming before launch (poisoned documents, role-boundary attacks, jailbreaks) and a recurring model-risk review
Result
Staff use a local model as their only AI assistant. In our modeled benchmarks a single user sees about 118 tokens per second, and at the busiest hour, with about 32 people generating at once on a node, each still sees about 60, so answers finish faster than anyone can read them. No prompt or document leaves the building. Per token it costs more than a cloud API, and the case says so plainly: the bank bought the cluster because the cloud was not an option for this data.
What staff see
Summarise the attached credit memo and list open conditions.
Reading the document from the bank's own file store. Three conditions remain open: updated appraisal, insurance certificate, signed guarantee. Sources: pages 4, 7 and 11.
A private AI rack with a spare for every job
Two GPU servers run the large model as active-active replicas, so either can be patched or fail without an outage. A third handles smaller models, embeddings and OCR. The inference tier has no route to the internet, and every prompt and response is written to write-once storage.
671 billion parameters, 37 billion at work
A mixture-of-experts model keeps every expert in GPU memory but computes only a few per token. In a DeepSeek-V3‑class model each layer holds 256 routed experts plus one shared expert; a small router picks the best 8 for each token. All 671B parameters stay resident, about 37B are computed per token, and the experts are spread across the node's 8 GPUs so every GPU contributes to every token. Public architecture figures; the picked cells are an example.
Fast for one user, fast enough for everyone
Generation speed each user sees as more people share one inference node, in output tokens per second. A single user gets about 118 tok/s; at the busiest hour, with around 30 to 40 streams at once, each user still sees about 60, twice the 30 tok/s target and ten times the 5 to 8 tok/s at which people read. One node then produces roughly 1,950 tok/s in total. Modeled figures for an 8‑GPU B200‑class server, FP8 weights, speculative decoding; illustrative.
How long before the first word appears
Time to first token is the wait while the model reads the prompt. It grows with prompt length: short questions answer in a fraction of a second, a 4,000‑token prompt takes about 0.4 s at the median and 1.4 s at the 95th percentile, and a 128,000‑token prompt (roughly a 300‑page loan file) takes seconds. Modeled for the same node under typical peak load; illustrative.
Facing something similar?
Tell us about your environment. We will tell you plainly what we would do and what it would take.