Skip to main content
Version: 1.3

Piepline

๊ฐœ์š”#

๋ฐ์ดํ„ฐ๋ถ€ํ„ฐ ML ์ž‘์—…ํ•˜๊ณ  ์„œ๋น™ํ•˜๋Š” ๊ฒƒ๊นŒ์ง€ ์ผ๋ จ์˜ ๊ณผ์ •๋“ค์ด ๋ฐ˜๋ณต๋œ๋‹ค๋ฉด, ๋ฐ˜๋ณต๋˜๋Š” ๊ณผ์ •๋“ค์„ ์›Œํฌํ”Œ๋กœ์šฐ๋กœ ์ •์˜ํ•˜๊ณ  ์ž๋™ํ™”ํ•˜์—ฌ ๋ชจ๋ธ ๊ฐœ๋ฐœ์ž๋กœ ํ•˜์—ฌ๊ธˆ ์ข€ ๋” ๋ชจ๋ธ ๊ฐœ๋ฐœ์— ์ง‘์ค‘ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ฃผ๋Š” ๊ธฐ๋Šฅ์ž…๋‹ˆ๋‹ค.

Pipeline ํ™ˆ ํ™”๋ฉด#

pipeline_home

Pipeline Graph#

๋ฏธ๋ฆฌ ์ •์˜๋œ Pipeline์˜ ๊ตฌ์กฐ๋ฅผ ๊ทธ๋ž˜ํ”„ ํ˜•ํƒœ๋กœ ๋ณผ ์ˆ˜ ์žˆ์–ด ์‹œ๊ฐ์ ์œผ๋กœ ํŒŒ์•…ํ•˜๊ธฐ ๋งค์šฐ ์‰ฝ์Šต๋‹ˆ๋‹ค.
pipeline_graph
๊ทธ๋ž˜ํ”„ ๊ฐ ๋…ธ๋“œ๋ฅผ ๋ˆ„๋ฅด๋ฉด python ์ฝ”๋“œ๋‚˜ ์ด๋ฏธ์ง€ ๋“ฑ ํ•ด๋‹น ๋…ธ๋“œ์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ํ™•์ธํ•˜์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
pipeline_code

Pipeline Yaml#

๊ทธ๋ž˜ํ”„ ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ Yaml ํ˜•ํƒœ๋กœ Pipeline ์ •์˜๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
pipeline_yaml

Pipeline ์—…๋กœ๋“œ#

์‚ฌ์šฉ์ž๊ฐ€ ์ง์ ‘ ์ •์˜ํ•œ Pipeline์„ ์‚ฌ์šฉํ•˜๊ณ  ์‹ถ์œผ๋ฉด ๋กœ์ปฌ์—์„œ ์ •์˜ํ•œ ํ›„์—, ์šฐ์ธก ์ƒ๋‹จ์— Uplaod Pipeline ๋ฒ„ํŠผ์„ ๋ˆŒ๋Ÿฌ ํŒŒ์ผ์„ ์—…๋กœ๋“œํ•˜์—ฌ ์ƒˆ๋กœ์šด Pipeline์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.
pipeline_upload

Pipeline ์‹คํ–‰ ๋‹จ๊ณ„#

Pipeline์€ ๋‹จ์ˆœํžˆ ML workflow๋ฅผ ์ •์˜ํ•œ ๊ฒƒ์ด๊ณ  ์ด๋ฅผ ์‹คํ–‰์‹œํ‚ค๋ ค๋ฉด Experiment์™€ Run์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์—ฐ๊ตฌ์‹ค ์•ˆ์—์„œ ์—ฐ๊ตฌ๊ฐ€ ์ง„ํ–‰๋˜๋“ฏ์ด, Experiments๋ฅผ ์ƒ์„ฑํ•˜๋ฉด ๊ทธ Experiment๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ Run์„ ์ƒ์„ฑํ•˜์—ฌ ML workflow๋ฅผ ์‹คํ–‰์‹œํ‚ต๋‹ˆ๋‹ค.

Experiment ์ƒ์„ฑ#

์šฐ์ธก ์ƒ๋‹จ์— Create experiment ๋ฒ„ํŠผ์„ ํด๋ฆญ ํ›„ Experiment ์ด๋ฆ„๊ณผ ์„ค๋ช…์„ ์ž…๋ ฅํ•˜๊ณ  ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.
pipeline_create_exp
example์ด๋ผ๋Š” Experiment๊ฐ€ ์ƒ๊ธด ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
pipeline_exp_list

Run ์ƒ์„ฑ ๋ฐ ์กฐํšŒ#

