76 lines
3.1 KiB
Python
76 lines
3.1 KiB
Python
# from clearml import Task
|
|
from clearml.automation import PipelineController
|
|
|
|
# 1. 파이프라인을 트리거하고 모니터링할 메인 Task 초기화
|
|
# 이 Task는 파이프라인의 '컨트롤러(조율자)' 역할을 합니다.
|
|
# task = Task.init(
|
|
# project_name="Git_Pipeline_Demo",
|
|
# task_name="Git_Based_Pipeline_Controller",
|
|
# task_type=Task.TaskTypes.controller
|
|
# )
|
|
if __name__ == '__main__':
|
|
|
|
# 2. 파이프라인 컨트롤러 생성
|
|
# 실행이 완료된 후 파이프라인이 정상 종료되도록 설정합니다.
|
|
pipe = PipelineController(
|
|
name="Git_Data_Processing_Pipeline",
|
|
project="Git_Pipeline_Demo",
|
|
version="1.0.1",
|
|
add_pipeline_tags=True
|
|
)
|
|
|
|
# 각 Step이 실행될 기본 큐 (add_step에 execution_queue를 안 주면 이 값 사용)
|
|
pipe.set_default_execution_queue("default")
|
|
|
|
# 3. Git 정보 정의 (에이전트가 코드를 가져올 저장소 주소)
|
|
# 본인의 Git 환경에 맞게 URL과 브랜치명을 수정하세요.
|
|
GIT_REPO_URL = "git.devcafe.kr/ClearML/task2"
|
|
GIT_BRANCH = "main"
|
|
|
|
# 4. 파이프라인 단계(Step) 추가
|
|
# 각 Step은 에이전트가 Git에서 코드를 Clone한 뒤, 지정한 스크립트를 실행하도록 지시합니다.
|
|
|
|
# [Step 1: 데이터 다운로드 및 전처리]
|
|
# pipe.add_step(
|
|
# name="data_preprocessing",
|
|
# base_task_project="Test_Project",
|
|
# base_task_name="Agent_Execution_Test",
|
|
# # execution_queue="default",
|
|
# # 브랜치만 바꿀 때
|
|
# )
|
|
pipe.add_step(
|
|
name="model_training_test",
|
|
# parents=["data_preprocessing"],
|
|
base_task_project="Normal_Object_Detection",
|
|
base_task_name="model-test",
|
|
|
|
# 브랜치만 바꿀 때
|
|
)
|
|
|
|
|
|
# [Step 2: 모델 학습]
|
|
# data_preprocessing 단계가 성공적으로 끝나야만 실행되도록 종속성(parents)을 설정합니다.
|
|
# pipe.add_step(
|
|
# name="model_training",
|
|
# parents=["data_preprocessing"], # Step 1이 끝나야 실행됨
|
|
# base_task_project="Git_Pipeline_Demo",
|
|
# base_task_name="model_train_template",
|
|
# repo=GIT_REPO_URL,
|
|
# branch=GIT_BRANCH,
|
|
# script="__.py", # 레포지토리 내 학습 스크립트 경로
|
|
# queue="default",
|
|
# # 앞선 Step의 결과물이나 파라미터를 넘겨받을 수 있습니다.
|
|
# parameter_overrides={
|
|
# "General/dataset_path": "${data_preprocessing.artifacts.dataset.url}"
|
|
# }
|
|
# )
|
|
|
|
# 5. 파이프라인 로컬 실행 또는 원격 에이전트에 위임
|
|
# 기본적으로 .start()를 사용하면 로컬에서 파이프라인의 흐름을 제어하고,
|
|
# 실제 각 Step(preprocess.py, train.py)들은 지정된 'default' 큐의 에이전트가 Git에서 받아와 실행합니다.
|
|
# pipe.start(queue="default")
|
|
pipe.start_locally(run_pipeline_steps_locally=True)
|
|
|
|
# 파이프라인이 완전히 종료될 때까지 대기
|
|
# pipe.wait()
|
|
print("파이프라인 실행이 완료되었습니다!") |