SkyPilot: un marco de código abierto para ejecutar eficazmente tareas de IA y por lotes en cualquier nube

Introducción general

SkyPilot es un marco de código abierto iniciado por el Sky Computing Lab de la Universidad de California en Berkeley, diseñado para ayudar a los usuarios a ejecutar eficientemente tareas de IA y procesamiento por lotes en cualquier infraestructura en la nube. Compatible con más de 14 servicios en la nube (incluidos AWS, GCP, Azure, etc.) y Kubernetes, SkyPilot proporciona una interfaz de ejecución unificada, un importante ahorro de costes y una alta disponibilidad de GPU, y se configura a través de una sencilla API YAML o Python que permite a los usuarios desplegar tareas en la nube sin modificar el código, seleccionando automáticamente los recursos óptimos y habilitando la tolerancia a fallos. SkyPilot permite a los usuarios desplegar tareas en la nube sin modificar el código, seleccionando automáticamente los recursos óptimos y permitiendo la tolerancia a fallos. Desde su lanzamiento en 2022, el proyecto ha atraído más de un millón de descargas y más de 7.000 estrellas en GitHub, y se utiliza ampliamente en el entrenamiento de modelos de aprendizaje automático, el ajuste de hiperparámetros y la bioinformática.

SkyPilot:在任何云端高效运行AI与批处理任务的开源框架

 

Lista de funciones

  • Despliegue de misiones en varias nubesAdmite la ejecución de tareas en más de 14 nubes, como AWS, GCP, Azure y Kubernetes, lo que evita la dependencia de un único proveedor de nubes.
  • Optimización de costes: Selecciona automáticamente la región o instancia de nube más barata (por ejemplo, instancias bajo demanda o Spot), consiguiendo un ahorro de costes de hasta 3-6,5 veces.
  • Soporte GPU/TPUProgramación y gestión de recursos de GPU (por ejemplo, NVIDIA A100) y TPU para mejorar la eficiencia de cálculo.
  • Recuperación automática de fallosEl sistema: cambia automáticamente a otras nubes o regiones cuando se encuentra con una capacidad insuficiente o con prioridad, lo que garantiza que las tareas no se interrumpan.
  • Sincronización de códigos y datosSincronización automática del código y los datos locales con el clúster en la nube para simplificar el proceso de implantación.
  • Gestión de colas de tareasSoporta tareas masivamente concurrentes (por ejemplo, más de 2000 trabajos) para escenarios como el ajuste de hiperparámetros.
  • Despliegue de servicios (SkyServe): Proporciona compatibilidad con HTTPS y políticas de equilibrio de carga para facilitar el despliegue de los servicios del modelo AI.
  • Soporte de instancias reservadasIntegre recursos locales como AWS Capacity Blocks, GCP Dynamic Workload Scheduler, etc.

 

Utilizar la ayuda

SkyPilot es fácil de instalar y utilizar para desarrolladores, investigadores y usuarios empresariales. A continuación se describe detalladamente cómo instalar, configurar y utilizar las principales funciones de SkyPilot.

Proceso de instalación

  1. Preparación medioambiental
    Asegúrese de que Python 3.8 o posterior está instalado localmente y de que tiene el archivo pip Herramientas de gestión de paquetes. Se recomienda un entorno virtual para evitar conflictos de dependencias:

    python3 -m venv skypilot_env
    source skypilot_env/bin/activate
  1. Instalación de SkyPilot
    aprobar (una factura o inspección, etc.) pip Instale la última versión:

    pip install -U "skypilot[all]"
    

    incluidos entre estos [all] Indica que se han instalado todas las dependencias compatibles con la nube. Si sólo se requiere una nube específica (por ejemplo, AWS), sustitúyala por skypilot[aws].

  2. Autenticación en la nube
    Configure las credenciales para la nube de destino. Tomemos AWS como ejemplo:

    • Instale la CLI de AWS:pip install awscli
    • Configure las credenciales:aws configureIntroduzca la Clave de Acceso y la Clave Secreta.
      Para otras nubes (por ejemplo, GCP, Azure), consulte la documentación oficial para completar una configuración similar.
  3. Verificar la instalación
    Ejecute el siguiente comando para comprobar si la instalación se ha realizado correctamente:

    sky check
    

    La salida muestra el estado de los servicios en la nube habilitados.

Funciones principales

1. Creación de perfiles de misión

SkyPilot utiliza archivos YAML para definir tareas. Para entrenar un modelo PyTorch, por ejemplo, cree un archivo 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
  • resourcesEspecifica los recursos computacionales, como el tipo y número de GPUs.
  • workdir: Catálogo de códigos local con sincronización automática con la nube.
  • setup: Comandos de preparación antes de ejecutar.
  • runMando de Ejecución de la Misión.

2. Puesta en marcha del mandato

Se ejecuta en el terminal:

sky launch -c my-cluster train.yaml
  • -c my-cluster: Agrupaciones con nombre para facilitar la gestión posterior.
  • SkyPilot selecciona automáticamente el recurso en la nube óptimo e inicia la tarea.

3. Ver la situación del mandato

Compruebe el estado del clúster:

sky status

Muestra todos los clusters en ejecución y su uso de recursos.

4. Optimización de costes y ejemplos de Spot

Utilice instancias puntuales para reducir costes:

sky launch -c my-spot-cluster train.yaml --use-spot

SkyPilot gestiona automáticamente las interrupciones de las instancias de Spot y reanuda las tareas.

5. Servicios de despliegue (SkyServe)

Como ejemplo de despliegue de un modelo LLaMA, cree el modelo serve.yaml::

resources:
accelerators: A100:1
service:
replica: 2          # 2 个副本
ports: 8080         # 服务端口
run: |
python serve.py --model llama

Inicie el servicio:

sky serve up serve.yaml -n llama-service

Acceda al endpoint HTTPS generado para utilizar el servicio.

6. Misiones concurrentes masivas

Ejecutar más de 2000 tareas (por ejemplo, ajuste de hiperparámetros):

sky jobs launch -c my-jobs train.yaml --num-jobs 2000

SkyPilot asigna automáticamente los recursos y gestiona las colas.

Funciones destacadas

Conmutación multicloud

Si AWS no tiene A100 disponible, especifique otra nube:

sky launch -c my-cluster train.yaml --cloud gcp

O deja que SkyPilot seleccione automáticamente la nube más barata:

sky launch -c my-cluster train.yaml --cloud cheapest

Programación de la GPU

Consulta los recursos de GPU disponibles:

sky show-gpus

Adaptado dinámicamente a la demanda resources ha dado en el clavo accelerators Parámetros.

Registro y depuración

Visualice los registros de tareas en tiempo real:

sky logs my-cluster

Activa el modo de depuración:

export SKYPILOT_DEBUG=1
sky launch -c my-cluster train.yaml

advertencia

  • Seguridad de las credencialesAsegúrese de que el archivo de credenciales de la nube (p. ej. ~/.aws) correctamente para evitar fugas.
  • Liberación de recursosApague manualmente el clúster una vez finalizada la tarea:
    sky down my-cluster
    
  • Soporte documentalPara un uso más avanzado, consulte la documentación oficial de SkyPilot.

Con estos pasos, los usuarios pueden empezar a utilizar SkyPilot rápidamente y ejecutar tareas de IA y por lotes de forma eficaz.

© declaración de copyright

Artículos relacionados

Sin comentarios

Debe iniciar sesión para participar en los comentarios.
Acceder ahora
ninguno
Sin comentarios...