Как экспортировать метрики из контейнерного компонента в конвейеры kubeflow 0.2.5 - PullRequest
1 голос
/ 18 марта 2020

У меня есть конвейер, состоящий из 3 контейнерных компонентов. В последнем компоненте я записываю метрики, которые я хочу, в файл с именем /mlpipeline-metrics.json, как объяснено здесь . Это код Python, который я использовал.

metrics = {
    'metrics': [
        {
            'name': 'accuracy',
            'numberValue':  accuracy,
            'format': 'PERCENTAGE',
        },
        {
            'name': 'average-f1-score',
            'numberValue': average_f1_score,
            'format': 'PERCENTAGE'
        },
    ]
}

with open('/mlpipeline-metrics.json', 'w') as f:
    json.dump(metrics, f)

Я также попытался написать файл со следующим кодом, как в примере, приведенном выше.

with file_io.FileIO('/mlpipeline-metrics.json', 'w') as f:
    json.dump(metrics, f)

Конвейер работает просто отлично без ошибок. Но он не будет отображать метрики в интерфейсном интерфейсе.

Я думаю, что это как-то связано со следующим кодовым блоком.

def metric_op(accuracy, f1_scores):
    return dsl.ContainerOp(
        name='visualize_metrics',
        image='gcr.io/mgcp-1190085-asml-lpd-dev/kfp/jonas/container_tests/image_metric_comp',
        arguments=[
            '--accuracy', accuracy,
            '--f1_scores', f1_scores,
        ]
    )

Это код, который я использую создать ContainerOp из контейнерного компонента. Обратите внимание, что я не указал file_outputs. В других ContainerOp я должен указать file_outputs, чтобы можно было передавать переменные следующим шагам в конвейере. Должен ли я сделать что-то подобное здесь, чтобы сопоставить /mlpipeline-metrics.json с чем-то таким, чтобы конвейеры kubeflow обнаруживали его?

Я использую развертывание управляемых конвейеров платформы AI, использующее Kubeflow Pipelines 0.2.5 с Python 3.6.8 .

Любая помощь приветствуется.

1 Ответ

2 голосов
/ 18 марта 2020

Итак, после некоторых проб и ошибок я, наконец, пришел к решению. И я счастлив сказать, что моя интуиция была правильной. Это как-то связано с file_outputs, который я не указал. Чтобы иметь возможность экспортировать ваши метрики, вам нужно установить file_outputs следующим образом.

def metric_op(accuracy, f1_scores):
    return dsl.ContainerOp(
        name='visualize_metrics',
        image='gcr.io/mgcp-1190085-asml-lpd-dev/kfp/jonas/container_tests/image_metric_comp',
        arguments=[
            '--accuracy', accuracy,
            '--f1_scores', f1_scores,
        ],
        file_outputs={
            'mlpipeline-metrics': '/mlpipeline-metrics.json'
        }
    )
...