MLOps - เช•เซเช• เชฌเซเช•, เชชเซเชฐเช•เชฐเชฃ 1

MLOps - เช•เซเช• เชฌเซเช•, เชชเซเชฐเช•เชฐเชฃ 1

เช•เซ‡เชฎ เช›เซ‹ เชฌเชงเชพ! เชนเซเช‚ CROC เช–เชพเชคเซ‡ CV เชกเซ‡เชตเชฒเชชเชฐ เช›เซเช‚. เช…เชฎเซ‡ 3 เชตเชฐเซเชทเชฅเซ€ CV เชจเชพ เช•เซเชทเซ‡เชคเซเชฐเชฎเชพเช‚ เชชเซเชฐเซ‹เชœเซ‡เช•เซเชŸ เช…เชฎเชฒเชฎเชพเช‚ เชฎเซ‚เช•เซ€ เชฐเชนเซเชฏเชพ เช›เซ€เช. เช† เชธเชฎเชฏ เชฆเชฐเชฎเชฟเชฏเชพเชจ, เช…เชฎเซ‡ เช˜เชฃเซ€ เชฌเชงเซ€ เชตเชธเซเชคเซเช“ เช•เชฐเซ€, เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡: เช…เชฎเซ‡ เชกเซเชฐเชพเช‡เชตเชฐเซ‹เชจเซเช‚ เชจเชฟเชฐเซ€เช•เซเชทเชฃ เช•เชฐเซเชฏเซเช‚ เชœเซ‡เชฅเซ€ เชคเซ‡เช“ เชกเซเชฐเชพเช‡เชตเชฟเช‚เช— เช•เชฐเชคเซ€ เชตเช–เชคเซ‡ เชชเซ€เชคเชพ เชจ เชนเซ‹เชฏ, เชงเซ‚เชฎเซเชฐเชชเชพเชจ เชจ เช•เชฐเชคเชพ เชนเซ‹เชฏ, เชซเซ‹เชจ เชชเชฐ เชตเชพเชค เช•เชฐเชคเชพ เชจ เชนเซ‹เชฏ, เชฐเชธเซเชคเชพ เชคเชฐเชซ เชœเซ‹เชคเชพ เชนเซ‹เชฏ, เช…เชจเซ‡ เชธเชชเชจเชพ เช…เชฅเชตเชพ เชตเชพเชฆเชณเซ‹ เชคเชฐเชซ เชจ เชœเซ‹เชคเชพ เชนเซ‹เชฏ. ; เช…เชฎเซ‡ เชเชตเชพ เชฒเซ‹เช•เซ‹เชจเซ‡ เชฐเซ‡เช•เซ‹เชฐเซเชก เช•เชฐเซเชฏเชพ เชœเซ‡เช“ เชธเชฎเชฐเซเชชเชฟเชค เชฒเซ‡เชจเชฎเชพเช‚ เชตเชพเชนเชจ เชšเชฒเชพเชตเซ‡ เช›เซ‡ เช…เชจเซ‡ เช˜เชฃเซ€ เชชเชพเชฐเซเช•เชฟเช‚เช— เชœเช—เซเชฏเชพเช“ เชฒเซ‡ เช›เซ‡; เช–เชพเชคเชฐเซ€ เช•เชฐเซ‹ เช•เซ‡ เช•เชพเชฎเชฆเชพเชฐเซ‹ เชนเซ‡เชฒเซเชฎเซ‡เชŸ, เชฎเซ‹เชœเชพ เชตเช—เซ‡เชฐเซ‡ เชชเชนเซ‡เชฐเซ‡ เช›เซ‡; เชธเซเชตเชฟเชงเชพเชฎเชพเช‚ เชชเซเชฐเชตเซ‡เชถเชตเชพ เชฎเชพเช‚เช—เชคเชพ เช•เชฐเซเชฎเชšเชพเชฐเซ€เชจเซ€ เช“เชณเช– เช•เชฐเซ€; เช…เชฎเซ‡ เชœเซ‡ เช•เชฐเซ€ เชถเช•เซ€เช เชคเซ‡ เชฌเชงเซเช‚ เช—เชฃเซ€ เชฒเซ€เชงเซเช‚.

เชนเซเช‚ เช† เชฌเชงเซเช‚ เชถเซ‡เชจเชพ เชฎเชพเชŸเซ‡ เช•เชฐเซ€ เชฐเชนเซเชฏเซ‹ เช›เซเช‚?

เชชเซเชฐเซ‹เชœเซ‡เช•เซเชŸเชจเชพ เช…เชฎเชฒเซ€เช•เชฐเชฃเชจเซ€ เชชเซเชฐเช•เซเชฐเชฟเชฏเชพเชฎเชพเช‚, เช…เชฎเซ‡ เชฎเซเชถเซเช•เซ‡เชฒเซ€เช“เชจเซ‹ เชธเชพเชฎเชจเซ‹ เช•เชฐเซ€เช เช›เซ€เช, เช˜เชฃเซ€ เชฌเชงเซ€ เชฎเซเชถเซเช•เซ‡เชฒเซ€เช“, เช•เซ‡เชŸเชฒเซ€เช• เชธเชฎเชธเซเชฏเชพเช“ เช•เซ‡ เชœเซ‡เชจเชพเชฅเซ€ เชคเชฎเซ‡ เช•เชพเช‚ เชคเซ‹ เชชเชฐเชฟเชšเชฟเชค เช›เซ‹ เช…เชฅเชตเชพ เชญเชตเชฟเชทเซเชฏเชฎเชพเช‚ เชคเซ‡เชจเชพเชฅเซ€ เชชเชฐเชฟเชšเชฟเชค เชฅเชถเซ‹.

เชšเชพเชฒเซ‹ เชชเชฐเชฟเชธเซเชฅเชฟเชคเชฟเชจเซเช‚ เช…เชจเซเช•เชฐเชฃ เช•เชฐเซ€เช