์ƒ์„ฑํ•œ Experiment๋ฅผ ํด๋ฆญํ•ด์„œ ์•ˆ์œผ๋กœ ๋“ค์–ด์˜ค๋ฉด, ์„ ํƒํ•œ Experiment์— ๋Œ€ํ•œ Run์„ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
pipeline_run_button
Pipeline ๋“ฑ ํ•„์š”ํ•œ ์ •๋ณด๋ฅผ ์„ ํƒํ•œ ๋’ค Start ๋ฒ„ํŠผ์„ ๋ˆŒ๋Ÿฌ Run์„ ๋ฐ”๋กœ ์‹คํ–‰์‹œํ‚ต๋‹ˆ๋‹ค.
pipeline_create_run ์ •์ƒ์ ์œผ๋กœ ์ƒ์„ฑ๋˜๋ฉด Experiments๋‚˜ Run ํ•ญ๋ชฉ์—์„œ ์ƒ์„ฑ๋œ Run์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
pipeline_run_list
์ƒ์„ฑํ•œ Run์„ ํด๋ฆญํ•˜์—ฌ ํ•ด๋‹น Run์— ๋Œ€ํ•œ ์ง„ํ–‰์‚ฌํ•ญ ๋“ฑ์˜ ์ž์„ธํ•œ ์ •๋ณด๋ฅผ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
pipeline_run_result
Pipeline ๊ทธ๋ž˜ํ”„์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์„ฑ๊ณตํ•œ ๋…ธ๋“œ, ํ˜น์€ ์‹คํŒจํ•œ ๋…ธ๋“œ๋ฅผ ํด๋ฆญํ•˜์—ฌ ํ•ด๋‹น ๋…ธ๋“œ์˜ output, log ๋“ฑ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
pipeline_fail_logs

Run retry#

์ƒ์„ฑํ–ˆ๋˜ Run์„ ๊ทธ๋Œ€๋กœ ์žฌ์‹œ๋„๋ฅผ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์šฐ์ธก ์ƒ๋‹จ์— Retry ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๋ฉด ํ˜„์žฌ Run์„ ๋‹ค์‹œ ์‹คํ–‰์‹œ์ผœ ์ค๋‹ˆ๋‹ค.
pipeline_run_retry_button

Run clone run#

์ด๋ฒˆ์—” ์ƒ์„ฑํ–ˆ๋˜ Run์„ ๋ณต์‚ฌํ•ด์„œ ์žฌ์‹คํ–‰์‹œํ‚ต๋‹ˆ๋‹ค. ์šฐ์ธก ์ƒ๋‹จ์— Clone run ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๋ฉด Run ์ƒ์„ฑํ™”๋ฉด์œผ๋กœ ๋„˜์–ด๊ฐ‘๋‹ˆ๋‹ค.
pipeline_clone_run_button
์ฒ˜์Œ Run ์ƒ์„ฑ์‹œํ‚ค๋“ฏ์ด ํ•„์š”ํ•œ ์ •๋ณด๋ฅผ ์ž…๋ ฅ ๋ฐ ์ˆ˜์ •ํ•œ ํ›„ Start ๋ฒ„ํŠผ์„ ๋ˆŒ๋Ÿฌ ์‹คํ–‰์‹œ์ผœ์ค๋‹ˆ๋‹ค.
pipeline_clone_run_detail
์ •์ƒ์ ์œผ๋กœ ์ƒ์„ฑ๋๋‹ค๋ฉด ์•„๋ž˜์™€ ๊ฐ™์ด ์ƒˆ๋กœ์šด Run์ด ์ƒ์„ฑ๋˜๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
pipeline_clone_run_list

Run recurring#

์ง€๊ธˆ๊นŒ์ง€์˜ Run๋“ค์€ ํ•œ๋ฒˆ ์‹คํ–‰ ํ›„ ๋‹ค ๋๋‚˜๋ฉด ๋ฐ”๋กœ ์ข…๋ฃŒ๋์—ˆ์ง€๋งŒ, recurring ๋ชจ๋“œ๋กœ Run์„ ์‹คํ–‰์‹œํ‚ค๋ฉด ์‚ฌ์šฉ์ž๊ฐ€ ์„ค์ •์— ๋”ฐ๋ผ ์ฃผ๊ธฐ์ ์œผ๋กœ ๋˜‘๊ฐ™์€ Run์„ ์ž๋™์œผ๋กœ ์‹คํ–‰์‹œ์ผœ ์ค๋‹ˆ๋‹ค. ์ฃผ๊ธฐ์ ์œผ๋กœ ์‹คํ–‰๋˜์–ด์•ผ ํ•  ML workflow๊ฐ€ ์žˆ๋‹ค๋ฉด recurring Run ์‚ฌ์šฉ์„ ๊ถŒ์žฅ๋“œ๋ฆฝ๋‹ˆ๋‹ค.

Recurring run ์ƒ์„ฑ#

