Se você não tiver poder de computação suficiente, utilize o recurso de jobs preemptíveis do Platform for AI (PAI), que aloca recursos de computação por meio de um sistema de lances. Na maioria dos casos, os recursos preemptíveis oferecem vantagem de preço em relação aos recursos públicos com pagamento conforme o uso. Isso permite acesso econômico ao poder de computação de IA e reduz o custo total dos jobs. Este tópico descreve como usar recursos preemptíveis ao criar um job do Deep Learning Containers (DLC).
Limites
Os recursos preemptíveis apresentam os seguintes limites:
|
Tipo |
Recursos Lingjun |
Recursos de computação de uso geral |
|
Regiões suportadas |
|
|
|
Tipo de framework |
|
PyTorch |
|
Tolerância a falhas automática baseada em AIMaster |
Suportado |
Não suportado |
|
Limites de recursos |
|
|
Recursos
-
Uso de recursos preemptíveis
Use recursos de computação de uso geral ou recursos Lingjun para criar jobs do DLC. Os preços de mercado dos recursos preemptíveis variam conforme a oferta e a demanda. Instâncias preemptíveis podem custar até 90% menos que instâncias com pagamento conforme o uso. Como todos os usuários da Alibaba Cloud podem preemptar esses recursos, eles são liberados quando seus períodos de proteção terminam. Ao enviar jobs do DLC com recursos preemptíveis, observe as seguintes considerações:
Quando o DLC não consegue obter instâncias preemptíveis devido à insuficiência de recursos, os jobs preemptíveis entram em estado de espera e o DLC continua solicitando recursos preemptíveis.
Após o sistema solicitar recursos preemptíveis, os jobs do DLC são criados e executados.
Depois que os recursos preemptíveis são liberados, os jobs do DLC falham e param de executar.
-
Solicitação de recursos preemptíveis
Ao usar recursos preemptíveis para criar jobs do DLC, o sistema começa a disputar recursos de instância após o envio dos jobs. Para criar instâncias preemptíveis, atenda aos seguintes requisitos:
O preço máximo de lance configurado para recursos preemptíveis deve ser maior ou igual ao preço de mercado.
Deve haver estoque suficiente de recursos preemptíveis.
-
Liberação de recursos preemptíveis
Recursos preemptíveis podem ser interrompidos e liberados com base no preço de mercado, no estoque de recursos, no preço máximo de lance configurado para uma instância durante a criação do job e na duração do uso. Nos cenários a seguir, os recursos preemptíveis podem ser liberados sem notificação prévia:
Recursos Lingjun: se o preço máximo de lance de um recurso preemptível for inferior ao preço médio ou se o estoque do recurso for insuficiente, o recurso será liberado.
Recursos de computação de uso geral: se o preço máximo de lance de um recurso preemptível for inferior ao preço de mercado atual ou se o estoque do recurso preemptível for insuficiente, o recurso será liberado.
Para garantir que seus jobs preemptíveis executem de forma contínua e estável, realize as seguintes operações:
Ative a Tolerância a Falhas Automática ao criar um job usando recursos Lingjun. Após ativar essa opção, seu job entra automaticamente na fila para disputar recursos preemptíveis. Para mais informações, consulte AIMaster: An elastic and automatic fault tolerance engine.
Ao usar recursos de computação de uso geral ou Lingjun para criar um job, utilize o framework EasyCkpt para treinar um modelo de linguagem grande (LLM) PyTorch. O job pode realizar e salvar checkpoints frequentemente, permitindo interrupções. Para mais informações, consulte EasyCkpt.
Faturamento
-
Preços
O modo de lance de jobs preemptíveis configura o preço máximo de lance especificado pelo parâmetro SpotWithPriceLimit. Em cenários onde jobs do DLC são criados com recursos preemptíveis, os preços de mercado flutuam conforme a oferta e a demanda. Se você usar os mesmos recursos preemptíveis para enviar vários jobs do DLC, as taxas dos jobs em um período fixo podem ser iguais. Os seguintes tipos de lance são suportados.
NotaRecursos Lingjun suportam apenas o tipo de lance com desconto spot.
Preço de lance baseado no tipo de desconto spot: o preço máximo de lance baseia-se no preço de mercado do tipo de instância e varia de 10% a 90% do preço de mercado, com intervalos de 10%.
Preço de lance baseado no tipo de preço spot: o preço máximo de lance está dentro da faixa de preço de mercado.
Na seção Resource Information da página Create Job no DLC, defina Source como Preemptible Resources e visualize os recursos preemptíveis e as faixas de preço de mercado na seção Job Resource.
NotaPara preços específicos das especificações de recursos, consulte o console.
-
Recursos de computação de uso geral
Para usar recursos de computação de uso geral, na seção Resource Information, defina Resource Type como General Computing e Source como Preemptible Resources, e selecione PyTorch para Framework. Na tabela Job Resource, configure os seguintes parâmetros para nós Worker: contagem de nós, Resource Specification, faixa de preço de mercado e Bid Price (Discount).
-
Recursos Lingjun
Na seção Resource Information da página Create Job, configure as seguintes definições:
Resource Type: Selecione Lingjun AI Computing Service.
Source: Selecione Preemptible Resources.
Framework: Selecione PyTorch.
Job Resource: Configure a contagem de nós, Resource Specification, faixa de preço de mercado e Bid Price (Discount) para nós Worker.
-
Modo de faturamento
A cobrança de recursos preemptíveis segue o método de pagamento conforme o uso, baseada no preço de mercado vigente.
-
Visualização de faturas
Após executar um job, acesse a página Billing Details em Expenses and Costs no dia seguinte para visualizar os detalhes de faturamento do job que utilizou recursos preemptíveis. As taxas de pagamento conforme o uso são geradas pelo DLC. A tag da instância é
key:acs:pai:dlc:payType value:spot. Para mais informações sobre como visualizar detalhes de faturamento, consulte View PAI billing details. -
Cenários suportados
Para reduzir custos, recomendamos o uso de recursos preemptíveis nos seguintes cenários:
Jobs de computação de curta duração.
Jobs de computação em fase de depuração.
Jobs de computação tolerantes a falhas.
Jobs de computação que permitem interrupção. Por exemplo, em cenários onde o framework EasyCkpt é usado para treinar um LLM PyTorch, é possível salvar checkpoints frequentemente e restaurar dados a partir deles. Para mais informações, consulte EasyCkpt.
-
Cenários não suportados
Serviços que exigem alta estabilidade.
-
Acesse a página Create Job.
Faça login no PAI console. Selecione uma região e um workspace. Em seguida, clique em Enter Deep Learning Containers (DLC).
Na página Deep Learning Containers (DLC), clique em Create Job.
-
Na página Create Job, configure os parâmetros descritos na tabela a seguir. Para informações sobre outros parâmetros, consulte Create a training job.
Parâmetro
Descrição
Resource Information
Resource Type
Selecione Lingjun AI Computing Service ou General Computing.
NotaEste parâmetro está disponível apenas se o workspace permitir o uso de recursos Lingjun e recursos de computação de uso geral.
Source
Selecione Preemptible Resources.
Job Resource
Na coluna Resource Type, clique no ícone
para selecionar um recurso preemptível e configurar o parâmetro Bid Price (Discount). O preço do lance é o preço máximo baseado no preço original do tipo de instância e varia de 10% a 90% do preço de mercado, com intervalos de 10%. Você obtém o recurso preemptível se o seu lance atender ou exceder o preço de mercado e houver estoque suficiente. VPC
VPC
Configure uma virtual private cloud (VPC) se usar recursos Lingjun para enviar jobs do DLC. Selecione uma VPC, um vSwitch e um grupo de segurança nas listas suspensas.
Security Group
vSwitch
Fault Tolerance and Diagnosis
Automatic Fault Tolerance
Se você usar recursos Lingjun para enviar jobs do DLC, recomendamos ativar a Automatic Fault Tolerance. Esse recurso permite que jobs preemptíveis reentrem automaticamente na fila de lances após a revogação de recursos. Os jobs podem ser retomados quando o preço médio de mercado cair abaixo do seu preço máximo de lance. Para mais informações sobre o AIMaster, consulte AIMaster: An elastic and automatic fault tolerance engine.
Recursos Lingjun
NotaPara preços específicos das especificações de recursos, consulte o console.
Os principais itens de configuração para uma tarefa de treinamento com recursos preemptíveis usando Lingjun Intelligent Computing incluem:
Source: Selecione Preemptible Resources.
Job Resource: Configure a contagem de nós e a especificação de recursos para nós Worker, e verifique o preço máximo de lance e a faixa de preço de mercado. Clique em History Price para visualizar preços históricos.
VPC: Selecione uma VPC, um vSwitch e um grupo de segurança.
Automatic Fault Tolerance: Após ativar este recurso, recursos adicionais de computação são consumidos. Clique em Modify Configuration para ajustar as configurações de tolerância a falhas.
Recursos de computação de uso geral
NotaPara preços específicos das especificações de recursos, consulte o console.
Na página de configuração de recursos, execute as seguintes etapas:
Defina Source como Preemptible Resources.
Selecione o framework desejado, como PyTorch, para Framework.
Na tabela Job Resource, configure os nós Worker: defina a contagem de nós, Resource Specification e Bid Price (Discount). A faixa de preço de mercado depende da exibição real no console.
Na seção Fault Tolerance and Diagnosis, ative a Automatic Fault Tolerance. A ativação deste recurso consome recursos adicionais de computação.
-
Após configurar os parâmetros, clique em Confirm.
Depois de enviar o job, o DLC solicita recursos preemptíveis para criar e executar o job. Caso nenhum recurso preemptível seja solicitado, o job entra em estado de espera.
-
Instale o SDK do workspace.
pip install alibabacloud_aiworkspace20210204==3.0.1 -
Instale o SDK do DLC.
pip install alibabacloud_pai_dlc20201203==1.4.17 -
Não é possível especificar os parâmetros SpotDiscountLimit e SpotPriceLimit simultaneamente.
-
O parâmetro SpotDiscountLimit é válido apenas para recursos Lingjun.
Cenários
Procedimento
Envie um job preemptível usando um dos métodos a seguir.
Usar o PAI console
Usar o SDK
Etapa 1: Instalar o SDK para Python.
Etapa 2: Enviar um job preemptível
SpotDiscountLimit
#!/usr/bin/env python3
from alibabacloud_tea_openapi.models import Config
from alibabacloud_credentials.client import Client as CredClient
from alibabacloud_pai_dlc20201203.client import Client as DLCClient
from alibabacloud_pai_dlc20201203.models import CreateJobRequest
region_id = '<region-id>' # The ID of the region in which the DLC job resides, such as cn-hangzhou.
cred = CredClient()
workspace_id = '12****' # The ID of the workspace to which the DLC job belongs.
dlc_client = DLCClient(
Config(credential=cred,
region_id=region_id,
endpoint='pai-dlc.{}.aliyuncs.com'.format(region_id),
protocol='http'))
create_job_resp = dlc_client.create_job(CreateJobRequest().from_map({
'WorkspaceId': workspace_id,
'DisplayName': 'sample-spot-job',
'JobType': 'PyTorchJob',
'JobSpecs': [
{
"Type": "Worker",
"Image": "dsw-registry-vpc.<region-id>.cr.aliyuncs.com/pai/pytorch-training:1.12-cpu-py39-ubuntu20.04",
"PodCount": 1,
"EcsSpec": 'ecs.g7.xlarge',
"SpotSpec": {
"SpotStrategy": "SpotWithPriceLimit",
"SpotDiscountLimit": 0.4,
}
},
],
'UserVpc': {
"VpcId": "vpc-0jlq8l7qech3m2ta2****",
"SwitchId": "vsw-0jlc46eg4k3pivwpz8****",
"SecurityGroupId": "sg-0jl4bd9wwh5auei9****",
},
"UserCommand": "echo 'Hello World' && ls -R /mnt/data/ && sleep 30 && echo 'DONE'",
}))
job_id = create_job_resp.body.job_id
print(f'jobId is {job_id}')
SpotPriceLimit
#!/usr/bin/env python3
from alibabacloud_tea_openapi.models import Config
from alibabacloud_credentials.client import Client as CredClient
from alibabacloud_pai_dlc20201203.client import Client as DLCClient
from alibabacloud_pai_dlc20201203.models import CreateJobRequest
region_id = '<region-id>'
cred = CredClient()
workspace_id = '12****'
dlc_client = DLCClient(
Config(credential=cred,
region_id=region_id,
endpoint='pai-dlc.{}.aliyuncs.com'.format(region_id),
protocol='http'))
create_job_resp = dlc_client.create_job(CreateJobRequest().from_map({
'WorkspaceId': workspace_id,
'DisplayName': 'sample-spot-job',
'JobType': 'PyTorchJob',
'JobSpecs': [
{
"Type": "Worker",
"Image": "dsw-registry-vpc.<region-id>.cr.aliyuncs.com/pai/pytorch-training:1.12-cpu-py39-ubuntu20.04",
"PodCount": 1,
"EcsSpec": 'ecs.g7.xlarge',
"SpotSpec": {
"SpotStrategy": "SpotWithPriceLimit",
"SpotPriceLimit": 0.011,
}
},
],
'UserVpc': {
"VpcId": "vpc-0jlq8l7qech3m2ta2****",
"SwitchId": "vsw-0jlc46eg4k3pivwpz8****",
"SecurityGroupId": "sg-0jl4bd9wwh5auei9****",
},
"UserCommand": "echo 'Hello World' && ls -R /mnt/data/ && sleep 30 && echo 'DONE'",
}))
job_id = create_job_resp.body.job_id
print(f'jobId is {job_id}')
A tabela a seguir descreve os principais parâmetros. Para informações sobre outros parâmetros, consulte Use SDK for Python.
|
Parâmetro |
Descrição |
|
SpotStrategy |
A política de lances. Os parâmetros de tipo de lance só entram em vigor se você definir este parâmetro como SpotWithPriceLimit. |
|
SpotDiscountLimit |
O tipo de lance com desconto spot. Nota
|
|
SpotPriceLimit |
O tipo de lance com preço spot. |
|
UserVpc |
Este parâmetro é obrigatório ao usar recursos Lingjun para enviar jobs. Configure a VPC, o vSwitch e o ID do grupo de segurança para a região onde o job reside. |