Fine-Tuning on Financial Data Without Leaking It.
Models memorize training data, and financial data is the worst data to leak. The pipeline for fine-tuning on sensitive records: dedupe, canaries, extraction evals, and lineage.
The uncomfortable fact about fine-tuning
Language models memorize training data. Not metaphorically: verbatim sequences from the training set can be extracted from the model with the right prompts. This was demonstrated on production models years ago, in Carlini et al.'s training data extraction work, and the follow-up research established the two variables that matter most: memorization scales with duplication and with model size. The sequences most likely to come back out are the ones that appeared most often on the way in.
Now consider what a financial services training set looks like. Account structures repeat. Client names appear across hundreds of documents. The same wire instructions, the same counterparty details, the same fee schedules show up again and again, because that is what operational data does. Financial data is close to a worst case for memorization: highly duplicated, highly sensitive, and highly regular in format, which makes extraction prompts easy to construct.
So the question for any team fine-tuning on internal data is not "will the model memorize?" It will. The question is whether you engineered the pipeline so that what it memorizes is patterns, not records.
When you should not be fine-tuning at all
Half the fine-tuning projects we review should have been retrieval. If the goal is "the model should know our documents," that is RAG over access-controlled sources, where every answer carries citations and access control is enforced at query time, per user. Retrieval gives you deniability that fine-tuning never can: nothing is inside the weights, so nothing can be extracted from them.
Fine-tuning earns its place when the goal is behavior, not knowledge. Format discipline for a specific document type, tone and structure for client communications, tool-calling reliability against your internal APIs, classification taxonomies that prompting cannot hold stable. In those cases the training data should teach the shape of the work, and the pipeline's job is to make sure the shape is all that survives.
The pipeline that holds up
Minimize before anything else. The training set should contain the minimum data that teaches the behavior. Strip fields that do not contribute: real account numbers teach the model nothing that synthetic ones cannot, real client names nothing that consistent placeholders cannot. Pseudonymize entities before the data ever reaches the training environment, and keep the mapping in your existing secrets infrastructure, not next to the dataset.
Deduplicate aggressively. Since memorization tracks duplication, near-duplicate detection is a security control here, not a data-quality nicety. Collapse repeated boilerplate, repeated instructions, repeated templates into single exemplars. This also improves the fine-tune; the model spends capacity on variety instead of reciting the most common document.
Plant canaries. Insert a small set of synthetic, unique, traceable records into the training set: fake client names, fake account strings, generated to be unambiguous. After training, attack your own model: prompt for the canaries, sample at high temperature, run completion attacks against their prefixes. Canary recall is your memorization meter. If canaries come back, real records can too, and the run does not ship.
Make extraction a release gate. The eval suite for a fine-tuned model needs an adversarial section alongside the capability section: targeted extraction prompts against known-sensitive patterns, membership-style probes, and the canary battery. Wire it into the same eval gate that already decides whether a model reaches production. A fine-tune that fails extraction evals is a failed build, whatever its capability scores say.
Prefer adapters. LoRA-style adapters, small trained deltas on top of a frozen base model, are easier to govern than full fine-tunes: the reviewable artifact is megabytes instead of a full copy of the weights, one qualified base model serves many adapters, and rolling back a bad training run means unloading a file. The blast radius of a mistake shrinks by orders of magnitude.
Train inside the boundary. The training environment is part of the data boundary, the same way the serving cluster is: your accounts, no egress from training nodes, weights and checkpoints written to an internal registry. Checkpoints deserve particular attention, since every one of them contains whatever the final model memorized, and they have a way of accumulating in object storage nobody audits. Sending regulated records to a vendor's fine-tuning API replaces all of this with a paragraph in someone else's terms of service.
Record lineage. For every model artifact: which dataset snapshot, which base model and hash, which run configuration, which eval results, who approved promotion. When an auditor, or an incident, asks what a model could plausibly know, the answer has to be a query against records, not archaeology. One quiet detail that matters here is the base model's license, since it travels with every artifact you produce: Apache 2.0 and MIT bases keep this simple, and community licenses need a read before, not after, the model is load-bearing.
The test before you ship
The pre-launch question that catches the most problems is blunt: if a motivated user with API access spent a weekend trying to make this model recite its training data, what would they get? If the honest answer is "we have not tried," you are not done. Attack it yourself, with the canaries as your scorecard, before someone else does it without telling you.
Fine-tuning on financial data is entirely doable, and teams do it safely in production today. But safe is a property of the pipeline: minimization, deduplication, canaries, extraction gates, adapters, boundary, lineage. The weights are just where the pipeline's discipline, or its absence, ends up stored.