본문으로 건너뛰기
버전: docs v25.02

GCR Input and Artifacts

Updated 2024.05.05

데이터 준비

학습 데이터 준비

기본적으로 GCR 사용을 위해서 학습에 사용할 컬럼(x 컬럼)과 라벨 컬럼(y 컬럼)이 있는 tabular 데이터를 준비해야 합니다. 현재는 .csv 파일 포맷만 사용 가능합니다.    

추론 데이터 준비

GCR의 추론 데이터셋은 라벨 컬럼이 필요하지 않다는 점 외에는 학습 데이터셋과 동일합니다. 역시 현재는 .csv 파일 포맷만 사용 가능합니다.

학습 및 추론 데이터셋 예시

GCR AI content를 git clone하게 되면 최상위 directory하에 sample_data 디렉토리가 존재하며, 여기서 train set 과 inference set을 확인할 수 있습니다. Sample data는 아래와 같은 특징을 가집니다.

  • 목적: 성인의 소득이 $50,000을 초과하는지 여부 분류 문제
  • 데이터: 여러가지 속성들을 가진 성인들의 정보와 소득 정보 포함 (32,561 row / 변수 별 결측치 포함 Y)
  • 출처: UCI Machine Learning Repository - Adult Data Set

다음은 sample data의 학습 데이터셋을 보여줍니다. 라벨 컬럼인 target외에는 inference set과 동일합니다.

idxageworkclasssex...IDtarget
039State-govMale...CX01
150Self-emp-not-incFeMale...CX11
.....................
2607058PrivateFeMale...CX325580
2607122PrivateMale...CX325591

다음은 sample data의 추론 데이터셋을 보여줍니다.

idxageworkclasssex...ID
052Self-emp-not-incMale...CX7
131PrivateFeMale...CX8
..................
648727PrivateFeMale...CX32556
648852Self-emp-incFeMale...CX32560

Input data directory 구조 예시

  • ALO를 사용하기 위해서는 train과 inference 파일이 분리되어야 합니다. 아래와 같이 학습에 사용할 데이터와 추론에 사용할 데이터를 구분해주세요.
  • 하나의 폴더 아래 있는 모든 파일을 input asset에서 취합해 하나의 dataframe으로 만든 후 모델링에 사용됩니다. (경로 밑 하위 폴더 안에 있는 파일도 합쳐집니다.)
  • 하나의 폴더 안에 있는 데이터의 컬럼은 모두 동일해야 합니다.
./{train_folder}/
└ train_data1.csv
└ train_data2.csv
└ train_data3.csv
./{inference_folder}/
└ inference_data1.csv
└ inference_data2.csv
└ inference_data3.csv


데이터 요구 사항

필수 요구사항

입력 데이터는 다음 조건을 반드시 만족하여야 합니다. 데이터 예제 를 참고하십시오.

대상 데이터항목비고
train set, inference set하나의 pipeline의 입력은 하나의 table을 입력으로 받습니다.Train pipeline은 1개의 train set table,inference pipeline은 1개의 inference set table이 필요합니다.
train settrain pipeline의 입력 table은 학습을 위해 label 컬럼(예측 대상)이 필요하며,label 컬럼은 결측치가 없어야 합니다.ML 모델의 input과 같기 때문에 train set에는 라벨 컬럼이 존재하야 합니다.
train set, inference settrain set, inference set은 동일한 컬럼 목록을 가져야 합니다.

추가 요구사항

Train 및 inference set에서 추가적으로 가능하면 다음 조건을 만족하도록 합니다. 만족하지 않더라도 내부적으로 전처리를 진행합니다.

