Skip to main content
Use um job do Compute quando precisar de GPUs para uma carga de trabalho finita, como ajuste fino. Você traz uma imagem de contêiner comum e um comando; o Compute aloca capacidade de GPU, executa a carga de trabalho até a conclusão, transmite logs duráveis e desaloca o hardware automaticamente. O Compute não tem esquema de ajuste fino. Um job é uma execução genérica de contêiner, então este guia faz o ajuste fino com ms-swift puramente como payload da carga de trabalho — qualquer stack de treinamento funciona da mesma forma.
Este guia aluga GPUs e executa seu próprio contêiner de treinamento. Para a API gerenciada de ajuste fino, que treina modelos da plataforma a partir de arquivos JSONL enviados, veja Ajuste fino de um modelo.

Antes de começar

Você precisa de: Os jobs passam por requestedallocatingprovisioningrunningfinalizing e então chegam a um estado terminal:
  • Uma carga de trabalho que sai com 0 termina como succeeded; uma falha em qualquer fase termina como failed.
  • Encerramento explícito, um limite atingido ou um orçamento da organização esgotado move o job por terminating até terminated.
A cobrança começa na alocação, não na prontidão.Os gastos acumulam a partir do momento em que o hardware é alocado, então o tempo de provisionamento e as inicializações que falham custam dinheiro. Defina limits.max_runtime_hours e limits.max_cost_usd em todo job; um job que atinge um limite é encerrado e desalocado imediatamente.

Passo 1 - Escolha um acelerador

Liste o catálogo curado de aceleradores e escolha um pelo seu name estável.
Cada entrada descreve o hardware, as quantidades de GPU que você pode solicitar e as interconexões que ele suporta:

Passo 2 - Verifique preço e disponibilidade

Opcionalmente, solicite uma cotação antes de criar qualquer coisa. Uma cotação é uma observação do mercado em tempo real: ela retorna se a configuração pode ser obtida no momento e a faixa de preço por hora, e não reserva nada.
Uma configuração indisponível ainda é uma resposta 200, com available: false e limites de preço nulos.

Passo 3 - Crie o job

Crie o job com um cabeçalho Idempotency-Key obrigatório. Repetir com a mesma chave e o mesmo corpo retorna o mesmo job com 200 em vez de criar uma duplicata; a mesma chave com um corpo diferente retorna 409 idempotency_conflict. Este exemplo executa um pequeno ajuste fino LoRA do Qwen2.5-0.5B-Instruct e mescla o adapter, reproduzindo o smoke test da plataforma:
Notas sobre os campos: A resposta é 201 com o job persistido no estado requested:
A criação bem-sucedida significa que a requisição foi aceita, não que exista capacidade. Esgotamento de capacidade, erros do provedor e falhas de bootstrap aparecem depois através de state, reason, logs e eventos — nunca como um erro HTTP em uma criação que já retornou 201.

Passo 4 - Consulte até a conclusão

Durante a execução, o job reporta o hardware que realmente obteve, o preço por hora capturado na alocação, os gastos até o momento e um comando SSH pronto para uso, se você forneceu uma chave:
Quando a carga de trabalho sai com 0, o job passa por finalizing até succeeded, o exit_code é registrado, o recurso do provedor é desalocado automaticamente e os gastos param de acumular. Uma saída diferente de zero termina em failed com um reason explicando o motivo. Jobs em estado terminal permanecem legíveis para auditoria e uso.

Passo 5 - Leia logs e eventos

Os logs são duráveis e paginados por cursor, e distinguem a saída da sua carga de trabalho da saída do sistema.
Use source=system para a saída de alocação e bootstrap, e order=asc (o padrão) para paginar do mais antigo para o mais recente. Transições de ciclo de vida como provider_allocated, workload_started e workload_exited também estão disponíveis como eventos estruturados:

Passo 6 - Interrompa um job antecipadamente

O encerramento é explícito, idempotente e retorna o recurso atual.
Não há DELETE: o registro é retido para auditoria, uso e reconciliação. Um job que atinge limits.max_runtime_hours, limits.max_cost_usd ou um orçamento da organização é encerrado da mesma forma, sem período de carência e sem garantia de resultados parciais, então publique os artefatos de dentro da carga de trabalho antes que ela termine.

Use o mka1-repos para datasets e pesos

O Compute não armazena artefatos de carga de trabalho. O caminho recomendado é o mka1-repos, o serviço de repositórios da plataforma compatível com Hugging Face para modelos e datasets: seu job baixa o dataset dele e publica os pesos mesclados de volta nele, tudo de dentro da carga de trabalho. Duas convenções da plataforma fazem isso funcionar:
  1. O Compute sempre injeta HF_ENDPOINT em toda carga de trabalho, apontando para o endpoint de artefatos configurado para o seu cluster. Ferramentas compatíveis com Hugging Face — huggingface_hub, ms-swift com USE_HF=1, vLLM — resolvem identificadores <org>/<name> contra ele, então as cargas de trabalho alcançam o mka1-repos sem nenhuma mudança de código. Você não pode sobrescrever HF_ENDPOINT por conta própria.
  2. O mka1-repos autentica com sua chave de API MKA1. Armazene a chave como um segredo do Compute e injete-a como HF_TOKEN através de secret_env, para que ela nunca apareça inline na especificação do job.
Crie o segredo uma única vez:
Os valores de segredos são somente escrita; a resposta retorna apenas o id e os nomes das chaves:
Depois escreva a carga de trabalho como um script que treina a partir do seu repositório de dataset e publica os pesos mesclados:
train-and-publish.sh
Codifique-o com base64 < train-and-publish.sh e referencie o segredo no corpo de criação:
Quando o job é concluído com sucesso, os pesos mesclados ficam disponíveis para download em acme/qwen2.5-0.5b-support por qualquer pessoa da sua organização, e um serviço do Compute pode servi-los diretamente — veja Implantar um servidor de modelos.
Um encerramento no meio da execução destrói qualquer trabalho ainda não publicado. Publicar de dentro da carga de trabalho, como acima, é o mecanismo de checkpoint suportado nesta versão.

Acompanhe os gastos

Toda resposta de job carrega accrued_usd, e o endpoint de uso agrega os gastos entre recursos para uma janela de tempo:
A cobrança é medida em minutos inteiros por recurso, e os gastos do Compute saem dos mesmos orçamentos da organização que qualquer outro serviço MKA1.

Referência da API

Para o esquema completo de requisição e resposta, abra os grupos do Compute na Referência de API.

Veja também