Aprendizagem pessoal com IA
e orientação prática
Espelho de desenho CyberKnife

SkyPilot: uma estrutura de código aberto para executar com eficiência tarefas de IA e em lote em qualquer nuvem

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.

SkyPilot: uma estrutura de código aberto para executar com eficiência tarefas de IA e em lote em qualquer nuvem-1


 

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

  1. Preparação ambiental
    Certifique-se de que o Python 3.8 ou posterior esteja instalado localmente e que você tenha o pacote pip 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
  1. Instalação do SkyPilot
    aprovar (um projeto de lei ou inspeção etc.) pip Instale a versão mais recente:

    pip install -U "skypilot[all]"
    

    Entre eles [all] 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 por skypilot[aws].

  2. 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 configureDigite 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.
  3. Verificar a instalação
    Execute o seguinte comando para verificar se a instalação foi bem-sucedida:

    sky check
    

    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::

resources:
accelerators: A100:1  # 使用 1 个 A100 GPU
num_nodes: 1         # 单节点
workdir: ~/my_project  # 同步本地项目目录
setup: |               # 安装依赖
pip install torch torchvision
run: |                 # 运行任务
python main.py --epochs 10
  • resourcesEspecifique os recursos computacionais, como o tipo e o número de GPUs.
  • workdirCatálogo de códigos local com sincronização automática com a nuvem.
  • setupComandos de preparação antes da execução.
  • runComando 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-clusterClusters 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:

sky status

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::

resources:
accelerators: A100:1
service:
replica: 2          # 2 个副本
ports: 8080         # 服务端口
run: |
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 resources acertou em cheio accelerators Parâmetros.

Registro e depuração

Visualize os registros de tarefas em tempo real:

sky logs my-cluster

Ativar o modo de depuração:

export 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.

Não pode ser reproduzido sem permissão:Chefe do Círculo de Compartilhamento de IA " SkyPilot: uma estrutura de código aberto para executar com eficiência tarefas de IA e em lote em qualquer nuvem
pt_BRPortuguês do Brasil