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

AI Contents 실험

Updated 2024.05.05

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) 폴더의 절대 경로를 반환합니다.  



나의 데이터로 실행하기

experimental_plan.yaml에서 외부로부터 가져올 데이터의 경로를 external_path 쪽에 작성하고 데이터에 알맞게 돌아가게끔 AI Contents의 각 Asset 하이퍼파라미터인 user_parameters를 설정합니다.
AI Contents를 기반으로 하여 AI Solution을 만들면 권장하는 데이터 명세 조건을 만족 해야 하며, 예를들어 x_columns, y_column과 같은 필수로 설정해야 하는 파라미터가 존재한다면 해당 파라미터들을 수정해 주어야 합니다.
각 user_parameter는 AI Contents의 가이드를 참고하여 데이터에 맞게 수정하면 됩니다.

Note : 참고로 external_path 등에 데이터 경로 작성 시, 절대 경로로 작성할 수 도 있지만 상대 경로로 작성할 때에는 ALO의 main.py가 존재하는 경로가 상대 경로의 기준 경로가 됩니다. 여러가지 외부 데이터 경로가 존재한다면 list type으로 작성합니다.

#experimental_plan.yaml
external_path:
- load_train_data_path: ["./solution/sample_data/train1", "./solution/sample_data/train2"]
- load_inference_data_path: ./solution/sample_data/inference