AI Solution 등록
AI Solution을 등록하기 위해선 experimental_plan.yaml 파일에서 EdgeConductor UI에서 사용자가 수정가능한 파라미터를 선정 (Write UI Parameter)하고, register-ai-solution.ipynb 쥬피터 노트북을 통해 AI Conductor에 등록 작업을 수행합니다.
Topics
AI Solution 등록 프로세스
register-ai-solution.ipynb 에서는 다음과 같은 작업을 수행합니다.
- (사전 작업) 솔루션 제작 시, 만들어둔 ipykernel 이름을 쥬피터 노트북 kernel로 선택합니다. (Install ALO)
- python -m ipykernel install --user --name {가상환경이름} --display-name {jupyter-가상환경-표시이름}
- UI Parameter 작성
- AI Solution 정보 작성
- AI Solution 등록 run
- Train Pipeline과 Inference Pipeline, 종속 Python 패키지들을 Docker 이미지로 빌드
- Docker 이미지와 샘플 데이터를 클라우드(AWS ECR, S3)에 업로드
- AI Solution을 AI Conductor에 등록
UI Parameter 작성
UI Parameter는 AI Solution에서 지원하는 여러가지 모델 하이퍼파라미터들 중에 사용자가 EdgeConductor UI에서 변경 가능한 파라미터입니다. UI Paramter 파라미터를 정의하기 위해 Write UI Paramter 페이지를 참고합니다.
Mellerikat 의 infra 정보 작성
Infra 정보 작성은 엔지니어 설정이 필요 합니다. 자세한 사항은 infra 설정 (Configure Infrastructure) 페이지를 참고합니다.
AI Solution 정보 작성
AI Solution 실행 과 관련된 설정 값들을 아래 설명을 확인하여 작성 합니다.
- solution_name: 솔루션 이름
- Warning: 영어 대문자, 스페이스, 특수 문자, 한글은 미지원하며 50자까지 가능합니다.
- Note: AI Solution 이름은 영어 소문자, dash ( - ), 숫자만 입력 가능합니다.
- inference_only: AI Pipeline이 학습 및 추론을 지원하는 지에 대한 표시
- ex1: 학습 과 추론 모두 지원 --> False
- ex2: 추론만 지원 --> True
- Note: 학습만 진행하는 AI Solution 형태는 지원하지 않습니다.
- solution_update: 기존에 이미 등록한 AI Solution이 존재하고 해당 Solution의 이름을 알 때 Solution을 업데이트 할지 결정
- True: 업데이트 진행. 기존 Solution name 과 동일한 이름 입력 (기존 Solution name 이 존재하지 않으면 에러)
- False: 신규 생성. 기존 name 과 다르게 입력 (이미 같은 name의 Solution이 존재하면 에러)
- overview: 솔루션의 거시적인 설명을 작성합니다.
- Warning: 문자 타입으로 작성하며, python len() 메소드 기준으로 500자까지 입력 가능합니다.
- detail: 솔루션의 세부적인 설명을 작성합니다.
- Warning: dict들의 list 타입으로 작성하며, 아래 solution_info 샘플에서 detail의 하위로 들어가는 title, content는 각각 5000bytes 미만으로 작성합니다.
- contents_type: re-train, re-labeling 을 위한 설명
- support_labeling: True인 경우, Edge Conductor 에서 해당 Solution의 Inference Result에 대해 Label Data 기능 활성화.
- Warning: 현재 Mellerikat은 이미지 데이터에 대해서만 Label Data 기능을 지원하므로, AI Solution의 Inference Pipeline은 self.asset.get_output_path() API로 제공 받은 경로에 이미지 파일을 생성하도록 개발되어 있어야 합니다.
- labeling_column_name : Edge Conductor 상에서 Manual Label의 컬럼 명
- inference_result_datatype: Edge Conductor에서 Inference Result를 표시하는 방법으로 'table', 'image' 중에 하나 선택 합니다.
- Note: AI Solution의 Inference Pipeline은 inference_result_datatype에 해당하는 결과 파일을 self.asset.get_output_path() API로 제공 받은 경로에 생성 해야 합니다.
- train_datatype: re-train 에 사용될 데이터 format 결정으로 'table', 'image' 중에 하나 선택.
- Note: EdgeConductor UI상에서 보여질 inferenc result type은 image 인데, 실제 학습될 데이터의 train data type은 table인 경우도 존재할 수 있습니다.
- support_labeling: True인 경우, Edge Conductor 에서 해당 Solution의 Inference Result에 대해 Label Data 기능 활성화.
- train_gpu: True, False 중에 선택. True인 경우, gpu 용 train docker container 제작
- inference_gpu: True, False 중에 선택. True인 경우, gpu 용 inference docker container 제작
- inference_arm: True, False 중에 선택. True인 경우, 추론 환경의 아키텍처가 ARM일 경우의 inference docker container 제작 (False일 경우 AMD 용으로 제작)
- Note:: ARM 빌드는 infra 설정 파일에서 'REMOTE_BUILD': True로 설정했을 때만 지원합니다.
Warning: gpu 관련 기능은 TBD 입니다.
#----------------------------------------#
# AI Solution Spec 작성 #
#----------------------------------------#
solution_info ={
'solution_name': 'my-solution',
'inference_only': False, # True, False
'solution_update': False, # True, False
'overview': "Write an overall description of the AI Solution.",
'detail': [
{'title': 'title001', 'content': 'content001'},
{'title': 'title002', 'content': 'content002'},
],
'contents_type': {
'support_labeling': False, # True, False
'labeling_column_name': 'y_column', # Edge Conductor에서 Labeling 할 데이터의 Column 이름
'inference_result_datatype': 'table', # 'table', 'image'
'train_datatype': 'table' # 'table', 'image'
},
'train_gpu': False, # True, False
'inference_gpu': False, # True, False
"inference_arm": False # True, False
}
AI Conductor 로그인
ALO main.py 경로의 ./setting/infra_config.yaml 작성 및 쥬피터 노트북에서 로그인 id, password 입력이 완료되었다면 아래 cell을 실행하여 로그인을 진행합니다.
import sys
try:
del sys.modules['src.solution_register'], sys.modules['src.constants']
except:
pass
from src.solution_register import SolutionRegister
## set register instance
infra = "./setting/infra_config.yaml"
register = SolutionRegister(infra_setup=infra, solution_info=solution_info)
## login AI Conductor
register.login(username, password)
AI Solution 등록
AI Solution 실행에 사용된 data, code, 종속 python package를 Docker 이미지로 빌드하며 AWS Cloud의 ECR(Elastic Container Registry) 및 S3에 업로드 합니다. Solution 등록 쥬피터 노트북에서 다음의 셀을 실행하여 등록을 진행하세요. Docker build, push 및 sample data를 s3에 등록하는 등의 과정들을 ALO가 자동적으로 진행합니다.
register.run()
AI Conductor 에서 AI Solution 등록 확인
infra 설정 파일에 작성한 AI Conductor URL에 접속하여 로그인 후 AI Solution이 등록되었는지 확인하고, 생성된 Solution Instance를 확인합니다. 이 Solution Instance는 기본 Computing Resource Spec으로 설정되어 있으며, 필요에 따라 AI Solution이 운영되는 환경에 맞게 Resource를 변경할 수 있습니다.