Recurring Runs ํ•ญ๋ชฉ์—์„œ ์šฐ์ธก ์ƒ๋‹จ์— Create run ๋ฒ„ํŠผ์„ ๋ˆ„๋ฆ…๋‹ˆ๋‹ค.
pipeline_recurring_button
์ผ๋ฐ˜ Run ์ƒ์„ฑํ•  ๋•Œ์™€ ๊ฐ™์€ ํ™”๋ฉด์ด์ง€๋งŒ Run Type์„ Recurring์œผ๋กœ ์„ ํƒํ•˜๋ฉด ๋” ํ•„์š”ํ•œ ์˜ต์…˜์ด ๋ณด์ž…๋‹ˆ๋‹ค. ์˜ต์…˜์„ ๋‹ค ์ž…๋ ฅํ•˜๊ณ  ๋งจ ๋ฐ‘์— Start ๋ฒ„ํŠผ์„ ๋ˆŒ๋Ÿฌ recurring run์„ ์‹คํ–‰์‹œํ‚ต๋‹ˆ๋‹ค.
pipeline_create_recurring
์ •์ƒ์ ์œผ๋กœ ์ƒ์„ฑ๋˜๋ฉด ํ•œ ๊ฐœ์˜ Recurring run์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
pipeline_recurring_list
๊ทธ๋ฆฌ๊ณ  ์‹คํ–‰ ์ค‘์ธ Run๋“ค์„ ์‚ดํŽด๋ณด๋ฉด 1๋ถ„๋งˆ๋‹ค recurring run์ด ์‹คํ–‰๋˜๊ณ  ์žˆ๋Š” ๊ฑธ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
pipeline_run_list2

Recurring run disable#

recurring run์€ ๋”ฐ๋กœ ์•ก์…˜์„ ์ทจํ•˜์ง€ ์•Š์œผ๋ฉด ๊ณ„์† ๋ฐ˜๋ณต ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค. ๋งŒ์•ฝ recurring run์„ ๋ฉˆ์ถ”๊ณ  ์‹ถ์œผ๋ฉด disabling ํ•˜์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค. ์šฐ์„ , Recurring Runs ํ•ญ๋ชฉ์— ์ทจ์†Œํ•˜๊ณ  ์‹ถ์€ recurring run์„ ์„ ํƒํ•˜์‹  ํ›„ ์šฐ์ธก ์ƒ๋‹จ์— Disable ๋ฒ„ํŠผ์„ ๋ˆŒ๋Ÿฌ์ค๋‹ˆ๋‹ค.
pipeline_recurring_disable_button
์ •์ƒ์ ์œผ๋กœ Disable์ด ์ ์šฉ๋˜๋ฉด recurring run์˜ Status๊ฐ€ Disabled๋กœ ๋ฐ”๋€Œ๋ฉฐ, ์ด์ œ ๋” ์ด์ƒ run์„ ๋ฐ˜๋ณต ์‹คํ–‰ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
pipeline_recurring_disable

Run ์‚ญ์ œ#

๋” ์ด์ƒ ํ•„์š”์—†๋Š” Run์€ ์‚ญ์ œ๋  ์ˆ˜ ์žˆ๋Š”๋ฐ, ๋ฐ”๋กœ ์‚ญ์ œํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹Œ ์ฒ˜์Œ์—” Archive๋ฅผ ํ•ฉ๋‹ˆ๋‹ค.
pipeline_run_archive_button
์™„์ „ ์‚ญ์ œ๋˜๊ธฐ ์ „์— ์“ฐ๋ ˆ๊ธฐํ†ต์— ๋ชจ์—ฌ์žˆ๊ณ , ๊ฑฐ๊ธฐ์„œ ๋ณต๊ตฌ ๋˜๋Š” ์™„์ „ ์‚ญ์ œํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ, Archive๊ฐ€ ๋˜๋ฉด Archived์— ๋ณด๊ด€๋˜๊ณ  Archived์— ์žˆ๋Š” Run๋“ค์„ ๋ณต๊ตฌํ•˜๊ณ  ์‹ถ์œผ๋ฉด Restore ๋ฒ„ํŠผ์„, ์™„์ „ ์‚ญ์ œํ•˜๊ณ  ์‹ถ์œผ๋ฉด Delete ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค.
pipeline_run_delete_button

Artifacts#

Pipeline๋„ ๊ฒฐ๊ตญ container๋กœ ์‹คํ–‰๋˜๊ธฐ ๋•Œ๋ฌธ์—, container๊ฐ€ ์ข…๋ฃŒ๋˜์„œ ์—†์–ด์ง€๋ฉด ์ •๋ณด๋„ ๊ฐ™์ด ์—†์–ด์ง€๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋ณด์ด๊ณ  ์‹ถ์€ ์ •๋ณด, Pipeline์˜ ๊ฒฐ๊ณผ๋ฌผ์„ ๋‚จ๊ธฐ๊ณ  ์‹ถ์œผ๋ฉด Pipeline ์ •์˜ํ•  ๋•Œ ์ฝ”๋“œ๋กœ ์„ค์ •ํ•˜๋ฉด ๋˜๊ณ  ๊ทธ์— ๋Œ€ํ•œ ๊ฒฐ๊ณผ๋ฌผ๋“ค์ด Artifacts์— ์ €์žฅ๋ฉ๋‹ˆ๋‹ค.
pipeline_artifacts

Executions#

Run์œผ๋กœ ์‹คํ–‰์‹œ์ผฐ๋˜ workflow๋“ค์ด ๊ธฐ๋ก๋˜๋Š” ๊ณณ์ž…๋‹ˆ๋‹ค. Pipeline ์ •๋ณด์™€ Artifacts ์ •๋ณด๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.
pipeline_executions