Выделение ресурсов для конвейера Kubeflow с помощью параметров конвейера

Я хотел бы иметь возможность создать конвейер Kubeflow, который позволяет пользователям устанавливать выделенные ресурсы для запуска. Конечный результат будет примерно таким:

Пример пользовательского интерфейса Kubeflow Create Run с возможностью установки распределения ресурсов.

Возможно определение параметров трубопровода; однако синтаксис параметров конвейера не соответствует регулярному выражению проверки, используемому Kubeflow для предварительной обработки своего определения YAML.


В качестве примера, используя параметры значений на снимке экрана, я могу жестко закодировать ресурсы, выделенные конвейеру, добавив это в определение YAML конвейера:

resources:
    limits: {nvidia.com/gpu: 1}
    requests: {cpu: 16, memory: 32G}

Однако я хочу использовать параметры конвейера для определения этих распределений для каждого прогона. Что-то вроде:

resources:
    limits: {nvidia.com/gpu: '{{inputs.parameters.gpu_limit}}'}
    requests: {cpu: '{{inputs.parameters.cpu_request}}', memory: '{{inputs.parameters.memory_request}}'}

Когда я использую второе определение ресурсов конвейера, создание конвейера не удается, потому что Kubeflow не может проанализировать этот параметр ресурса, поскольку синтаксис входного параметра '{{input.parameters.parameter}}' не соответствует регулярному выражению ^([+-]?[0-9.]+)([eEinumkKMGTP]*[-+]?[0-9]*)$.

{
    "error_message":"Error creating pipeline: Create pipeline failed: Failed to get parameters from the workflow: InvalidInputError: Failed to parse the parameter.: error unmarshaling JSON: while decoding JSON: quantities must match the regular expression '^([+-]?[0-9.]+)([eEinumkKMGTP]*[-+]?[0-9]*)$'",
    "error_details":"Error creating pipeline: Create pipeline failed: Failed to get parameters from the workflow: InvalidInputError: Failed to parse the parameter.: error unmarshaling JSON: while decoding JSON: quantities must match the regular expression '^([+-]?[0-9.]+)([eEinumkKMGTP]*[-+]?[0-9]*)$'"
}

Кто-нибудь нашел обходной путь для этой проблемы, или я пытаюсь заставить Kubeflow делать то, для чего он не создан? Определение и использование параметров конвейера, как во втором примере, работает для других частей определения конвейера (например, аргументов или команд для запуска в контейнере Docker).


person Carter    schedule 19.10.2020    source источник


Ответы (1)


Это просто можно сделать в текущей версии конвейеров kubeflow. Это ограничение, но вы не можете изменять ресурсы из самого конвейера.

person Victor Bellon    schedule 02.06.2021