Introdução geral
O SkyPilot é uma estrutura de código aberto iniciada pelo Sky Computing Lab da Universidade da Califórnia, em Berkeley, projetada para ajudar os usuários a executar com eficiência tarefas de IA e processamento em lote em qualquer infraestrutura de nuvem. Compatível com mais de 14 serviços de nuvem (incluindo AWS, GCP, Azure etc.) e Kubernetes, o SkyPilot oferece uma interface de execução unificada, economia significativa de custos e alta disponibilidade de GPU, além de ser configurado por meio de uma API YAML ou Python simples que permite aos usuários implantar tarefas na nuvem sem modificar o código, selecionando automaticamente os recursos ideais e permitindo a tolerância a falhas. O SkyPilot permite que os usuários implementem tarefas na nuvem sem modificar o código, selecionando automaticamente os recursos ideais e permitindo a tolerância a falhas. Desde seu lançamento em 2022, o projeto atraiu mais de 1 milhão de downloads e mais de 7 mil estrelas no GitHub, e é amplamente utilizado no treinamento de modelos de aprendizado de máquina, ajuste de hiperparâmetros e bioinformática.
Lista de funções
- Implementação de missões em várias nuvensSuporta a execução de tarefas em mais de 14 nuvens, como AWS, GCP, Azure e Kubernetes, evitando a dependência de um único fornecedor de nuvem.
- Otimização de custosSelecione automaticamente a região ou instância de nuvem mais barata (por exemplo, instâncias sob demanda ou Spot), obtendo economias de custo de até 3 a 6,5 vezes.
- Suporte a GPU/TPUGPU: programa e gerencia perfeitamente os recursos de GPU (por exemplo, NVIDIA A100) e TPU para melhorar a eficiência da computação.
- Recuperação automática de falhasMudança automática para outras nuvens ou regiões quando a capacidade é insuficiente ou quando há preempção, garantindo que as tarefas não sejam interrompidas.
- Sincronização de código e dadosSincronização automática do código e dos dados locais com o cluster de nuvem para simplificar o processo de implementação.
- Gerenciamento de filas de tarefasSuporte a tarefas maciçamente simultâneas (por exemplo, mais de 2.000 trabalhos) para cenários como o ajuste de hiperparâmetros.
- Implementação de serviços (SkyServe)Suporte a HTTPS e políticas de balanceamento de carga para facilitar a implementação de serviços de modelo de IA.
- Suporte a instâncias reservadasIntegração de recursos no local, como blocos de capacidade do AWS, agendador de carga de trabalho dinâmica do GCP e muito mais.
Usando a Ajuda
O SkyPilot é fácil de instalar e usar para desenvolvedores, pesquisadores e usuários corporativos. Veja abaixo uma descrição detalhada de como instalar, configurar e operar os principais recursos do SkyPilot.
Processo de instalação
- Preparação ambiental
Certifique-se de que o Python 3.8 ou posterior esteja instalado localmente e que você tenha o pacotetubulação
Ferramentas de gerenciamento de pacotes. Recomenda-se um ambiente virtual para evitar conflitos de dependência:python3 -m venv skypilot_env source skypilot_env/bin/activate
- Instalação do SkyPilot
aprovar (um projeto de lei ou inspeção etc.)tubulação
Instale a versão mais recente:pip install -U "skypilot[all]"
Entre eles
[todos]
Indica que todas as dependências compatíveis com a nuvem estão instaladas. Se apenas uma nuvem específica (por exemplo, AWS) for necessária, substitua porskypilot[aws]
. - Autenticação na nuvem
Configure as credenciais para a nuvem de destino. Tome o AWS como exemplo:- Instale a CLI do AWS:
pip install awscli
- Configure as credenciais:
aws configure
Digite a chave de acesso e a chave secreta.
Para outras nuvens (por exemplo, GCP, Azure), consulte a documentação oficial para concluir uma configuração semelhante.
- Instale a CLI do AWS:
- Verificar a instalação
Execute o seguinte comando para verificar se a instalação foi bem-sucedida:verificação do céu
A saída exibe o status dos serviços de nuvem habilitados.
Funções principais
1. criação de perfis de missão
O SkyPilot usa arquivos YAML para definir tarefas. Para treinar um modelo PyTorch, por exemplo, crie um arquivo train.yaml
::
recursos: A100:1
aceleradores: A100:1 # usando 1 GPU A100
num_nodes: 1 # single node
workdir: ~/my_project # Sincronização do diretório local do projeto
setup: | # instalar dependências
pip install torch torchvision
run: | # executar tarefa
python main.py --epochs 10
recursos
Especifique os recursos computacionais, como o tipo e o número de GPUs.diretório de trabalho
Catálogo de códigos local com sincronização automática com a nuvem.configuração
Comandos de preparação antes da execução.executar
Comando de Execução da Missão: Comando de Execução da Missão.
2. lançamento do mandato
É executado no terminal:
sky launch -c my-cluster train.yaml
-c my-cluster
Clusters nomeados para facilitar o gerenciamento subsequente.- O SkyPilot seleciona automaticamente o recurso de nuvem ideal e inicia a tarefa.
3. visualizar o status do mandato
Verifique o status do cluster:
status do céu
Exibe todos os clusters em execução e o uso de seus recursos.
4. otimização de custos e exemplos pontuais
Use instâncias Spot para reduzir custos:
sky launch -c my-spot-cluster train.yaml --use-spot
O SkyPilot gerencia automaticamente as interrupções de instâncias do Spot e retoma as tarefas.
5. serviços de implantação (SkyServe)
Como um exemplo de implementação de um modelo LLaMA, crie o modelo serve.yaml
::
recursos.
aceleradores: A100:1
recursos: aceleradores: A100:1
réplica: 2 # 2 réplicas
portas: 8080 porta de serviço do #
executar: || executar: | executar
python serve.py --model llama
Inicie o serviço:
sky serve up serve.yaml -n llama-service
Acesse o ponto de extremidade HTTPS gerado para usar o serviço.
6. missões simultâneas em massa
Execute mais de 2000 tarefas (por exemplo, ajuste de hiperparâmetros):
sky jobs launch -c my-jobs train.yaml --num-jobs 2000
O SkyPilot aloca automaticamente os recursos e gerencia as filas.
Funções em destaque
Comutação de várias nuvens
Se o AWS não tiver o A100 disponível, especifique outra nuvem:
sky launch -c my-cluster train.yaml --cloud gcp
Ou deixe o SkyPilot selecionar automaticamente a nuvem mais barata:
sky launch -c my-cluster train.yaml --cloud cheapest
Programação de GPU
Veja os recursos de GPU disponíveis:
sky show-gpus
Ajustado dinamicamente à demanda recursos
acertou em cheio aceleradores
Parâmetros.
Registro e depuração
Visualize os registros de tarefas em tempo real:
registros do céu my-cluster
Ativar o modo de depuração:
exportar SKYPILOT_DEBUG=1
sky launch -c my-cluster train.yaml
advertência
- Segurança de credenciaisVerifique se o arquivo de credenciais da nuvem (por exemplo
~/.aws
) corretamente para evitar vazamentos. - Liberação de recursosDesligamento manual do cluster quando a tarefa estiver concluída:
Sky down my-cluster
- Suporte à documentaçãoPara uso mais avançado, consulte a documentação oficial do SkyPilot.
Com essas etapas, os usuários podem começar a usar o SkyPilot rapidamente e executar tarefas de IA e em lote com eficiência.