MLOps - แƒ›แƒ–แƒแƒ แƒ”แƒฃแƒšแƒ˜แƒก แƒฌแƒ˜แƒ’แƒœแƒ˜, แƒ—แƒแƒ•แƒ˜ 1

MLOps - แƒ›แƒ–แƒแƒ แƒ”แƒฃแƒšแƒ˜แƒก แƒฌแƒ˜แƒ’แƒœแƒ˜, แƒ—แƒแƒ•แƒ˜ 1

แฒกแƒแƒšแƒแƒ›แƒ˜ แƒงแƒ•แƒ”แƒšแƒแƒก! แƒ›แƒ” แƒ•แƒแƒ  CV แƒ“แƒ”แƒ•แƒ”แƒšแƒแƒžแƒ”แƒ แƒ˜ CROC-แƒจแƒ˜. แƒฃแƒ™แƒ•แƒ” 3 แƒฌแƒ”แƒšแƒ˜แƒ แƒ•แƒแƒฎแƒแƒ แƒชแƒ˜แƒ”แƒšแƒ”แƒ‘แƒ— แƒžแƒ แƒแƒ”แƒฅแƒขแƒ”แƒ‘แƒก CV-แƒ˜แƒก แƒ›แƒ˜แƒ›แƒแƒ แƒ—แƒฃแƒšแƒ”แƒ‘แƒ˜แƒ—. แƒแƒ› แƒฎแƒœแƒ˜แƒก แƒ’แƒแƒœแƒ›แƒแƒ•แƒšแƒแƒ‘แƒแƒจแƒ˜ แƒฉแƒ•แƒ”แƒœ แƒ‘แƒ”แƒ•แƒ แƒ˜ แƒ แƒแƒ› แƒ’แƒแƒ•แƒแƒ™แƒ”แƒ—แƒ”แƒ—, แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒแƒ“: แƒ•แƒแƒ™แƒ•แƒ˜แƒ แƒ“แƒ”แƒ‘แƒแƒ“แƒ˜แƒ— แƒ›แƒซแƒฆแƒแƒšแƒ”แƒ‘แƒก แƒ˜แƒกแƒ”, แƒ แƒแƒ› แƒ›แƒแƒ แƒ—แƒ•แƒ˜แƒก แƒ“แƒ แƒแƒก แƒแƒ  แƒ”แƒฌแƒ”แƒแƒ“แƒœแƒ”แƒœ, แƒแƒ  แƒ”แƒฌแƒ”แƒแƒ“แƒœแƒ”แƒœ, แƒแƒ  แƒ”แƒšแƒแƒžแƒแƒ แƒแƒ™แƒ”แƒ‘แƒแƒ“แƒœแƒ”แƒœ แƒขแƒ”แƒšแƒ”แƒคแƒแƒœแƒ–แƒ”, แƒฃแƒงแƒฃแƒ แƒ”แƒ‘แƒ“แƒœแƒ”แƒœ แƒ’แƒ–แƒแƒก แƒ“แƒ แƒแƒ แƒ แƒกแƒ˜แƒ–แƒ›แƒ แƒ”แƒ‘แƒก แƒแƒœ แƒฆแƒ แƒฃแƒ‘แƒšแƒ”แƒ‘แƒก. ; แƒฉแƒ•แƒ”แƒœ แƒฉแƒแƒ•แƒฌแƒ”แƒ แƒ”แƒ— แƒแƒ“แƒแƒ›แƒ˜แƒแƒœแƒ”แƒ‘แƒ˜, แƒ แƒแƒ›แƒšแƒ”แƒ‘แƒ˜แƒช แƒ’แƒแƒ“แƒแƒแƒ“แƒ’แƒ˜แƒšแƒ“แƒ”แƒ‘แƒ˜แƒแƒœ แƒกแƒžแƒ”แƒชแƒ˜แƒแƒšแƒฃแƒ  แƒ–แƒแƒšแƒจแƒ˜ แƒ“แƒ แƒ˜แƒ™แƒแƒ•แƒ”แƒ‘แƒ”แƒœ แƒ แƒแƒ›แƒ“แƒ”แƒœแƒ˜แƒ›แƒ” แƒžแƒแƒ แƒ™แƒ˜แƒ แƒ”แƒ‘แƒ˜แƒก แƒแƒ“แƒ’แƒ˜แƒšแƒก; แƒฃแƒ–แƒ แƒฃแƒœแƒ•แƒ”แƒšแƒงแƒแƒคแƒ“แƒ, แƒ แƒแƒ› แƒ›แƒฃแƒจแƒ”แƒ‘แƒก แƒ”แƒชแƒ•แƒแƒ— แƒฉแƒแƒคแƒฎแƒฃแƒขแƒ˜, แƒฎแƒ”แƒšแƒ—แƒแƒ—แƒ›แƒแƒœแƒ”แƒ‘แƒ˜ แƒ“แƒ แƒ.แƒจ. แƒ“แƒแƒแƒ“แƒ’แƒ˜แƒœแƒ แƒ—แƒแƒœแƒแƒ›แƒจแƒ แƒแƒ›แƒ”แƒšแƒ˜, แƒ แƒแƒ›แƒ”แƒšแƒกแƒแƒช แƒกแƒฃแƒ แƒก แƒ“แƒแƒฌแƒ”แƒกแƒ”แƒ‘แƒฃแƒšแƒ”แƒ‘แƒแƒจแƒ˜ แƒจแƒ”แƒกแƒ•แƒšแƒ; แƒงแƒ•แƒ”แƒšแƒแƒคแƒ”แƒ แƒ˜ แƒ“แƒแƒ•แƒ—แƒ•แƒแƒšแƒ”แƒ—, แƒ แƒแƒช แƒจแƒ”แƒ’แƒ•แƒ”แƒซแƒšแƒ.

แƒ แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก แƒ•แƒแƒ™แƒ”แƒ—แƒ”แƒ‘ แƒแƒ› แƒงแƒ•แƒ”แƒšแƒแƒคแƒ”แƒ แƒก?

แƒžแƒ แƒแƒ”แƒฅแƒขแƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒœแƒฎแƒแƒ แƒชแƒ˜แƒ”แƒšแƒ”แƒ‘แƒ˜แƒก แƒžแƒ แƒแƒชแƒ”แƒกแƒจแƒ˜ แƒ•แƒฎแƒ•แƒ“แƒ”แƒ‘แƒ˜แƒ— แƒ›แƒฃแƒฌแƒฃแƒ™แƒ”แƒ‘แƒก, แƒ‘แƒ”แƒ•แƒ  แƒ›แƒฃแƒฌแƒฃแƒ™แƒก, แƒ–แƒแƒ’แƒ˜แƒ”แƒ แƒ— แƒžแƒ แƒแƒ‘แƒšแƒ”แƒ›แƒแƒก แƒแƒœ แƒ˜แƒชแƒœแƒแƒ‘แƒ— แƒแƒœ แƒ›แƒแƒ›แƒแƒ•แƒแƒšแƒจแƒ˜ แƒ’แƒแƒ”แƒชแƒœแƒแƒ‘แƒ˜แƒ—.

แƒ›แƒแƒ“แƒ˜แƒ— แƒกแƒ˜แƒขแƒฃแƒแƒชแƒ˜แƒ˜แƒก แƒกแƒ˜แƒ›แƒฃแƒšแƒแƒชแƒ˜แƒ

