GitHub
쿠브플로우 관련 코드 내용은 GitHub에서 관리하고 있습니다.
https://github.com/Seokii/Study-MLOps
참고사이트 : 모두의 MLOps
(쿠브플로우 공부에 많은 도움이 된 사이트입니다!)
Install kfp
pip install kfp==1.8.18
kfp 1.8.18 버전을 설치해 실습을 진행했습니다.
argument와 type 작성
def print_and_return_number(number: int) -> int:
print(number)
return number
숫자를 입력받고 출력해 주는 간단한 함수 코드입니다.
쿠브플로우는 컴포넌트 컨텐츠에서 필요한 값들을 Config로 정의해야 합니다.
필요한 Config를 전달하기 위해서 Component Wrapper를 작성해야 하며,
이 과정에서 함수에 argument, argument의 타입, 반환받는 값의 타입을 위의 코드와 같이 작성해야 합니다.
쿠브플로우에서 반환 받을 수 있는 값의 타입은 json에서 표현할 수 있는 타입만 가능합니다.
대표적인 예로는 int, float, str이 있습니다.
from typing import NamedTuple
def divide_and_return_number(
number: int,
) -> NamedTuple("DivideOutputs", [("quotient", int), ("remainder", int)]):
from collections import namedtuple
quotient, remainder = divmod(number, 2)
print("quotient is", quotient)
print("remainder is", remainder)
divide_outputs = namedtuple(
"DivideOutputs",
[
"quotient",
"remainder",
],
)
return divide_outputs(quotient, remainder)
만약, 여러 값을 반환하려면 collections.namedtuple을 사용해 구현할 수 있습니다.
위의 코드는 입력받은 숫자를 2로 나눈 몫과 나머지를 반환하는 컴포넌트 작성 예시입니다.
쿠브플로우 형식으로 변환
from kfp.components import create_component_from_func
@create_component_from_func
def print_and_return_number(number: int) -> int:
print(number)
return number
작성한 함수를 쿠브플로우에서 사용할 수 있는 형식으로 변환하기 위해서
kfp.components.create_component_from_func 함수를 사용합니다.
Yaml 파일 생성하기
from kfp.components import create_component_from_func
@create_component_from_func
def print_and_return_number(number: int) -> int:
print(number)
return number
if __name__ == "__main__":
print_and_return_number.component_spec.save("print_and_return_number.yaml")
파이썬 코드를 공유할 수 없는 경우라면, yaml파일로 생성하여 공유할 수 있습니다.
from kfp.components import load_component_from_file
print_and_return_number = load_component_from_file("print_and_return_number.yaml")
print(print_and_return_number(100))
load_component_from_file 함수를 통해 yaml파일을 통해 작성한 컴포넌트를 불러오고,
100의 인자값을 넣어 출력한 결과의 일부입니다.
'MLOps' 카테고리의 다른 글
[MLOps] 쿠브플로우 파이프라인 - yaml 파일 업로드 (0) | 2023.01.16 |
---|---|
[MLOps] 쿠브플로우 파이프라인 - 코드 작성 (0) | 2023.01.16 |
[MLOps] 쿠브플로우 파이프라인(Pipeline)이란? (0) | 2023.01.13 |
[MLOps] 쿠버네티스 프로메테우스&그라파나 설치하기 (0) | 2023.01.12 |
[MLOps] Seldon Core 개념 이해 및 설치하기 (0) | 2023.01.12 |
댓글