• Русский
  • Быстрый старт с Kubeflow Trainer

    Введение

    Kubeflow Trainer v2 — это компонент Kubeflow, который упрощает процесс запуска распределённых задач обучения машинного обучения на Kubernetes. Он предоставляет стандартизированный способ определения runtime и заданий для обучения, поддерживая различные фреймворки, такие как PyTorch, Transformers, TensorFlow и другие. В Alauda AI Kubeflow Trainer v2 интегрируется с рабочей средой ноутбуков платформы, позволяя пользователям отправлять и управлять задачами обучения непосредственно из рабочего пространства разработки.

    В этом руководстве быстрого старта показано, как настроить распределённую среду обучения PyTorch с использованием Kubeflow Trainer v2. Вы научитесь создавать пользовательский образ runtime, настраивать ClusterTrainingRuntime и запускать пример задачи обучения для классификации MNIST. Такая настройка обеспечивает эффективное распределённое обучение на GPU-кластерах с использованием возможностей управления ресурсами и безопасности Alauda AI.

    Подготовка образа Runtime

    Создайте файл torch_distributed.Containerfile с приведённым ниже содержимым и соберите образ. Либо можно использовать предсобранный образ alaudadockerhub/torch-distributed:v2.9.1-aml2.

    FROM python:3.13-trixie
    ARG USERNAME=appuser
    ARG USER_UID=1000
    ARG USER_GID=$USER_UID
    
    RUN sed -i 's/deb.debian.org/mirrors.ustc.edu.cn/g' /etc/apt/sources.list.d/debian.sources
    RUN apt-get update && \
    apt-get install -y build-essential
    
    RUN pip install --no-cache-dir -i https://pypi.tuna.tsinghua.edu.cn/simple -U pip && \
    pip install --no-cache-dir --index-url https://download.pytorch.org/whl/cu126 \
    "torch==2.9.1" \
    "torchvision==0.24.1"
    
    RUN groupadd --gid $USER_GID $USERNAME \
        && useradd --uid $USER_UID --gid $USER_GID -m $USERNAME
    
    WORKDIR /workspace
    RUN chown $USERNAME:$USER_GID /workspace

    Подготовка ClusterTrainingRuntime

    Создайте файл kf-torch-distributed.yaml для добавления конфигурации ClusterTrainingRuntime, чтобы запустить распределённый pytorch TrainJob на Alauda AI. Затем выполните kubectl apply -f kf-torch-distributed.yaml с правами администратора для создания.

    Примечание: стандартный ClusterTrainingRuntime был изменён для соответствия настройкам безопасности по умолчанию в Alauda AI.

    apiVersion: trainer.kubeflow.org/v1alpha1
    kind: ClusterTrainingRuntime
    metadata:
      name: torch-distributed
      labels:
        trainer.kubeflow.org/framework: torch
    spec:
      mlPolicy:
        numNodes: 1
        torch:
          numProcPerNode: auto
      template:
        spec:
          replicatedJobs:
            - name: node
              template:
                metadata:
                  labels:
                    trainer.kubeflow.org/trainjob-ancestor-step: trainer
                spec:
                  template:
                    spec:
                      securityContext:
                        runAsNonRoot: true
                        runAsUser: 1000
                        runAsGroup: 1000
                        fsGroup: 1000
                      volumes:
                      - emptyDir:
                          medium: Memory
                          # Здесь можно настроить размер разделяемой памяти
                          sizeLimit: 2Gi
                        name: dshm
                      # EmptyDir как рабочее пространство для обучения и для передачи итоговой модели на следующий шаг.
                      - name: workspace
                        emptyDir: {}
                      containers:
                        - name: node
                          # используйте образ, собранный на предыдущем шаге, или наш предсобранный образ.
                          image: alaudadockerhub/torch-distributed:v2.9.1-aml2
                          env:
                          - name: TORCH_HOME
                            value: /tmp/torch_cache
                          - name: TORCH_EXTENSIONS_DIR
                            value: /tmp/torch_extensions
                          - name: TRITON_CACHE_DIR
                            value: /tmp/triton_cache
                          volumeMounts:
                            - name: workspace
                              mountPath: /workspace
                            - name: dshm
                              mountPath: /dev/shm
                          securityContext:
                            allowPrivilegeEscalation: false
                            capabilities:
                              drop:
                                - ALL
                            runAsNonRoot: true
                            seccompProfile:
                              type: RuntimeDefault

    Запуск примерного ноутбука

    Примечание: для запуска приведённого ниже примерного ноутбука требуется доступ в интернет, так как необходимо устанавливать python-пакеты и загружать датасеты.

    Скачайте kubeflow_trainer_mnist.ipynb из github workbench howtos и перетащите файл в ваш экземпляр ноутбука. Следуйте инструкциям в ноутбуке, чтобы запустить TrainJob с использованием pytorch.

    Для получения дополнительной информации о том, как использовать Kubeflow Trainer v2, обратитесь к Kubeflow Document

    Заключение

    Следуя этому руководству быстрого старта, вы успешно настроили Kubeflow Trainer v2 в вашей среде Alauda AI и запустили распределённую задачу обучения PyTorch. Эта база позволяет эффективно масштабировать ваши задачи машинного обучения на несколько узлов и GPU.

    Дальнейшие шаги:

    • Экспериментируйте с разными моделями и датасетами, изменяя примерный ноутбук.
    • Изучайте расширенные возможности, такие как пользовательские метрики, настройка гиперпараметров и интеграция с MLflow для отслеживания экспериментов.
    • Адаптируйте ClusterTrainingRuntime для других фреймворков, таких как TensorFlow или пользовательские скрипты обучения.

    Для более подробной документации и продвинутых настроек обращайтесь к документации Kubeflow Trainer v2.