실험
ML Pipeline을 구성하는 각 Asset 개발이 완료되었다면, experimental_plan.yaml을 한번 더 점검하고 아래 가이드를 따라 ML pipeline을 실행하며 실험을 진행합니다.
Topics
AI Pipeline 실행하기
python main.py
python main.py --mode train # train pipeline만 실행
python main.py --mode inference # inference pipeline만 실행
ALO의 main.py가 실행되면 experimental_plan.yaml 에 정의된 asset_source의 git으로부터 alo/assest 폴더에 각 Asset의 코드를 다운로드 받습니다.
각 asset을 다운로드 받으면서 ALO는 experimental_plan.yaml의 requirements라는 key 명으로 적혀 있는 부분의 하단에 명시된 각 asset의 dependency 패키지들을 설치합니다.
이때, pandas==1.5.3과 같이 패키지 명을 직접 작성할 수도 있고, requirements.txt라고 작성하게 되면 해당 Asset의 git repository에 존재하는 requirements.txt 내에 적혀있는 패키지들을 설치합니다.
또한 서로 다른 Asset에서 같은 패키지의 다른 버전 을 설치해야 할 때는 패키지 충돌이 날 수 있는데,
(ex. input asset에서는 pandas==1.5.3을 설치해야 하고, train asset에서는 pandas==1.5.4를 설치해야 할 때)
이때는 만약 AI pipeline 상에서 더 뒤에 오는 asset의 패키지 명 뒤에 pandas==1.5.4 --force-reinstall과 같은 옵션을 붙여서 적어주면, 이미 pandas==1.5.3이 설치되어 있어도, 1.5.4로 재설치를 시도하게 됩니다.
(ex. train asset이 input asset보다 pipeline 상 더 뒤에 옵니다.)
asset 제작자는 이런 식으로 선순위 asset과 후순위 asset 사이의 dependency 패키지 충돌을 방지하면서 전체적인 AI Contents 혹은 AI Solution 제작을 진행해야 합니다.
Note: AI Contents를 변경하신 경우 새로운 Anaconda (혹은 Pyenv+Pipenv) 등의 가상 환경을 생성하고 main.py를 실행해야 이미 해당 가상 환경에 깔려 있는 패키지들과 새로 설치할 패키지들 간의 충돌을 방지할 수 있습니다.
#experimental_plan.yaml
asset_source:
- train_pipeline:
- step: input
source:
code: http://mod.lge.com/hub/smartdata/ml-framework/alov2-module/input.git
branch: tabular_2.0
requirements:
- pandas==1.5.3
각 Asset의 종속 python 패키지들이 설치되면 ALO는 external_path에 정의된 외부 데이터를 alo/input/train(혹은 inference) 경로로 copy하여 가져옵니다.
train 또는 inference pipeline 내의 input Asset에서는 데이터 경로를 self.asset.get_input_path() API를 통해 얻을 수 있는데, 이는 alo/input/train(혹은 inference) 폴더에 대한 절대 경로를 반환합니다.
Note: 솔루션 등록 이후 AI Conductor, Edge App 등과 같은 운영 환경 상에서 ALO는 Docker Container로 감싸져 있기 때문에 Docker Container 내의 alo/input/train(혹은 inference)라는 약속된 로컬 경로에만 접근하여 input data를 가져옵니다. 따라서 반드시 input data를 불러들이는 경로는 get_input_path() API 호출을 통해 얻어와야 합니다.