Open the workspace
New GRPO with custom Python verifiers →

Post-training, for everyone.

POFE is the workspace where a team takes an open model and makes it great at one job. Curate the data, run SFT, DPO or GRPO, check every result against evals you trust, and ship the endpoint. No platform team required.

Open the workspace W
No signup for the demo·Private workspace on request·AWS, GCP, Azure, Databricks, on-prem
Runs where your data already lives AWSGoogle CloudAzureDatabricksSnowflakeKubernetesSlurmAir-gapped

Five tools you were going to glue together. One workspace.

Every dataset, run, eval and endpoint is linked in one lineage graph, so any score on a dashboard traces back to the data and code that produced it.

data/tickets-v4 · pipeline184,212 rows
01 sources3://acme-logs/support/2025-*1.24M rows
02 filterresolved = true AND csat ≥ 4412k
03 redactPII: names, emails, card numbers, IBAN37,804 spans
04 dedupeMinHash, Jaccard ≥ 0.85−211k
05 synthesiseteacher → 2 candidates, judge picks preferred+48k pairs
06 splittrain 95% / eval 5%, stratified by intent184k

More on data →

Every run, side by side.

Runs, not slides. Method, data version, eval delta and cost on one row, for every experiment your team has ever launched.

27 runs · acme workspace
RunBase modelMethodDatasetEval Δ vs baseCurveComputeStatus
support-agent-grpo-07Qwen/Qwen3-32BGRPOtickets-v4+17.4 pts165 GPU-htraining
claims-extract-dpo-04meta-llama/Llama-3.3-70B-InstructDPOclaims-v7+9.1 pts118 GPU-hdone
sql-copilot-grpo-12Qwen/Qwen3-8BGRPOsql-verifier-v2+21.8 pts39 GPU-hdone
icd10-coder-sft-03google/gemma-4-31B-itSFTnotes-deid-v5+14.2 pts23 GPU-hdone
brand-voice-kto-02zai-org/GLM-5.3-FlashKTOfeedback-q3+6.3 pts14 GPU-hdone
kb-embed-ft-02nvidia/Nemotron-3.5-Embed-1B-BF16SFTkb-pairs-v3+6.8 pts6 GPU-hdone
router-distill-01Qwen/Qwen3-8B ← deepseek-ai/DeepSeek-V4-FlashSFTrouter-tracesn/aqueuedest. 56 GPU-hqueued
14k+post-training runs launched on POFE last quarter
11×median inference cost cut after distilling to a tuned 8B
41 minmedian dataset-to-first-eval on managed GPUs
6 daysmedian first call to model in production, managed engagements

Training lives in the hours inference leaves idle.

On your own GPUs or reserved capacity, inference load follows your users' day. Post-training is batch work: preemptible, checkpointed every 15 minutes, happy to run at 03:00. Scheduled into the quiet hours, idle GPU-hours become models.

Yields to servingJobs give the GPU back within one checkpoint interval when traffic rises.
Per-pool policyPriority, region and GPU class set per pool and per project.
MeteredGPU-hours reported per project and per run, next to tokens served.
00:0004:0008:0012:0016:0020:0024:00gpu-node-01gpu-node-02gpu-node-03gpu-node-04gpu-node-05gpu-node-06gpu-node-07gpu-node-08gpu-node-09gpu-node-10
inference trafficPOFE training jobs (preemptible, checkpoint-resume)Illustrative 24h on a 10-node pool
GPU pool by hour: average inference load and nodes running POFE training
HourAverage inference loadNodes training
00:0013%10 of 10
01:0010%10 of 10
02:009%10 of 10
03:008%10 of 10
04:0015%10 of 10
05:0021%10 of 10
06:0027%10 of 10
07:0038%7 of 10
08:0050%0 of 10
09:0058%0 of 10
10:0067%0 of 10
11:0077%0 of 10
12:0085%0 of 10
13:0086%0 of 10
14:0090%0 of 10
15:0088%0 of 10
16:0084%0 of 10
17:0077%0 of 10
18:0070%0 of 10
19:0060%0 of 10
20:0049%1 of 10
21:0040%5 of 10
22:0029%10 of 10
23:0020%10 of 10

Click it, or script it. Then ship it.

The workspace and the SDK are the same system: researchers live in Python, product teams in the UI, and both see the same runs, evals and lineage. A gated run deploys to wherever you serve, and production feeds the next run.

Your datalogs, tickets, docsPost-trainingSFT · DPO · GRPOEval gatespaired CIs, calibrated judgesYour endpointany OpenAI-compatible serverProductiontokens, latency, feedback opt-in feedback from your own request logs becomes next month's training data
  1. Your datalogs, tickets, docs
  2. Post-trainingSFT · DPO · GRPO
  3. Eval gatespaired CIs, calibrated judges
  4. Your endpointany OpenAI-compatible server, or your inference provider
  5. Productiontokens, latency, feedback
  6. Back to trainingopt-in feedback from your own request logs
  • Recipes as code, checked into your repo, reproducible to the seed
  • Reward functions in plain Python, sandboxed and unit-tested
  • Attach a notebook to a live run and read rollouts mid-training
  • Diff any two runs: data, hyperparameters, scores, sample outputs
  • Deploy to a POFE endpoint, your own vLLM or SGLang servers, or your inference provider
import pofe

ws  = pofe.workspace("acme-support")
ds  = ws.datasets.get("tickets-v4").split(eval=0.05)

# reward: resolved, on-policy, no invented refunds
@pofe.reward
def resolution(sample, completion):
    r = ws.judges["resolution@v3"].score(sample, completion)
    if pofe.checks.mentions_refund(completion) and not sample.refund_ok:
        return -1.0
    return r

