Note: when a corporate assistant based on LLM generates general reasoning instead of rule-based responses, that's a typical base-model problem. You give the instruction "Write a reply to the client using the CRM template," and it produces abstract text. To turn a general model into an assistant that understands company context, you need instruction tuning (also called instruction-based fine-tuning). This method tunes the model to corporate language and standards, guaranteeing predictable responses. The approach is 2–3 times more effective than traditional fine-tuning for tasks requiring adherence to complex textual instructions. Tuning a language model for a specific domain is a key task in RAG and MLOps projects.
How Base LLM Differs from Instruct?
A Base LLM (e.g., Llama 3.1 8B) simply continues text. Give it a beginning—it will continue, but not respond as an assistant. An Instruct LLM (Llama 3.1 8B Instruct or Mistral Instruct 7B) follows instructions: answers, analyzes, refuses unwanted content. When fine-tuning a corporate model, we typically take a ready Instruct version (Llama Instruct, Mistral Instruct) and adapt it to the domain. But sometimes full Instruction Tuning from scratch is required—for example, when working with a base model or overriding behavior.
What Data Formats Are Used for Instruction Tuning?
| Format | Description | Use Case |
|---|---|---|
| Alpaca (JSON) | Simple instruction-input-output pair | Quick experiments, small LLM datasets |
| ShareGPT (JSON) | Multi-turn dialogue with alternating roles | Chatbots, context-dependent scenarios |
| Chat Template | Roles system/user/assistant, integrated into tokenizer | Modern models, production |
{
"instruction": "Translate the text from English to Russian",
"input": "The contract must be signed before the deadline",
"output": "Договор должен быть подписан до истечения срока"
}
{
"conversations": [
{"from": "human", "value": "Analyze the company's balance sheet"},
{"from": "gpt", "value": "To analyze the balance sheet, the following indicators are needed..."},
{"from": "human", "value": "How to interpret the asset ratio?"},
{"from": "gpt", "value": "The ratio of current to long-term assets indicates..."}
]
}
messages = [
{"role": "system", "content": "You are a financial analysis assistant"},
{"role": "user", "content": "Calculate ROE"},
{"role": "assistant", "content": "ROE = Net Profit / Shareholders' Equity × 100%..."},
]
formatted = tokenizer.apply_chat_template(messages, tokenize=False, add_generation_prompt=True)
How Much Data Is Needed?
The LIMA study showed that 1,000 quality examples perform as well as 52,000 ordinary ones. Quality trumps quantity. Benchmarks for specialized instruction fine-tuning:
| Task | Minimum Volume | Optimal Volume |
|---|---|---|
| Style specialization | 100–300 | 500–1000 |
| New domain (medium complexity) | 500–1000 | 2000–5000 |
| Complex technical domain | 1000–2000 | 5000–15000 |
| Changing base behavior | 2000–5000 | 10000–50000 |
Why Is Instruction Tuning Critical for Enterprise AI?
A corporate assistant must not just answer, but comply with regulations, corporate tone, and terminology. Without instruction-based fine-tuning, the model may generate stylistically incorrect responses or disclose confidential information. We fine-tuned Llama 3.1 8B on 1,800 examples of internal communications from an IT company. Results: adherence to corporate tone increased from 2.9 to 4.4 (by LLM-judge), domain terminology accuracy from 61% to 87%, correct refusals from 34% to 89%, and false refusals dropped from 8% to 2%. We included negative examples—queries the model should refuse (competitors, personal data). Our clients report 3x improvement in response accuracy compared to base models, with 70% faster training convergence. Typical project cost ranges from $10,000 to $50,000 depending on dataset size and model complexity, but companies often see a 3x reduction in customer support resolution time after tuning, saving $100,000 annually.
Example training configuration
from trl import SFTTrainer, SFTConfig
from peft import LoraConfig
trainer = SFTTrainer(
model=model,
args=SFTConfig(
output_dir="./corporate-instruct",
num_train_epochs=4,
learning_rate=2e-4,
per_device_train_batch_size=4,
gradient_accumulation_steps=4,
max_seq_length=2048,
bf16=True,
dataset_text_field="text",
),
train_dataset=formatted_dataset,
peft_config=LoraConfig(r=16, lora_alpha=32, target_modules=["q_proj","v_proj"]),
)
Important: during instruction tuning we mask the instruction part when computing loss (loss is computed only on response tokens). In TRL, this is controlled via DataCollatorForCompletionOnlyLM.
How to Build a Quality Dataset?
- Define goals: what style and tone are needed, what topics to cover.
- Collect corporate documents: internal communications, regulations, FAQ.
- Generate instructions: use LLM to create examples based on documents.
- Verify quality: remove inconsistencies, fix errors.
- Format the dataset: choose Alpaca, ShareGPT, or Chat Template.
Example of generating instructions via LLM:
def document_to_instructions(doc_text: str, llm_client) -> list:
response = llm_client.chat.completions.create(
model="gpt-4o",
messages=[{
"role": "user",
"content": f"""From the following document, create 10 training examples for an LLM.
Each example: {{"instruction": "task", "output": "correct answer based on the document"}}.
Diversify task types: questions, summarization, analysis, comparison.
Document:
{doc_text[:3000]}
Return a JSON array of examples."""
}],
)
return json.loads(response.choices[0].message.content)
Work Process
| Stage | Duration | Result |
|---|---|---|
| Analysis and goal setting | 1–2 weeks | Technical specification for dataset, model selection |
| Source collection and preparation | 1–2 weeks | Raw documents, annotated examples |
| Dataset generation and verification | 2–3 weeks | Final dataset in required format |
| Fine-tuning with iterations | 1–2 weeks | Metrics, checkpoints |
| Evaluation and deployment | 1 week | Exported model, documentation |
Timelines and Cost
- Dataset design and source collection: 2–3 weeks
- Example generation and verification: 2–4 weeks
- Training and iterations: 1–2 weeks
- Total: from 5 to 9 weeks
Cost is calculated individually based on dataset size, model size, and required iterations. Contact us for a detailed commercial plan.
Deliverables
- Dataset creation: generation scripts, verification, annotation
- Training code using modern stack (TRL, Transformers, PEFT)
- Export of the trained model in required format (GGUF, ONNX, SafeTensors)
- Documentation on architecture, configs, and metrics
- Access to private repository with code and dataset
- API integration examples and deployment guide
- 30 days support after delivery
Common Mistakes in Instruction Tuning
- Unclean data: responses with errors, inconsistent style
- Ignoring loss masking on the prompt—the model learns to memorize the instruction instead of answering
- Too small learning rate (1e-4–5e-5 is optimal for LoRA)
- Insufficient instruction diversity—the model overfits to a narrow pattern
Instruction tuning is the method that turns a general LLM into an assistant speaking your company's language. Our experience: 5+ years in NLP and CV, 50+ projects fine-tuning LLMs for corporate clients. Contact us to discuss your project. Get a consultation on Instruction Tuning setup.







