# 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("파이프라인 실행이 완료되었습니다!")