แƒฌแƒแƒ แƒ›แƒแƒ•แƒ˜แƒ“แƒ’แƒ˜แƒœแƒแƒ—, แƒ แƒแƒ› แƒฉแƒ•แƒ”แƒœ แƒ›แƒ˜แƒ•แƒ˜แƒฆแƒ”แƒ— แƒกแƒแƒ›แƒฃแƒจแƒแƒ แƒแƒฎแƒแƒšแƒ’แƒแƒ–แƒ แƒ“แƒ แƒ™แƒแƒ›แƒžแƒแƒœแƒ˜แƒ "N"-แƒจแƒ˜, แƒ แƒแƒ›แƒšแƒ˜แƒก แƒกแƒแƒฅแƒ›แƒ˜แƒแƒœแƒแƒ‘แƒแƒช แƒ“แƒแƒ™แƒแƒ•แƒจแƒ˜แƒ แƒ”แƒ‘แƒฃแƒšแƒ˜แƒ ML-แƒ—แƒแƒœ. แƒฉแƒ•แƒ”แƒœ แƒ•แƒ›แƒฃแƒจแƒแƒแƒ‘แƒ— ML (DL, CV) แƒžแƒ แƒแƒ”แƒฅแƒขแƒ–แƒ”, แƒจแƒ”แƒ›แƒ“แƒ”แƒ’ แƒ แƒแƒขแƒแƒ›แƒฆแƒแƒช แƒ’แƒแƒ“แƒแƒ•แƒ“แƒ˜แƒ•แƒแƒ แƒ— แƒกแƒฎแƒ•แƒ แƒกแƒแƒ›แƒฃแƒจแƒแƒแƒ–แƒ”, แƒ–แƒแƒ’แƒแƒ“แƒแƒ“ แƒ•แƒ˜แƒกแƒ•แƒ”แƒœแƒ”แƒ‘แƒ— แƒ“แƒ แƒ•แƒฃแƒ‘แƒ แƒฃแƒœแƒ“แƒ”แƒ‘แƒ˜แƒ— แƒกแƒแƒ™แƒฃแƒ—แƒแƒ  แƒแƒœ แƒกแƒฎแƒ•แƒ˜แƒก แƒœแƒ”แƒ˜แƒ แƒแƒœแƒก.

  1. แƒ“แƒ’แƒ”แƒ‘แƒ แƒกแƒ˜แƒ›แƒแƒ แƒ—แƒšแƒ˜แƒก แƒ›แƒแƒ›แƒ”แƒœแƒขแƒ˜, แƒ แƒแƒ’แƒแƒ แƒ›แƒ” แƒฃแƒœแƒ“แƒ แƒ“แƒแƒ˜แƒ›แƒแƒฎแƒกแƒแƒ•แƒ แƒแƒ— แƒกแƒแƒ“ แƒ’แƒแƒฉแƒ”แƒ แƒ“แƒ˜แƒ—, แƒ แƒ แƒฐแƒ˜แƒžแƒ”แƒ แƒžแƒแƒ แƒแƒ›แƒ”แƒขแƒ แƒ”แƒ‘แƒ˜ แƒกแƒชแƒแƒ“แƒ”แƒ— แƒ“แƒ, แƒ แƒแƒช แƒ›แƒ—แƒแƒ•แƒแƒ แƒ˜แƒ, แƒ แƒ แƒจแƒ”แƒ“แƒ”แƒ’แƒแƒ›แƒ“แƒ” แƒ›แƒ˜แƒ’แƒ˜แƒงแƒ•แƒแƒœแƒแƒ—. แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒแƒ แƒกแƒ”แƒ‘แƒแƒ‘แƒ“แƒ”แƒก แƒ›แƒ แƒแƒ•แƒแƒšแƒ˜ แƒ•แƒแƒ แƒ˜แƒแƒœแƒขแƒ˜, แƒ—แƒฃ แƒ•แƒ˜แƒœ แƒ˜แƒœแƒแƒฎแƒแƒ•แƒ“แƒ แƒ˜แƒœแƒคแƒแƒ แƒ›แƒแƒชแƒ˜แƒแƒก แƒงแƒ•แƒ”แƒšแƒ แƒ’แƒแƒจแƒ•แƒ”แƒ‘แƒแƒ–แƒ”: แƒ—แƒแƒ•แƒจแƒ˜, แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒแƒจแƒ˜, แƒœแƒแƒฃแƒ—แƒจแƒ˜, แƒฆแƒ แƒฃแƒ‘แƒ”แƒšแƒจแƒ˜ แƒกแƒแƒ›แƒฃแƒจแƒแƒ แƒ’แƒแƒ แƒ”แƒ›แƒแƒจแƒ˜. แƒ›แƒ” แƒจแƒ”แƒ›แƒ—แƒฎแƒ•แƒ”แƒ•แƒ˜แƒ— แƒ•แƒœแƒแƒฎแƒ” แƒ•แƒแƒ แƒ˜แƒแƒœแƒขแƒ˜, แƒ แƒแƒ“แƒ”แƒกแƒแƒช แƒฐแƒ˜แƒžแƒ”แƒ แƒžแƒแƒ แƒแƒ›แƒ”แƒขแƒ แƒ”แƒ‘แƒ˜ แƒ˜แƒœแƒแƒฎแƒ”แƒ‘แƒแƒ“แƒ แƒ™แƒแƒ›แƒ”แƒœแƒขแƒ˜แƒ แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒฎแƒแƒ–แƒ”แƒ‘แƒ˜แƒก แƒกแƒแƒฎแƒ˜แƒ— แƒ™แƒแƒ“แƒจแƒ˜, แƒ–แƒแƒ’แƒแƒ“แƒแƒ“, แƒคแƒแƒœแƒขแƒแƒ–แƒ˜แƒ˜แƒก แƒคแƒ แƒ”แƒœแƒ. แƒแƒฎแƒšแƒ แƒฌแƒแƒ แƒ›แƒแƒ˜แƒ“แƒ’แƒ˜แƒœแƒ”แƒ—, แƒ แƒแƒ› แƒ—แƒฅแƒ•แƒ”แƒœ แƒ“แƒแƒ‘แƒ แƒฃแƒœแƒ“แƒ˜แƒ— แƒแƒ แƒ แƒ—แƒฅแƒ•แƒ”แƒœแƒก แƒžแƒ แƒแƒ”แƒฅแƒขแƒจแƒ˜, แƒแƒ แƒแƒ›แƒ”แƒ“ แƒ˜แƒ› แƒแƒ“แƒแƒ›แƒ˜แƒแƒœแƒ˜แƒก แƒžแƒ แƒแƒ”แƒฅแƒขแƒจแƒ˜, แƒ แƒแƒ›แƒ”แƒšแƒ›แƒแƒช แƒ“แƒแƒขแƒแƒ•แƒ แƒ™แƒแƒ›แƒžแƒแƒœแƒ˜แƒ แƒ“แƒ แƒ—แƒฅแƒ•แƒ”แƒœ แƒ›แƒ”แƒ›แƒ™แƒ•แƒ˜แƒ“แƒ แƒ”แƒแƒ‘แƒ˜แƒ— แƒ›แƒ˜แƒ˜แƒฆแƒ”แƒ— แƒ™แƒแƒ“แƒ˜ แƒ“แƒ แƒ›แƒแƒ“แƒ”แƒšแƒ˜ แƒกแƒแƒฎแƒ”แƒšแƒแƒ“ model_1.pb. แƒกแƒฃแƒ แƒแƒ—แƒ˜แƒก แƒ“แƒแƒกแƒแƒกแƒ แƒฃแƒšแƒ”แƒ‘แƒšแƒแƒ“ แƒ“แƒ แƒ›แƒ—แƒ”แƒšแƒ˜ แƒขแƒ™แƒ˜แƒ•แƒ˜แƒšแƒ˜แƒก แƒ’แƒแƒ“แƒ›แƒแƒกแƒแƒชแƒ”แƒ›แƒแƒ“, แƒฌแƒแƒ แƒ›แƒแƒ•แƒ˜แƒ“แƒ’แƒ˜แƒœแƒแƒ—, แƒ แƒแƒ› แƒ—แƒฅแƒ•แƒ”แƒœแƒช แƒ“แƒแƒ›แƒฌแƒงแƒ”แƒ‘แƒ˜ แƒกแƒžแƒ”แƒชแƒ˜แƒแƒšแƒ˜แƒกแƒขแƒ˜ แƒฎแƒแƒ แƒ—.
  2. แฒ’แƒแƒœแƒแƒ’แƒ แƒซแƒ”. แƒ™แƒแƒ“แƒ˜แƒก แƒ’แƒแƒกแƒแƒจแƒ•แƒ”แƒ‘แƒแƒ“ แƒฉแƒ•แƒ”แƒœ แƒ“แƒ แƒงแƒ•แƒ”แƒšแƒแƒ›, แƒ•แƒ˜แƒœแƒช แƒ›แƒแƒกแƒ—แƒแƒœ แƒ•แƒ˜แƒ›แƒฃแƒจแƒแƒ•แƒ”แƒ‘แƒ—, แƒฃแƒœแƒ“แƒ แƒจแƒ”แƒ•แƒฅแƒ›แƒœแƒแƒ— แƒ’แƒแƒ แƒ”แƒ›แƒ. แƒฎแƒจแƒ˜แƒ แƒแƒ“ แƒฎแƒ“แƒ”แƒ‘แƒ, แƒ แƒแƒ› แƒ แƒแƒขแƒแƒ›แƒฆแƒแƒช แƒแƒ  แƒ“แƒแƒ’แƒ•แƒ˜แƒขแƒแƒ•แƒ”แƒก แƒ›แƒ”แƒ›แƒ™แƒ•แƒ˜แƒ“แƒ แƒ”แƒแƒ‘แƒแƒ“. แƒ”แƒก แƒแƒกแƒ”แƒ•แƒ” แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒ’แƒแƒฎแƒ“แƒ”แƒก แƒแƒ แƒแƒขแƒ แƒ˜แƒ•แƒ˜แƒแƒšแƒฃแƒ แƒ˜ แƒแƒ›แƒแƒชแƒแƒœแƒ. แƒแƒ  แƒ’แƒ˜แƒœแƒ“แƒ แƒแƒ› แƒœแƒแƒ‘แƒ˜แƒฏแƒ–แƒ” แƒ“แƒ แƒแƒ˜แƒก แƒ“แƒแƒ™แƒแƒ แƒ’แƒ•แƒ, แƒแƒ แƒ?
  3. แƒ•แƒแƒ›แƒ–แƒแƒ“แƒ”แƒ‘แƒ— แƒ›แƒแƒ“แƒ”แƒšแƒก (แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒแƒ“, แƒ›แƒแƒœแƒฅแƒแƒœแƒ˜แƒก แƒ“แƒ”แƒขแƒ”แƒฅแƒขแƒแƒ แƒก). แƒฉแƒ•แƒ”แƒœ แƒ›แƒ˜แƒ•แƒ“แƒ˜แƒ•แƒแƒ แƒ— แƒ˜แƒฅแƒแƒ›แƒ“แƒ”, แƒ แƒแƒ› แƒ”แƒก แƒฎแƒ“แƒ”แƒ‘แƒ แƒซแƒแƒšแƒ˜แƒแƒœ แƒ™แƒแƒ แƒ’แƒ˜ - แƒ“แƒ แƒแƒ แƒ’แƒแƒ“แƒแƒ•แƒแƒ แƒฉแƒ˜แƒœแƒแƒ— แƒจแƒ”แƒ“แƒ”แƒ’แƒ˜. แƒ›แƒแƒ“แƒ˜แƒ— แƒ•แƒฃแƒฌแƒแƒ“แƒแƒ— แƒ›แƒแƒก car_detection_v1.pb. แƒจแƒ”แƒ›แƒ“แƒ”แƒ’ แƒ•แƒแƒ•แƒแƒ แƒฏแƒ˜แƒจแƒ”แƒ‘แƒ— แƒ›แƒ”แƒแƒ แƒ”แƒก - car_detection_v2.pb. แƒ’แƒแƒ แƒ™แƒ•แƒ”แƒฃแƒšแƒ˜ แƒžแƒ”แƒ แƒ˜แƒแƒ“แƒ˜แƒก แƒจแƒ”แƒ›แƒ“แƒ”แƒ’, แƒฉแƒ•แƒ”แƒœแƒ˜ แƒ™แƒแƒšแƒ”แƒ’แƒ”แƒ‘แƒ˜ แƒแƒœ แƒฉแƒ•แƒ”แƒœ แƒ—แƒ•แƒ˜แƒ—แƒแƒœ แƒ•แƒแƒกแƒฌแƒแƒ•แƒšแƒ˜แƒ— แƒกแƒฃแƒš แƒฃแƒคแƒ แƒ แƒ›แƒ”แƒขแƒก, แƒกแƒฎแƒ•แƒแƒ“แƒแƒกแƒฎแƒ•แƒ แƒแƒ แƒฅแƒ˜แƒขแƒ”แƒฅแƒขแƒฃแƒ แƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒ—. แƒจแƒ”แƒ“แƒ”แƒ’แƒแƒ“, แƒ˜แƒฅแƒ›แƒœแƒ”แƒ‘แƒ แƒแƒ แƒขแƒ”แƒคแƒแƒฅแƒขแƒ”แƒ‘แƒ˜แƒก แƒ—แƒแƒ˜แƒ’แƒฃแƒšแƒ˜, แƒ แƒแƒ›แƒ”แƒšแƒ—แƒ แƒจแƒ”แƒกแƒแƒฎแƒ”แƒ‘ แƒ˜แƒœแƒคแƒแƒ แƒ›แƒแƒชแƒ˜แƒ แƒฃแƒœแƒ“แƒ แƒจแƒ”แƒ’แƒ แƒแƒ•แƒ“แƒ”แƒก แƒฃแƒ›แƒขแƒ™แƒ˜แƒ•แƒœแƒ”แƒฃแƒšแƒแƒ“ (แƒ›แƒแƒ’แƒ แƒแƒ› แƒแƒ›แƒแƒก แƒ›แƒแƒ’แƒ•แƒ˜แƒแƒœแƒ”แƒ‘แƒ˜แƒ— แƒ’แƒแƒ•แƒแƒ™แƒ”แƒ—แƒ”แƒ‘แƒ—, แƒ แƒแƒ“แƒ’แƒแƒœ แƒแƒฎแƒšแƒ แƒฉแƒ•แƒ”แƒœ แƒ’แƒ•แƒแƒฅแƒ•แƒก แƒฃแƒคแƒ แƒ แƒžแƒ แƒ˜แƒแƒ แƒ˜แƒขแƒ”แƒขแƒฃแƒšแƒ˜ แƒกแƒแƒ™แƒ˜แƒ—แƒฎแƒ”แƒ‘แƒ˜).
  4. แƒ™แƒแƒ แƒ’แƒ˜, แƒแƒฎแƒšแƒ แƒงแƒ•แƒ”แƒšแƒแƒคแƒ”แƒ แƒ˜ แƒ“แƒแƒกแƒ แƒฃแƒšแƒ“แƒ! แƒฉแƒ•แƒ”แƒœ แƒ’แƒ•แƒแƒฅแƒ•แƒก แƒ›แƒแƒ“แƒ”แƒšแƒ˜! แƒจแƒ”แƒ’แƒ•แƒ˜แƒซแƒšแƒ˜แƒ แƒ“แƒแƒ•แƒ˜แƒฌแƒงแƒแƒ— แƒจแƒ”แƒ›แƒ“แƒ”แƒ’แƒ˜ แƒ›แƒแƒ“แƒ”แƒšแƒ˜แƒก แƒขแƒ แƒ”แƒœแƒ˜แƒœแƒ’แƒ˜, แƒแƒ แƒฅแƒ˜แƒขแƒ”แƒฅแƒขแƒฃแƒ แƒ˜แƒก แƒจแƒ”แƒ›แƒฃแƒจแƒแƒ•แƒ”แƒ‘แƒ แƒแƒฎแƒแƒšแƒ˜ แƒžแƒ แƒแƒ‘แƒšแƒ”แƒ›แƒ˜แƒก แƒ’แƒแƒ“แƒแƒกแƒแƒญแƒ แƒ”แƒšแƒแƒ“, แƒ—แƒฃ แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒฉแƒแƒ˜แƒก แƒ“แƒแƒกแƒแƒšแƒ”แƒ•แƒแƒ“? แƒ“แƒ แƒ•แƒ˜แƒœ แƒ’แƒแƒœแƒšแƒแƒ’แƒ“แƒ”แƒ‘แƒ?

แƒžแƒ แƒแƒ‘แƒšแƒ”แƒ›แƒ”แƒ‘แƒ˜แƒก แƒ˜แƒ“แƒ”แƒœแƒขแƒ˜แƒคแƒ˜แƒชแƒ˜แƒ แƒ”แƒ‘แƒ

แƒžแƒ แƒแƒ”แƒฅแƒขแƒ–แƒ” แƒแƒœ แƒžแƒ แƒแƒ“แƒฃแƒฅแƒขแƒ–แƒ” แƒ›แƒฃแƒจแƒแƒแƒ‘แƒ แƒ›แƒ แƒแƒ•แƒแƒšแƒ˜ แƒแƒ“แƒแƒ›แƒ˜แƒแƒœแƒ˜แƒก แƒกแƒแƒฅแƒ›แƒ”แƒ. แƒ“แƒ แƒแƒ—แƒ แƒ’แƒแƒœแƒ›แƒแƒ•แƒšแƒแƒ‘แƒแƒจแƒ˜ แƒแƒ“แƒแƒ›แƒ˜แƒแƒœแƒ”แƒ‘แƒ˜ แƒ›แƒ˜แƒ“แƒ˜แƒแƒœ แƒ“แƒ แƒ›แƒแƒ“แƒ˜แƒแƒœ, แƒฃแƒคแƒ แƒ แƒ›แƒ”แƒขแƒ˜ แƒžแƒ แƒแƒ”แƒฅแƒขแƒ˜แƒ แƒ“แƒ แƒ—แƒแƒ•แƒแƒ“ แƒžแƒ แƒแƒ”แƒฅแƒขแƒ”แƒ‘แƒ˜ แƒ แƒ—แƒฃแƒšแƒ“แƒ”แƒ‘แƒ. แƒแƒกแƒ”แƒ แƒ—แƒฃ แƒ˜แƒกแƒ”, แƒกแƒ˜แƒขแƒฃแƒแƒชแƒ˜แƒ”แƒ‘แƒ˜ แƒ–แƒ”แƒ›แƒแƒ— แƒแƒฆแƒฌแƒ”แƒ แƒ˜แƒšแƒ˜ แƒชแƒ˜แƒ™แƒšแƒ˜แƒ“แƒแƒœ (แƒ“แƒ แƒแƒ แƒ แƒ›แƒฎแƒแƒšแƒแƒ“) แƒ’แƒแƒ แƒ™แƒ•แƒ”แƒฃแƒš แƒ™แƒแƒ›แƒ‘แƒ˜แƒœแƒแƒชแƒ˜แƒ”แƒ‘แƒจแƒ˜ แƒ›แƒแƒฎแƒ“แƒ”แƒ‘แƒ แƒ’แƒแƒ›แƒ”แƒแƒ แƒ”แƒ‘แƒ˜แƒ“แƒแƒœ แƒ’แƒแƒ›แƒ”แƒแƒ แƒ”แƒ‘แƒแƒ›แƒ“แƒ”. แƒงแƒแƒ•แƒ”แƒšแƒ˜แƒ•แƒ” แƒ”แƒก แƒ˜แƒฌแƒ•แƒ”แƒ•แƒก แƒ“แƒ แƒแƒ˜แƒก แƒ“แƒแƒ™แƒแƒ แƒ’แƒ•แƒแƒก, แƒ“แƒแƒ‘แƒœแƒ”แƒฃแƒšแƒแƒ‘แƒแƒก, แƒœแƒ”แƒ แƒ•แƒ”แƒ‘แƒก, แƒจแƒ”แƒกแƒแƒซแƒšแƒแƒ แƒ›แƒแƒ›แƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒ”แƒšแƒ—แƒ แƒฃแƒ™แƒ›แƒแƒงแƒแƒคแƒ˜แƒšแƒ”แƒ‘แƒแƒก แƒ“แƒ, แƒกแƒแƒ‘แƒแƒšแƒแƒแƒ“, แƒ“แƒแƒ™แƒแƒ แƒ’แƒฃแƒš แƒคแƒฃแƒšแƒก. แƒ›แƒ˜แƒฃแƒฎแƒ”แƒ“แƒแƒ•แƒแƒ“ แƒ˜แƒ›แƒ˜แƒกแƒ, แƒ แƒแƒ› แƒฉแƒ•แƒ”แƒœ แƒงแƒ•แƒ”แƒšแƒแƒœแƒ˜ แƒฉแƒ•แƒ”แƒฃแƒšแƒ”แƒ‘แƒ แƒ˜แƒ• แƒ›แƒ˜แƒ•แƒงแƒ•แƒ”แƒ‘แƒ˜แƒ— แƒ”แƒ แƒ—แƒกแƒ แƒ“แƒ แƒ˜แƒ›แƒแƒ•แƒ” แƒซแƒ•แƒ”แƒš แƒ แƒแƒ™แƒ˜แƒแƒก, แƒ›แƒ” แƒ›แƒฏแƒ”แƒ แƒ, แƒ แƒแƒ› แƒแƒ แƒแƒ•แƒ˜แƒก แƒกแƒฃแƒ แƒก แƒแƒ› แƒ›แƒแƒ›แƒ”แƒœแƒขแƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒœแƒ›แƒ”แƒแƒ แƒ”แƒ‘แƒ˜แƒ— แƒ’แƒแƒ›แƒ”แƒแƒ แƒ”แƒ‘แƒ.

