GCR Features
기능 개요
GCR의 pipelines
AI Contents의 pipeline은 기능 단위인 asset의 조합으로 이루어져 있습니다. Train pipeline은 5개의 assets, Inference pipeline은 4개의 assets로 구성되어 있습니다.
Train pipeline
Input - Readiness - Graph - Train - Output
Inference pipeline
Input - Readiness - Inference - Output
Input asset
사용자가 experimental_plan.yaml에 지정한 경로 내 파일을 읽어와 dataframe으로 만들어 줍니다.
Readiness asset
사용자가 GCR에 입력한 데이터가 GCR 모델링에 적합한지 검사합니다.
Graph asset
Tabular 데이터를 그래프로 변환하고 graph embedding을 수행합니다. 생성된 graph embeddings는 train/inference assets에서 학습과 추론에 사용됩니다.
Train asset
Graph asset의 결과물인 graph embeddings를 이용해 추론 모델을 학습합니다.
Inference asset
Graph asset의 결과물인 graph embeddings와 train asset에서 생성한 추론 모델을 이용해 추론 결과와 global/local XAI 결과를 생성합니다.
Output asset
Train/inference asset의 산출물들을 ALO 표준 위치에 저장합니다.
사용 팁
큰 데이터 사용시 메모리 최소화 방법 (메모리 부족에 의한 Mellerikat 등록 실패 회피 방법)
Graph-powered 머신러닝 모델에 기반한 GCR은 일반적인 분류/회귀 모델에 비해 메모리 요구량이 많아 같은 조건에서 대용량 입력 데이터를 처리할 때 메모리 부족 이슈가 발생할 수 있습니다. GCR은 이를 대비하여 아래와 같은 메모리 효율화 기법을 제공하므로, 이를 이용해 메모리 부족 이슈를 회피할 수 있습니다.
- Graph asset: Graph embeddings의 차원 수 줄이기
- Graph embedidngs의 차원 수 (argument명 dimension)는 default값으로 32로 되어 있습니다. 이 값을 16, 8 등으로 줄이면 원본 데이터의 컬럼 하나가 각각 16개, 8개의 컬럼 (차원)의 벡터로 임베딩되므로 32 차원 벡터에 비해 메모리 사용량을 대폭 줄일 수 있습니다. 단, embeddings의 구분력 유지를 위해 8차원 미만은 추천하지 않습니다.
- Graph asset: Graph를 여러 조각으로 나누어 임베딩하기
- GCR은 입력 데이터 전체를 한 번에 메모리에 올려 graph embedding하는 대신, 여러 조각으로 나누어 하나 씩 graph embedding함으로써 peak memory 요구량을 줄일 수 있는 방법을 제공합니다. 이는 num_partitions argument를 조절하여 설정할 수 있습니다. Default 값은 1로서 한 번에 전체 데이터를 메모리에 올려 embedding하는 것이고, 이를 2, 4, 8, 16, 32 등으로 높임으로써 그 만큼의 조각들로 나누어 graph embedding을 수행할 수 있습니다.
- 단, partition 수가 증가할 수록 전체 데이터의 graph embedding 완료 시간이 길어지며, partition 수 증가에 따른 peak memory 감소 폭은 차차 줄어들기 때문에, memory 부족이 발생하지 않는 가장 작은 num_partitions 값을 적용하는 것이 가장 효율적입니다.
참고로, default 설정인 dimension 32, num_partitions 1로 25MB의 35개 컬럼과 91,844개의 행을 가진 입력 데이터를 graph embedding할 경우 peak memory는 약 11GB입니다. 한편, 약 55GB의 메모리를 가진 로컬 서버에서 288MB의 27개 컬럼과 986,406개의 행을 가진 입력 데이터를 graph embedding할 경우, dimension 8, num_partitions 16으로 약 1시간 정도에 가능했습니다.