MLOps

[MLOps] 쿠브플로우 파이프라인 - 코드 작성

by seokii 2023. 1. 16.
728x90
반응형

GitHub

쿠브플로우 관련 코드 내용은 GitHub에서 관리하고 있습니다.

https://github.com/Seokii/Study-MLOps

 

GitHub - Seokii/Study-MLOps: Study MLOps with Kubeflow

Study MLOps with Kubeflow. Contribute to Seokii/Study-MLOps development by creating an account on GitHub.

github.com

 

참고사이트 : 모두의 MLOps

(쿠브플로우 공부에 많은 도움이 된 사이트입니다!)

 

 

컴포넌트 작성

컴포넌트 작성에 관한 내용은 이전 글인

쿠브플로우 파이프라인 - 컴포넌트 생성하기 를 참고하시기 바랍니다.

 

@create_component_from_func
def print_and_return_number(number: int) -> int:
    print(number)
    return number

@create_component_from_func
def sum_and_print_numbers(number_1: int, number_2: int) -> int:
    sum_num = number_1 + number_2
    print(sum_num)
    return sum_num

숫자를 입력 받아 출력하는 print_and_return_number 함수와

입력 받은 두 수의 합을 출력하는 sum_and_print_numbers 함수를 통해

2개의 컴포넌트를 작성했습니다.

 

@pipeline(name="example_pipeline")
def example_pipeline(number_1: int, number_2: int):
    number_1_result = print_and_return_number(number_1)
    number_2_result = print_and_return_number(number_2)
    sum_result = sum_and_print_numbers(
        number_1=number_1_result.output, number_2=number_2_result.output
    )

두 가지의 컴포넌트를 통해 함수를 코드 순서대로 작성하고,

kfp.dsl.pipline 함수를 통해 쿠브플로우에서 사용할 수 있는 파이프라인 형태로 변환합니다.

 

if __name__ == "__main__":
    kfp.compiler.Compiler().compile(example_pipeline, "example_pipeline.yaml")

Kubeflow에서 파이프라인을 실행하기 위해서는 yaml 형식으로만 가능하기 때문에,

생성한 파이프라인을 정해진 yaml 형식으로 컴파일합니다.

 

 

전체 코드

# make_pipeline.py

import kfp
from kfp.components import create_component_from_func
from kfp.dsl import pipeline

@create_component_from_func
def print_and_return_number(number: int) -> int:
    print(number)
    return number

@create_component_from_func
def sum_and_print_numbers(number_1: int, number_2: int) -> int:
    sum_num = number_1 + number_2
    print(sum_num)
    return sum_num

@pipeline(name="example_pipeline")
def example_pipeline(number_1: int, number_2: int):
    number_1_result = print_and_return_number(number_1)
    number_2_result = print_and_return_number(number_2)
    sum_result = sum_and_print_numbers(
        number_1=number_1_result.output, number_2=number_2_result.output
    )

if __name__ == "__main__":
    kfp.compiler.Compiler().compile(example_pipeline, "example_pipeline.yaml")

작성한 전체코드 내용입니다.

 

파이썬 파일을 실행하면, yaml파일이 생성된 것을 확인할 수 있습니다.

 

 

 

728x90
반응형

댓글