Blog ·

Moving a fine-tuned GPT model: what you keep and what you lose

A fine-tuned GPT model is three things glued together: OpenAI's base weights, a small set of learned changes on top, and the data that produced those changes. When you leave, the first two stay behind. OpenAI serves fine-tunes through the API by their ft: ID and offers no export (enterprise privacy). The third part, your data, is yours to take.

The data is where most of the value was. Training on it again takes hours. Collecting and labelling it took your team weeks.

Inventory: what to export before you go

Make a folder for each fine-tuned model in production and put these four things in it.

1. The training file. List and download it from the Files API (GET /v1/files?purpose=fine-tune, then GET /v1/files/{id}/content). OpenAI keeps fine-tuning files until you delete them (your data guide).

2. The validation file, if you used one. It is your ready-made test set. Keep it separate from training data so the new model never sees it.

3. The system prompt your app sends today. Fine-tunes often run with a short system prompt that only makes sense next to the training data. Copy it from your code, not from memory.

4. 200 to 500 real production calls. Take inputs from your logs, with the answer your current model gave and, where you have it, the answer a human accepted or corrected. This is the best test set you have, because it is the traffic the new model must handle.

Mask names, emails and phone numbers before these logs leave your systems. If you upload to Honed, it masks emails, URLs, IBANs, card numbers, tax IDs and phone numbers on upload. You still should not send what you do not need.

What the new model must match

Write down, for your current fine-tune, on the production sample from step 4:

Metric How to measure
Accuracy Share of answers that match the accepted answer. For labels, also macro F1, so a rare class does not hide behind a common one.
Format errors Share of answers your parser rejects.
Cost per 1,000 calls Real input and output tokens × the fine-tuned price. A fine-tuned gpt-4.1-mini costs $0.80 input and $3.20 output per million tokens, twice the base model.
Median latency After a few warm-up calls.

These four numbers are the bar the replacement has to clear.

Retrain, then compare on the same examples

Upload the training file to the new platform and train. Then run the old fine-tune, the new model and one or two prompted frontier models on the same held-out examples. Use the same inputs, the same scoring and the same day.

In Honed this comparison is the default last step. You pick up to five models to compare against. Honed runs them, your new model and its untrained base on at least 100 held-out examples, and shows accuracy, cost per 1,000 calls and median latency side by side. Your current ft: model is not in that list, because it only runs on OpenAI. Score its answers on the same held-out examples yourself and put the number next to the table.

With the lowest-cost goal, a run takes 13 to 26 minutes from upload to result table (see our support-routing run).

What usually changes after the move

The answer format can drift on the first try. OpenAI's fine-tuning applied its own chat template. An open model uses a different one. If your parser is strict, look at the format error rate first.

Runtime instructions move into the user message. Honed trains each model with its own system prompt and ignores system messages sent at inference. Fold anything your app sends at runtime, such as today's date, into the user message.

Costs drop most on short, repeated calls. Classification, routing and extraction send few output tokens, so a small model's lower price per token shows up directly in the bill.

You can retrain whenever you want. On OpenAI, the last chance to retrain is 6 January 2027 (deprecations). On an open base, you add new examples and train again whenever the data changes.

Sources