81 lines
2.8 KiB
Python
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')
|
|
|