เชšเชพเชฒเซ‹ เช•เชฒเซเชชเชจเชพ เช•เชฐเซ€เช เช•เซ‡ เช…เชฎเชจเซ‡ เชเช• เชฏเซเชตเชพเชจ เช•เช‚เชชเชจเซ€ "N" เชฎเชพเช‚ เชจเซ‹เช•เชฐเซ€ เชฎเชณเซ€ เช›เซ‡, เชœเซ‡เชจเซ€ เชชเซเชฐเชตเซƒเชคเซเชคเชฟเช“ ML เชธเชพเชฅเซ‡ เชธเช‚เชฌเช‚เชงเชฟเชค เช›เซ‡. เช…เชฎเซ‡ ML (DL, CV) เชชเซเชฐเซ‹เชœเซ‡เช•เซเชŸ เชชเชฐ เช•เชพเชฎ เช•เชฐเซ€เช เช›เซ€เช, เชชเช›เซ€ เช•เซ‹เชˆ เช•เชพเชฐเชฃเชธเชฐ เช…เชฎเซ‡ เชฌเซ€เชœเซ€ เชจเซ‹เช•เชฐเซ€ เชชเชฐ เชธเซเชตเชฟเชš เช•เชฐเซ€เช เช›เซ€เช, เชธเชพเชฎเชพเชจเซเชฏ เชฐเซ€เชคเซ‡ เชตเชฟเชฐเชพเชฎ เชฒเชˆเช เช›เซ€เช เช…เชจเซ‡ เช…เชฎเชพเชฐเชพ เชชเซ‹เชคเชพเชจเชพ เช…เชฅเชตเชพ เชฌเซ€เชœเชพ เช•เซ‹เชˆเชจเชพ เชจเซเชฏเซเชฐเซ‹เชจ เชชเชฐ เชชเชพเช›เชพ เช†เชตเซ€เช เช›เซ€เช.

  1. เชธเชคเซเชฏเชจเซ€ เช•เซเชทเชฃ เช†เชตเซ‡ เช›เซ‡, เชคเชฎเชพเชฐเซ‡ เช•เซ‹เชˆเช• เชฐเซ€เชคเซ‡ เชฏเชพเชฆ เชฐเชพเช–เชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡ เช•เซ‡ เชคเชฎเซ‡ เช•เซเชฏเชพเช‚ เชฐเซ‹เช•เชพเชฏเชพ, เชคเชฎเซ‡ เช•เชฏเชพ เชนเชพเช‡เชชเชฐเชชเซ‡เชฐเชพเชฎเซ€เชŸเชฐเซเชธเชจเซ‹ เชชเซเชฐเชฏเชพเชธ เช•เชฐเซเชฏเซ‹ เช…เชจเซ‡, เชธเซŒเชฅเซ€ เช…เช—เชคเซเชฏเชจเซเช‚, เชคเซ‡เช“ เช•เชฏเชพ เชชเชฐเชฟเชฃเชพเชฎเซ‹ เชคเชฐเชซ เชฆเซ‹เชฐเซ€ เช—เชฏเชพ. เชฌเชงเชพ เชฒเซ‹เช‚เชš เชชเชฐ เชฎเชพเชนเชฟเชคเซ€ เช•เซ‹เชฃเซ‡ เชธเช‚เช—เซเชฐเชนเชฟเชค เช•เชฐเซ€ เช›เซ‡ เชคเซ‡เชจเชพ เชฎเชพเชŸเซ‡ เช˜เชฃเชพ เชตเชฟเช•เชฒเซเชชเซ‹ เชนเซ‹เชˆ เชถเช•เซ‡ เช›เซ‡: เชนเซ‡เชกเชฎเชพเช‚, เชฐเซ‚เชชเชฐเซ‡เช–เชพเช“, เชจเซ‹เชŸเชชเซ‡เชกเชฎเชพเช‚, เช•เซเชฒเชพเช‰เชกเชฎเชพเช‚ เช•เชพเชฐเซเชฏเช•เชพเชฐเซ€ เชตเชพเชคเชพเชตเชฐเชฃเชฎเชพเช‚. เชœเซเชฏเชพเชฐเซ‡ เชนเชพเช‡เชชเชฐเชชเซ‡เชฐเชพเชฎเซ€เชŸเชฐเซเชธ เช•เซ‹เชกเชฎเชพเช‚ เชŸเชฟเชชเซเชชเชฃเซ€ เช•เชฐเซ‡เชฒ เชฒเซ€เชŸเซ€เช“ เชคเชฐเซ€เช•เซ‡ เชธเช‚เช—เซเชฐเชนเชฟเชค เชฅเชพเชฏ เชคเซเชฏเชพเชฐเซ‡ เชฎเชจเซ‡ เชเช• เชตเชฟเช•เชฒเซเชช เชœเซ‹เชตเชพ เชฎเชณเซเชฏเซ‹, เชธเชพเชฎเชพเชจเซเชฏ เชฐเซ€เชคเซ‡, เชซเซ‡เชจเซเชธเซ€เชจเซ€ เชซเซเชฒเชพเช‡เชŸ. เชนเชตเซ‡ เช•เชฒเซเชชเชจเชพ เช•เชฐเซ‹ เช•เซ‡ เชคเชฎเซ‡ เชคเชฎเชพเชฐเชพ เชชเซเชฐเซ‹เชœเซ‡เช•เซเชŸ เชชเชฐ เชจเชนเซ€เช‚, เชชเชฐเช‚เชคเซ เชเช• เชตเซเชฏเช•เซเชคเชฟเชจเชพ เชชเซเชฐเซ‹เชœเซ‡เช•เซเชŸ เชชเชฐ เชชเชพเช›เชพ เชซเชฐเซเชฏเชพ เช•เซ‡ เชœเซ‡เชฃเซ‡ เช•เช‚เชชเชจเซ€ เช›เซ‹เชกเซ€ เชฆเซ€เชงเซ€ เช…เชจเซ‡ เชคเชฎเชจเซ‡ เชตเชพเชฐเชธเชพเชฎเชพเช‚ เช•เซ‹เชก เช…เชจเซ‡ เชฎเซ‹เชกเซ‡เชฒ_1.pb เช•เชนเซ‡เชตเชพเชฏ เช›เซ‡. เชšเชฟเชคเซเชฐเชจเซ‡ เชชเซ‚เชฐเซเชฃ เช•เชฐเชตเชพ เช…เชจเซ‡ เชฌเชงเซ€ เชชเซ€เชกเชพ เชตเซเชฏเช•เซเชค เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡, เชšเชพเชฒเซ‹ เช•เชฒเซเชชเชจเชพ เช•เชฐเซ€เช เช•เซ‡ เชคเชฎเซ‡ เชถเชฟเช–เชพเช‰ เชจเชฟเชทเซเชฃเชพเชค เชชเชฃ เช›เซ‹.
  2. เช†เช—เชณ เชตเชงเซ‹. เช•เซ‹เชก เชšเชฒเชพเชตเชตเชพ เชฎเชพเชŸเซ‡, เช†เชชเชฃเซ‡ เช…เชจเซ‡ เชคเซ‡เชจเซ€ เชธเชพเชฅเซ‡ เช•เชพเชฎ เช•เชฐเชจเชพเชฐ เชฆเชฐเซ‡เช•เชจเซ‡ เชชเชฐเซเชฏเชพเชตเชฐเชฃ เชฌเชจเชพเชตเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡. เชคเซ‡ เช˜เชฃเซ€เชตเชพเชฐ เชฅเชพเชฏ เช›เซ‡ เช•เซ‡ เช•เซ‹เชˆ เช•เชพเชฐเชฃเซ‹เชธเชฐ เชคเซ‡เช“เช เชคเซ‡เชจเซ‡ เช…เชฎเชพเชฐเชพ เชตเชพเชฐเชธเชพ เชคเชฐเซ€เช•เซ‡ เช›เซ‹เชกเซเชฏเซ‹ เชจเชฅเซ€. เช† เชเช• เชฌเชฟเชจ-เชคเซเชšเซเช› เช•เชพเชฐเซเชฏ เชชเชฃ เชฌเชจเซ€ เชถเช•เซ‡ เช›เซ‡. เชคเชฎเซ‡ เช† เชชเช—เชฒเชพ เชชเชฐ เชธเชฎเชฏ เชฌเช—เชพเชกเชตเชพ เชฎเชพเช‚เช—เชคเชพ เชจเชฅเซ€, เชถเซเช‚ เชคเชฎเซ‡?
  3. เช…เชฎเซ‡ เชเช• เชฎเซ‹เชกเซ‡เชฒเชจเซ‡ เชคเชพเชฒเซ€เชฎ เช†เชชเซ€เช เช›เซ€เช (เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡, เช•เชพเชฐ เชกเชฟเชŸเซ‡เช•เซเชŸเชฐ). เช…เชฎเซ‡ เชคเซ‡ เชฌเชฟเช‚เชฆเซเช เชชเชนเซ‹เช‚เชšเซ€เช เช›เซ€เช เชœเซเชฏเชพเช‚ เชคเซ‡ เช–เซ‚เชฌ เชœ เชธเชพเชฐเซเช‚ เชฌเชจเซ‡ เช›เซ‡ - เชชเชฐเชฟเชฃเชพเชฎ เชธเชพเชšเชตเชตเชพเชจเซ‹ เชธเชฎเชฏ เช›เซ‡. เชšเชพเชฒเซ‹ เชคเซ‡เชจเซ‡ car_detection_v1.pb เช•เชนเซ€เช. เชชเช›เซ€ เช…เชฎเซ‡ เชฌเซ€เชœเชพเชจเซ‡ เชคเชพเชฒเซ€เชฎ เช†เชชเซ€เช เช›เซ€เช - car_detection_v2.pb. เชฅเซ‹เชกเชพ เชธเชฎเชฏ เชชเช›เซ€, เช…เชฎเชพเชฐเชพ เชธเชพเชฅเซ€เชฆเชพเชฐเซ‹ เช…เชฅเชตเชพ เช†เชชเชฃเซ‡ เชชเซ‹เชคเซ‡ เชœ เชตเชฟเชตเชฟเชง เช†เชฐเซเช•เชฟเชŸเซ‡เช•เซเชšเชฐเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เชตเชงเซเชจเซ‡ เชตเชงเซ เชถเซ€เช–เชตเซ€เช เช›เซ€เช. เชชเชฐเชฟเชฃเชพเชฎเซ‡, เช•เชฒเชพเช•เซƒเชคเชฟเช“เชจเซ‹ เชธเชฎเซ‚เชน เชฐเชšเชพเชฏ เช›เซ‡, เชœเซ‡เชจเชพ เชตเชฟเชถเซ‡เชจเซ€ เชฎเชพเชนเชฟเชคเซ€ เชธเช–เชค เชฎเชนเซ‡เชจเชคเชฅเซ€ เชเช•เชคเซเชฐเชฟเชค เช•เชฐเชตเซ€ เช†เชตเชถเซเชฏเช• เช›เซ‡ (เชชเชฐเช‚เชคเซ เช…เชฎเซ‡ เช† เชชเช›เซ€เชฅเซ€ เช•เชฐเซ€เชถเซเช‚, เช•เชพเชฐเชฃ เช•เซ‡ เช…เชคเซเชฏเชพเชฐเซ‡ เช…เชฎเชพเชฐเซ€ เชชเชพเชธเซ‡ เชตเชงเซ เชชเซเชฐเชพเชฅเชฎเชฟเช•เชคเชพ เชฌเชพเชฌเชคเซ‹ เช›เซ‡).
  4. เช เซ€เช• เช›เซ‡ เชนเชตเซ‡ เชฌเชงเซเช‚ เชธเชฎเชพเชชเซเชค เชฅเชˆ เช—เชฏเซเช‚ เช›เซ‡! เช…เชฎเชพเชฐเซ€ เชชเชพเชธเซ‡ เชเช• เชฎเซ‹เชกเซ‡เชฒ เช›เซ‡! เชถเซเช‚ เช†เชชเชฃเซ‡ เช†เช—เชฒเชพ เชฎเซ‹เชกเชฒเชจเซ‡ เชคเชพเชฒเซ€เชฎ เช†เชชเชตเชพเชจเซเช‚ เชถเชฐเซ‚ เช•เชฐเซ€ เชถเช•เซ€เช เช›เซ€เช, เชจเชตเซ€ เชธเชฎเชธเซเชฏเชพเชจเซ‡ เช‰เช•เซ‡เชฒเชตเชพ เชฎเชพเชŸเซ‡ เช†เชฐเซเช•เชฟเชŸเซ‡เช•เซเชšเชฐ เชตเชฟเช•เชธเชพเชตเซ€ เชถเช•เซ€เช เช›เซ€เช, เช…เชฅเชตเชพ เช†เชชเชฃเซ‡ เชฅเซ‹เชกเซ€ เชšเชพ เชชเซ€เชตเชพ เชœเชˆ เชถเช•เซ€เช? เช…เชจเซ‡ เช•เซ‹เชฃ เชœเชฎเชพเชตเชถเซ‡?

