Start a family
Start a new family with its first fine-tune, from a base or one of your models
(from), on a dataset. Its model joins the family as family@1 if it passes its gate.
curl --request POST \
--url https://console.sqwish.ai/v1/fine-tuning/jobs \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"dataset_id": "<string>",
"family": "<string>",
"from": "sqwish-d1-core",
"method": "sft",
"hyperparameters": {
"steps": 1000,
"learning_rate": 0.00005,
"lora_rank": 8,
"seed": 42,
"checkpoint_every": 10,
"kl_coefficient": 0.05
},
"max_price_usd": "<string>"
}
'import requests
url = "https://console.sqwish.ai/v1/fine-tuning/jobs"
payload = {
"dataset_id": "<string>",
"family": "<string>",
"from": "sqwish-d1-core",
"method": "sft",
"hyperparameters": {
"steps": 1000,
"learning_rate": 0.00005,
"lora_rank": 8,
"seed": 42,
"checkpoint_every": 10,
"kl_coefficient": 0.05
},
"max_price_usd": "<string>"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
dataset_id: '<string>',
family: '<string>',
from: 'sqwish-d1-core',
method: 'sft',
hyperparameters: {
steps: 1000,
learning_rate: 0.00005,
lora_rank: 8,
seed: 42,
checkpoint_every: 10,
kl_coefficient: 0.05
},
max_price_usd: '<string>'
})
};
fetch('https://console.sqwish.ai/v1/fine-tuning/jobs', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"id": "<string>",
"dataset_id": "<string>",
"model": "<string>",
"method": "sft",
"hyperparameters": {
"steps": 123,
"learning_rate": 123,
"lora_rank": 123,
"seed": 123,
"checkpoint_every": 123,
"kl_coefficient": 123,
"gradient_accumulation": 123,
"max_prompt_tokens": 123
},
"family": "<string>",
"family_deleted": true,
"parent": "<string>",
"dataset_version": 123,
"status": "queued",
"outcome": "joined",
"created_at": 123,
"updated_at": 123,
"attempts": 123,
"output_model": "<string>",
"metrics": {},
"error": "<string>",
"progress": {},
"limits": {},
"split": {},
"lineage": {},
"price_usd": "<string>",
"charge": "free",
"dataset_evaluation": {
"id": "<string>",
"dataset_id": "<string>",
"dataset_version": 123,
"model_id": "<string>",
"model_sha256": "<string>",
"model_label": "<string>",
"model_name": "<string>",
"version": 123,
"status": "queued",
"created_at": 123,
"updated_at": 123,
"generation": 123,
"training_job_id": "<string>",
"dataset_sha256": "<string>",
"evaluation_sha256": "<string>",
"method": "sft",
"evaluation_rows": 123,
"decisions": 123,
"completed_rows": 123,
"metrics": {},
"error": {},
"named": "<string>"
},
"curve": [
{
"step": 123,
"loss": 123,
"grad_norm": 123,
"learning_rate": 123
}
],
"rows_deleted": true
}{
"error": {
"code": "<string>",
"message": "<string>",
"retryable": true,
"request_id": "<string>",
"details": [
{
"path": [
"<string>"
],
"message": "<string>",
"type": "<string>"
}
]
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"retryable": true,
"request_id": "<string>",
"details": [
{
"path": [
"<string>"
],
"message": "<string>",
"type": "<string>"
}
]
}
}Authorizations
Create an API key in the console. Required when accounts are enabled.
Headers
Body
A new family's first fine-tune, from a base or one of your models.
^ds_[a-f0-9]{24}$The new family's name: lowercase letters and digits, with single hyphens between them, 2 to 63 characters. A name already taken is refused with family_exists.
63^[a-z](?:-?[a-z0-9]){1,62}$Where the family starts: a base model that can be fine-tuned, or one of your models as family@N, which it trains from on that model's base. Left out, Core.
1 - 140sft, reward Show child attributes
Show child attributes
The most you agree to pay for this job, in USD, such as the price you were shown. If it costs more when it is admitted, it is refused with price_changed and nothing is held.
^\d{1,9}(\.\d{1,9})?$Response
Successful Response
sft, reward Show child attributes
Show child attributes
The family the job adds a model to.
True once you deleted that family. The job and its charge stay.
The id of the model it trains from, or null from a base.
The version of its dataset it trains on.
queued, running, cancelling, succeeded, failed, cancelled How it ended for its family: its model joined the family with the next number, or failed its gate and is not kept for you, or the run failed or was cancelled, or a rollback discarded the model that joined. Only a failed run or a cancellation is free and leaves the data for another try. Null while it runs.
joined, gate_failed, failed, cancelled, rolled_back Evaluation groups and the gate, when complete.
Show child attributes
Show child attributes
Show child attributes
Show child attributes
The fee held for this job, as exact USD.
What the fee is doing: held while the job runs, charged if it succeeds, released if it fails or is cancelled.
free, reserved, charged, released Show child attributes
Show child attributes
The training loss over steps, at most 300 points, each the means of a run of consecutive steps. Null until the job succeeds, or when its trainer kept none. Lists of jobs leave it out.
Show child attributes
Show child attributes
True once a dataset whose rows its specification held was deleted: the job, its model and its metrics stay, but its held-out records are gone.
curl --request POST \
--url https://console.sqwish.ai/v1/fine-tuning/jobs \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"dataset_id": "<string>",
"family": "<string>",
"from": "sqwish-d1-core",
"method": "sft",
"hyperparameters": {
"steps": 1000,
"learning_rate": 0.00005,
"lora_rank": 8,
"seed": 42,
"checkpoint_every": 10,
"kl_coefficient": 0.05
},
"max_price_usd": "<string>"
}
'import requests
url = "https://console.sqwish.ai/v1/fine-tuning/jobs"
payload = {
"dataset_id": "<string>",
"family": "<string>",
"from": "sqwish-d1-core",
"method": "sft",
"hyperparameters": {
"steps": 1000,
"learning_rate": 0.00005,
"lora_rank": 8,
"seed": 42,
"checkpoint_every": 10,
"kl_coefficient": 0.05
},
"max_price_usd": "<string>"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
dataset_id: '<string>',
family: '<string>',
from: 'sqwish-d1-core',
method: 'sft',
hyperparameters: {
steps: 1000,
learning_rate: 0.00005,
lora_rank: 8,
seed: 42,
checkpoint_every: 10,
kl_coefficient: 0.05
},
max_price_usd: '<string>'
})
};
fetch('https://console.sqwish.ai/v1/fine-tuning/jobs', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"id": "<string>",
"dataset_id": "<string>",
"model": "<string>",
"method": "sft",
"hyperparameters": {
"steps": 123,
"learning_rate": 123,
"lora_rank": 123,
"seed": 123,
"checkpoint_every": 123,
"kl_coefficient": 123,
"gradient_accumulation": 123,
"max_prompt_tokens": 123
},
"family": "<string>",
"family_deleted": true,
"parent": "<string>",
"dataset_version": 123,
"status": "queued",
"outcome": "joined",
"created_at": 123,
"updated_at": 123,
"attempts": 123,
"output_model": "<string>",
"metrics": {},
"error": "<string>",
"progress": {},
"limits": {},
"split": {},
"lineage": {},
"price_usd": "<string>",
"charge": "free",
"dataset_evaluation": {
"id": "<string>",
"dataset_id": "<string>",
"dataset_version": 123,
"model_id": "<string>",
"model_sha256": "<string>",
"model_label": "<string>",
"model_name": "<string>",
"version": 123,
"status": "queued",
"created_at": 123,
"updated_at": 123,
"generation": 123,
"training_job_id": "<string>",
"dataset_sha256": "<string>",
"evaluation_sha256": "<string>",
"method": "sft",
"evaluation_rows": 123,
"decisions": 123,
"completed_rows": 123,
"metrics": {},
"error": {},
"named": "<string>"
},
"curve": [
{
"step": 123,
"loss": 123,
"grad_norm": 123,
"learning_rate": 123
}
],
"rows_deleted": true
}{
"error": {
"code": "<string>",
"message": "<string>",
"retryable": true,
"request_id": "<string>",
"details": [
{
"path": [
"<string>"
],
"message": "<string>",
"type": "<string>"
}
]
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"retryable": true,
"request_id": "<string>",
"details": [
{
"path": [
"<string>"
],
"message": "<string>",
"type": "<string>"
}
]
}
}