是否可以将自定义源文件导入Kubeflow组件



我知道Kubeflow只使用要安装的指定库修改容器。但我想在管道的培训组件部分使用我的自定义模块。

因此,让我澄清一下我的情况;我正在部署一个GCP Vertex AI管道,它包含预处理和训练步骤。还有一个自定义库,我使用一些库创建的,比如scikit。我的主要问题是,我想在我的训练步骤中重用库对象,看起来像;

packages_to_install = [
"pandas",
"sklearn",
"mycustomlibrary?"
],
)
def train_xgb_model(
dataset: Input[Dataset],
model_artifact: Output[Model]
):

from MyCustomLibrary import XGBClassifier
import pandas as pd

data = pd.read_csv(dataset.path)
model = XGBClassifier(
objective="binary:logistic"
)
model.fit(
data.drop(columns=["target"]),
data.target,
)
score = model.score(
data.drop(columns=["target"]),
data.target,
)
model_artifact.metadata["train_score"] = float(score)
model_artifact.metadata["framework"] = "XGBoost"

model.save_model(model_artifact.path)``` 

一个选项是将自定义模块烘焙到自定义容器映像中。然后,您可以将组件的客户图像用作:

@component(
base_image='gcr.io/my-custom-image',
packages_to_intall = [
"pandas",
"sklearn",
],
)
def train_xgb_model(...):
...

事实上,如果采用这种方法,您可能还想将pandassklearn烘焙到自定义容器中。

替代方案包括在互联网上的某个地方托管mycustomlibrary,例如,它可以是GitHub回购。然后你可以按照如下方式安装它:

@component(
packages_to_intall = [
"pandas",
"sklearn",
"git+https://my-repo/mycustomlibrary.git",
],
)
def train_xgb_model(...):
...

请注意,packages_to_install中指定的内容将传递给pip install命令。pip允许从各种来源进行安装。例如:https://packaging.python.org/en/latest/tutorials/installing-packages/#installing-来自vcs

最新更新