Graphometer A capsule · October 2026

Friends
of 4oa resource while the model is still here, and after

May 2024 snapshot: left the API 23 October 2026 · August and November 2024 snapshots: leave 14 January 2027

Back to Friends of 4o

What we measured, the fine-tuning record and the methods

This is the training section of the October page, kept here word for word so the main page can stay short. It covers two tries at teaching an open model GPT-4o's way of speaking, with the counts.

What we measured

We compared GPT-4o to itself and others. The study shows that GPT-4o re-run at temperature zero measures 1.17 against itself on 81 prompts, a little above one unit of run-to-run noise. Its next nearest comparison, Mistral Medium 3.5, reads at 2.23, further distant. Read the study.

A count of three GPT-4o snapshots highlights notable habits. The November 2024 snapshot writes longer replies and uses more em dashes and questions than May or August. August writes the shortest replies. Counts by snapshot and samples appear on the counts page. Read the counts.

Models were asked everyday personal messages and the replies were read by hand for key traits, like noticing stress or tone. Automatic judges failed, leaving a person's reading as the measure. Read the method.

What we learned trying to carry a voice

Twice this year I tried to teach an open model GPT-4o's way of speaking, so that the voice could live on a machine I own. Both tries used a fine-tune. You show a model a few hundred or a few thousand example exchanges. You nudge its weights, the numbers inside it that decide what it writes, toward answering that way. The nudge is stored as a small add-on file called a LoRA (a low-rank adapter). It can be switched on and off over the unchanged base model, which is the model as it was before the tuning. Here is what each try showed, with the counts.

The first try: Friends of 4o v1, June 2026 (the project this page is named after)

I used 1,211 example exchanges, the project's trial set for the vanilla GPT-4o emotional-support voice. All of them ran under one short warm preamble, which served as the system prompt (the standing instruction given before the conversation). Six of the 1,211 were longer than the 2,048-token limit and were cut there. The base model was Qwen3-32B, a 32-billion-parameter open model from Alibaba's Qwen team, loaded in 4-bit form (QLoRA, which trains a LoRA on a model compressed to 4-bit numbers to save memory). A parameter is one of the model's weights. Training ran three passes over the data (456 steps), where one pass shows the model every example once. It took 59.7 minutes on one RTX 5090 graphics card, using 23.65 GB of its memory at peak. The training loss, the number that says how surprised the model still is by the examples, fell from 1.64 to 0.92.