เชธเชฎเชธเซเชฏเชพเช“เชจเซ€ เช“เชณเช–

เชชเซเชฐเซ‹เชœเซ‡เช•เซเชŸ เช…เชฅเชตเชพ เชชเซเชฐเซ‹เชกเช•เซเชŸ เชชเชฐ เช•เชพเชฎ เช•เชฐเชตเซเช‚ เช เช˜เชฃเชพ เชฒเซ‹เช•เซ‹เชจเซเช‚ เช•เชพเชฎ เช›เซ‡. เช…เชจเซ‡ เชธเชฎเชฏ เชœเชคเชพเช‚, เชฒเซ‹เช•เซ‹ เชœเชพเชฏ เช›เซ‡ เช…เชจเซ‡ เช†เชตเซ‡ เช›เซ‡, เชคเซเชฏเชพเช‚ เชตเชงเซ เชชเซเชฐเซ‹เชœเซ‡เช•เซเชŸเซเชธ เช›เซ‡, เช…เชจเซ‡ เชชเซเชฐเซ‹เชœเซ‡เช•เซเชŸเซเชธ เชชเซ‹เชคเซ‡ เชตเชงเซ เชœเชŸเชฟเชฒ เชฌเชจเซ€ เชœเชพเชฏ เช›เซ‡. เชเช• เชฏเชพ เชฌเซ€เชœเซ€ เชฐเซ€เชคเซ‡, เช‰เชชเชฐ เชตเชฐเซเชฃเชตเซ‡เชฒ เชšเช•เซเชฐเชฎเชพเช‚เชฅเซ€ เชชเชฐเชฟเชธเซเชฅเชฟเชคเชฟเช“ (เช…เชจเซ‡ เชฎเชพเชคเซเชฐ เชจเชนเซ€เช‚) เช…เชฎเซเช• เชธเช‚เชฏเซ‹เชœเชจเซ‹เชฎเชพเช‚ เชชเซเชจเชฐเชพเชตเซƒเชคเซเชคเชฟเชฅเซ€ เชชเซเชจเชฐเชพเชตเชฐเซเชคเชจ เชธเซเชงเซ€ เช†เชตเชถเซ‡. เช† เชฌเชงเชพเชจเชพ เชชเชฐเชฟเชฃเชพเชฎเซ‡ เชธเชฎเชฏเชจเซ‹ เชตเซเชฏเชฏ, เชฎเซ‚เช‚เชเชตเชฃ, เชšเซ‡เชคเชพ, เชธเช‚เชญเชตเชคเชƒ เช—เซเชฐเชพเชนเช• เช…เชธเช‚เชคเซ‹เชท เช…เชจเซ‡ เช›เซ‡เชตเชŸเซ‡, เชจเชพเชฃเชพเช‚ เช—เซเชฎเชพเชตเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡. เชœเซ‹ เช•เซ‡ เช†เชชเชฃเซ‡ เชฌเชงเชพ เชธเชพเชฎเชพเชจเซเชฏ เชฐเซ€เชคเซ‡ เช เชœ เชœเซ‚เชจเชพ เชฐเซ‡เช•เชจเซ‡ เช…เชจเซเชธเชฐเซ€เช เช›เซ€เช, เชนเซเช‚ เชฎเชพเชจเซเช‚ เช›เซเช‚ เช•เซ‡ เช•เซ‹เชˆ เชชเชฃ เช† เช•เซเชทเชฃเซ‹เชจเซ‡ เชซเชฐเซ€เชฅเซ€ เช…เชจเซ‡ เชซเชฐเซ€เชฅเซ€ เชœเซ€เชตเช‚เชค เช•เชฐเชตเชพ เชฎเชพเช‚เช—เชคเซเช‚ เชจเชฅเซ€.

