Перенос компонентов образа докера kubeflow в конвейер VertexAI.
Я пытаюсь перенести пользовательский компонент, созданный в kubeflow, в VertexAI. В Kubeflow я создавал компоненты в виде образов контейнеров докеров, а затем загружал их в конвейер следующим образом:
def my_custom_component_op(gcs_dataset_path: str, some_param: str):
return kfp.dsl.ContainerOp(
name='My Custom Component Step',
image='gcr.io/my-project-23r2/my-custom-component:latest',
arguments=["--gcs_dataset_path", gcs_dataset_path,
'--component_param', some_param],
file_outputs={
'output': '/app/output.csv',
}
)
Затем я бы использовал их в конвейере следующим образом:
@kfp.dsl.pipeline(
name='My custom pipeline',
description='The custom pipeline'
)
def generic_pipeline(project_id, some_param):
output_component = my_custom_component_op(
gcs_dataset_path=gcs_dataset_path,
some_param=some_param
)
output_next_op = next_op(gcs_dataset_path=dsl.InputArgumentPath(
output_component.outputs['output']),
next_op_param="some other param"
)
Могу ли я повторно использовать тот же образ докера компонента из kubeflow v1 в конвейере вершины ai? Как мне это сделать? надеюсь, ничего не меняя в самом компоненте.
Я нашел в Интернете примеры конвейеров вершинного ИИ, которые используют@component
декоратор следующим образом:
@component(base_image=PYTHON37, packages_to_install=[PANDAS])
def my_component_op(
gcs_dataset_path: str,
some_param: str
dataset: Output[Dataset],
):
...perform some op....
Но это потребует от меня копирования и вставки кода докера в мой конвейер, а это на самом деле не то, что я хочу делать. Есть ли способ повторно использовать образ докера и передать параметры? Я нигде не мог найти такого примера.
1 ответ
Вам нужно подготовить компонент yaml и загрузить его с помощью load_component_from_file .
Это хорошо задокументировано на странице документации kfp v2 Kubeflow , это также написано здесь .