Supervised fine-tuning
Train on your own conversations. The model learns only from the assistant’s side of each one.
- Chat-formatted examples
- Loss on the assistant’s turns only
Your model, trained on your data
Sharq Engine fine-tunes open models
on your records and serves the result,
on your GPUs or ours in-region.
The console your team works in: a dataset, a base model, a run you can watch, and a model you serve.
Open the consoleTry it. Point along the line, pick an eval, pause the run, change the base model and start another, then deploy it.
Illustrative run, computed in your browserFour steps, all of them on the machines you choose. Nothing is sent away to be trained.
Your infrastructure
Pick an open model that suits the task and the hardware you have.
A LoRA adapter learns your terms and your decisions. The base model is left as it is.
Sample from any checkpoint against your own test cases before anyone relies on it.
The weights you approved become a private endpoint, in the same place they were trained.
Your engineers drive training from Python, through an API compatible with the Tinker SDK. The loop is theirs; the GPUs, the adapters and the serving are the engine’s.
import os
import tinker
from tinker import types
client = tinker.ServiceClient(
base_url="https://engine.your-org.internal",
api_key=os.environ["SHARQ_API_KEY"], # your own key
)
# A LoRA adapter on an open base model the engine serves
models = client.get_server_capabilities().supported_models
training = client.create_lora_training_client(
base_model=models[0].model_name, rank=16,
)
for batch in batches: # your prepared examples
training.forward_backward(batch, "cross_entropy").result()
training.optim_step(types.AdamParams(learning_rate=1e-4)).result()
# The weights you trained become the model you serve
weights = training.save_weights_for_sampler("claims-assistant-v1").result()
assistant = client.create_sampling_client(model_path=weights.path)Different problems need different training. The engine does the common ones through the same API.
Train on your own conversations. The model learns only from the assistant’s side of each one.
For work where an answer can be checked automatically, the model is rewarded for getting it right.
Teach a smaller, cheaper model to behave like a larger one, on the smaller model’s own answers.
Bring your own loss when the standard one does not fit, such as preference training mixed with likelihood.
Train on your own conversations. The model learns only from the assistant’s side of each one.
For work where an answer can be checked automatically, the model is rewarded for getting it right.
Teach a smaller, cheaper model to behave like a larger one, on the smaller model’s own answers.
Bring your own loss when the standard one does not fit, such as preference training mixed with likelihood.
Keep training next to the data it learns from. One file says which models the engine serves.
Your GPUs
# sharq_config.yaml
supported_models:
- model_name: Qwen/Qwen3-8B
model_path: /data/Qwen3-8B
$ sharq launch --port 10610 \
--config sharq_config.yamlAnything missing, ask us directly. We reply within one business day.
No. The engine adapts open base models with LoRA, which takes a fraction of the compute and keeps the base model’s general ability.
If it speaks the Tinker SDK, mostly yes: point the client at your engine and use your own key.
Only your people. Data, checkpoints and the finished model stay on the infrastructure you choose.
Yes. It is built for many users on shared GPUs: each developer has their own key, and one base model carries many adapters at once.
Yes. The weights saved from a run are what the engine serves, through the same API, so a served model can always be traced to the run that made it.
A pilot trains one model on your own data, inside your boundary, and measures it against the numbers you already report.