MLOps - เช•เซเช• เชฌเซเช•, เชชเซเชฐเช•เชฐเชฃ 1

เชคเซ‡เชฅเซ€, เช…เชฎเซ‡ เชเช• เชตเชฟเช•เชพเชธ เชšเช•เซเชฐเชฎเชพเช‚เชฅเซ€ เชชเชธเชพเชฐ เชฅเชฏเชพ เช›เซ€เช เช…เชจเซ‡ เช…เชฎเซ‡ เชœเซ‹เชฏเซเช‚ เช›เซ‡ เช•เซ‡ เชเชตเซ€ เชธเชฎเชธเซเชฏเชพเช“ เช›เซ‡ เชœเซ‡เชจเซ‡ เชนเชฒ เช•เชฐเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡. เช† เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชคเชฎเชพเชฐเซ‡ เชœเชฐเซ‚เชฐ เช›เซ‡:

  • เช•เชพเชฎเชจเชพ เชชเชฐเชฟเชฃเชพเชฎเซ‹เชจเซ‡ เช…เชจเซเช•เซ‚เชณ เชฐเซ€เชคเซ‡ เชธเช‚เช—เซเชฐเชนเชฟเชค เช•เชฐเซ‹;
  • เชจเชตเชพ เช•เชฐเซเชฎเชšเชพเชฐเซ€เช“เชจเซ‡ เชธเชพเชฎเซ‡เชฒ เช•เชฐเชตเชพเชจเซ€ เชชเซเชฐเช•เซเชฐเชฟเชฏเชพเชจเซ‡ เชธเชฐเชณ เชฌเชจเชพเชตเซ‹;
  • เชตเชฟเช•เชพเชธ เชชเชฐเซเชฏเชพเชตเชฐเชฃ เชœเชฎเชพเชตเชตเชพเชจเซ€ เชชเซเชฐเช•เซเชฐเชฟเชฏเชพเชจเซ‡ เชธเชฐเชณ เชฌเชจเชพเชตเชตเซ€;
  • เชฎเซ‹เชกเซ‡เชฒ เชตเชฐเซเชเชจเชฟเช‚เช— เชชเซเชฐเช•เซเชฐเชฟเชฏเชพเชจเซ‡ เช—เซ‹เช เชตเซ‹;
  • เชฎเซ‹เชกเซ‡เชฒเซ‹เชจเซ‡ เชฎเชพเชจเซเชฏ เช•เชฐเชตเชพเชจเซ€ เช…เชจเซเช•เซ‚เชณ เชฐเซ€เชค เช›เซ‡;
  • เชฎเซ‹เชกเชฒ เชธเซเชŸเซ‡เชŸ เชฎเซ‡เชจเซ‡เชœเชฎเซ‡เชจเซเชŸ เชŸเซ‚เชฒ เชถเซ‹เชงเซ‹;
  • เช‰เชคเซเชชเชพเชฆเชจ เชฎเชพเชŸเซ‡ เชฎเซ‹เชกเซ‡เชฒเซ‹ เชชเชนเซ‹เช‚เชšเชพเชกเชตเชพเชจเซ‹ เชฎเชพเชฐเซเช— เชถเซ‹เชงเซ‹.

เชฆเซ‡เช–เซ€เชคเซ€ เชฐเซ€เชคเซ‡ เชตเชฐเซเช•เชซเซเชฒเซ‹ เชธเชพเชฅเซ‡ เช†เชตเชตเซเช‚ เชœเชฐเซ‚เชฐเซ€ เช›เซ‡ เชœเซ‡ เชคเชฎเชจเซ‡ เช† เชœเซ€เชตเชจ เชšเช•เซเชฐเชจเซ‡ เชธเชฐเชณเชคเชพเชฅเซ€ เช…เชจเซ‡ เชธเช—เชตเชกเชคเชพเชชเซ‚เชฐเซเชตเช• เชธเช‚เชšเชพเชฒเชฟเชค เช•เชฐเชตเชพเชจเซ€ เชฎเช‚เชœเซ‚เชฐเซ€ เช†เชชเซ‡? เช† เชชเซเชฐเชฅเชพเชจเซ‡ MLOps เช•เชนเซ‡เชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡

