AI Contents 실험
ALO와 AI Contents를 설치했다면, AI Contents에서 제공하는 다양한 기능들을 수정하며 내 데이터에 맞게 실험을 진행합니다.
Topics
ML 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을 다운로드 받으면서 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를 설치해야 할 때)
이때는 만약 ML pipeline 상에서 더 뒤에 오는 asset의 패키지 명 뒤에 pandas==1.5.4 --force-reinstall과 같은 옵션을 붙여서 적어주면, 이미 pandas==1.5.3이 설치되어 있어도, 1.5.4로 재설치를 시도하게 됩니다.
(ex. train asset이 input asset보다 뒤에 온다.)
AI Solution 개발자는 이런 식으로 선순위 asset과 후순위 asset 사이의 dependency 패키지 충돌을 방지하면서 AI Contents를 수정하거나 활용해야 합니다.
Note: A라는 AI Contents를 활용하다가, B라는 AI Contents로 변경하고 싶은 경우 새로운 Anaconda, Pyenv + Pipenv 등의 python 3.10 가상 환경을 생성하고 main.py를 실행해야 이미 해당 가상 환경에 깔려 있는 패키지들과 새로 설치할 패키지들 간의 충돌을 방지할 수 있습니다.
#experimental_plan.yaml
asset_source:
- train_pipeline:
- step: input
source:
code: {input Asset git 주소}
branch: tabular_2.0
requirements:
- pandas==1.5.3
- requirements.txt
각 Asset의 종속 파이썬 모듈들이 설치되면 ALO는 experimental_plan.yaml의 external_path에 정의된 외부 데이터를 alo/input/train(혹은 inference) 경로로 copy하여 가져옵니다. train pipeline 또는 inference pipeline 내에서 데이터를 load하는 Asset에서는 데이터 경로를 asset.get_input_path() API를 통해 얻을 수 있는데, 이는 alo/input/train(혹은 inference) 폴더의 절대 경로를 반환합니다.