Fine-tuning is the most expensive and least correctly used tool on Bedrock. Before training a custom model, there are two cheaper alternatives that should almost always be tried first.
Amazon Bedrock lets you customize base models via two mechanisms: supervised fine-tuning (training the model on prompt-response pairs specific to your domain) and continued pre-training (additional unsupervised training on your own text corpus, without labeled pairs, so the model absorbs a specific domain's vocabulary and patterns). Both produce a "custom model" -- a derived version of the base model that only your account can use, and which requires Provisioned Throughput to serve at inference; it's not available in on-demand mode.
That last restriction is what surprises teams most: a fine-tuned model on Bedrock implies a reserved capacity commitment -- with its fixed monthly cost -- even if actual traffic volume is low, which completely changes the calculation of when it's worth it versus RAG or prompt engineering.
Before investing in fine-tuning, two alternatives solve most cases at lower cost and complexity. Prompt engineering with few-shot examples -- including representative examples directly in the prompt -- solves consistent format and style tasks with no training at all. RAG via Knowledge Bases solves the "the model doesn't know my data" problem by injecting relevant context at query time, with no need to retrain anything when the data changes.
Fine-tuning only adds real incremental value over these two alternatives when the problem isn't factual knowledge (RAG solves that) but behavior: the model needs to adopt a very specific and consistent response style at scale, follow a structured output format with a near-zero error rate, or reason over a domain with terminology so specialized that neither prompt engineering nor RAG context achieves acceptable precision.
The flow starts with preparing the dataset in JSONL format, with prompt-completion pairs following the schema expected by the chosen base model (not every model on Bedrock supports fine-tuning -- availability varies by provider and version). The dataset is uploaded to S3, and a customization job is launched specifying hyperparameters like number of epochs, learning rate, and batch size.
Once the job finishes, the resulting model appears as a `custom-model` in your account, and to invoke it for inference you must first provision Provisioned Throughput for that specific model -- it can't be invoked in on-demand mode.
Continued pre-training makes sense when the goal isn't to teach the model to respond in a specific way, but to "understand better" a dense-vocabulary domain -- for example, specialized medical terminology, a specific country's legal jargon, or an industry's internal technical language (mining, agricultural insurance). It doesn't require labeled pairs, just a representative corpus of domain text, which significantly cuts data-prep cost versus supervised fine-tuning, though the training process itself may need more volume of text to be effective.
Fine-tuning's cost has two components that are frequently underestimated: the training job's own cost (billed per hour of training compute), and the recurring cost of the Provisioned Throughput needed to serve the resulting model in production -- a monthly commitment that doesn't go away if traffic drops. For fine-tuning to be economically rational, projected inference volume needs to be high and stable enough that the reserved capacity's cost is favorably diluted against the per-token cost you'd pay using the base model with RAG and optimized prompt engineering.
Real cases where fine-tuning on Bedrock justifies its cost include: high-volume classification with a very specific output schema, where reducing latency and per-invocation token consumption -- by not needing a long instruction prompt -- offsets the fixed cost of Provisioned Throughput; content generation with an extremely consistent brand voice at scale (thousands of daily generations) where prompt engineering shows drift; and highly specialized domains where neither the base model nor RAG achieves the required terminological precision, typically verified first with Bedrock Model Evaluation before committing to training.
The recommended sequence for any team evaluating fine-tuning is: first, optimize the prompt with few-shot examples and measure the resulting quality; second, if the problem is factual knowledge, implement RAG with Knowledge Bases and measure again; third, only if a quality gap persists after exhausting both alternatives, and projected traffic volume justifies Provisioned Throughput's fixed cost, proceed with fine-tuning. Skipping the first two steps is the most common reason cloud fine-tuning projects end up costing more than they deliver.
Carlos Montiel is an enterprise AI solutions architect. He implements LLMs, Agents, RAG, and orchestrators for companies across Guatemala and Latin America. Reach out for a consultation.
Contact Carlos Montiel