항목비고
띄어쓰기 등의 공백은 제거하거나 치환해주면 좋습니다.공백이 있더라도 자동으로 치환해주기 때문에 모델 구동 문제는 없습니다. ex) 베스트 샵 -> 베스트_샵
범주형 컬럼 위주로 구성하면 속도 및 성능이 향상 됩니다.연속형 변수가 들어갈 경우 selectivity가 높아지는데, 이는 임베딩에 큰 영향을 줄 수 없습니다. 즉, 변수의 값이 매우 다양하면 다른 row에 동일한 값이 출현할 기회가 적어 그래프 상에서 두 행이 연결되어 해석될 기회가 매우 적으므로 성능 향상에 도움이 되지 않습니다.


산출물  

학습/추론을 실행하면 아래와 같은 산출물이 생성됩니다.

Train pipeline

./alo/train_artifacts/
   └ log/
       └ experimental_history.json
       └ pipeline.log
       └ process.log
└ models/
└ input/
└ input_config.json
   └ readiness/
       └ train_config.pickle
  └ train/
       └ global_feature_importance.csv
       └ graph_embedding.pickle
       └ hparams.json
       └ label_encoder.pkl
       └ lime_explainer.pk
      └ model.json

Inference pipeline

./alo/inference_artifacts/
└ log/
└ experimental_history.json
└ pipeline.log
└ process.log
└ output/
    └ output.csv
└ score/
    └ inference_summary.yaml

각 산출물에 대한 상세 설명은 다음과 같습니다.

experimental_history.json

학습 데이터, 코드, 파라미터 변경 사항 등이 기록됩니다.

pipeline.log

Pipeline의 asset별 GCR log가 기록됩니다.

process.log

전체 ALO process 수행 log가 기록됩니다.

input_config.json

Train/inference pipeline 간 동일한 user arguments의 재 입력을 피하고자, train pipeline의 user arguments를 inference pipeline에서 참조하기 위한 file입니다.

train_config.json

Train/inference pipeline 간 동일한 x 컬럼 셋이 존재하는 지 검증하기 위해, train pipeline의 입력 데이터 내의 x 컬럼 정보를 inference pipeline에서 참조하기 위한 file입니다.

global_feature_importance.csv

Train set의 모든 샘플을 이용해 계산된 컬럼 별 feature importance 값들입니다.

graph_embedding.pickle

Graph embeddings 즉, vector들이 저장되어 있는 파일입니다.

hparams.json

Train 시의 HPO를 통해 결정된 hyper parameter들이 저장된 파일입니다.

label_encoder.pkl

Lable은 임의의 값 또는 문자열로 주어집니다. GCR은 내부적으로 이들을 정수로 encoding하여 모델을 학습하며, 추론 시에는 다시 학습 시에 주어진 임의의 값 또는 문자열로 복원해 주는데, 이를 위해 inference pipeline에서 필요한 encoding 정보가 담겨져 있습니다.

lime_explainer.pk

Train pipeline에서 학습된 LIME surrogate model입니다.

model.json

XGboost 또는 flexible DNN 모델입니다.

output.csv

Inference set 원본에 최종 예측 결과 및 local XAI 결과를 나타내는 컬럼들이 추가된 추론 결과입니다.

inference_summary.yaml

inference_summary.yaml은 Edge Conductor에서 UI로 보여지는 yaml 파일입니다. ALO의 save_summary API를 사용하여 생성됩니다. 자세한 사항은 ALO API: save_summary가이드를 확인해주세요. Inference pipeline 결과 생성되는 inference_summary.yaml에는 아래와 같은 정보가 담겨있습니다.

  1. classification
  • result: HPO 시 평가 기준이 되는 y 컬럼의 클래스 명. 예를 들어 label 1.
  • score: result 라벨로 예측된 instance들의 probability값의 평균으로, 이 값이 낮아질 경우 모델의 재학습이 필요함을 알리는 지표가 됩니다.
  • note:
  • probability:
  1. regression

Inference set에 label이 존재하지 않은 경우, 모델 재학습을 가리키는 지표를 발굴 중입니다.

  • result: 'regression'
  • score:
  • note:
  • probability: