Prompt engineering got you halfway there. RAG filled in some knowledge gaps. But your model still isn’t behaving the way you need it to, not consistently and not at scale. If that sounds familiar, it might be time to fine-tune.
Snowflake’s Cortex Fine-Tuning became generally available in February 2025. It gives enterprise teams a fully managed path to customizing large language models using their own data, all within Snowflake’s security perimeter.
Here’s what you need to know.
What Is Cortex Fine-Tuning?
Cortex Fine-Tuning is a managed service that lets you adapt pre-trained LLMs to your specific tasks using Parameter-Efficient Fine-Tuning (PEFT). Rather than training a model from scratch, PEFT creates lightweight adaptors on top of existing models. That approach dramatically reduces cost while still delivering domain-specific performance gains.
Snowflake positions fine-tuning as the natural next step when prompt engineering and retrieval-augmented generation (RAG) aren’t cutting it. If you’re dealing with behavioral inconsistency, specialized terminology, or structured output requirements, fine-tuning is where you go next.
Supported Models
Cortex Fine-Tuning currently supports six base models:
| Model | Context Window |
| llama3-8b / llama3-70b | 8k |
| llama3.1-8b | 24k |
| llama3.1-70b | 8k |
| mistral-7b | 32k |
| mixtral-8x7b | 32k |
For most enterprise use cases like classification, summarization, and structured extraction, the smaller models offer a compelling price-to-performance ratio once fine-tuned. Mistral-7b inference runs at roughly $0.30 per million output tokens, compared to over $19 per million for frontier models like Claude Sonnet. That gap compounds quickly at scale.
Getting Started: The SQL API
Everything in Cortex Fine-Tuning is accessible via SQL, which means it slots naturally into existing Snowflake workflows. Kicking off a fine-tuning job is a single function call:
SELECT SNOWFLAKE.CORTEX.FINETUNE(
'CREATE',
'my_tuned_model',
'mistral-7b',
'SELECT prompt, completion FROM my_training_data',
'SELECT prompt, completion FROM my_validation_data'
);
Your training data needs to live in a Snowflake table or view, and the query must return two columns: prompt (the input) and completion (the desired response). If your table uses different column names, just alias them. Validation data is optional, and Snowflake will auto-split your training set if you leave it out.
If you prefer a no-code approach, Snowsight’s Cortex AI Studio has a point-and-click interface available under “Create Custom LLM.”
Managing Jobs and Running Inference
Fine-tuning jobs are asynchronous and long-running. Small datasets typically finish in 5 to 10 minutes, and larger ones take longer. You can monitor and manage jobs with the same FINETUNE function:
-- Check all jobs
SELECT SNOWFLAKE.CORTEX.FINETUNE('SHOW');
-- Inspect a specific job
SELECT SNOWFLAKE.CORTEX.FINETUNE('DESCRIBE', '');
DESCRIBE returns status, trained token counts, training loss, and validation loss. That gives you everything you need to evaluate whether the run converged properly.
Once the job completes, your model is saved to Snowflake’s Model Registry. Running inference is as simple as referencing your custom model name in the standard COMPLETE function:
SELECT SNOWFLAKE.CORTEX.COMPLETE('my_tuned_model', 'Your prompt here');
Enterprise Security and Governance
For regulated industries, Cortex Fine-Tuning checks the boxes that matter. Data never leaves Snowflake’s security perimeter during training. Full RBAC integration means model access is governed by the same roles and privileges as the rest of your data. Nothing from your fine-tuning process is used to train models shared with other customers.
Fine-tuned models can also be distributed across your organization or to partner accounts via Snowflake Data Sharing.
One important operational note is that cross-region inference is not supported for fine-tuned models. Inference must happen in the same region where the model object lives. If you need multi-region deployment, use database replication to copy the model to your target region.
When Fine-Tuning Makes Sense
| Approach | Best For | Time to Deploy |
| Prompt Engineering | Formatting and communication issues | Hours |
| RAG | Knowledge gaps, real-time data | Days–Weeks |
| Fine-Tuning | Behavioral consistency at scale | Longer setup, lower long-run cost |
Fine-tuning carries higher upfront investment but pays off when you need consistent behavior across thousands or millions of inferences. Common enterprise applications include support ticket classification, customer email automation, medical complaint routing, and domain-specific Q&A.
One particularly powerful pattern is using a large frontier model like llama3.1-405b to generate synthetic training data, then fine-tuning a smaller and cheaper model on that output. You get the reasoning power of a large model baked into the economics of a small one.
The Bottom Line
Snowflake Cortex Fine-Tuning lowers the barrier to custom LLMs for enterprise teams already operating in the Snowflake ecosystem. You get managed infrastructure, familiar SQL tooling, enterprise-grade security, and meaningful cost savings at inference time, all without standing up a single GPU.
If you’ve hit the ceiling on what prompt engineering and RAG can do for your use case, it’s worth a serious look.