เชฎเชถเซ€เชจ เชฒเชฐเซเชจเชฟเช‚เช— เชฎเชพเชŸเซ‡ MLOps, เช…เชฅเชตเชพ DevOps, เชกเซ‡เชŸเชพ เชธเชพเชฏเชจเซเชธ เช…เชจเซ‡ IT เชŸเซ€เชฎเซ‹เชจเซ‡ เชฎเชถเซ€เชจ เชฒเชฐเซเชจเชฟเช‚เช— เชฎเซ‰เชกเชฒเซเชธ เชฎเชพเชŸเซ‡ เชฆเซ‡เช–เชฐเซ‡เช–, เชฎเชพเชจเซเชฏเชคเชพ เช…เชจเซ‡ เช—เชตเชฐเซเชจเชจเซเชธ เชฆเซเชตเชพเชฐเชพ เชฎเซ‰เชกเชฒ เชกเซ‡เชตเชฒเชชเชฎเซ‡เชจเซเชŸ เช…เชจเซ‡ เชกเชฟเชชเซเชฒเซ‹เชฏเชฎเซ‡เชจเซเชŸเชจเซ€ เช—เชคเชฟเชฎเชพเช‚ เชธเชนเชฏเซ‹เช— เช…เชจเซ‡ เชตเชงเชพเชฐเซ‹ เช•เชฐเชตเชพเชจเซ€ เชฎเช‚เชœเซ‚เชฐเซ€ เช†เชชเซ‡ เช›เซ‡.

เชคเชฎเซ‡ เช•เชฐเซ€ เชถเช•เซ‹ เช›เซ‹ เชตเชพเช‚เชšเชตเซเช‚เช—เซ‚เช—เชฒเชจเชพ เชฒเซ‹เช•เซ‹ เช† เชฌเชงเชพ เชตเชฟเชถเซ‡ เชถเซเช‚ เชตเชฟเชšเชพเชฐเซ‡ เช›เซ‡? เชฒเซ‡เช–เชฎเชพเช‚เชฅเซ€ เชคเซ‡ เชธเซเชชเชทเซเชŸ เช›เซ‡ เช•เซ‡ MLOps เชเช• เชตเชฟเชถเชพเชณ เชตเชธเซเชคเซ เช›เซ‡.

MLOps - เช•เซเช• เชฌเซเช•, เชชเซเชฐเช•เชฐเชฃ 1

เชฎเชพเชฐเชพ เชฒเซ‡เช–เชฎเชพเช‚ เช†เช—เชณ เชนเซเช‚ เชชเซเชฐเช•เซเชฐเชฟเชฏเชพเชจเชพ เชฎเชพเชคเซเชฐ เชเช• เชญเชพเช—เชจเซเช‚ เชตเชฐเซเชฃเชจ เช•เชฐเซ€เชถ. เช…เชฎเชฒเซ€เช•เชฐเชฃ เชฎเชพเชŸเซ‡, เชนเซเช‚ MLflow เชŸเซ‚เชฒเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชถ, เช•เชพเชฐเชฃ เช•เซ‡... เช† เชเช• เช“เชชเชจ-เชธเซ‹เชฐเซเชธ เชชเซเชฐเซ‹เชœเซ‡เช•เซเชŸ เช›เซ‡, เช•เชจเซ‡เช•เซเชŸ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชฅเซ‹เชกเซ€ เชฎเชพเชคเซเชฐเชพเชฎเชพเช‚ เช•เซ‹เชก เชœเชฐเซ‚เชฐเซ€ เช›เซ‡ เช…เชจเซ‡ เชฒเซ‹เช•เชชเซเชฐเชฟเชฏ ml เชซเซเชฐเซ‡เชฎเชตเชฐเซเช• เชธเชพเชฅเซ‡ เชเช•เซ€เช•เชฐเชฃ เช›เซ‡. เชคเชฎเซ‡ เช…เชจเซเชฏ เชŸเซ‚เชฒเซเชธ เชœเซ‡เชฎ เช•เซ‡ เช•เซเชฌเซ‡เชซเซเชฒเซ‹, เชธเซ‡เชœเชฎเซ‡เช•เชฐ, เชŸเซเชฐเซ‡เชจ เชตเช—เซ‡เชฐเซ‡ เชฎเชพเชŸเซ‡ เช‡เชจเซเชŸเชฐเชจเซ‡เชŸ เชชเชฐ เชถเซ‹เชงเซ€ เชถเช•เซ‹ เช›เซ‹ เช…เชจเซ‡ เช•เชฆเชพเชš เชคเชฎเชพเชฐเซ€ เชœเชฐเซ‚เชฐเชฟเชฏเชพเชคเซ‹เชจเซ‡ เชตเชงเซ เชธเชพเชฐเซ€ เชฐเซ€เชคเซ‡ เช…เชจเซเช•เซ‚เชณ เชนเซ‹เชฏ เชคเซ‡ เชถเซ‹เชงเซ€ เชถเช•เซ‹ เช›เซ‹.

MLFlow เชŸเซ‚เชฒเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเชพเชจเชพ เช‰เชฆเชพเชนเชฐเชฃเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ "เชฌเชฟเชฒเซเชกเชฟเช‚เช—" MLOps