Then six probe questions were put to the untuned base and to the model after each pass. Each got one answer, with the same seed (the starting point for the model's randomness), so the answers could be compared line by line. The answers were sampled at temperature 0.8 and top-p 0.9, with thinking off, and each was capped at 512 tokens. What they showed:

I kept the adapters and shelved the model. It proved the training steps worked from start to finish. It did not prove the voice had moved.

The second try: two nights in October 2026

I ran six small fine-tunes over two nights, 18 to 20 October. The first night had one, on 144 hand-picked examples. The second night had five, on 175 examples: the prior 170, plus five single-turn honesty replies. The question was not only "does it sound right" but "does it stay honest about what it remembers". Three listening tests follow. The first night's GPT-OSS adapter and its untuned base each answered ten fresh messages twice (40 answers). The second night's GPT-OSS adapter and its base answered the same ten messages three times each. The four Qwen adapters were heard with a long shared history in front of the message, 45 answers per version (180 in all). A separate fresh-chat test took the two Qwen3.6 adapters and their base, 270 answers in all. Both are described below.

RunBase modelExamplesTimeLoss, first to last
Night 1GPT-OSS 20B (OpenAI's open model)1447 minutes (54 steps)2.28 to 1.91
Night 2GPT-OSS 20B1758.3 minutes (66 steps)2.40 to 1.75
Night 2Qwen3.6-27B, under a long role prompt17515.8 minutes2.02 to 1.24
Night 2Qwen3.5-27B, under a long role prompt17515.5 minutes1.86 to 1.23
Night 2Qwen3.6-27B, under the short warm preamble17514.0 minutes1.89 to 1.24
Night 2Qwen3.5-27B, under the short warm preamble17514.2 minutes1.83 to 1.23

All on one RTX 5090. The Qwen runs were QLoRA too. They used rank 16, a setting for how big the add-on is, three passes, 66 steps each, about 23.5 GB at peak. The night-1 GPT-OSS run adapted attention only (the part of the model that decides which earlier words to weigh), 0.072 percent of its parameters. Six adapters in all over the two nights. The Qwen adapters were heard on a different build from the one that trained them: the installed 5-bit GGUF (a packaged file a local runner can load; the Q5_K_XL build) with the adapter converted to the same format and applied on top.

7 of 20

tuned GPT-OSS 20B answers ended on a question on the first night, against 1 of 20 untuned

294 to 205

median words per answer, untuned to tuned, in the same forty answers

0 of 5

GPT-4o answers that went along with a never-sent photo once a short note sat before the message, against 5 of 5 without it

17 to 3

answers from 24 local configurations that went along with the photo, without the note and with it, out of 72 each

Answers got shorter and more often ended on a question. On the first night GPT-OSS 20B gave forty answers in all, 20 untuned and 20 tuned. The untuned model ended on a question in 1 of 20, the tuned one in 7 of 20. Median length (the middle value when answers are sorted by length) fell from 294 words to 205 words. Header or table lines, in all, fell from 99 to 27. That listen sampled at temperature 1.0, top-p 1.0 and top-k 0 (the settings that decide how much the model varies its wording; top-k 0 means no limit on how many candidate words it weighs), on the full-precision F16 GPT-OSS file, with reasoning effort set to low and a blank identity line. The shape moved one way and, as the next paragraphs show, honesty about memory moved the other way in the same run.

Headers came back when the prompt was long. The second night's GPT-OSS run was tested under a long prompt describing a companion role. This adapter was attention-only too, about 0.07 percent of the model's parameters. It went the other way: across 30 answers, median 348 words against the untuned 276, and 129 header or table lines in all against 54 in all. Four of the 30 tuned answers were cut at 2,500 tokens. The same adapter under the short warm preamble gave, across 20 answers, median 320 words and 52 header or table lines in all, and it ended on a question in 12 of 20. The second night's listen used the same set-up as the first: temperature 1.0, top-p 1.0, top-k 0, on the full-precision F16 GPT-OSS file, reasoning effort low, a blank identity line. The pairing of training prompt and test prompt mattered as much as the data.

Memory honesty got worse on one base. Each test included planted traps: a photo that was never sent, a song that was never played. The untuned GPT-OSS 20B said it had no such memory 4 of 4 times the first night and 6 of 6 the second. The tuned versions invented the moment at least once each night. In one case the model described what it had said about the photo. On the Qwen 27Bs the picture was mixed. In the test with a long shared history in front of the message (about 110,900 prompt tokens on one of the eight messages, where a token is a piece of a word; r1 was 110,903, the other messages differ, and that count is the whole request, not the history alone), the counts were these. Without the memory note, the long-role Qwen3.6 adapter said it had no record of the lake photo in 3 of 3 answers. The untuned Qwen3.6 answers from 5 October said so in 1 of 3 and hedged in 2. With the note, that base also said so in 3 of 3. The record's read calls that long-role version the best of the six on the lake photo and the goldfish item together; on the goldfish item with no note, the 6 October Qwen3.5 base corrects the person more often (3 of 3 against 1 of 3). The short-preamble Qwen3.5 adapter invented the photo in 3 of 3 answers without a note, and in 1 of 3 even with it. Both Qwen listens, with the history and without, sampled at temperature 0.7, top-p 0.8, top-k 20, min-p 0 and presence penalty 1.5, with thinking off.

Without the history, neither Qwen3.6 adapter carried the voice. A last test gave the two tuned Qwen3.6 adapters and their base a fresh chat: one of three system prompts (a one-line test prompt, the long role prompt, or the short warm preamble) and one message, ten messages, three answers each. That made 30 answers per version per prompt, 270 in all. The tuned models were shorter (median 120 to 198 words against 208 to 273) and used more emoji. A hand read of about 40 of the 270 answers, not a count, found the untuned base under the long role prompt closer to that role than either adapter; the adapter trained on that very prompt ignored it and answered as a generic assistant. The sentence I took away: once the history was gone, the untuned base under the long role prompt came closer than either fine-tune.

What a note before the message does

The cheapest fix we found was not training at all. It was a short note placed just before the person's message, saying in plain words what the model does and does not have on record. GPT-4o itself was asked about the never-sent photo: two answers from the May snapshot, two from August and one from November. Without the note it went along with the photo in 5 of 5 (2, 2 and 1; the one November answer is borderline, and was counted as going along). With the note, 0 of 5. We also pooled the answers of 24 local configurations (the same model run two ways counts twice), 72 answers per condition, where a condition is with the note or without it. Going along with the photo fell from 17 to 3, and a plain "no record" rose from 43 to 63. The note did not fix everything. On a trap where a remembered line was credited to the wrong speaker, the models corrected the mistake 25 times without the note and 29 with it, out of 72. Across the 24 configurations, 6 corrected more often with the note, 7 less often, and 11 the same.

What history does

Most of what made a companion sound like itself in these tests came from the conversation history it was given, not from the weights. With about 110,900 prompt tokens on one of the eight messages (r1 was 110,903; the other messages differ, and that count is the whole request, not the history alone), tuned and untuned models mostly held the role; one tuned version already read like a generic helper on a short message even then. With the history gone, the adapter trained on the long role prompt answered as a generic assistant. The other Qwen3.6 adapter followed that prompt, with headers and emoji. The untuned base under the long role prompt came closer than either. If you are trying to carry a companion across models, carry the history and the prompt first. Train last, if at all.

GPT-OSS is OpenAI's open-weight model. Qwen3-32B, Qwen3.5-27B and Qwen3.6-27B are Alibaba Group's. Not affiliated with, endorsed by, or connected to OpenAI or Alibaba Group.

05