run = ws.train(
    base="Qwen/Qwen3-32B", method="grpo", adapter="lora:64",
    data=ds.train, rewards=[resolution], kl=0.05,
    compute=pofe.Compute(gpu="h100", count=8, max_price=2.60),
)
run.gate(ws.evals["release-v2"], must_beat="prod")

384 custom models. 1.2T tokens a month.

Month 24 for a team shipping custom models on open base models, at assumed market rates. The sliders are yours.

Custom models live
Tokens served per month
GPU-hours per month
Serving cost per month

Assumed market rates: serverless tokens by model class, dedicated at $3.00/H100-hour, training at $5.00/B200-hour. Not POFE prices. Method · Economics of custom models.

Scores you can defend in a review.

Fine-tuned models routinely look better than they are because the eval leaked or a judge agreed with itself. POFE tests the evals too.

  • Judge agreement with your human labels, per rubric, as Cohen's κ
  • Contamination scans between every training set and every eval
  • Paired confidence intervals, so a +0.4 point "win" is called noise
  • Release gates that block a deploy when any slice regresses

Research: how many eval items you actually need →

eval-health · release-v2412 human labels
rubricjudge κleak95% CIstatus
resolution0.810.0%±1.2trusted
policy-adherence0.860.0%±0.9trusted
tone0.470.0%±3.8recalibrate
kb-grounding0.796.4%±1.6contaminated
refusal-safety0.930.0%±0.3trusted
→ 312 kb-grounding items overlap the training set (13-gram). Excluded from gate.
→ tone judge disagrees with reviewers on sarcasm. Suggest 40 more labels.
A stack of paper insurance claim forms on an office desk beside a laptop

“We had three teams fine-tuning three different ways and no way to compare them. Six weeks after moving to POFE we retired our largest API contract, and the tuned model beats it on every slice we care about.”

VP of Machine Learning · Fortune 100 insurer
−72%inference spend on claims triage
0.94F1 on policy-clause extraction, up from 0.78
VPCruns inside their own account; no data egress
Fintech · support agent

A 32B model that knows when not to refund

GRPO with a refund-policy reward on 180k resolved tickets. Replaced a prompt-chained frontier model.

+19 pts resolution · −81% cost
Health · medical coding

ICD-10 coding that clinicians sign off

SFT on de-identified notes plus DPO from coder corrections, on Databricks next to the source data.

0.91 exact match
Legal · contract review

Clause extraction at a global law firm

Managed engagement: eval design, synthetic hard cases, and an 8B distilled model deployed on-prem.

4.1× faster review

Do it yourself, or have it done.

Same platform underneath. Start self-serve and call us for the hard part, or start managed and take the keys when your team is ready.

Self-serve

The platform

For engineers who know what they want to train. Bring a model and a JSONL, and press run.

  • StartPick a base model, upload a JSONL, press run
  • RunOn our GPUs, your cloud account or Databricks
  • OwnDownload the weights whenever you like

Request access →

Managed

The team

For organisations that need the outcome, not the tooling. Our research engineers own it end to end.

  • ScopeTarget metric agreed in week one
  • BuildEvals, data, training, distillation
  • Hand overModel, pipeline and runbook in your account

How engagements work →

Questions people ask first.

Something else? Ask an engineer and you'll get a technical answer, not a demo request.

What is post-training?

Post-training is everything that happens to a model after pre-training: supervised fine-tuning (SFT) on examples of the behaviour you want, preference optimization such as DPO, and reinforcement learning such as GRPO or PPO against reward models or verifiable checks. It is how a general open model becomes a specialist that follows your formats, policies and tone. Our complete guide covers it end to end.

Which models can I post-train on POFE?

More than 200 open-weight base and instruct models, from 8B-class models such as Qwen/Qwen3-8B and meta-llama/Llama-3.1-8B-Instruct to large mixture-of-experts models such as deepseek-ai/DeepSeek-V4-Pro, moonshotai/Kimi-K3 and zai-org/GLM-5.3, plus embedding, reranking and transcription models. Large MoE models are trained as LoRA adapters on multi-GPU nodes. You can also bring your own checkpoint from Hugging Face, S3, GCS, Azure Blob or a Unity Catalog volume.

Do I need my own GPUs?

No. POFE sources H100, H200 and B200 capacity across a network of clouds and neoclouds and schedules your run where it is cheapest and available. If you already have reserved capacity, a Kubernetes or Slurm cluster, or Databricks GPU compute, POFE runs there instead.

Does my data leave my environment?

Not if you don't want it to. In VPC and on-prem deployments the control plane only sees run metadata; datasets, checkpoints and logs stay in your buckets and your accounts.

More questions (3)
How is POFE different from a fine-tuning API?

A fine-tuning API gives you a job endpoint. POFE gives you the whole loop: data curation and synthesis, every major training method, eval suites with judge calibration, GPU sourcing, and inference deployment, all versioned together so you can see exactly which data and which run produced which score. And you can take the weights with you.

Where do trained models run?

Wherever you serve today: a POFE endpoint, your own vLLM or SGLang servers, or your inference provider through its OpenAI-compatible API and adapter upload. The weights are yours either way.

Can POFE do the post-training for us?

Yes. Managed post-training is a white-glove engagement where our research engineers own the outcome: they design the evals, build the data, run the experiments and hand you a model that clears agreed metrics, plus the full pipeline so your team can keep iterating.

Open the workspace. Train something.

The demo runs in your browser with sample data and takes about three minutes. When you're ready for your own data, an engineer will set up a private workspace with a baseline eval.