MLFlow เช ml เชฎเซ‹เชกเชฒเซเชธเชจเชพ เชœเซ€เชตเชจเชšเช•เซเชฐ เชตเซเชฏเชตเชธเซเชฅเชพเชชเชจ เชฎเชพเชŸเซ‡ เชเช• เช“เชชเชจ เชธเซ‹เชฐเซเชธ เชชเซเชฒเซ‡เชŸเชซเซ‹เชฐเซเชฎ เช›เซ‡ (https://mlflow.org/).

MLflow เชšเชพเชฐ เช˜เชŸเช•เซ‹ เชธเชฎเชพเชตเซ‡ เช›เซ‡:

  • MLflow เชŸเซเชฐเซ‡เช•เชฟเช‚เช— - เชฐเซ‡เช•เซ‹เชฐเซเชกเชฟเช‚เช— เชชเชฐเชฟเชฃเชพเชฎเซ‹ เช…เชจเซ‡ เชชเชฐเชฟเชฎเชพเชฃเซ‹เชจเชพ เชฎเซเชฆเซเชฆเชพเช“เชจเซ‡ เช†เชตเชฐเซ€ เชฒเซ‡ เช›เซ‡ เชœเซ‡ เช† เชชเชฐเชฟเชฃเชพเชฎ เชคเชฐเชซ เชฆเซ‹เชฐเซ€ เชœเชพเชฏ เช›เซ‡;
  • MLflow เชชเซเชฐเซ‹เชœเซ‡เช•เซเชŸ - เชคเชฎเชจเซ‡ เช•เซ‹เชกเชจเซ‡ เชชเซ‡เช•เซ‡เชœ เช•เชฐเชตเชพเชจเซ€ เช…เชจเซ‡ เชคเซ‡เชจเซ‡ เช•เซ‹เชˆเชชเชฃ เชชเซเชฒเซ‡เชŸเชซเซ‹เชฐเซเชฎ เชชเชฐ เชชเซเชจเชƒเช‰เชคเซเชชเชพเชฆเชฟเชค เช•เชฐเชตเชพเชจเซ€ เชฎเช‚เชœเซ‚เชฐเซ€ เช†เชชเซ‡ เช›เซ‡;
  • MLflow เชฎเซ‰เชกเชฒเซเชธ - เชฎเซ‰เชกเชฒเชจเซ‡ เช‰เชคเซเชชเชพเชฆเชจเชฎเชพเช‚ เชœเชฎเชพเชตเชตเชพ เชฎเชพเชŸเซ‡ เชœเชตเชพเชฌเชฆเชพเชฐ;
  • MLflow เชฐเชœเชฟเชธเซเชŸเซเชฐเซ€ - เชคเชฎเชจเซ‡ เชฎเซ‰เชกเชฒ เชธเซเชŸเซ‹เชฐ เช•เชฐเชตเชพ เช…เชจเซ‡ เช•เซ‡เชจเซเชฆเซเชฐเชฟเชฏ เชฐเชฟเชชเซ‹เชเซ€เชŸเชฐเซ€เชฎเชพเช‚ เชคเซ‡เชฎเชจเซ€ เชธเซเชฅเชฟเชคเชฟเชจเซเช‚ เชธเช‚เชšเชพเชฒเชจ เช•เชฐเชตเชพเชจเซ€ เชฎเช‚เชœเซ‚เชฐเซ€ เช†เชชเซ‡ เช›เซ‡.

MLflow เชฌเซ‡ เชธเช‚เชธเซเชฅเชพเช“ เชชเชฐ เช•เชพเชฐเซเชฏ เช•เชฐเซ‡ เช›เซ‡:

  • เชฒเซ‹เชจเซเชš เช เชคเชพเชฒเซ€เชฎ, เชชเชฐเชฟเชฎเชพเชฃเซ‹ เช…เชจเซ‡ เชฎเซ‡เชŸเซเชฐเชฟเช•เซเชธเชจเซเช‚ เชธเช‚เชชเซ‚เชฐเซเชฃ เชšเช•เซเชฐ เช›เซ‡ เชœเซ‡เชจเชพ เชฆเซเชตเชพเชฐเชพ เช…เชฎเซ‡ เชจเซ‹เช‚เชงเชฃเซ€ เช•เชฐเชตเชพ เชฎเชพเช‚เช—เซ€เช เช›เซ€เช;
  • เชชเซเชฐเชฏเซ‹เช— เช "เชตเชฟเชทเชฏ" เช›เซ‡ เชœเซ‡ เชเช•เชธเชพเชฅเซ‡ เชšเชพเชฒเซ‡ เช›เซ‡.

เช‰เชฆเชพเชนเชฐเชฃเชจเชพ เชคเชฎเชพเชฎ เชชเช—เชฒเชพเช‚ เช‰เชฌเซเชจเซเชŸเซ 18.04 เช“เชชเชฐเซ‡เชŸเชฟเช‚เช— เชธเชฟเชธเซเชŸเชฎ เชชเชฐ เชฒเชพเช—เซ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเชพ เช›เซ‡.

1. เชธเชฐเซเชตเชฐ เชœเชฎเชพเชตเซ‹

เช…เชฎเชพเชฐเชพ เชชเซเชฐเซ‹เชœเซ‡เช•เซเชŸเชจเซ‡ เชธเชฐเชณเชคเชพเชฅเซ€ เชฎเซ‡เชจเซ‡เชœ เช•เชฐเชตเชพ เช…เชจเซ‡ เชคเชฎเชพเชฎ เชœเชฐเซ‚เชฐเซ€ เชฎเชพเชนเชฟเชคเซ€ เชชเซเชฐเชพเชชเซเชค เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡, เช…เชฎเซ‡ เชธเชฐเซเชตเชฐ เช—เซ‹เช เชตเซ€เชถเซเช‚. MLflow เชŸเซเชฐเซ‡เช•เชฟเช‚เช— เชธเชฐเซเชตเชฐเชฎเชพเช‚ เชฌเซ‡ เชฎเซเช–เซเชฏ เช˜เชŸเช•เซ‹ เช›เซ‡:

  • เชฌเซ‡เช•เชเชจเซเชก เชธเซเชŸเซ‹เชฐ - เชฐเชœเชฟเชธเซเชŸเชฐเซเชก เชฎเซ‹เชกเชฒเซเชธ เชตเชฟเชถเซ‡ เชฎเชพเชนเชฟเชคเซ€ เชธเซเชŸเซ‹เชฐ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชœเชตเชพเชฌเชฆเชพเชฐ (4 DBMSs: 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

เชœเซ‡เชฎ เช•เซ‡ เชฌเซ‡เช•เชเชจเซเชก เชธเซเชŸเซ‹เชฐ เชšเชพเชฒเซ‹ 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. เชŸเซเชฐเซ‡เช•เชฟเช‚เช— เช‰เชฎเซ‡เชฐเซ‹

เช…เชฎเชพเชฐเซ€ เชคเชพเชฒเซ€เชฎเชจเชพ เชชเชฐเชฟเชฃเชพเชฎเซ‹ เช–เซ‹เชตเชพเชˆ เชจ เชœเชพเชฏ เชคเซ‡ เชฎเชพเชŸเซ‡, เชตเชฟเช•เชพเชธเช•เชฐเซเชคเชพเช“เชจเซ€ เชญเชพเชตเชฟ เชชเซ‡เชขเซ€ เชถเซเช‚ เชฅเชˆ เชฐเชนเซเชฏเซเช‚ เช›เซ‡ เชคเซ‡ เชธเชฎเชœเซ€ เชถเช•เซ‡ เช…เชจเซ‡ เชตเซƒเชฆเซเชง เชธเชพเชฅเซ€เช“ เช…เชจเซ‡ เชคเชฎเซ‡ เชถเชพเช‚เชคเชฟเชฅเซ€ เชถเซ€เช–เชตเชพเชจเซ€ เชชเซเชฐเช•เซเชฐเชฟเชฏเชพเชจเซเช‚ เชตเชฟเชถเซเชฒเซ‡เชทเชฃ เช•เชฐเซ€ เชถเช•เซ‹ เชคเซ‡ เชฎเชพเชŸเซ‡, เช…เชฎเชพเชฐเซ‡ เชŸเซเชฐเซ‡เช•เชฟเช‚เช— เช‰เชฎเซ‡เชฐเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡. เชŸเซเชฐเซ‡เช•เชฟเช‚เช—เชจเซ‹ เช…เชฐเซเชฅ เช›เซ‡ เชชเซ‡เชฐเชพเชฎเซ€เชŸเชฐเซเชธ, เชฎเซ‡เชŸเซเชฐเชฟเช•เซเชธ, เช†เชฐเซเชŸเชฟเชซเซ‡เช•เซเชŸเซเชธ เช…เชจเซ‡ เชคเชพเชฒเซ€เชฎเชจเซ€ เชถเชฐเซ‚เช†เชค เชตเชฟเชถเซ‡เชจเซ€ เช•เซ‹เชˆเชชเชฃ เชตเชงเชพเชฐเชพเชจเซ€ เชฎเชพเชนเชฟเชคเซ€, เช…เชฎเชพเชฐเชพ เช•เชฟเชธเซเชธเชพเชฎเชพเช‚, เชธเชฐเซเชตเชฐ เชชเชฐ เชธเชพเชšเชตเชตเซ€.

เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡, เชฎเซ‡เช‚ เชเช• เชจเชพเชจเซเช‚ เชฌเชจเชพเชตเซเชฏเซเช‚ เช—เซ€เชฅเชฌ เชชเชฐ เชชเซเชฐเซ‹เชœเซ‡เช•เซเชŸ เช•เซ‡เชฐเชพเชธ เชชเชฐ เชœเซ‡ เช›เซ‡ เชคเซ‡ เชฌเชงเซเช‚ เชตเชฟเชญเชพเชœเชฟเชค เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ 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 เชŸเซเชฐเซ‡เช•เชฟเช‚เช— TensorFlow, Keras, Gluon XGBoost, LightGBM, Spark เชฎเชพเชŸเซ‡ เช“เชŸเซ‹เชฎเซ‡เชŸเชฟเช• เชฒเซ‹เช—เซ€เช‚เช—เชจเซ‡ เชธเชชเซ‹เชฐเซเชŸ เช•เชฐเซ‡ เช›เซ‡. เชœเซ‹ เชคเชฎเชจเซ‡ เชคเชฎเชพเชฐเซเช‚ เชซเซเชฐเซ‡เชฎเชตเชฐเซเช• เช…เชฅเชตเชพ เชฒเชพเช‡เชฌเซเชฐเซ‡เชฐเซ€ เชจ เชฎเชณเซ€ เชนเซ‹เชฏ, เชคเซ‹ เชคเชฎเซ‡ เชนเช‚เชฎเซ‡เชถเชพ เชธเซเชชเชทเซเชŸเชชเชฃเซ‡ เชฒเซ‰เช— เช‡เชจ เช•เชฐเซ€ เชถเช•เซ‹ เช›เซ‹. เช…เชฎเซ‡ เชคเชพเชฒเซ€เชฎ เชถเชฐเซ‚ เช•เชฐเซ€ เชฐเชนเซเชฏเชพ เช›เซ€เช. เชฐเชฟเชฎเซ‹เชŸ เชธเชฐเซเชตเชฐ เชชเชฐ เชŸเซ…เช—เซเชธ เช…เชจเซ‡ เช‡เชจเชชเซเชŸ เชชเชฐเชฟเชฎเชพเชฃเซ‹ เชจเซ‹เช‚เชงเซ‹.

เชฅเซ‹เชกเซ€เช• เชฒเซ€เชŸเซ€เช“ เช…เชจเซ‡ เชคเชฎเชจเซ‡, เชฌเซ€เชœเชพ เชฌเชงเชพเชจเซ€ เชœเซ‡เชฎ, เชคเชฎเชพเชฎ เชฒเซ‹เชจเซเชš เชตเชฟเชถเซ‡เชจเซ€ เชฎเชพเชนเชฟเชคเซ€เชจเซ€ เชเช•เซเชธเซ‡เชธ เชนเชถเซ‡. เช•เซ‚เชฒ?

3. เช…เชฎเซ‡ เชชเซเชฐเซ‹เชœเซ‡เช•เซเชŸ เชฆเซ‹เชฐเซ€เช เช›เซ€เช

เชนเชตเซ‡ เชšเชพเชฒเซ‹ เชชเซเชฐเซ‹เชœเซ‡เช•เซเชŸ เชถเชฐเซ‚ เช•เชฐเชตเชพเชจเซเช‚ เชธเชฐเชณ เชฌเชจเชพเชตเซ€เช. เช† เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡, MLproject เช…เชจเซ‡ conda.yaml เชซเชพเช‡เชฒเชจเซ‡ เชชเซเชฐเซ‹เชœเซ‡เช•เซเชŸ เชฐเซ‚เชŸเชฎเชพเช‚ เช‰เชฎเซ‡เชฐเซ‹.
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 เชซเชพเชˆเชฒเชฎเชพเช‚ เช›เซ‡;
  • เชเชจเซเชŸเซเชฐเซ€ เชชเซ‹เชˆเชจเซเชŸเซเชธ - เชธเซ‚เชšเชตเซ‡ เช›เซ‡ เช•เซ‡ เช•เชˆ เชซเชพเช‡เชฒเซ‹ เช…เชจเซ‡ เช•เชฏเชพ เชชเชฐเชฟเชฎเชพเชฃเซ‹ เชธเชพเชฅเซ‡ เช†เชชเชฃเซ‡ เชšเชฒเชพเชตเซ€ เชถเช•เซ€เช เช›เซ€เช (เชคเชพเชฒเซ€เชฎ เชถเชฐเซ‚ เช•เชฐเชคเซ€ เชตเช–เชคเซ‡ เชคเชฎเชพเชฎ เชชเชฐเชฟเชฎเชพเชฃเซ‹ เช†เชชเชฎเซ‡เชณเซ‡ เชฒเซ‰เช— เชฅเชˆ เชœเชพเชฏ เช›เซ‡)

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 เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซเช‚ เช›เซเช‚, เชเชจเชพเช•เซ‹เชจเซเชกเชพ เชคเชฎเชพเชฐเชพ เช•เชฎเซเชชเซเชฏเซเชŸเชฐ เชชเชฐ เช‡เชจเซเชธเซเชŸเซ‹เชฒ เช•เชฐเซ‡เชฒเซเช‚ เชนเซ‹เชตเซเช‚ เชœเซ‹เชˆเช (เชชเชฐเช‚เชคเซ เชคเชฎเซ‡ เชฌเชงเชพ เชœเชฐเซ‚เชฐเซ€ เชชเซ‡เช•เซ‡เชœเซ‹ เชœเชพเชคเซ‡ เช‡เชจเซเชธเซเชŸเซ‹เชฒ เช•เชฐเซ€เชจเซ‡ เช…เชจเซ‡ เชฒเซ‹เชจเซเชš เชชเซ‡เชฐเชพเชฎเซ€เชŸเชฐเซเชธ เชธเชพเชฅเซ‡ เชฐเชฎเซ€เชจเซ‡ เช†เชจเซ€ เช†เชธเชชเชพเชธ เชฎเซ‡เชณเชตเซ€ เชถเช•เซ‹ เช›เซ‹).

เชคเชฎเชพเชฎ เชคเซˆเชฏเชพเชฐเซ€เชจเชพ เชชเช—เชฒเชพเช‚ เชชเซ‚เชฐเซเชฃ เชฅเชˆ เช—เชฏเชพ เช›เซ‡ เช…เชจเซ‡ เช…เชฎเซ‡ เชคเชพเชฒเซ€เชฎ เชถเชฐเซ‚ เช•เชฐเชตเชพเชจเซเช‚ เชถเชฐเซ‚ เช•เชฐเซ€ เชถเช•เซ€เช เช›เซ€เช. เชชเซเชฐเซ‹เชœเซ‡เช•เซเชŸ เชฐเซเชŸเชฎเชพเช‚เชฅเซ€:

$ 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

เชฆเชฐเซ‡เช• เชฎเซ‹เชกเซ‡เชฒ เชฎเชพเชŸเซ‡, เช…เชฎเซ‡ เชตเชฐเซเชฃเชจ เช‰เชฎเซ‡เชฐเซ€ เชถเช•เซ€เช เช›เซ€เช เช…เชจเซ‡ เชคเซเชฐเชฃ เชฐเชพเชœเซเชฏเซ‹เชฎเชพเช‚เชฅเซ€ เชเช• เชชเชธเช‚เชฆ เช•เชฐเซ€ เชถเช•เซ€เช เช›เซ€เช (เชธเซเชŸเซ‡เชœเชฟเช‚เช—, เชชเซเชฐเซ‹เชกเช•เซเชถเชจ, เช†เชฐเซเช•เชพเช‡เชตเซเชก); เชคเซเชฏเชพเชฐเชฌเชพเชฆ, 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) เชถเชพเชฎเซ‡เชฒ เชนเซ‹เชˆ เชถเช•เซ‡ เช›เซ‡ เช…เชฅเชตเชพ เชคเชฎเซ‡ เชกเซ‡เชŸเชพเชธเซ‡เชŸเซเชธเชจเซเช‚ เชธเช‚เชธเซเช•เชฐเชฃ เช‰เชฎเซ‡เชฐเชถเซ‹, เช…เชฅเชตเชพ เช•เชฆเชพเชš เชฌเซ€เชœเซเช‚ เช•เช‚เชˆเช•? เชนเซเช‚ เชœเซ‡ เชฎเซเชฆเซเชฆเซ‹ เชฌเชจเชพเชตเชตเชพเชจเซ‹ เชชเซเชฐเชฏเชพเชธ เช•เชฐเซ€ เชฐเชนเซเชฏเซ‹ เชนเชคเซ‹ เชคเซ‡ เช เช›เซ‡ เช•เซ‡ เชคเชฎเชพเชฐเซ‡ เชธเชฎเช—เซเชฐ เชเชฎเชเชฒเช“เชชเซเชธเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡, เชเชฎเชเชฒเชซเซเชฒเซ‹ เช เชธเชฎเชพเชชเซเชค เชฅเชตเชพเชจเซเช‚ เชเช• เชธเชพเชงเชจ เช›เซ‡.

เชฒเช–เซ‹ เช•เซ‡ เชคเชฎเชจเซ‡ เช•เชˆ เชธเชฎเชธเซเชฏเชพเช“ เช†เชตเซ€ เชœเซ‡ เชฎเซ‡เช‚ เชฆเชฐเซเชถเชพเชตเซ€ เชจเชฅเซ€?
เชคเชฎเชพเชฐเซ€ เชœเชฐเซ‚เชฐเชฟเชฏเชพเชคเซ‹เชจเซ‡ เชชเซ‚เชฐเซเชฃ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชคเชฎเซ‡ เชธเชฟเชธเซเชŸเชฎเชฎเชพเช‚ เชถเซเช‚ เช‰เชฎเซ‡เชฐเชถเซ‹?
เชธเชฎเชธเซเชฏเชพเช“เชจเชพ เชคเชฎเชพเชฎ เช…เชฅเชตเชพ เชญเชพเช—เชจเซ‡ เช‰เช•เซ‡เชฒเชตเชพ เชฎเชพเชŸเซ‡ เชคเชฎเซ‡ เช•เชฏเชพ เชธเชพเชงเชจเซ‹ เช…เชจเซ‡ เช…เชญเชฟเช—เชฎเซ‹เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ‹ เช›เซ‹?

PS เชนเซเช‚ เช•เซ‡เชŸเชฒเซ€เช• เชฒเชฟเช‚เช•เซเชธ เช›เซ‹เชกเซ€เชถ:
เช—เซ€เชฅเชฌ เชชเซเชฐเซ‹เชœเซ‡เช•เซเชŸ - https://github.com/simbakot/mlflow_example
MLflow - https://mlflow.org/
เชชเซเชฐเชถเซเชจเซ‹ เชฎเชพเชŸเซ‡ เชฎเชพเชฐเซเช‚ เช•เชพเชฐเซเชฏ เช‡เชฎเซ‡เช‡เชฒ - [เช‡เชฎเซ‡เช‡เชฒ เชธเซเชฐเช•เซเชทเชฟเชค]

เช…เชฎเชพเชฐเซ€ เช•เช‚เชชเชจเซ€ เชธเชฎเชฏเชพเช‚เชคเชฐเซ‡ เช†เช‡เชŸเซ€ เชจเชฟเชทเซเชฃเชพเชคเซ‹ เชฎเชพเชŸเซ‡ เชตเชฟเชตเชฟเชง เช‡เชตเซ‡เชจเซเชŸเซเชธเชจเซเช‚ เช†เชฏเซ‹เชœเชจ เช•เชฐเซ‡ เช›เซ‡, เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡: 8 เชœเซเชฒเชพเช‡เช 19:00 เชฎเซ‹เชธเซเช•เซ‹ เชธเชฎเชฏเซ‡ เช‘เชจเชฒเชพเช‡เชจ เชซเซ‹เชฐเซเชฎเซ‡เชŸเชฎเชพเช‚ เชธเซ€เชตเซ€ เชฎเซ€เชŸเช…เชช เชฅเชถเซ‡, เชœเซ‹ เชคเชฎเชจเซ‡ เชฐเชธ เชนเซ‹เชฏ, เชคเซ‹ เชคเชฎเซ‡ เชญเชพเช— เชฒเชˆ เชถเช•เซ‹ เช›เซ‹, เชจเซ‹เช‚เชงเชฃเซ€ เช…เชนเซ€เช‚ .

เชธเซ‹เชฐเซเชธ: www.habr.com

เชเช• เชŸเชฟเชชเซเชชเชฃเซ€ เช‰เชฎเซ‡เชฐเซ‹