MLOps - แƒ›แƒ–แƒแƒ แƒ”แƒฃแƒšแƒ˜แƒก แƒฌแƒ˜แƒ’แƒœแƒ˜, แƒ—แƒแƒ•แƒ˜ 1

แƒแƒกแƒ” แƒ แƒแƒ›, แƒฉแƒ•แƒ”แƒœ แƒ’แƒแƒ•แƒ˜แƒแƒ แƒ”แƒ— แƒ’แƒแƒœแƒ•แƒ˜แƒ—แƒแƒ แƒ”แƒ‘แƒ˜แƒก แƒ”แƒ แƒ—แƒ˜ แƒชแƒ˜แƒ™แƒšแƒ˜ แƒ“แƒ แƒ•แƒฎแƒ”แƒ“แƒแƒ•แƒ—, แƒ แƒแƒ› แƒแƒ แƒ˜แƒก แƒ’แƒแƒ“แƒแƒกแƒแƒญแƒ แƒ”แƒšแƒ˜ แƒžแƒ แƒแƒ‘แƒšแƒ”แƒ›แƒ”แƒ‘แƒ˜. แƒแƒ›แƒ˜แƒกแƒแƒ—แƒ•แƒ˜แƒก แƒกแƒแƒญแƒ˜แƒ แƒแƒ:

  • แƒกแƒแƒ›แƒฃแƒจแƒแƒ แƒจแƒ”แƒ“แƒ”แƒ’แƒ”แƒ‘แƒ˜แƒก แƒ›แƒแƒฎแƒ”แƒ แƒฎแƒ”แƒ‘แƒฃแƒšแƒแƒ“ แƒจแƒ”แƒœแƒแƒฎแƒ•แƒ;
  • แƒ’แƒแƒแƒ›แƒแƒ แƒขแƒ˜แƒ•แƒแƒก แƒแƒฎแƒแƒšแƒ˜ แƒ—แƒแƒœแƒแƒ›แƒจแƒ แƒแƒ›แƒšแƒ”แƒ‘แƒ˜แƒก แƒฉแƒแƒ แƒ—แƒ•แƒ˜แƒก แƒžแƒ แƒแƒชแƒ”แƒกแƒ˜;
  • แƒ’แƒแƒœแƒ•แƒ˜แƒ—แƒแƒ แƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ แƒ”แƒ›แƒแƒก แƒ“แƒแƒœแƒ”แƒ แƒ’แƒ•แƒ˜แƒก แƒžแƒ แƒแƒชแƒ”แƒกแƒ˜แƒก แƒ’แƒแƒ›แƒแƒ แƒขแƒ˜แƒ•แƒ”แƒ‘แƒ;
  • แƒ›แƒแƒ“แƒ”แƒšแƒ˜แƒก แƒ•แƒ”แƒ แƒกแƒ˜แƒ”แƒ‘แƒ˜แƒก แƒžแƒ แƒแƒชแƒ”แƒกแƒ˜แƒก แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ;
  • แƒแƒฅแƒ•แƒก แƒ›แƒแƒ“แƒ”แƒšแƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ“แƒแƒ›แƒแƒฌแƒ›แƒ”แƒ‘แƒ˜แƒก แƒ›แƒแƒกแƒแƒฎแƒ”แƒ แƒฎแƒ”แƒ‘แƒ”แƒšแƒ˜ แƒ’แƒ–แƒ;
  • แƒ›แƒแƒซแƒ”แƒ‘แƒœแƒ”แƒ— แƒกแƒแƒฎแƒ”แƒšแƒ›แƒฌแƒ˜แƒคแƒ แƒ›แƒแƒ แƒ—แƒ•แƒ˜แƒก แƒ›แƒแƒ“แƒ”แƒšแƒ˜แƒก แƒ˜แƒœแƒกแƒขแƒ แƒฃแƒ›แƒ”แƒœแƒขแƒ˜;
  • แƒ˜แƒžแƒแƒ•แƒœแƒ”แƒ— แƒ›แƒแƒ“แƒ”แƒšแƒ”แƒ‘แƒ˜แƒก แƒฌแƒแƒ แƒ›แƒแƒ”แƒ‘แƒแƒ›แƒ“แƒ” แƒ›แƒ˜แƒขแƒแƒœแƒ˜แƒก แƒ’แƒ–แƒ.

แƒ แƒแƒ’แƒแƒ แƒช แƒฉแƒแƒœแƒก, แƒแƒฃแƒชแƒ˜แƒšแƒ”แƒ‘แƒ”แƒšแƒ˜แƒ แƒกแƒแƒ›แƒฃแƒจแƒแƒ แƒžแƒ แƒแƒชแƒ”แƒกแƒ˜แƒก แƒจแƒ”แƒ›แƒฃแƒจแƒแƒ•แƒ”แƒ‘แƒ, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒกแƒแƒจแƒฃแƒแƒšแƒ”แƒ‘แƒแƒก แƒ›แƒแƒ’แƒชแƒ”แƒ›แƒ— แƒ›แƒแƒ แƒขแƒ˜แƒ•แƒแƒ“ แƒ“แƒ แƒ›แƒแƒฎแƒ”แƒ แƒฎแƒ”แƒ‘แƒฃแƒšแƒแƒ“ แƒ›แƒแƒ แƒ—แƒแƒ— แƒ”แƒก แƒกแƒแƒกแƒ˜แƒชแƒแƒชแƒฎแƒšแƒ แƒชแƒ˜แƒ™แƒšแƒ˜? แƒแƒ› แƒžแƒ แƒแƒฅแƒขแƒ˜แƒ™แƒแƒก MLOps แƒ”แƒฌแƒแƒ“แƒ”แƒ‘แƒ

MLOps, แƒแƒœ DevOps แƒ›แƒแƒœแƒฅแƒแƒœแƒฃแƒ แƒ˜ แƒกแƒฌแƒแƒ•แƒšแƒ˜แƒกแƒ—แƒ•แƒ˜แƒก, แƒกแƒแƒจแƒฃแƒแƒšแƒ”แƒ‘แƒแƒก แƒแƒซแƒšแƒ”แƒ•แƒก แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ›แƒ”แƒชแƒœแƒ˜แƒ”แƒ แƒ”แƒ‘แƒ˜แƒก แƒ“แƒ IT แƒ’แƒฃแƒœแƒ“แƒ”แƒ‘แƒก แƒ˜แƒ—แƒแƒœแƒแƒ›แƒจแƒ แƒแƒ›แƒšแƒแƒœ แƒ“แƒ แƒ’แƒแƒ–แƒแƒ แƒ“แƒแƒœ แƒ›แƒแƒ“แƒ”แƒšแƒ˜แƒก แƒ’แƒแƒœแƒ•แƒ˜แƒ—แƒแƒ แƒ”แƒ‘แƒ˜แƒกแƒ แƒ“แƒ แƒ“แƒแƒœแƒ”แƒ แƒ’แƒ•แƒ˜แƒก แƒขแƒ”แƒ›แƒžแƒ˜ แƒ›แƒแƒœแƒฅแƒแƒœแƒฃแƒ แƒ˜ แƒกแƒฌแƒแƒ•แƒšแƒ”แƒ‘แƒ˜แƒก แƒ›แƒแƒ“แƒ”แƒšแƒ”แƒ‘แƒ˜แƒก แƒ›แƒแƒœแƒ˜แƒขแƒแƒ แƒ˜แƒœแƒ’แƒ˜แƒก, แƒ•แƒแƒšแƒ˜แƒ“แƒแƒชแƒ˜แƒ˜แƒกแƒ แƒ“แƒ แƒ›แƒแƒ แƒ—แƒ•แƒ˜แƒก แƒ’แƒ–แƒ˜แƒ—.

แƒ—แƒฅแƒ•แƒ”แƒœ แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ— แƒฌแƒแƒ˜แƒ™แƒ˜แƒ—แƒฎแƒ”แƒ—แƒ แƒแƒก แƒคแƒ˜แƒฅแƒ แƒแƒ‘แƒ”แƒœ แƒ’แƒฃแƒ’แƒšแƒ˜แƒก แƒ‘แƒ˜แƒญแƒ”แƒ‘แƒ˜ แƒแƒ› แƒงแƒ•แƒ”แƒšแƒแƒคแƒ”แƒ แƒ–แƒ”? แƒกแƒขแƒแƒขแƒ˜แƒ˜แƒ“แƒแƒœ แƒ˜แƒ แƒ™แƒ•แƒ”แƒ•แƒ, แƒ แƒแƒ› MLOps แƒกแƒแƒ™แƒ›แƒแƒแƒ“ แƒ›แƒแƒชแƒฃแƒšแƒแƒ‘แƒ˜แƒ—แƒ˜ แƒ แƒแƒ› แƒแƒ แƒ˜แƒก.

MLOps - แƒ›แƒ–แƒแƒ แƒ”แƒฃแƒšแƒ˜แƒก แƒฌแƒ˜แƒ’แƒœแƒ˜, แƒ—แƒแƒ•แƒ˜ 1

แƒจแƒ”แƒ›แƒ“แƒ’แƒแƒ› แƒฉแƒ”แƒ›แƒก แƒกแƒขแƒแƒขแƒ˜แƒแƒจแƒ˜ แƒ›แƒ” แƒแƒฆแƒ•แƒฌแƒ”แƒ  แƒžแƒ แƒแƒชแƒ”แƒกแƒ˜แƒก แƒ›แƒฎแƒแƒšแƒแƒ“ แƒœแƒแƒฌแƒ˜แƒšแƒก. แƒ’แƒแƒœแƒกแƒแƒฎแƒแƒ แƒชแƒ˜แƒ”แƒšแƒ”แƒ‘แƒšแƒแƒ“ แƒ’แƒแƒ›แƒแƒ•แƒ˜แƒงแƒ”แƒœแƒ”แƒ‘ MLflow แƒ˜แƒœแƒกแƒขแƒ แƒฃแƒ›แƒ”แƒœแƒขแƒก, แƒ แƒแƒ“แƒ’แƒแƒœ... แƒ”แƒก แƒแƒ แƒ˜แƒก แƒฆแƒ˜แƒ แƒ™แƒแƒ“แƒ˜แƒก แƒžแƒ แƒแƒ”แƒฅแƒขแƒ˜, แƒ“แƒแƒกแƒแƒ™แƒแƒ•แƒจแƒ˜แƒ แƒ”แƒ‘แƒšแƒแƒ“ แƒกแƒแƒญแƒ˜แƒ แƒแƒ แƒ›แƒชแƒ˜แƒ แƒ” แƒ แƒแƒแƒ“แƒ”แƒœแƒแƒ‘แƒ˜แƒก แƒ™แƒแƒ“แƒ˜ แƒ“แƒ แƒแƒ แƒ˜แƒก แƒ˜แƒœแƒขแƒ”แƒ’แƒ แƒแƒชแƒ˜แƒ แƒžแƒแƒžแƒฃแƒšแƒแƒ แƒฃแƒš ml แƒฉแƒแƒ แƒฉแƒแƒ”แƒ‘แƒ—แƒแƒœ. แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ— แƒ˜แƒœแƒขแƒ”แƒ แƒœแƒ”แƒขแƒจแƒ˜ แƒ›แƒแƒซแƒ”แƒ‘แƒœแƒแƒ— แƒกแƒฎแƒ•แƒ แƒ˜แƒœแƒกแƒขแƒ แƒฃแƒ›แƒ”แƒœแƒขแƒ”แƒ‘แƒ˜, แƒ แƒแƒ’แƒแƒ แƒ˜แƒชแƒแƒ Kubeflow, SageMaker, Trains แƒ“แƒ แƒ.แƒจ. แƒ“แƒ แƒจแƒ”แƒกแƒแƒซแƒšแƒแƒ แƒ˜แƒžแƒแƒ•แƒแƒ— แƒ˜แƒก, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒฃแƒ™แƒ”แƒ—แƒ”แƒกแƒแƒ“ แƒจแƒ”แƒ”แƒกแƒแƒ‘แƒแƒ›แƒ”แƒ‘แƒ แƒ—แƒฅแƒ•แƒ”แƒœแƒก แƒกแƒแƒญแƒ˜แƒ แƒแƒ”แƒ‘แƒ”แƒ‘แƒก.

