Pipeline 구축하기
Updated 2025.02.20
먼저, 사용자는 제작한 모델링 코드를 AI Solution으로 등록하기 위해서는, 제작한 모델링 코드를 ALO 형태로 변환해야합니다. 이 과정은 크게 7 가지의 수정이 필요합니다.
AI Solution을 제작하기 위한 모델링 코드를 변환하는 과정을 아래 가이드에 따라 진행해봅니다.
pipeline 개발하기
사용자가 작성한 모델링 코드를 ALO 형태로 변환하는 과정을 설명드리겠습니다. 사용자는 수정하는 과정에서 ALO v3의 깊은 이해가 필요하지 않으며 로직 코드의 최소한의 수정으로 쉽고 간편하게 변환할 수 있습니다.
1. 함수 설정 부에 pipeline 인자 추가하기
데이터 저장 경로 등의 내용은 pipeline을 통해 전달되고, logger 기능을 제공합니다.
예)
def preprocess(): → def preprocess(pipeline: dict): # 모든 함수에 pipeline을 추가해야함
alo에서 제공되는 logger 기능은 아래와 같이 사용할 수 있습니다. 예) "train"은 사용자가 logging 하고 싶은 내용으로 수정할 수 있습니다.
...
logger = pipeline['logger'] # ALO 문법
logger.debug("train") # "train" 수정 가능
...
2. 기존 코드에서 특정 경로에서 load 하는 부분을 pipeline을 통해 받도록 수정
예) 기존 코드 → ALO 형태 코드
def train(pipeline: dict):
...
pd.read('a.csv') → pd.read(pipeline['dataset']['workspace']"/a.csv")
...
def inference(pipeline: dict):
...
pd.read('b.csv') → pd.read(pipeline['dataset']['workspace']"/b.csv")
...
3. 각 함수 간의 인자를 전달하기 위해서는 return 함수를 통해 전달
예) 각 함수의 인자 전달은 함수 a의 return → 함수 b에서 호출 시 pipeline['a']['result']
return 형태는 dict, str, int 등 모든 type을 지원합니다.
def preprocess(pipeline: dict):
logger = pipeline['logger']
logger.info("preprocess.")
logger.info(".")
return {"output": "preprocess is done"}
def train(pipeline: dict, x_columns=[], y_column=None, n_estimators=100):
logger = pipeline['logger']
logger.debug("train")
...
preprocess_check = pipeline['preprocess']['result'] # {"output: "preprocess is done"}
...
4.모델 저장 및 load 부분 수정
예) 모델 형태의 따른 가이드 입니다.
### 모델이 pickle이 아닌 경우 ###
def train(pipeline: dict):
...
# model save
model_path = pipeline['model']['workspace']
tf.save_model(model_path + "model.pb")
...
def inference(pipeline: dict):
...
# model load
model_path = pipeline['model']['workspace']
load_model(model_path)
### 모델이 pickle인 경우 ###
def train(pipeline: dict):
...
# model save
pipeline['model']['파일 명'] = model
...
def inference(pipeline: dict):
...
# model load
model = pipeline['model']['파일 명']