Files
pipline_sample/__main__v1.py
T
2026-07-23 17:52:03 +09:00

81 lines
2.8 KiB
Python

from clearml import PipelineController
# ---------------------------------------------------------
# 1. 인라인(Inline) 파이썬 함수 형태의 Step
# (PipelineDecorator.component 대신 순수 함수로 작성 후 Controller에서 래핑)
# ---------------------------------------------------------
def generate_number() -> int:
import random
random.seed(None)
num = random.randint(1, 10)
print(f"Generated number: {num}")
return num
def evaluate_number(num: int) -> str:
if num > 5:
result = 'Max'
else:
result = 'Min'
print(f"Input number {num} is '{result}'.")
return result
# ---------------------------------------------------------
# 2. PipelineController를 이용한 파이프라인 뼈대 생성
# ---------------------------------------------------------
pipe = PipelineController(
name='Test Pipeline v1',
project='My Pipeline Project11',
version='1.1',
repo='https://git.devcafe.kr/ClearML/task1.git',
repo_branch='main',
add_pipeline_tags=False
)
# 기본 실행 큐 설정
pipe.set_default_execution_queue('default')
# ---------------------------------------------------------
# 3. Step 추가: 일반 함수(로컬 로직)와 외부 Git Task(원격 로직) 혼용
# ---------------------------------------------------------
# Step 1: 위에서 정의한 파이썬 함수를 파이프라인 Step으로 추가 (Decorator 역할 대체)
# pipe.add_function_step(
# name='generate_step',
# function=generate_number,
# function_return=['number'],
# )
# # Step 2: Step 1의 결과를 파라미터로 받는 또 다른 함수 Step
# pipe.add_function_step(
# name='evaluate_step',
# function=evaluate_number,
# # Step 1의 출력값(number)을 evaluate_number의 인자(num)로 전달 (템플릿 문법 사용)
# function_kwargs={'num': '${generate_step.number}'},
# function_return=['size_label'],
# parents=['generate_step'], # 의존성: generate_step이 끝나야 실행됨
# )
pipe.add_step(
name='external_git_step',
# parents=['evaluate_step'],
# 여기에 위에서 만든 태스크의 위치를 지정합니다.
base_task_project='Normal_Object_Detection',
base_task_name='model-yolo26-human',
# 파라미터는 똑같이 오버라이드 가능합니다.
parameter_override={
'Args/image_url': "https://acai.ketidev.kr:20443/detect/image/202606/20260619_145116_image.jpg"
}
)
# print(pipe.artifacts['final_result'])
# ---------------------------------------------------------
# 실행 부
# ---------------------------------------------------------
if __name__ == '__main__':
# 로컬에서 실행 테스트
# pipe.start_locally(run_pipeline_steps_locally=True)
# 또는 원격 큐로 전송하여 파이프라인 전체를 원격 실행
pipe.start(queue='default')