MLO-แƒ”แƒ‘แƒ˜แƒก โ€žแƒจแƒ”แƒœแƒ”แƒ‘แƒโ€œ MLFlow แƒ˜แƒœแƒกแƒขแƒ แƒฃแƒ›แƒ”แƒœแƒขแƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒก แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒ—

MLFlow แƒแƒ แƒ˜แƒก แƒฆแƒ˜แƒ แƒ™แƒแƒ“แƒ˜แƒก แƒžแƒšแƒแƒขแƒคแƒแƒ แƒ›แƒ ml แƒ›แƒแƒ“แƒ”แƒšแƒ”แƒ‘แƒ˜แƒก แƒกแƒแƒกแƒ˜แƒชแƒแƒชแƒฎแƒšแƒ แƒชแƒ˜แƒ™แƒšแƒ˜แƒก แƒ›แƒแƒ แƒ—แƒ•แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก (https://mlflow.org/).

MLflow แƒ›แƒแƒ˜แƒชแƒแƒ•แƒก แƒแƒ—แƒฎ แƒ™แƒแƒ›แƒžแƒแƒœแƒ”แƒœแƒขแƒก:

  • MLflow Tracking - แƒ›แƒแƒ˜แƒชแƒแƒ•แƒก แƒจแƒ”แƒ“แƒ”แƒ’แƒ”แƒ‘แƒ˜แƒก แƒฉแƒแƒฌแƒ”แƒ แƒ˜แƒก แƒกแƒแƒ™แƒ˜แƒ—แƒฎแƒ”แƒ‘แƒก แƒ“แƒ แƒžแƒแƒ แƒแƒ›แƒ”แƒขแƒ แƒ”แƒ‘แƒก, แƒ แƒแƒ›แƒแƒช แƒ’แƒแƒ›แƒแƒ˜แƒฌแƒ•แƒ˜แƒ แƒ”แƒก แƒจแƒ”แƒ“แƒ”แƒ’แƒ˜;
  • MLflow Project - แƒกแƒแƒจแƒฃแƒแƒšแƒ”แƒ‘แƒแƒก แƒ’แƒแƒซแƒšแƒ”แƒ•แƒ— แƒจแƒ”แƒคแƒฃแƒ—แƒแƒ— แƒ™แƒแƒ“แƒ˜ แƒ“แƒ แƒ’แƒแƒœแƒแƒฎแƒแƒ แƒชแƒ˜แƒ”แƒšแƒแƒ— แƒ˜แƒ’แƒ˜ แƒœแƒ”แƒ‘แƒ˜แƒกแƒ›แƒ˜แƒ”แƒ  แƒžแƒšแƒแƒขแƒคแƒแƒ แƒ›แƒแƒ–แƒ”;
  • MLflow Models - แƒžแƒแƒกแƒฃแƒฎแƒ˜แƒกแƒ›แƒ’แƒ”แƒ‘แƒ”แƒšแƒ˜ แƒ›แƒแƒ“แƒ”แƒšแƒ”แƒ‘แƒ˜แƒก แƒฌแƒแƒ แƒ›แƒแƒ”แƒ‘แƒแƒจแƒ˜ แƒ’แƒแƒœแƒ—แƒแƒ•แƒกแƒ”แƒ‘แƒแƒ–แƒ”;
  • MLflow Registry - แƒกแƒแƒจแƒฃแƒแƒšแƒ”แƒ‘แƒแƒก แƒ’แƒแƒซแƒšแƒ”แƒ•แƒ— แƒจแƒ”แƒ˜แƒœแƒแƒฎแƒแƒ— แƒ›แƒแƒ“แƒ”แƒšแƒ”แƒ‘แƒ˜ แƒ“แƒ แƒ›แƒแƒ แƒ—แƒแƒ— แƒ›แƒแƒ—แƒ˜ แƒ›แƒ“แƒ’แƒแƒ›แƒแƒ แƒ”แƒแƒ‘แƒ แƒชแƒ”แƒœแƒขแƒ แƒแƒšแƒ˜แƒ–แƒ”แƒ‘แƒฃแƒš แƒกแƒแƒชแƒแƒ•แƒจแƒ˜.

MLflow แƒ›แƒฃแƒจแƒแƒแƒ‘แƒก แƒแƒ  แƒ”แƒ แƒ—แƒ”แƒฃแƒšแƒ–แƒ”:

  • แƒ’แƒแƒจแƒ•แƒ”แƒ‘แƒ แƒแƒ แƒ˜แƒก แƒขแƒ แƒ”แƒœแƒ˜แƒœแƒ’แƒ˜แƒก แƒกแƒ แƒฃแƒšแƒ˜ แƒชแƒ˜แƒ™แƒšแƒ˜, แƒžแƒแƒ แƒแƒ›แƒ”แƒขแƒ แƒ”แƒ‘แƒ˜ แƒ“แƒ แƒ›แƒ”แƒขแƒ แƒ˜แƒ™แƒ, แƒ แƒแƒ›แƒšแƒ˜แƒ—แƒแƒช แƒ’แƒ•แƒ˜แƒœแƒ“แƒ แƒ แƒ”แƒ’แƒ˜แƒกแƒขแƒ แƒแƒชแƒ˜แƒ;
  • แƒ”แƒฅแƒกแƒžแƒ”แƒ แƒ˜แƒ›แƒ”แƒœแƒขแƒ˜ แƒแƒ แƒ˜แƒก โ€žแƒ—แƒ”แƒ›แƒโ€œ, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒ”แƒ แƒ—แƒแƒ“ แƒ›แƒ˜แƒ›แƒ“แƒ˜แƒœแƒแƒ แƒ”แƒแƒ‘แƒก.

แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒ˜แƒก แƒงแƒ•แƒ”แƒšแƒ แƒœแƒแƒ‘แƒ˜แƒฏแƒ˜ แƒ“แƒแƒœแƒ”แƒ แƒ’แƒ˜แƒšแƒ˜แƒ Ubuntu 18.04 แƒแƒžแƒ”แƒ แƒแƒชแƒ˜แƒฃแƒš แƒกแƒ˜แƒกแƒขแƒ”แƒ›แƒแƒ–แƒ”.

1. แƒ’แƒแƒœแƒแƒ—แƒแƒ•แƒกแƒ”แƒ— แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ˜

แƒ˜แƒ›แƒ˜แƒกแƒแƒ—แƒ•แƒ˜แƒก, แƒ แƒแƒ› แƒฉแƒ•แƒ”แƒœ แƒ›แƒแƒ แƒขแƒ˜แƒ•แƒแƒ“ แƒ•แƒ›แƒแƒ แƒ—แƒแƒ— แƒฉแƒ•แƒ”แƒœแƒ˜ แƒžแƒ แƒแƒ”แƒฅแƒขแƒ˜ แƒ“แƒ แƒ›แƒ˜แƒ•แƒ˜แƒฆแƒแƒ— แƒงแƒ•แƒ”แƒšแƒ แƒกแƒแƒญแƒ˜แƒ แƒ แƒ˜แƒœแƒคแƒแƒ แƒ›แƒแƒชแƒ˜แƒ, แƒฉแƒ•แƒ”แƒœ แƒ’แƒแƒœแƒ•แƒแƒ—แƒแƒ•แƒกแƒ”แƒ‘แƒ— แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒก. MLflow แƒ—แƒ•แƒแƒšแƒ—แƒ•แƒแƒšแƒ˜แƒก แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒก แƒแƒฅแƒ•แƒก แƒแƒ แƒ˜ แƒซแƒ˜แƒ แƒ˜แƒ—แƒแƒ“แƒ˜ แƒ™แƒแƒ›แƒžแƒแƒœแƒ”แƒœแƒขแƒ˜:

  • backend store - แƒžแƒแƒกแƒฃแƒฎแƒ˜แƒกแƒ›แƒ’แƒ”แƒ‘แƒ”แƒšแƒ˜แƒ แƒ แƒ”แƒ’แƒ˜แƒกแƒขแƒ แƒ˜แƒ แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ›แƒแƒ“แƒ”แƒšแƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒกแƒแƒฎแƒ”แƒ‘ แƒ˜แƒœแƒคแƒแƒ แƒ›แƒแƒชแƒ˜แƒ˜แƒก แƒจแƒ”แƒกแƒแƒœแƒแƒฎแƒแƒ“ (แƒ›แƒฎแƒแƒ แƒ“แƒแƒญแƒ”แƒ แƒ˜แƒšแƒ˜แƒ 4 DBMS: mysql, mssql, sqlite แƒ“แƒ postgresql);
  • แƒแƒ แƒขแƒ”แƒคแƒแƒฅแƒขแƒ”แƒ‘แƒ˜แƒก แƒ›แƒแƒฆแƒแƒ–แƒ˜แƒ - แƒžแƒแƒกแƒฃแƒฎแƒ˜แƒกแƒ›แƒ’แƒ”แƒ‘แƒ”แƒšแƒ˜แƒ แƒแƒ แƒขแƒ”แƒคแƒแƒฅแƒขแƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒกแƒแƒœแƒแƒฎแƒแƒ“ (แƒ›แƒฎแƒแƒ แƒ“แƒแƒญแƒ”แƒ แƒ˜แƒšแƒ˜แƒ แƒจแƒ”แƒœแƒแƒฎแƒ•แƒ˜แƒก 7 แƒ•แƒแƒ แƒ˜แƒแƒœแƒขแƒ˜: Amazon S3, Azure Blob Storage, Google Cloud Storage, FTP แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ˜, SFTP แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ˜, NFS, HDFS).

แƒ แƒแƒ’แƒแƒ แƒช แƒแƒ แƒขแƒ”แƒคแƒแƒฅแƒขแƒ”แƒ‘แƒ˜แƒก แƒ›แƒแƒฆแƒแƒ–แƒ˜แƒ แƒกแƒ˜แƒ›แƒแƒ แƒขแƒ˜แƒ•แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก, แƒแƒ•แƒ˜แƒฆแƒแƒ— sftp แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ˜.

  • แƒฏแƒ’แƒฃแƒคแƒ˜แƒก แƒจแƒ”แƒฅแƒ›แƒœแƒ
    $ sudo groupadd sftpg
  • แƒ“แƒแƒแƒ›แƒแƒขแƒ”แƒ— แƒ›แƒแƒ›แƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒ”แƒšแƒ˜ แƒ“แƒ แƒ“แƒแƒแƒงแƒ”แƒœแƒ”แƒ— แƒ›แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก แƒžแƒแƒ แƒแƒšแƒ˜
    $ sudo useradd -g sftpg mlflowsftp
    $ sudo passwd mlflowsftp 
  • แƒฌแƒ•แƒ“แƒแƒ›แƒ˜แƒก แƒ แƒแƒ›แƒ“แƒ”แƒœแƒ˜แƒ›แƒ” แƒžแƒแƒ แƒแƒ›แƒ”แƒขแƒ แƒ˜แƒก แƒ แƒ”แƒ’แƒฃแƒšแƒ˜แƒ แƒ”แƒ‘แƒ
    $ sudo mkdir -p /data/mlflowsftp/upload
    $ sudo chown -R root.sftpg /data/mlflowsftp
    $ sudo chown -R mlflowsftp.sftpg /data/mlflowsftp/upload
  • แƒ“แƒแƒแƒ›แƒแƒขแƒ”แƒ— แƒ แƒแƒ›แƒ“แƒ”แƒœแƒ˜แƒ›แƒ” แƒฎแƒแƒ–แƒ˜ /etc/ssh/sshd_config
    Match Group sftpg
     ChrootDirectory /data/%u
     ForceCommand internal-sftp
  • แƒ’แƒแƒ“แƒแƒขแƒ•แƒ˜แƒ แƒ—แƒ”แƒ— แƒกแƒ”แƒ แƒ•แƒ˜แƒกแƒ˜
    $ sudo systemctl restart sshd

แƒ แƒแƒ’แƒแƒ แƒช backend แƒ›แƒแƒฆแƒแƒ–แƒ˜แƒ แƒแƒ•แƒ˜แƒฆแƒแƒ— postgresql.

$ sudo apt update
$ sudo apt-get install -y postgresql postgresql-contrib postgresql-server-dev-all
$ sudo apt install gcc
$ pip install psycopg2
$ sudo -u postgres -i
# Create new user: mlflow_user
[postgres@user_name~]$ createuser --interactive -P
Enter name of role to add: mlflow_user
Enter password for new role: mlflow
Enter it again: mlflow
Shall the new role be a superuser? (y/n) n
Shall the new role be allowed to create databases? (y/n) n
Shall the new role be allowed to create more new roles? (y/n) n
# Create database mlflow_bd owned by mlflow_user
$ createdb -O mlflow_user mlflow_db

แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ˜แƒก แƒ“แƒแƒกแƒแƒฌแƒงแƒ”แƒ‘แƒแƒ“, แƒ—แƒฅแƒ•แƒ”แƒœ แƒฃแƒœแƒ“แƒ แƒ“แƒแƒแƒ˜แƒœแƒกแƒขแƒแƒšแƒ˜แƒ แƒแƒ— แƒจแƒ”แƒ›แƒ“แƒ”แƒ’แƒ˜ แƒžแƒ˜แƒ—แƒแƒœแƒ˜แƒก แƒžแƒแƒ™แƒ”แƒขแƒ”แƒ‘แƒ˜ (แƒ’แƒ˜แƒ แƒฉแƒ”แƒ•แƒ— แƒจแƒ”แƒฅแƒ›แƒœแƒแƒ— แƒชแƒแƒšแƒ™แƒ” แƒ•แƒ˜แƒ แƒขแƒฃแƒแƒšแƒฃแƒ แƒ˜ แƒ’แƒแƒ แƒ”แƒ›แƒ):

pip install mlflow
pip install pysftp

แƒ›แƒแƒ“แƒ˜แƒ— แƒ“แƒแƒ•แƒ˜แƒฌแƒงแƒแƒ— แƒฉแƒ•แƒ”แƒœแƒ˜ แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ˜

$ mlflow server  
                 --backend-store-uri postgresql://mlflow_user:mlflow@localhost/mlflow_db 
                 --default-artifact-root sftp://mlflowsftp:mlflow@sftp_host/upload  
                --host server_host 
                --port server_port

2. แƒ“แƒแƒแƒ›แƒแƒขแƒ”แƒ— แƒ—แƒ•แƒแƒšแƒ—แƒ•แƒแƒšแƒ˜

แƒ˜แƒ›แƒ˜แƒกแƒแƒ—แƒ•แƒ˜แƒก, แƒ แƒแƒ› แƒฉแƒ•แƒ”แƒœแƒ˜ แƒขแƒ แƒ”แƒœแƒ˜แƒœแƒ’แƒ˜แƒก แƒจแƒ”แƒ“แƒ”แƒ’แƒ”แƒ‘แƒ˜ แƒแƒ  แƒ“แƒแƒ˜แƒ™แƒแƒ แƒ’แƒแƒก, แƒ“แƒ”แƒ•แƒ”แƒšแƒแƒžแƒ”แƒ แƒ”แƒ‘แƒ˜แƒก แƒ›แƒแƒ›แƒแƒ•แƒแƒšแƒ›แƒ แƒ—แƒแƒแƒ‘แƒ”แƒ‘แƒ›แƒ แƒ’แƒแƒ˜แƒ’แƒแƒœ แƒ แƒ แƒฎแƒ“แƒ”แƒ‘แƒแƒ“แƒ, แƒฎแƒแƒšแƒ แƒฃแƒคแƒ แƒแƒกแƒ›แƒ แƒแƒ›แƒฎแƒแƒœแƒแƒ’แƒ”แƒ‘แƒ›แƒ แƒ“แƒ แƒ—แƒฅแƒ•แƒ”แƒœ แƒจแƒ”แƒซแƒšแƒแƒ— แƒ›แƒจแƒ•แƒ˜แƒ“แƒแƒ“ แƒ’แƒแƒแƒœแƒแƒšแƒ˜แƒ–แƒแƒ— แƒกแƒแƒกแƒฌแƒแƒ•แƒšแƒ แƒžแƒ แƒแƒชแƒ”แƒกแƒ˜, แƒฉแƒ•แƒ”แƒœ แƒฃแƒœแƒ“แƒ แƒ“แƒแƒ•แƒแƒ›แƒแƒขแƒแƒ— แƒ—แƒ•แƒแƒšแƒ—แƒ•แƒแƒšแƒ˜. แƒ—แƒ•แƒแƒšแƒ—แƒ•แƒแƒšแƒ˜ แƒœแƒ˜แƒจแƒœแƒแƒ•แƒก แƒžแƒแƒ แƒแƒ›แƒ”แƒขแƒ แƒ”แƒ‘แƒ˜แƒก, แƒ›แƒ”แƒขแƒ แƒ˜แƒ™แƒ˜แƒก, แƒแƒ แƒขแƒ”แƒคแƒแƒฅแƒขแƒ”แƒ‘แƒ˜แƒก แƒ“แƒ แƒœแƒ”แƒ‘แƒ˜แƒกแƒ›แƒ˜แƒ”แƒ แƒ˜ แƒ“แƒแƒ›แƒแƒขแƒ”แƒ‘แƒ˜แƒ—แƒ˜ แƒ˜แƒœแƒคแƒแƒ แƒ›แƒแƒชแƒ˜แƒ˜แƒก แƒจแƒ”แƒœแƒแƒฎแƒ•แƒแƒก แƒขแƒ แƒ”แƒœแƒ˜แƒœแƒ’แƒ˜แƒก แƒ“แƒแƒฌแƒงแƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒกแƒแƒฎแƒ”แƒ‘, แƒฉแƒ•แƒ”แƒœแƒก แƒจแƒ”แƒ›แƒ—แƒฎแƒ•แƒ”แƒ•แƒแƒจแƒ˜, แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ–แƒ”.

แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒแƒ“, แƒ›แƒ” แƒจแƒ”แƒ•แƒฅแƒ›แƒ”แƒœแƒ˜ แƒžแƒแƒขแƒแƒ แƒ แƒžแƒ แƒแƒ”แƒฅแƒขแƒ˜ github-แƒ–แƒ” แƒ™แƒ”แƒ แƒแƒกแƒ–แƒ” แƒงแƒ•แƒ”แƒšแƒแƒคแƒ แƒ˜แƒก แƒกแƒ”แƒ’แƒ›แƒ”แƒœแƒขแƒแƒชแƒ˜แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก, แƒ แƒแƒช แƒแƒ แƒ˜แƒก COCO แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ‘แƒแƒ–แƒ. แƒ—แƒ•แƒแƒšแƒ—แƒ•แƒแƒšแƒ˜แƒก แƒ“แƒแƒกแƒแƒ›แƒแƒขแƒ”แƒ‘แƒšแƒแƒ“ แƒจแƒ”แƒ•แƒฅแƒ›แƒ”แƒœแƒ˜ แƒคแƒแƒ˜แƒšแƒ˜ mlflow_training.py.

แƒแƒฅ แƒแƒ แƒ˜แƒก แƒกแƒขแƒ แƒ˜แƒฅแƒแƒœแƒ”แƒ‘แƒ˜, แƒกแƒแƒ“แƒแƒช แƒฎแƒ“แƒ”แƒ‘แƒ แƒงแƒ•แƒ”แƒšแƒแƒ–แƒ” แƒกแƒแƒ˜แƒœแƒขแƒ”แƒ แƒ”แƒกแƒ:

def run(self, epochs, lr, experiment_name):
        # getting the id of the experiment, creating an experiment in its absence
        remote_experiment_id = self.remote_server.get_experiment_id(name=experiment_name)
        # creating a "run" and getting its id
        remote_run_id = self.remote_server.get_run_id(remote_experiment_id)

        # indicate that we want to save the results on a remote server
        mlflow.set_tracking_uri(self.tracking_uri)
        mlflow.set_experiment(experiment_name)

        with mlflow.start_run(run_id=remote_run_id, nested=False):
            mlflow.keras.autolog()
            self.train_pipeline.train(lr=lr, epochs=epochs)

        try:
            self.log_tags_and_params(remote_run_id)
        except mlflow.exceptions.RestException as e:
            print(e)

แƒแƒฅ self.remote_server แƒแƒ แƒ˜แƒก แƒžแƒแƒขแƒแƒ แƒ แƒจแƒ”แƒคแƒฃแƒ—แƒ•แƒ mlflow.tracking แƒ›แƒ”แƒ—แƒแƒ“แƒ”แƒ‘แƒ–แƒ”. MlflowClient (แƒ›แƒแƒฎแƒ”แƒ แƒฎแƒ”แƒ‘แƒฃแƒšแƒแƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก แƒ’แƒแƒ•แƒแƒ™แƒ”แƒ—แƒ”), แƒ แƒ˜แƒกแƒ˜ แƒ“แƒแƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒ˜แƒ—แƒแƒช แƒ•แƒฅแƒ›แƒœแƒ˜ แƒ”แƒฅแƒกแƒžแƒ”แƒ แƒ˜แƒ›แƒ”แƒœแƒขแƒก แƒ“แƒ แƒ•แƒฃแƒจแƒ•แƒ”แƒ‘ แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ–แƒ”. แƒจแƒ”แƒ›แƒ“แƒ”แƒ’แƒ˜, แƒ›แƒ” แƒแƒฆแƒ•แƒœแƒ˜แƒจแƒœแƒแƒ•, แƒกแƒแƒ“ แƒฃแƒœแƒ“แƒ แƒ’แƒแƒ”แƒ แƒ—แƒ˜แƒแƒœแƒ“แƒ”แƒก แƒ’แƒแƒจแƒ•แƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒ“แƒ”แƒ’แƒ”แƒ‘แƒ˜ (mlflow.set_tracking_uri(self.tracking_uri)). แƒ›แƒ” แƒฉแƒแƒ แƒ—แƒแƒ• แƒแƒ•แƒขแƒแƒ›แƒแƒขแƒฃแƒ  แƒฉแƒแƒฌแƒ”แƒ แƒแƒก mlflow.keras.autolog(). แƒแƒ›แƒŸแƒแƒ›แƒแƒ“ MLflow Tracking แƒ›แƒฎแƒแƒ แƒก แƒฃแƒญแƒ”แƒ แƒก แƒแƒ•แƒขแƒแƒ›แƒแƒขแƒฃแƒ  แƒฉแƒแƒฌแƒ”แƒ แƒแƒก TensorFlow, Keras, Gluon XGBoost, LightGBM, Spark. แƒ—แƒฃ แƒ—แƒฅแƒ•แƒ”แƒœ แƒ•แƒ”แƒ  แƒ˜แƒžแƒแƒ•แƒœแƒ”แƒ— แƒ—แƒฅแƒ•แƒ”แƒœแƒ˜ แƒฉแƒแƒ แƒฉแƒ แƒแƒœ แƒ‘แƒ˜แƒ‘แƒšแƒ˜แƒแƒ—แƒ”แƒ™แƒ, แƒ›แƒแƒจแƒ˜แƒœ แƒงแƒแƒ•แƒ”แƒšแƒ—แƒ•แƒ˜แƒก แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ— แƒแƒจแƒ™แƒแƒ แƒแƒ“ แƒจแƒ”แƒกแƒ•แƒšแƒ. แƒฉแƒ•แƒ”แƒœ แƒ•แƒ˜แƒฌแƒงแƒ”แƒ‘แƒ— แƒ•แƒแƒ แƒฏแƒ˜แƒจแƒก. แƒ“แƒแƒแƒ แƒ”แƒ’แƒ˜แƒกแƒขแƒ แƒ˜แƒ แƒ”แƒ— แƒขแƒ”แƒ’แƒ”แƒ‘แƒ˜ แƒ“แƒ แƒจแƒ”แƒ˜แƒขแƒแƒœแƒ”แƒ— แƒžแƒแƒ แƒแƒ›แƒ”แƒขแƒ แƒ”แƒ‘แƒ˜ แƒ“แƒ˜แƒกแƒขแƒแƒœแƒชแƒ˜แƒฃแƒ  แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ–แƒ”.

แƒ แƒแƒ›แƒ“แƒ”แƒœแƒ˜แƒ›แƒ” แƒฎแƒแƒ–แƒ˜ แƒ“แƒ แƒ—แƒฅแƒ•แƒ”แƒœ, แƒ˜แƒกแƒ”แƒ•แƒ” แƒ แƒแƒ’แƒแƒ แƒช แƒงแƒ•แƒ”แƒšแƒแƒก, แƒ’แƒแƒฅแƒ•แƒ— แƒฌแƒ•แƒ“แƒแƒ›แƒ แƒ˜แƒœแƒคแƒแƒ แƒ›แƒแƒชแƒ˜แƒแƒ–แƒ” แƒงแƒ•แƒ”แƒšแƒ แƒ’แƒแƒจแƒ•แƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒกแƒแƒฎแƒ”แƒ‘. แƒ›แƒแƒ’แƒแƒ แƒ˜แƒ?

3. แƒ•แƒแƒ“แƒ’แƒ”แƒœแƒ— แƒžแƒ แƒแƒ”แƒฅแƒขแƒก

แƒแƒฎแƒšแƒ แƒ›แƒแƒ“แƒ˜แƒ— แƒ’แƒแƒ•แƒแƒแƒ“แƒ•แƒ˜แƒšแƒแƒ— แƒžแƒ แƒแƒ”แƒฅแƒขแƒ˜แƒก แƒ“แƒแƒฌแƒงแƒ”แƒ‘แƒ. แƒแƒ›แƒ˜แƒกแƒแƒ—แƒ•แƒ˜แƒก แƒ“แƒแƒแƒ›แƒแƒขแƒ”แƒ— MLproject แƒ“แƒ conda.yaml แƒคแƒแƒ˜แƒšแƒ˜ แƒžแƒ แƒแƒ”แƒฅแƒขแƒ˜แƒก root-แƒจแƒ˜.
MLแƒžแƒ แƒแƒ”แƒฅแƒขแƒ˜

name: flow_segmentation
conda_env: conda.yaml

entry_points:
  main:
    parameters:
        categories: {help: 'list of categories from coco dataset'}
        epochs: {type: int, help: 'number of epochs in training'}

        lr: {type: float, default: 0.001, help: 'learning rate'}
        batch_size: {type: int, default: 8}
        model_name: {type: str, default: 'Unet', help: 'Unet, PSPNet, Linknet, FPN'}
        backbone_name: {type: str, default: 'resnet18', help: 'exampe resnet18, resnet50, mobilenetv2 ...'}

        tracking_uri: {type: str, help: 'the server address'}
        experiment_name: {type: str, default: 'My_experiment', help: 'remote and local experiment name'}
    command: "python mlflow_training.py 
            --epochs={epochs}
            --categories={categories}
            --lr={lr}
            --tracking_uri={tracking_uri}
            --model_name={model_name}
            --backbone_name={backbone_name}
            --batch_size={batch_size}
            --experiment_name={experiment_name}"

MLflow แƒžแƒ แƒแƒ”แƒฅแƒขแƒก แƒแƒฅแƒ•แƒก แƒ แƒแƒ›แƒ“แƒ”แƒœแƒ˜แƒ›แƒ” แƒ—แƒ•แƒ˜แƒกแƒ”แƒ‘แƒ:

  • แƒกแƒแƒฎแƒ”แƒšแƒ˜ - แƒ—แƒฅแƒ•แƒ”แƒœแƒ˜ แƒžแƒ แƒแƒ”แƒฅแƒขแƒ˜แƒก แƒ“แƒแƒกแƒแƒฎแƒ”แƒšแƒ”แƒ‘แƒ;
  • แƒ’แƒแƒ แƒ”แƒ›แƒ - แƒฉแƒ”แƒ›แƒก แƒจแƒ”แƒ›แƒ—แƒฎแƒ•แƒ”แƒ•แƒแƒจแƒ˜, conda_env แƒ›แƒ˜แƒฃแƒ—แƒ˜แƒ—แƒ”แƒ‘แƒก, แƒ แƒแƒ› Anaconda แƒ’แƒแƒ›แƒแƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒ แƒ’แƒแƒกแƒแƒจแƒ•แƒ”แƒ‘แƒแƒ“ แƒ“แƒ แƒ“แƒแƒ›แƒแƒ™แƒ˜แƒ“แƒ”แƒ‘แƒฃแƒšแƒ”แƒ‘แƒ˜แƒก แƒแƒฆแƒฌแƒ”แƒ แƒ แƒแƒ แƒ˜แƒก conda.yaml แƒคแƒแƒ˜แƒšแƒจแƒ˜;
  • แƒจแƒ”แƒกแƒ•แƒšแƒ˜แƒก แƒฌแƒ”แƒ แƒขแƒ˜แƒšแƒ”แƒ‘แƒ˜ - แƒ›แƒ˜แƒฃแƒ—แƒ˜แƒ—แƒ”แƒ‘แƒก, แƒ แƒแƒ›แƒ”แƒšแƒ˜ แƒคแƒแƒ˜แƒšแƒ”แƒ‘แƒ˜ แƒ“แƒ แƒ แƒแƒ›แƒ”แƒšแƒ˜ แƒžแƒแƒ แƒแƒ›แƒ”แƒขแƒ แƒ”แƒ‘แƒ˜แƒ— แƒจแƒ”แƒ’แƒ•แƒ˜แƒซแƒšแƒ˜แƒ แƒ’แƒแƒจแƒ•แƒ”แƒ‘แƒ (แƒงแƒ•แƒ”แƒšแƒ แƒžแƒแƒ แƒแƒ›แƒ”แƒขแƒ แƒ˜ แƒแƒ•แƒขแƒแƒ›แƒแƒขแƒฃแƒ แƒแƒ“ แƒ˜แƒฌแƒ”แƒ แƒ”แƒ‘แƒ แƒขแƒ แƒ”แƒœแƒ˜แƒœแƒ’แƒ˜แƒก แƒ“แƒแƒฌแƒงแƒ”แƒ‘แƒ˜แƒกแƒแƒก)

แƒ™แƒแƒœแƒ“แƒ.แƒ˜แƒแƒ›แƒšแƒ˜

name: flow_segmentation
channels:
  - defaults
  - anaconda
dependencies:
  - python==3.7
  - pip:
    - mlflow==1.8.0
    - pysftp==0.2.9
    - Cython==0.29.19
    - numpy==1.18.4
    - pycocotools==2.0.0
    - requests==2.23.0
    - matplotlib==3.2.1
    - segmentation-models==1.0.1
    - Keras==2.3.1
    - imgaug==0.4.0
    - tqdm==4.46.0
    - tensorflow-gpu==1.14.0

แƒ—แƒฅแƒ•แƒ”แƒœ แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ— แƒ’แƒแƒ›แƒแƒ˜แƒงแƒ”แƒœแƒแƒ— แƒ“แƒแƒ™แƒ”แƒ แƒ˜, แƒ แƒแƒ’แƒแƒ แƒช แƒ—แƒฅแƒ•แƒ”แƒœแƒ˜ แƒ’แƒแƒจแƒ•แƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ แƒ”แƒ›แƒ, แƒ“แƒแƒ›แƒแƒขแƒ”แƒ‘แƒ˜แƒ—แƒ˜ แƒ˜แƒœแƒคแƒแƒ แƒ›แƒแƒชแƒ˜แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก แƒ’แƒ—แƒฎแƒแƒ•แƒ—, แƒ˜แƒฎแƒ˜แƒšแƒ”แƒ— แƒ“แƒแƒ™แƒฃแƒ›แƒ”แƒœแƒขแƒแƒชแƒ˜แƒ.

4. แƒ“แƒแƒ•แƒ˜แƒฌแƒงแƒแƒ— แƒ•แƒแƒ แƒฏแƒ˜แƒจแƒ˜

แƒฉแƒ•แƒ”แƒœ แƒ™แƒšแƒแƒœแƒ˜แƒ แƒ”แƒ‘แƒ— แƒžแƒ แƒแƒ”แƒฅแƒขแƒก แƒ“แƒ แƒ’แƒแƒ“แƒแƒ•แƒ“แƒ˜แƒ•แƒแƒ แƒ— แƒžแƒ แƒแƒ”แƒฅแƒขแƒ˜แƒก แƒ“แƒ˜แƒ แƒ”แƒฅแƒขแƒแƒ แƒ˜แƒแƒจแƒ˜:

git clone https://github.com/simbakot/mlflow_example.git
cd mlflow_example/

แƒ’แƒแƒกแƒแƒจแƒ•แƒ”แƒ‘แƒแƒ“ แƒกแƒแƒญแƒ˜แƒ แƒแƒ แƒ‘แƒ˜แƒ‘แƒšแƒ˜แƒแƒ—แƒ”แƒ™แƒ”แƒ‘แƒ˜แƒก แƒ“แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ

pip install mlflow
pip install pysftp

แƒ˜แƒ›แƒ˜แƒขแƒแƒ› แƒ แƒแƒ› แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒจแƒ˜, แƒ›แƒ” แƒ•แƒ˜แƒงแƒ”แƒœแƒ”แƒ‘ conda_env, Anaconda แƒฃแƒœแƒ“แƒ แƒ˜แƒงแƒแƒก แƒ“แƒแƒ˜แƒœแƒกแƒขแƒแƒšแƒ˜แƒ แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ—แƒฅแƒ•แƒ”แƒœแƒก แƒ™แƒแƒ›แƒžแƒ˜แƒฃแƒขแƒ”แƒ แƒจแƒ˜ (แƒ›แƒแƒ’แƒ แƒแƒ› แƒแƒ›แƒ˜แƒก แƒ—แƒแƒ•แƒ˜แƒ“แƒแƒœ แƒแƒชแƒ˜แƒšแƒ”แƒ‘แƒ แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ— แƒงแƒ•แƒ”แƒšแƒ แƒกแƒแƒญแƒ˜แƒ แƒ แƒžแƒแƒ™แƒ”แƒขแƒ˜แƒก แƒ“แƒแƒ˜แƒœแƒกแƒขแƒแƒšแƒ˜แƒ แƒ”แƒ‘แƒ˜แƒ— แƒ“แƒ แƒ’แƒแƒจแƒ•แƒ”แƒ‘แƒ˜แƒก แƒžแƒแƒ แƒแƒ›แƒ”แƒขแƒ แƒ”แƒ‘แƒ—แƒแƒœ แƒ—แƒแƒ›แƒแƒจแƒ˜แƒ—).

แƒงแƒ•แƒ”แƒšแƒ แƒ›แƒแƒกแƒแƒ›แƒ–แƒแƒ“แƒ”แƒ‘แƒ”แƒšแƒ˜ แƒ”แƒขแƒแƒžแƒ˜ แƒ“แƒแƒกแƒ แƒฃแƒšแƒ”แƒ‘แƒฃแƒšแƒ˜แƒ แƒ“แƒ แƒจแƒ”แƒ’แƒ•แƒ˜แƒซแƒšแƒ˜แƒ แƒ“แƒแƒ•แƒ˜แƒฌแƒงแƒแƒ— แƒขแƒ แƒ”แƒœแƒ˜แƒœแƒ’แƒ˜แƒก แƒ“แƒแƒฌแƒงแƒ”แƒ‘แƒ. แƒžแƒ แƒแƒ”แƒฅแƒขแƒ˜แƒก แƒซแƒ˜แƒ แƒ˜แƒ“แƒแƒœ:

$ mlflow run -P epochs=10 -P categories=cat,dog -P tracking_uri=http://server_host:server_port .

แƒ‘แƒ แƒซแƒแƒœแƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒงแƒ•แƒแƒœแƒ˜แƒก แƒจแƒ”แƒ›แƒ“แƒ”แƒ’ แƒแƒ•แƒขแƒแƒ›แƒแƒขแƒฃแƒ แƒแƒ“ แƒจแƒ”แƒ˜แƒฅแƒ›แƒœแƒ”แƒ‘แƒ แƒ™แƒแƒœแƒ“แƒ แƒ’แƒแƒ แƒ”แƒ›แƒ แƒ“แƒ แƒ“แƒแƒ˜แƒฌแƒงแƒ”แƒ‘แƒ แƒกแƒฌแƒแƒ•แƒšแƒ”แƒ‘แƒ.
แƒ–แƒ”แƒ›แƒแƒ— แƒ›แƒแƒงแƒ•แƒแƒœแƒ˜แƒš แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒจแƒ˜ แƒ’แƒแƒ•แƒ˜แƒแƒ แƒ” แƒขแƒ แƒ”แƒœแƒ˜แƒœแƒ’แƒ˜แƒก แƒ”แƒžแƒแƒฅแƒ”แƒ‘แƒ˜แƒก แƒ แƒแƒแƒ“แƒ”แƒœแƒแƒ‘แƒ, แƒ™แƒแƒขแƒ”แƒ’แƒแƒ แƒ˜แƒ”แƒ‘แƒ˜, แƒ แƒแƒ›แƒšแƒ”แƒ‘แƒจแƒ˜แƒช แƒ’แƒ•แƒ˜แƒœแƒ“แƒ แƒกแƒ”แƒ’แƒ›แƒ”แƒœแƒขแƒ˜แƒ แƒ”แƒ‘แƒ (แƒกแƒ แƒฃแƒšแƒ˜ แƒกแƒ˜แƒ แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ— แƒœแƒแƒฎแƒแƒ— แƒแƒฅ) แƒ“แƒ แƒฉแƒ•แƒ”แƒœแƒ˜ แƒ“แƒ˜แƒกแƒขแƒแƒœแƒชแƒ˜แƒฃแƒ แƒ˜ แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ˜แƒก แƒ›แƒ˜แƒกแƒแƒ›แƒแƒ แƒ—แƒ˜.
แƒจแƒ”แƒกแƒแƒซแƒšแƒ แƒžแƒแƒ แƒแƒ›แƒ”แƒขแƒ แƒ”แƒ‘แƒ˜แƒก แƒกแƒ แƒฃแƒšแƒ˜ แƒกแƒ˜แƒ แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ— แƒ˜แƒฎแƒ˜แƒšแƒแƒ— MLproject แƒคแƒแƒ˜แƒšแƒจแƒ˜.

5. แƒจแƒ”แƒแƒคแƒแƒกแƒ”แƒ— แƒกแƒฌแƒแƒ•แƒšแƒ˜แƒก แƒจแƒ”แƒ“แƒ”แƒ’แƒ”แƒ‘แƒ˜

แƒขแƒ แƒ”แƒœแƒ˜แƒœแƒ’แƒ˜แƒก แƒ“แƒแƒกแƒ แƒฃแƒšแƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒ›แƒ“แƒ”แƒ’ แƒจแƒ”แƒ’แƒ•แƒ˜แƒซแƒšแƒ˜แƒ แƒ‘แƒ แƒแƒฃแƒ–แƒ”แƒ แƒจแƒ˜ แƒ’แƒแƒ“แƒแƒ•แƒ˜แƒ“แƒ”แƒ— แƒฉแƒ•แƒ”แƒœแƒ˜ แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ˜แƒก แƒ›แƒ˜แƒกแƒแƒ›แƒแƒ แƒ—แƒ–แƒ” http://server_host:server_port

MLOps - แƒ›แƒ–แƒแƒ แƒ”แƒฃแƒšแƒ˜แƒก แƒฌแƒ˜แƒ’แƒœแƒ˜, แƒ—แƒแƒ•แƒ˜ 1

แƒแƒฅ แƒฉแƒ•แƒ”แƒœ แƒ•แƒฎแƒ”แƒ“แƒแƒ•แƒ— แƒงแƒ•แƒ”แƒšแƒ แƒ”แƒฅแƒกแƒžแƒ”แƒ แƒ˜แƒ›แƒ”แƒœแƒขแƒ˜แƒก แƒฉแƒแƒ›แƒแƒœแƒแƒ—แƒ•แƒแƒšแƒก (แƒ–แƒ”แƒ“แƒ แƒ›แƒแƒ แƒชแƒฎแƒœแƒ˜แƒ•), แƒแƒกแƒ”แƒ•แƒ” แƒ˜แƒœแƒคแƒแƒ แƒ›แƒแƒชแƒ˜แƒแƒก แƒ’แƒแƒจแƒ•แƒ”แƒ‘แƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒกแƒแƒฎแƒ”แƒ‘ (แƒจแƒฃแƒแƒจแƒ˜). แƒฉแƒ•แƒ”แƒœ แƒจแƒ”แƒ’แƒ•แƒ˜แƒซแƒšแƒ˜แƒ แƒœแƒแƒฎแƒแƒ— แƒฃแƒคแƒ แƒ แƒ“แƒ”แƒขแƒแƒšแƒฃแƒ แƒ˜ แƒ˜แƒœแƒคแƒแƒ แƒ›แƒแƒชแƒ˜แƒ (แƒžแƒแƒ แƒแƒ›แƒ”แƒขแƒ แƒ”แƒ‘แƒ˜, แƒ›แƒ”แƒขแƒ แƒ˜แƒ™แƒ, แƒแƒ แƒขแƒ”แƒคแƒแƒฅแƒขแƒ”แƒ‘แƒ˜ แƒ“แƒ แƒ แƒแƒ›แƒ“แƒ”แƒœแƒ˜แƒ›แƒ” แƒ“แƒแƒ›แƒแƒขแƒ”แƒ‘แƒ˜แƒ—แƒ˜ แƒ˜แƒœแƒคแƒแƒ แƒ›แƒแƒชแƒ˜แƒ) แƒ—แƒ˜แƒ—แƒแƒ”แƒฃแƒšแƒ˜ แƒ’แƒแƒจแƒ•แƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก.

MLOps - แƒ›แƒ–แƒแƒ แƒ”แƒฃแƒšแƒ˜แƒก แƒฌแƒ˜แƒ’แƒœแƒ˜, แƒ—แƒแƒ•แƒ˜ 1

แƒ—แƒ˜แƒ—แƒแƒ”แƒฃแƒšแƒ˜ แƒ›แƒ”แƒขแƒ แƒ˜แƒ™แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก แƒจแƒ”แƒ’แƒ•แƒ˜แƒซแƒšแƒ˜แƒ แƒ“แƒแƒ•แƒแƒ™แƒ•แƒ˜แƒ แƒ“แƒ”แƒ— แƒชแƒ•แƒšแƒ˜แƒšแƒ”แƒ‘แƒ”แƒ‘แƒ˜แƒก แƒ˜แƒกแƒขแƒแƒ แƒ˜แƒแƒก

MLOps - แƒ›แƒ–แƒแƒ แƒ”แƒฃแƒšแƒ˜แƒก แƒฌแƒ˜แƒ’แƒœแƒ˜, แƒ—แƒแƒ•แƒ˜ 1

แƒ˜แƒ›แƒแƒ—. แƒแƒ› แƒ›แƒแƒ›แƒ”แƒœแƒขแƒจแƒ˜, แƒฉแƒ•แƒ”แƒœ แƒจแƒ”แƒ’แƒ•แƒ˜แƒซแƒšแƒ˜แƒ แƒ’แƒแƒ•แƒแƒแƒœแƒแƒšแƒ˜แƒ–แƒแƒ— แƒจแƒ”แƒ“แƒ”แƒ’แƒ”แƒ‘แƒ˜ "แƒฎแƒ”แƒšแƒ˜แƒ—" แƒ แƒ”แƒŸแƒ˜แƒ›แƒจแƒ˜ แƒ“แƒ แƒแƒกแƒ”แƒ•แƒ” แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ— แƒ“แƒแƒแƒงแƒ”แƒœแƒแƒ— แƒแƒ•แƒขแƒแƒ›แƒแƒขแƒฃแƒ แƒ˜ แƒ•แƒแƒšแƒ˜แƒ“แƒแƒชแƒ˜แƒ MLflow API-แƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒ—.

6. แƒ›แƒแƒ“แƒ”แƒšแƒ˜แƒก แƒ แƒ”แƒ’แƒ˜แƒกแƒขแƒ แƒแƒชแƒ˜แƒ

แƒ›แƒแƒก แƒจแƒ”แƒ›แƒ“แƒ”แƒ’ แƒ แƒแƒช แƒ’แƒแƒ•แƒแƒแƒœแƒแƒšแƒ˜แƒ–แƒ”แƒ— แƒฉแƒ•แƒ”แƒœแƒ˜ แƒ›แƒแƒ“แƒ”แƒšแƒ˜ แƒ“แƒ แƒ’แƒแƒ“แƒแƒ•แƒฌแƒงแƒ•แƒ˜แƒขแƒ”แƒ—, แƒ แƒแƒ› แƒ˜แƒก แƒ›แƒ–แƒแƒ“ แƒแƒ แƒ˜แƒก แƒ‘แƒ แƒซแƒแƒšแƒ˜แƒกแƒ—แƒ•แƒ˜แƒก, แƒ•แƒแƒ’แƒ แƒซแƒ”แƒšแƒ”แƒ‘แƒ— แƒ›แƒ˜แƒก แƒ แƒ”แƒ’แƒ˜แƒกแƒขแƒ แƒแƒชแƒ˜แƒแƒก, แƒแƒ›แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก แƒ•แƒ˜แƒ แƒฉแƒ”แƒ•แƒ— แƒฉแƒ•แƒ”แƒœแƒ—แƒ•แƒ˜แƒก แƒกแƒแƒญแƒ˜แƒ แƒ แƒ’แƒแƒจแƒ•แƒ”แƒ‘แƒแƒก (แƒ แƒแƒ’แƒแƒ แƒช แƒœแƒแƒฉแƒ•แƒ”แƒœแƒ”แƒ‘แƒ˜แƒ แƒฌแƒ˜แƒœแƒ แƒแƒ‘แƒ–แƒแƒชแƒจแƒ˜) แƒ“แƒ แƒฉแƒแƒ•แƒ“แƒ˜แƒ•แƒแƒ แƒ— แƒฅแƒ•แƒ”แƒ›แƒแƒ—.

MLOps - แƒ›แƒ–แƒแƒ แƒ”แƒฃแƒšแƒ˜แƒก แƒฌแƒ˜แƒ’แƒœแƒ˜, แƒ—แƒแƒ•แƒ˜ 1

แƒ›แƒแƒก แƒจแƒ”แƒ›แƒ“แƒ”แƒ’ แƒ แƒแƒช แƒฉแƒ•แƒ”แƒœแƒก แƒ›แƒแƒ“แƒ”แƒšแƒก แƒกแƒแƒฎแƒ”แƒšแƒก แƒ•แƒแƒซแƒšแƒ”แƒ•แƒ—, แƒ›แƒแƒก แƒแƒฅแƒ•แƒก แƒ•แƒ”แƒ แƒกแƒ˜แƒ. แƒ—แƒฃ แƒจแƒ”แƒ˜แƒœแƒแƒฎแƒแƒ•แƒ— แƒกแƒฎแƒ•แƒ แƒ›แƒแƒ“แƒ”แƒšแƒก แƒ˜แƒ›แƒแƒ•แƒ” แƒกแƒแƒฎแƒ”แƒšแƒ˜แƒ—, แƒ•แƒ”แƒ แƒกแƒ˜แƒ แƒแƒ•แƒขแƒแƒ›แƒแƒขแƒฃแƒ แƒแƒ“ แƒ’แƒแƒœแƒแƒฎแƒšแƒ“แƒ”แƒ‘แƒ.

MLOps - แƒ›แƒ–แƒแƒ แƒ”แƒฃแƒšแƒ˜แƒก แƒฌแƒ˜แƒ’แƒœแƒ˜, แƒ—แƒแƒ•แƒ˜ 1

แƒ—แƒ˜แƒ—แƒแƒ”แƒฃแƒš แƒ›แƒแƒ“แƒ”แƒšแƒก แƒจแƒ”แƒ’แƒ•แƒ˜แƒซแƒšแƒ˜แƒ แƒ“แƒแƒ•แƒแƒ›แƒแƒขแƒแƒ— แƒแƒฆแƒฌแƒ”แƒ แƒ แƒ“แƒ แƒแƒ•แƒ˜แƒ แƒฉแƒ˜แƒแƒ— แƒกแƒแƒ›แƒ˜ แƒ›แƒ“แƒ’แƒแƒ›แƒแƒ แƒ”แƒแƒ‘แƒ˜แƒ“แƒแƒœ แƒ”แƒ แƒ—-แƒ”แƒ แƒ—แƒ˜ (Staging, Production, Archived); แƒจแƒ”แƒ›แƒ“แƒ’แƒแƒ›แƒจแƒ˜, API-แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒ—, แƒฉแƒ•แƒ”แƒœ แƒจแƒ”แƒ’แƒ•แƒ˜แƒซแƒšแƒ˜แƒ แƒแƒ› แƒ›แƒ“แƒ’แƒแƒ›แƒแƒ แƒ”แƒแƒ‘แƒ”แƒ‘แƒ–แƒ” แƒฌแƒ•แƒ“แƒแƒ›แƒ, แƒ แƒแƒช, แƒ•แƒ”แƒ แƒกแƒ˜แƒ˜แƒก แƒจแƒ”แƒฅแƒ›แƒœแƒแƒกแƒ—แƒแƒœ แƒ”แƒ แƒ—แƒแƒ“, แƒ“แƒแƒ›แƒแƒขแƒ”แƒ‘แƒ˜แƒ— แƒ›แƒแƒฅแƒœแƒ˜แƒšแƒแƒ‘แƒแƒก แƒ˜แƒซแƒšแƒ”แƒ•แƒ.

MLOps - แƒ›แƒ–แƒแƒ แƒ”แƒฃแƒšแƒ˜แƒก แƒฌแƒ˜แƒ’แƒœแƒ˜, แƒ—แƒแƒ•แƒ˜ 1

แƒฉแƒ•แƒ”แƒœ แƒแƒกแƒ”แƒ•แƒ” แƒ’แƒ•แƒแƒฅแƒ•แƒก แƒ›แƒแƒ แƒขแƒ˜แƒ•แƒ˜ แƒฌแƒ•แƒ“แƒแƒ›แƒ แƒงแƒ•แƒ”แƒšแƒ แƒ›แƒแƒ“แƒ”แƒšแƒ–แƒ”

MLOps - แƒ›แƒ–แƒแƒ แƒ”แƒฃแƒšแƒ˜แƒก แƒฌแƒ˜แƒ’แƒœแƒ˜, แƒ—แƒแƒ•แƒ˜ 1

แƒ“แƒ แƒ›แƒแƒ—แƒ˜ แƒ•แƒ”แƒ แƒกแƒ˜แƒ”แƒ‘แƒ˜

MLOps - แƒ›แƒ–แƒแƒ แƒ”แƒฃแƒšแƒ˜แƒก แƒฌแƒ˜แƒ’แƒœแƒ˜, แƒ—แƒแƒ•แƒ˜ 1

แƒ แƒแƒ’แƒแƒ แƒช แƒฌแƒ˜แƒœแƒ แƒžแƒแƒ แƒแƒ’แƒ แƒแƒคแƒจแƒ˜, แƒงแƒ•แƒ”แƒšแƒ แƒแƒžแƒ”แƒ แƒแƒชแƒ˜แƒ แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒ’แƒแƒœแƒฎแƒแƒ แƒชแƒ˜แƒ”แƒšแƒ“แƒ”แƒก API-แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒ—.

7. แƒ’แƒแƒœแƒแƒ—แƒแƒ•แƒกแƒ”แƒ— แƒ›แƒแƒ“แƒ”แƒšแƒ˜

แƒแƒ› แƒ”แƒขแƒแƒžแƒ–แƒ” แƒฃแƒ™แƒ•แƒ” แƒ’แƒ•แƒแƒฅแƒ•แƒก แƒ’แƒแƒฌแƒ•แƒ แƒ—แƒœแƒ˜แƒšแƒ˜ (แƒ™แƒ”แƒ แƒแƒก) แƒ›แƒแƒ“แƒ”แƒšแƒ˜. แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒ˜ แƒ˜แƒ›แƒ˜แƒกแƒ, แƒ—แƒฃ แƒ แƒแƒ’แƒแƒ  แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ— แƒ’แƒแƒ›แƒแƒ˜แƒงแƒ”แƒœแƒแƒ— แƒ˜แƒ’แƒ˜:

class SegmentationModel:
    def __init__(self, tracking_uri, model_name):

        self.registry = RemoteRegistry(tracking_uri=tracking_uri)
        self.model_name = model_name
        self.model = self.build_model(model_name)

    def get_latest_model(self, model_name):
        registered_models = self.registry.get_registered_model(model_name)
        last_model = self.registry.get_last_model(registered_models)
        local_path = self.registry.download_artifact(last_model.run_id, 'model', './')
        return local_path

    def build_model(self, model_name):
        local_path = self.get_latest_model(model_name)

        return mlflow.keras.load_model(local_path)

    def predict(self, image):
        image = self.preprocess(image)
        result = self.model.predict(image)
        return self.postprocess(result)

    def preprocess(self, image):
        image = cv2.resize(image, (256, 256))
        image = image / 255.
        image = np.expand_dims(image, 0)
        return image

    def postprocess(self, result):
        return result

แƒแƒฅ self.registry แƒแƒ แƒ˜แƒก แƒ˜แƒกแƒ”แƒ• แƒžแƒแƒขแƒแƒ แƒ แƒจแƒ”แƒคแƒฃแƒ—แƒ•แƒ mlflow.tracking.MlflowClient-แƒ–แƒ”, แƒ›แƒแƒฎแƒ”แƒ แƒฎแƒ”แƒ‘แƒฃแƒšแƒแƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก. แƒกแƒแƒฅแƒ›แƒ” แƒ˜แƒ›แƒแƒจแƒ˜แƒ, แƒ แƒแƒ› แƒจแƒ”แƒ•แƒ“แƒ˜แƒ•แƒแƒ  แƒ“แƒ˜แƒกแƒขแƒแƒœแƒชแƒ˜แƒฃแƒ  แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ–แƒ” แƒ“แƒ แƒ˜แƒฅ แƒ•แƒ”แƒซแƒ”แƒ‘ แƒ›แƒแƒ“แƒ”แƒšแƒก แƒ›แƒ˜แƒ—แƒ˜แƒ—แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒกแƒแƒฎแƒ”แƒšแƒ˜แƒ— แƒ“แƒ แƒฃแƒแƒฎแƒšแƒ”แƒกแƒ˜ แƒฌแƒแƒ แƒ›แƒแƒ”แƒ‘แƒ˜แƒก แƒ•แƒ”แƒ แƒกแƒ˜แƒ˜แƒ—. แƒจแƒ”แƒ›แƒ“แƒ”แƒ’, แƒ›แƒ” แƒ’แƒแƒ“แƒ›แƒแƒ•แƒขแƒ•แƒ˜แƒ แƒ—แƒแƒ• แƒแƒ แƒขแƒ”แƒคแƒแƒฅแƒขแƒก แƒšแƒแƒ™แƒแƒšแƒฃแƒ แƒแƒ“ ./model แƒกแƒแƒฅแƒแƒฆแƒแƒšแƒ“แƒ”แƒจแƒ˜ แƒ“แƒ แƒ•แƒแƒจแƒ”แƒœแƒ”แƒ‘ แƒ›แƒแƒ“แƒ”แƒšแƒก แƒแƒ› แƒ“แƒ˜แƒ แƒ”แƒฅแƒขแƒแƒ แƒ˜แƒแƒ“แƒแƒœ mlflow.keras.load_model(local_path). แƒแƒฎแƒšแƒ แƒฉแƒ•แƒ”แƒœ แƒจแƒ”แƒ’แƒ•แƒ˜แƒซแƒšแƒ˜แƒ แƒ’แƒแƒ›แƒแƒ•แƒ˜แƒงแƒ”แƒœแƒแƒ— แƒฉแƒ•แƒ”แƒœแƒ˜ แƒ›แƒแƒ“แƒ”แƒšแƒ˜. CV (ML) แƒ“แƒ”แƒ•แƒ”แƒšแƒแƒžแƒ”แƒ แƒ”แƒ‘แƒก แƒจแƒ”แƒฃแƒซแƒšแƒ˜แƒแƒ— แƒ›แƒแƒ แƒขแƒ˜แƒ•แƒแƒ“ แƒ’แƒแƒแƒฃแƒ›แƒฏแƒแƒ‘แƒ”แƒกแƒแƒœ แƒ›แƒแƒ“แƒ”แƒšแƒ˜ แƒ“แƒ แƒ’แƒแƒ›แƒแƒแƒฅแƒ•แƒ”แƒงแƒœแƒแƒœ แƒแƒฎแƒแƒšแƒ˜ แƒ•แƒ”แƒ แƒกแƒ˜แƒ”แƒ‘แƒ˜.

แƒ“แƒแƒกแƒแƒกแƒ แƒฃแƒšแƒก

แƒ›แƒ” แƒฌแƒแƒ แƒ›แƒแƒ•แƒแƒ“แƒ’แƒ˜แƒœแƒ” แƒกแƒ˜แƒกแƒขแƒ”แƒ›แƒ, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒ˜แƒซแƒšแƒ”แƒ•แƒ แƒกแƒแƒจแƒฃแƒแƒšแƒ”แƒ‘แƒแƒก:

  • แƒชแƒ”แƒœแƒขแƒ แƒแƒšแƒ˜แƒ–แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒจแƒ”แƒœแƒแƒฎแƒ•แƒ ML แƒ›แƒแƒ“แƒ”แƒšแƒ”แƒ‘แƒ˜แƒก, แƒขแƒ แƒ”แƒœแƒ˜แƒœแƒ’แƒ˜แƒก แƒžแƒ แƒแƒ’แƒ แƒ”แƒกแƒ˜แƒกแƒ แƒ“แƒ แƒจแƒ”แƒ“แƒ”แƒ’แƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒกแƒแƒฎแƒ”แƒ‘;
  • แƒกแƒฌแƒ แƒแƒคแƒแƒ“ แƒ’แƒแƒœแƒแƒ—แƒแƒ•แƒกแƒ”แƒ— แƒ’แƒแƒœแƒ•แƒ˜แƒ—แƒแƒ แƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ แƒ”แƒ›แƒ;
  • แƒ›แƒแƒ“แƒ”แƒšแƒ”แƒ‘แƒ–แƒ” แƒ›แƒฃแƒจแƒแƒแƒ‘แƒ˜แƒก แƒ›แƒ˜แƒ›แƒ“แƒ˜แƒœแƒแƒ แƒ”แƒแƒ‘แƒ˜แƒก แƒ›แƒแƒœแƒ˜แƒขแƒแƒ แƒ˜แƒœแƒ’แƒ˜ แƒ“แƒ แƒแƒœแƒแƒšแƒ˜แƒ–แƒ˜;
  • แƒ›แƒแƒกแƒแƒฎแƒ”แƒ แƒฎแƒ”แƒ‘แƒ”แƒšแƒ˜แƒ แƒ›แƒแƒ“แƒ”แƒšแƒ”แƒ‘แƒ˜แƒก แƒ›แƒ“แƒ’แƒแƒ›แƒแƒ แƒ”แƒแƒ‘แƒ˜แƒก แƒ•แƒ”แƒ แƒกแƒ˜แƒ แƒ“แƒ แƒ›แƒแƒ แƒ—แƒ•แƒ;
  • แƒจแƒ”แƒ“แƒ”แƒ’แƒแƒ“ แƒ›แƒ˜แƒฆแƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ›แƒแƒ“แƒ”แƒšแƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒœแƒšแƒแƒ’แƒ”แƒ‘แƒ แƒ›แƒแƒ แƒขแƒ˜แƒ•แƒ˜แƒ.

แƒ”แƒก แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒ˜ แƒกแƒแƒ—แƒแƒ›แƒแƒจแƒแƒ แƒ“แƒ แƒ”แƒ›แƒกแƒแƒฎแƒฃแƒ แƒ”แƒ‘แƒ แƒ แƒแƒ’แƒแƒ แƒช แƒแƒ›แƒแƒกแƒแƒ•แƒแƒš แƒฌแƒ”แƒ แƒขแƒ˜แƒšแƒก แƒกแƒแƒ™แƒฃแƒ—แƒแƒ แƒ˜ แƒกแƒ˜แƒกแƒขแƒ”แƒ›แƒ˜แƒก แƒแƒกแƒแƒจแƒ”แƒœแƒ”แƒ‘แƒšแƒแƒ“, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒ›แƒแƒ˜แƒชแƒแƒ•แƒ“แƒ”แƒก แƒจแƒ”แƒ“แƒ”แƒ’แƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒคแƒแƒกแƒ”แƒ‘แƒ˜แƒก แƒแƒ•แƒขแƒแƒ›แƒแƒขแƒ˜แƒ–แƒแƒชแƒ˜แƒแƒก แƒ“แƒ แƒ›แƒแƒ“แƒ”แƒšแƒ”แƒ‘แƒ˜แƒก แƒ แƒ”แƒ’แƒ˜แƒกแƒขแƒ แƒแƒชแƒ˜แƒแƒก (แƒžแƒฃแƒœแƒฅแƒขแƒ”แƒ‘แƒ˜ 5 แƒ“แƒ 6, แƒจแƒ”แƒกแƒแƒ‘แƒแƒ›แƒ˜แƒกแƒแƒ“) แƒแƒœ แƒ“แƒแƒแƒ›แƒแƒขแƒ”แƒ‘แƒ— แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒœแƒแƒ™แƒ แƒ”แƒ‘แƒ˜แƒก แƒ•แƒ”แƒ แƒกแƒ˜แƒ”แƒ‘แƒก, แƒแƒœ แƒ˜แƒฅแƒœแƒ”แƒ‘ แƒกแƒฎแƒ•แƒ แƒ แƒแƒ›แƒ”แƒก? แƒžแƒฃแƒœแƒฅแƒขแƒ˜, แƒ แƒ˜แƒกแƒ˜ แƒ—แƒฅแƒ›แƒแƒช แƒ•แƒชแƒ“แƒ˜แƒšแƒแƒ‘แƒ“แƒ˜ แƒแƒ แƒ˜แƒก แƒ˜แƒก, แƒ แƒแƒ› แƒ—แƒฅแƒ•แƒ”แƒœ แƒ’แƒญแƒ˜แƒ แƒ“แƒ”แƒ‘แƒแƒ— MLOps แƒ›แƒ—แƒšแƒ˜แƒแƒœแƒแƒ‘แƒแƒจแƒ˜, MLflow แƒ›แƒฎแƒแƒšแƒแƒ“ แƒ›แƒ˜แƒ–แƒœแƒ˜แƒก แƒ›แƒ˜แƒฆแƒฌแƒ”แƒ•แƒ˜แƒก แƒกแƒแƒจแƒฃแƒแƒšแƒ”แƒ‘แƒแƒ.

แƒ“แƒแƒฌแƒ”แƒ แƒ”แƒ— แƒ แƒ แƒžแƒ แƒแƒ‘แƒšแƒ”แƒ›แƒ”แƒ‘แƒ˜ แƒจแƒ”แƒ’แƒฎแƒ•แƒ“แƒแƒ— แƒ แƒแƒช แƒแƒ  แƒ’แƒแƒ›แƒแƒ•แƒ˜แƒขแƒแƒœแƒ”?
แƒ แƒแƒก แƒ“แƒแƒแƒ›แƒแƒขแƒ”แƒ‘แƒ“แƒ˜แƒ— แƒกแƒ˜แƒกแƒขแƒ”แƒ›แƒแƒก, แƒ แƒแƒ—แƒ แƒ˜แƒก แƒ“แƒแƒแƒ™แƒ›แƒแƒงแƒแƒคแƒ˜แƒšแƒแƒก แƒ—แƒฅแƒ•แƒ”แƒœแƒก แƒกแƒแƒญแƒ˜แƒ แƒแƒ”แƒ‘แƒ”แƒ‘แƒก?
แƒ แƒ แƒ˜แƒœแƒกแƒขแƒ แƒฃแƒ›แƒ”แƒœแƒขแƒ”แƒ‘แƒกแƒ แƒ“แƒ แƒ›แƒ˜แƒ“แƒ’แƒแƒ›แƒ”แƒ‘แƒก แƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒ— แƒžแƒ แƒแƒ‘แƒšแƒ”แƒ›แƒ”แƒ‘แƒ˜แƒก แƒ›แƒ—แƒšแƒ˜แƒแƒœแƒแƒ“ แƒแƒœ แƒœแƒแƒฌแƒ˜แƒšแƒ˜แƒก แƒ’แƒแƒ“แƒแƒกแƒแƒญแƒ แƒ”แƒšแƒแƒ“?

PS แƒ“แƒแƒ•แƒขแƒแƒ•แƒ”แƒ‘ แƒ แƒแƒ›แƒ“แƒ”แƒœแƒ˜แƒ›แƒ” แƒšแƒ˜แƒœแƒ™แƒก:
github แƒžแƒ แƒแƒ”แƒฅแƒขแƒ˜ - https://github.com/simbakot/mlflow_example
MLflow - https://mlflow.org/
แƒฉแƒ”แƒ›แƒ˜ แƒกแƒแƒ›แƒฃแƒจแƒแƒ แƒ”แƒš.แƒฌแƒ”แƒ แƒ˜แƒšแƒ˜ แƒ™แƒ˜แƒ—แƒฎแƒ•แƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก - [แƒ”แƒš.แƒคแƒแƒกแƒขแƒ˜แƒ— แƒ“แƒแƒชแƒฃแƒšแƒ˜แƒ]

แƒฉแƒ•แƒ”แƒœแƒ˜ แƒ™แƒแƒ›แƒžแƒแƒœแƒ˜แƒ แƒžแƒ”แƒ แƒ˜แƒแƒ“แƒฃแƒšแƒแƒ“ แƒ›แƒแƒกแƒžแƒ˜แƒœแƒซแƒšแƒแƒ‘แƒก แƒกแƒฎแƒ•แƒแƒ“แƒแƒกแƒฎแƒ•แƒ แƒฆแƒแƒœแƒ˜แƒกแƒซแƒ˜แƒ”แƒ‘แƒ”แƒ‘แƒก IT แƒกแƒžแƒ”แƒชแƒ˜แƒแƒšแƒ˜แƒกแƒขแƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก, แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒแƒ“: 8 แƒ˜แƒ•แƒšแƒ˜แƒกแƒก แƒ›แƒแƒกแƒ™แƒแƒ•แƒ˜แƒก แƒ“แƒ แƒแƒ˜แƒ— 19:00 แƒกแƒแƒแƒ—แƒ–แƒ” แƒ’แƒแƒ˜แƒ›แƒแƒ แƒ—แƒ”แƒ‘แƒ CV แƒจแƒ”แƒฎแƒ•แƒ”แƒ“แƒ แƒ แƒแƒœแƒšแƒแƒ˜แƒœ แƒคแƒแƒ แƒ›แƒแƒขแƒจแƒ˜, แƒ“แƒแƒ˜แƒœแƒขแƒ”แƒ แƒ”แƒกแƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒ›แƒ—แƒฎแƒ•แƒ”แƒ•แƒแƒจแƒ˜ แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ— แƒ›แƒ˜แƒ˜แƒฆแƒแƒ— แƒ›แƒแƒœแƒแƒฌแƒ˜แƒšแƒ”แƒแƒ‘แƒ, แƒ แƒ”แƒ’แƒ˜แƒกแƒขแƒ แƒแƒชแƒ˜แƒ. แƒแƒฅ .

แƒฌแƒงแƒแƒ แƒ: www.habr.com

แƒแƒฎแƒแƒšแƒ˜ แƒ™แƒแƒ›แƒ”แƒœแƒขแƒแƒ แƒ˜แƒก แƒ“แƒแƒ›แƒแƒขแƒ”แƒ‘แƒ