๐ ๋จธ์ ๋ฌ๋ ์์คํ ๋์์ธ ํจํด - ๋ค์ํ ๋จธ์ ๋ฌ๋ ์์คํ ๋์์ธ ํจํด์ ๋ํด ์์ฑ๋ ๊ธ์ ๋๋ค - Serving, QA(๋ชจ๋ธ ํ ์คํธ), Training, Operation, Lifecycle ํจํด
๐ ๋จธ์ ๋ฌ๋ ์์คํ ๋์์ธ ํจํด - ๋ค์ํ ๋จธ์ ๋ฌ๋ ์์คํ ๋์์ธ ํจํด์ ๋ํด ์์ฑ๋ ๊ธ์ ๋๋ค - Serving, QA(๋ชจ๋ธ ํ ์คํธ), Training, Operation, Lifecycle ํจํด์ ๋ํด ์์ฑ๋ ๊ธ์ ๋๋ค - ํ๊ตญ์ด๋ก ๋ฒ์ญํ ์๋ฃ๋ผ ๊ด์ฌ ์๋ ๋ถ๋ค์ ๋ณด์๋ฉด ์ ์ตํ ๊ฒ ๊ฐ์ต๋๋ค! - Serving ์ค Synchronous pattern๋ง ์์๋ก ์๋ฌธ์ ๊ฐ์ ธ์ฌ๊ฒ์ :) - Github : https://github.com/mercari/ml-system-design-pattern ๐ ์ด ๊ธ์ ์ถ์ฒํ๋ ์ด์ - ๋จธ์ ๋ฌ๋ ๋ชจ๋ธ ํ๋ฌ๋์ ์ ๊ณ ๋ คํด์ผ ํ๋ ๋ค์ํ ๋์์ธ ํจํด์ ๋ํด ์์ฑ๋์ด ์๋ ์๋ฃ - Serving ํจํด ์์ : ๋ฐฐ์น ํจํด, ๋น๋๊ธฐ ํจํด, ๋๊ธฐ ํจํด, ๋ฐ์ดํฐ ์บ์ฑ ํจํด, ์์ธก ์บ์ฑ ํจํด ๋ฑ๋ฑ - ๊ฐ์ธ์ ์ผ๋ก ๋ดค๋ ๊ธ ์ค(๋์์, ๊ธ ํฌํจ) ์ ์ผ ์ฌ๋ฌ ํจํด์ ์์ฑํ ์ปจํ ์ธ ์ ๋๋ค - ๊ฐ ํจํด์ ๋์ํํด์ ์ ๋ฌํ๊ณ , ์ฅ๋จ์ ๊ณผ ์ธ์ ์ฌ์ฉํ๋ฉด ์ข์์ง ์์ฑ๋์ด ์์ต๋๋ค - ์ํฐ ํจํด๋ ์์ฑ๋์ด ์์ด์, ํผํด์ผ ํ๋ ํจํด์ ์ ์ ์์ต๋๋ค - ํ๊ตญ์ด๋ก ๋ฒ์ญ๋ ์๋ฃ! ๐ ์ฝ์ผ๋ฉด ์ข์ ๋ถ - MLOps์ ๊ด์ฌ์๋ ๋ถ๋ค - ๋จธ์ ๋ฌ๋ ์์คํ ์ ํ๋ฌ๋์ ์ ์ ์ฉํด์ผ ํ๋ ๋ถ๋ค - ๋จธ์ ๋ฌ๋ ์์คํ ํจํด์ ๋ํด ๊ถ๊ธํ์ ๋ถ๋ค ๐ ๋ด์ฉ Serving patterns - ์๋น ํจํด์ ์ค์ ์ด์ ํ๊ฒฝ์์ ๋จธ์ ๋ฌ๋ ๋ชจ๋ธ์ ์ด์ฉํ ์ ์๋๋ก ๋ง๋๋ ํจํด - Web single pattern - Synchronous pattern - Usecase - ๋ค์ ๋จ๊ณ๋ฅผ ์งํํ๊ธฐ ์ํด ์์ธก ๊ฒฐ๊ณผ๋ฅผ ๋ฐ์์ผ ํ๋ ๊ฒฝ์ฐ, ์์ธก ๊ฒฐ๊ณผ์ ๋ฐ๋ผ ์ํฌํ๋ก์ฐ๊ฐ ๋ฌ๋ผ์ง๋ ๊ฒฝ์ฐ - Architecture - ์์ธก์ ๋๊ธฐ์์ผ๋ก ์คํํ ๋ ์ฌ์ฉ - REST ๋๋ GRPC๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ - ๊ฐ๋จํ ์ํฌํ๋ก์ฐ๋ฅผ ์ฌ์ฉํ ์ ์๋ ์ฌ์ด ํจํด - ์ฅ์ - ์ํคํ ์ฒ์ ๋จ์ํจ์ผ๋ก ๊ด๋ฆฌ๊ฐ ์ฌ์ - ์์ธก์ด ์๋ฃ๋ ๋๊น์ง ํ๋ก์ธ์ค๊ฐ ์งํ๋์ง ์์ ์ํฌํ๋ก์ฐ๊ฐ ๋จ์ํด์ง - ๋จ์ - ์์ธก ์๋๊ฐ ๋ณ๋ชฉ ํ์์ด ๋จ - ์์ธก ์ง์ฐ์ผ๋ก ์ฌ์ฉ์ ๊ฒฝํ์ด ์ ํ๋์ง ์๋๋ก ํด๊ฒฐ ๋ฐฉ๋ฒ์ ๊ณ ๋ คํด์ผ ํจ - ๋๋จธ์ง ํจํด์ ๋ํ ์ผ์ ๋ณธ๋ฌธ์ ์ฐธ๊ณ ํ์๋ฉด ์ข์ ๊ฒ ๊ฐ์ต๋๋ค :) - Asynchronous pattern - Batch pattern - Prep-pred pattern - Microservice vertical pattern - Microservice horizontal pattern - Prediction cache pattern - Data cache pattern - Prediction circuit break pattern - Multiple stage prediction pattern - Antipatterns - Online bigsize pattern - All-in-one pattern QA patterns - ๋ชจ๋ธ์ ํ๊ฐํ๊ธฐ ์ํ ํจํด์ ๋๋ค - Shadow AB-testing pattern - Online AB-testing pattern - Loading test pattern - Antipatterns - Offline-only pattern Training patterns - ํ์ต ํ์ดํ๋ผ์ธ์ ๊ตฌ์ฑํ๊ธฐ ์ํ ํจํด์ ๋๋ค. - Batch training pattern - Pipeline training pattern - Parameter and architecture search pattern - Antipatterns - Only-me pattern - Training code in serving pattern - Too many pipes pattern Operation patterns - ML ํ์ต ์์คํ ์ ์ค์ ๊ณผ ๋ก๊น , ๋ชจ๋ํฐ๋ง, ์๋ ์์คํ ์ ์ํ ์ด์ ํจํด์ ๋๋ค. - Model-in-image pattern - Model-load pattern - Data model versioning pattern - Prediction log pattern - Prediction monitoring pattern -Parameter-based serving pattern - Condition-based-serving pattern - Antipatterns - No logging pattern - Nobody knows pattern Lifecycle patterns - ์ค์ ์ด์์ ์ํ ML ์์คํ ์ ๊ตฌ์ฑํ๊ธฐ ์ํด ์ฌ๋ฌ ํจํด๋ค์ ์กฐํฉํ ํจํด์ ๋๋ค - Train-then-serve pattern - Training-to-serving pattern