Skip to content

特定用例:Importer 組件

從管道外部導入組件

與其他三種 Pipeline 組件的創作方法不同,importer component 不是一般組件的創作風格,而是針對特定用例的預構建的組件:將機器學習 pipeline 的某種工件(artifact)從 URI 加載到當前管道中,並因此加載到 ML 元數據中.本節假定您熟悉 KFP 預建的組件 artifacts

Pipeline Basics 中所述,任務的輸入通常是上游任務的輸出。在這種情況下,可以使用 my_task.outputs['<output-key>'] 在上游任務上輕鬆訪問工件。當上游任務創建工件時,它也會在 ML 元數據中註冊。

如果您希望使用不是由當前管道中的任務生成的現有工件,或者希望將根本不是由管道生成的外部文件用作工件,您可以使用 dsl.importer 組件加載來自其 URI 的工件。

您不需要編寫導入器組件;可以從 dsl 模塊導入直接使用:

from kfp import dsl

@dsl.pipeline
def my_pipeline():
    task = get_date_string()
    importer_task = dsl.importer(
        artifact_uri='gs://ml-pipeline-playground/shakespeare1.txt',
        artifact_class=dsl.Dataset,
        reimport=True,
        metadata={'date': task.output})
    other_component(dataset=importer_task.output)

除了 artifact_uri 參數之外,您還必須提供 artifact_class 參數來指定工件的類型。

導入器組件允許通過元數據參數設置工件元數據。可以使用上游任務的輸出構建元數據,就像示例管道中的 “date” 值一樣。

您還可以指定一個 reimport 參數。如果 reimportFalse,KFP 將檢查工件是否已導入 ML 元數據,如果已導入,則使用它。當多個管道運行導入相同的工件時,這對於避免 ML 元數據中的重複工件條目很有用。如果 reimportTrue,KFP 將重新導入工件作為 ML 元數據中的新工件,而不管它之前是否導入過。