• Русский
  • Использование Kubeflow Pipelines

    Kubeflow Pipelines (KFP) — это платформа для создания и развертывания переносимых, масштабируемых рабочих процессов машинного обучения (ML), основанных на Docker-контейнерах. SDK KFP позволяет определять и управлять пайплайнами и компонентами с помощью Python.

    Предварительные требования

    Установка KFP SDK

    Запустите Jupyter Notebook (или Workbench) в вашем namespace и установите KFP SDK:

    python -m pip install kfp

    Настройка KFP для работы с вашим объектным хранилищем

    Если вы устанавливали Kubeflow с внешним сервисом хранения S3/MinIO, необходимо добавить ConfigMap "KFP Launcher" для настройки хранилища, используемого текущим namespace или пользователем. Подробнее можно ознакомиться в документации Kubeflow https://www.kubeflow.org/docs/components/pipelines/operator-guides/configure-object-store/#s3-and-s3-compatible-provider. Если конфигурация не задана, запуски пайплайнов могут по-прежнему обращаться к адресу сервиса по умолчанию, например "minio-service.kubeflow:9000 ", что может быть некорректно.

    Ниже приведён простой пример для начала работы:

    apiVersion: v1
    data:
      defaultPipelineRoot: s3://mlpipeline
      providers: |-
        s3:
          default:
            endpoint: minio.minio-system.svc:80
            disableSSL: true
            region: us-east-2
            forcePathStyle: true
            credentials:
              fromEnv: false
              secretRef:
                secretName: mlpipeline-minio-artifact
                accessKeyKey: accesskey
                secretKeyKey: secretkey
    kind: ConfigMap
    metadata:
      name: kfp-launcher
      namespace: wy-testns

    Например, в этом ConfigMap следует указать значения, соответствующие вашему собственному хранилищу S3/MinIO:

    defaultPipelineRoot: место хранения промежуточных данных пайплайна
    endpoint: endpoint сервиса s3/MinIO. Важно, чтобы он НЕ начинался с "http" или "https"
    disableSSL: отключение доступа по "https" к endpoint
    region: регион s3. При использовании MinIO любое значение подходит
    credentials: AK/SK из секретов

    После добавления этого ConfigMap новые запуски Kubeflow Pipeline автоматически прочитают эту конфигурацию и будут сохранять данные, используемые Kubeflow Pipeline.

    Быстрый старт — пример

    Пайплайн — это описание рабочего процесса ML, включающее все компоненты и их взаимосвязи в виде графа.

    Ниже приведён простой пример определения пайплайна, который выводит "Hello, World!" с использованием KFP SDK.

    from kfp import dsl
    from kfp import compiler
    from kfp.client import Client
    
    @dsl.component
    def say_hello(name: str) -> str:
        hello_text = f'Hello, {name}!'
        print(hello_text)
        return hello_text
    
    @dsl.pipeline
    def hello_pipeline(recipient: str) -> str:
        hello_task = say_hello(name=recipient)
        return hello_task.output
    
    
    # Компиляция пайплайна в YAML-файл
    compiler.Compiler().compile(hello_pipeline, 'pipeline.yaml')
    
    # Создание клиента KFP и запуск пайплайна
    client = Client(host='<MY-KFP-ENDPOINT>')
    run = client.create_run_from_pipeline_package(
        'pipeline.yaml',
        arguments={
            'recipient': 'World',
        },
    )

    Для получения дополнительной информации о том, как определять и запускать пайплайны, обратитесь к официальной документации KFP: https://www.kubeflow.org/docs/components/pipelines/user-guides/

    Управление пайплайнами через UI

    Вы также можете управлять пайплайнами, экспериментами и запусками непосредственно через Kubeflow Dashboard.

    Доступ к панели Pipelines

    1. Войдите в центральную панель Kubeflow.
    2. В боковом меню выберите Pipelines.

    Загрузка пайплайна

    Если вы скомпилировали пайплайн в YAML-файл (например, pipeline.yaml из примера выше), вы можете загрузить его:

    1. Нажмите Pipelines -> Upload Pipeline.
    2. Upload a file: выберите ваш pipeline.yaml.
    3. Pipeline Name: задайте имя (например, Hello World Pipeline).
    4. Нажмите Create.

    Создание запуска

    Чтобы выполнить загруженный пайплайн:

    1. Нажмите на имя пайплайна для открытия его деталей.
    2. Нажмите Create Run.
    3. Run Name: введите описательное имя.
    4. Experiment: выберите существующий эксперимент или создайте новый. Эксперименты помогают группировать связанные запуски.
    5. Run Parameters: введите значения для аргументов пайплайна (например, recipient: World).
    6. Нажмите Start.

    Просмотр деталей запуска

    После запуска вы будете перенаправлены на страницу Run Details.

    • Graph: визуализация шагов (компонентов) пайплайна и их статуса (Running, Succeeded, Failed).
    • Logs: кликните на конкретный шаг в графе, чтобы просмотреть логи контейнера в боковой панели. Это важно для отладки.
    • Inputs/Outputs: просмотр артефактов, передаваемых между шагами или созданных в качестве итоговых результатов.
    • Visualizations: если пайплайн генерирует метрики или графики, они появятся во вкладках Run Output или Visualizations.

    Повторяющиеся запуски

    Вы можете настроить автоматический запуск пайплайнов по расписанию:

    1. В списке Pipelines найдите нужный пайплайн.
    2. Нажмите Create Run, но выберите тип запуска Recurring Run (или перейдите в Experiments (KFP) -> Create Recurring Run).
    3. Trigger: задайте расписание (например, Periodic, Cron).
    4. Parameters: настройте входные данные, которые будут использоваться при каждом запуске по расписанию.
    5. Нажмите Start.