MLOps - āĻ°āĻžāĻ¨ā§āĻ¨āĻžāĻ° āĻŦāĻ‡, āĻ…āĻ§ā§āĻ¯āĻžāĻ¯āĻŧ 1

MLOps - āĻ°āĻžāĻ¨ā§āĻ¨āĻžāĻ° āĻŦāĻ‡, āĻ…āĻ§ā§āĻ¯āĻžāĻ¯āĻŧ 1

āĻšāĻžāĻ‡ āĻ¸āĻŦ! āĻ†āĻŽāĻŋ CROC āĻ āĻāĻ•āĻœāĻ¨ CV āĻŦāĻŋāĻ•āĻžāĻļāĻ•āĻžāĻ°ā§€āĨ¤ āĻ†āĻŽāĻ°āĻž āĻāĻ–āĻ¨ 3 āĻŦāĻ›āĻ° āĻ§āĻ°ā§‡ āĻ¸āĻŋāĻ­āĻŋāĻ° āĻ•ā§āĻˇā§‡āĻ¤ā§āĻ°ā§‡ āĻĒā§āĻ°āĻ•āĻ˛ā§āĻĒāĻ—ā§āĻ˛āĻŋ āĻŦāĻžāĻ¸ā§āĻ¤āĻŦāĻžāĻ¯āĻŧāĻ¨ āĻ•āĻ°āĻ›āĻŋāĨ¤ āĻāĻ‡ āĻ¸āĻŽāĻ¯āĻŧā§‡āĻ° āĻŽāĻ§ā§āĻ¯ā§‡, āĻ†āĻŽāĻ°āĻž āĻ…āĻ¨ā§‡āĻ• āĻ•āĻŋāĻ›ā§ āĻ•āĻ°ā§‡āĻ›āĻŋ, āĻ‰āĻĻāĻžāĻšāĻ°āĻŖāĻ¸ā§āĻŦāĻ°ā§‚āĻĒ: āĻ†āĻŽāĻ°āĻž āĻšāĻžāĻ˛āĻ•āĻĻā§‡āĻ° āĻĒāĻ°ā§āĻ¯āĻŦā§‡āĻ•ā§āĻˇāĻŖ āĻ•āĻ°ā§‡āĻ›āĻŋ āĻ¯āĻžāĻ¤ā§‡ āĻ—āĻžāĻĄāĻŧāĻŋ āĻšāĻžāĻ˛āĻžāĻ¨ā§‹āĻ° āĻ¸āĻŽāĻ¯āĻŧ āĻ¤āĻžāĻ°āĻž āĻŽāĻĻā§āĻ¯āĻĒāĻžāĻ¨ āĻ•āĻ°ā§‡ āĻ¨āĻž, āĻ§ā§‚āĻŽāĻĒāĻžāĻ¨ āĻ•āĻ°ā§‡ āĻ¨āĻž, āĻĢā§‹āĻ¨ā§‡ āĻ•āĻĨāĻž āĻŦāĻ˛ā§‡ āĻ¨āĻž, āĻ°āĻžāĻ¸ā§āĻ¤āĻžāĻ° āĻĻāĻŋāĻ•ā§‡ āĻ¤āĻžāĻ•āĻžāĻ¯āĻŧ āĻāĻŦāĻ‚ āĻ¸ā§āĻŦāĻĒā§āĻ¨ā§‡ āĻŦāĻž āĻŽā§‡āĻ˜ā§‡āĻ° āĻĻāĻŋāĻ•ā§‡ āĻ¨āĻžāĨ¤ ; āĻ†āĻŽāĻ°āĻž āĻāĻŽāĻ¨ āĻ˛ā§‹āĻ•āĻĻā§‡āĻ° āĻ°ā§‡āĻ•āĻ°ā§āĻĄ āĻ•āĻ°ā§‡āĻ›āĻŋ āĻ¯āĻžāĻ°āĻž āĻĄā§‡āĻĄāĻŋāĻ•ā§‡āĻŸā§‡āĻĄ āĻ˛ā§‡āĻ¨ā§‡ āĻ—āĻžāĻĄāĻŧāĻŋ āĻšāĻžāĻ˛āĻžāĻ¯āĻŧ āĻāĻŦāĻ‚ āĻŦā§‡āĻļ āĻ•āĻ¯āĻŧā§‡āĻ•āĻŸāĻŋ āĻĒāĻžāĻ°ā§āĻ•āĻŋāĻ‚ āĻ¸ā§āĻĒā§‡āĻ¸ āĻ¨ā§‡āĻ¯āĻŧ; āĻļā§āĻ°āĻŽāĻŋāĻ•āĻ°āĻž āĻšā§‡āĻ˛āĻŽā§‡āĻŸ, āĻ—ā§āĻ˛āĻžāĻ­āĻ¸ āĻ‡āĻ¤ā§āĻ¯āĻžāĻĻāĻŋ āĻĒāĻ°āĻ¤ā§‡āĻ¨ āĻ¤āĻž āĻ¨āĻŋāĻļā§āĻšāĻŋāĻ¤ āĻ•āĻ°āĻž; āĻ¸ā§āĻŦāĻŋāĻ§āĻžāĻ¯āĻŧ āĻĒā§āĻ°āĻŦā§‡āĻļ āĻ•āĻ°āĻ¤ā§‡ āĻšāĻžāĻ¨ āĻāĻŽāĻ¨ āĻāĻ•āĻœāĻ¨ āĻ•āĻ°ā§āĻŽāĻšāĻžāĻ°ā§€āĻ•ā§‡ āĻšāĻŋāĻšā§āĻ¨āĻŋāĻ¤ āĻ•āĻ°ā§‡āĻ›ā§‡āĻ¨; āĻ†āĻŽāĻ°āĻž āĻ¯āĻž āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°āĻŋ āĻ¸āĻŦ āĻ—āĻŖāĻ¨āĻž āĻ•āĻ°ā§‡āĻ›āĻŋāĨ¤

āĻ†āĻŽāĻŋ āĻ•āĻŋ āĻœāĻ¨ā§āĻ¯ āĻāĻ‡ āĻ¸āĻŦ āĻ•āĻ°āĻ›āĻŋ?

āĻĒā§āĻ°āĻ•āĻ˛ā§āĻĒāĻ—ā§āĻ˛āĻŋ āĻŦāĻžāĻ¸ā§āĻ¤āĻŦāĻžāĻ¯āĻŧāĻ¨ā§‡āĻ° āĻĒā§āĻ°āĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻ¯āĻŧ, āĻ†āĻŽāĻ°āĻž āĻ§āĻžāĻ•ā§āĻ•āĻž āĻ–ā§‡āĻ¯āĻŧā§‡āĻ›āĻŋ, āĻĒā§āĻ°āĻšā§āĻ° āĻŦāĻžāĻ§āĻž, āĻ•āĻŋāĻ›ā§ āĻ¸āĻŽāĻ¸ā§āĻ¯āĻž āĻ¯āĻžāĻ° āĻ¸āĻžāĻĨā§‡ āĻ†āĻĒāĻ¨āĻŋ āĻšāĻ¯āĻŧ āĻĒāĻ°āĻŋāĻšāĻŋāĻ¤ āĻŦāĻž āĻ­āĻŦāĻŋāĻˇā§āĻ¯āĻ¤ā§‡ āĻĒāĻ°āĻŋāĻšāĻŋāĻ¤ āĻšāĻŦā§‡āĻ¨āĨ¤

āĻāĻ° āĻĒāĻ°āĻŋāĻ¸ā§āĻĨāĻŋāĻ¤āĻŋ āĻ…āĻ¨ā§āĻ•āĻ°āĻŖ āĻ•āĻ°āĻž āĻ¯āĻžāĻ•

āĻ†āĻ¸ā§āĻ¨ āĻ•āĻ˛ā§āĻĒāĻ¨āĻž āĻ•āĻ°āĻŋ āĻ¯ā§‡ āĻ†āĻŽāĻ°āĻž āĻāĻ•āĻŸāĻŋ āĻ¤āĻ°ā§āĻŖ āĻ•ā§‹āĻŽā§āĻĒāĻžāĻ¨āĻŋ "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 āĻŸā§āĻ˛ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻŦ, āĻ•āĻžāĻ°āĻŖ... āĻāĻŸāĻŋ āĻāĻ•āĻŸāĻŋ āĻ“āĻĒā§‡āĻ¨ āĻ¸ā§‹āĻ°ā§āĻ¸ āĻĒā§āĻ°āĻœā§‡āĻ•ā§āĻŸ, āĻ¸āĻ‚āĻ¯ā§‹āĻ—ā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻ…āĻ˛ā§āĻĒ āĻĒāĻ°āĻŋāĻŽāĻžāĻŖ āĻ•ā§‹āĻĄ āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻœāĻ¨ āĻāĻŦāĻ‚ āĻœāĻ¨āĻĒā§āĻ°āĻŋāĻ¯āĻŧ āĻāĻŽāĻāĻ˛ āĻĢā§āĻ°ā§‡āĻŽāĻ“āĻ¯āĻŧāĻžāĻ°ā§āĻ•ā§‡āĻ° āĻ¸āĻžāĻĨā§‡ āĻ‡āĻ¨ā§āĻŸāĻŋāĻ—ā§āĻ°ā§‡āĻļāĻ¨ āĻ°āĻ¯āĻŧā§‡āĻ›ā§‡āĨ¤ āĻ†āĻĒāĻ¨āĻŋ āĻ•ā§āĻŦā§‡āĻĢā§āĻ˛ā§‹, āĻ¸ā§‡āĻœāĻŽā§‡āĻ•āĻžāĻ°, āĻŸā§āĻ°ā§‡āĻ¨ āĻ‡āĻ¤ā§āĻ¯āĻžāĻĻāĻŋāĻ° āĻŽāĻ¤ā§‹ āĻ…āĻ¨ā§āĻ¯āĻžāĻ¨ā§āĻ¯ āĻ¸āĻ°āĻžā§āĻœāĻžāĻŽāĻ—ā§āĻ˛āĻŋāĻ° āĻœāĻ¨ā§āĻ¯ āĻ‡āĻ¨ā§āĻŸāĻžāĻ°āĻ¨ā§‡āĻŸā§‡ āĻ…āĻ¨ā§āĻ¸āĻ¨ā§āĻ§āĻžāĻ¨ āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĻ¨ āĻāĻŦāĻ‚ āĻ¸āĻŽā§āĻ­āĻŦāĻ¤ āĻ†āĻĒāĻ¨āĻžāĻ° āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻœāĻ¨ā§‡āĻ° āĻ¸āĻžāĻĨā§‡ āĻ†āĻ°āĻ“ āĻ‰āĻĒāĻ¯ā§āĻ•ā§āĻ¤ āĻāĻ•āĻŸāĻŋ āĻ–ā§āĻāĻœā§‡ āĻĒā§‡āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĻ¨āĨ¤

MLFlow āĻŸā§āĻ˛ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻžāĻ° āĻ‰āĻĻāĻžāĻšāĻ°āĻŖ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡ MLOps "āĻŦāĻŋāĻ˛ā§āĻĄāĻŋāĻ‚"

MLFlow āĻšāĻ˛ ML āĻŽāĻĄā§‡āĻ˛ā§‡āĻ° āĻœā§€āĻŦāĻ¨āĻšāĻ•ā§āĻ° āĻŦā§āĻ¯āĻŦāĻ¸ā§āĻĨāĻžāĻĒāĻ¨āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻāĻ•āĻŸāĻŋ āĻ“āĻĒā§‡āĻ¨ āĻ¸ā§‹āĻ°ā§āĻ¸ āĻĒā§āĻ˛ā§āĻ¯āĻžāĻŸāĻĢāĻ°ā§āĻŽ (https://mlflow.org/).

MLflow āĻšāĻžāĻ°āĻŸāĻŋ āĻ‰āĻĒāĻžāĻĻāĻžāĻ¨ āĻ…āĻ¨ā§āĻ¤āĻ°ā§āĻ­ā§āĻ•ā§āĻ¤ āĻ•āĻ°ā§‡:

  • MLflow āĻŸā§āĻ°ā§āĻ¯āĻžāĻ•āĻŋāĻ‚ - āĻ°ā§‡āĻ•āĻ°ā§āĻĄāĻŋāĻ‚ āĻĢāĻ˛āĻžāĻĢāĻ˛ āĻāĻŦāĻ‚ āĻĒāĻ°āĻžāĻŽāĻŋāĻ¤āĻŋāĻ—ā§āĻ˛āĻŋāĻ° āĻ¸āĻŽāĻ¸ā§āĻ¯āĻžāĻ—ā§āĻ˛āĻŋ āĻ•āĻ­āĻžāĻ° āĻ•āĻ°ā§‡ āĻ¯āĻž āĻāĻ‡ āĻĢāĻ˛āĻžāĻĢāĻ˛ā§‡āĻ° āĻĻāĻŋāĻ•ā§‡ āĻĒāĻ°āĻŋāĻšāĻžāĻ˛āĻŋāĻ¤ āĻ•āĻ°ā§‡;
  • MLflow āĻĒā§āĻ°āĻ•āĻ˛ā§āĻĒ - āĻ†āĻĒāĻ¨āĻžāĻ•ā§‡ āĻ•ā§‹āĻĄ āĻĒā§āĻ¯āĻžāĻ•ā§‡āĻœ āĻ•āĻ°āĻ¤ā§‡ āĻāĻŦāĻ‚ āĻ¯ā§‡āĻ•ā§‹āĻ¨ā§‹ āĻĒā§āĻ˛ā§āĻ¯āĻžāĻŸāĻĢāĻ°ā§āĻŽā§‡ āĻāĻŸāĻŋ āĻĒā§āĻ¨āĻ°ā§āĻ¤ā§āĻĒāĻžāĻĻāĻ¨ āĻ•āĻ°āĻ¤ā§‡ āĻĻā§‡āĻ¯āĻŧ;
  • MLflow āĻŽāĻĄā§‡āĻ˛ - āĻ‰ā§ŽāĻĒāĻžāĻĻāĻ¨ā§‡ āĻŽāĻĄā§‡āĻ˛ āĻ¸ā§āĻĨāĻžāĻĒāĻ¨ā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻĻāĻžāĻ¯āĻŧā§€;
  • MLflow āĻ°ā§‡āĻœāĻŋāĻ¸ā§āĻŸā§āĻ°āĻŋ - āĻ†āĻĒāĻ¨āĻžāĻ•ā§‡ āĻāĻ•āĻŸāĻŋ āĻ•ā§‡āĻ¨ā§āĻĻā§āĻ°ā§€āĻ­ā§‚āĻ¤ āĻ¸āĻ‚āĻ—ā§āĻ°āĻšāĻ¸ā§āĻĨāĻ˛ā§‡ āĻŽāĻĄā§‡āĻ˛ āĻ¸āĻ‚āĻ°āĻ•ā§āĻˇāĻŖ āĻ•āĻ°āĻ¤ā§‡ āĻāĻŦāĻ‚ āĻ¤āĻžāĻĻā§‡āĻ° āĻ…āĻŦāĻ¸ā§āĻĨāĻž āĻĒāĻ°āĻŋāĻšāĻžāĻ˛āĻ¨āĻž āĻ•āĻ°āĻ¤ā§‡ āĻĻā§‡āĻ¯āĻŧāĨ¤

MLflow āĻĻā§āĻŸāĻŋ āĻ¸āĻ¤ā§āĻ¤āĻžāĻ° āĻ‰āĻĒāĻ° āĻ•āĻžāĻœ āĻ•āĻ°ā§‡:

  • āĻ˛āĻžā§āĻš āĻšāĻ˛ āĻĒā§āĻ°āĻļāĻŋāĻ•ā§āĻˇāĻŖ, āĻĒāĻ°āĻžāĻŽāĻŋāĻ¤āĻŋ āĻāĻŦāĻ‚ āĻŽā§‡āĻŸā§āĻ°āĻŋāĻ•ā§āĻ¸ā§‡āĻ° āĻāĻ•āĻŸāĻŋ āĻ¸āĻŽā§āĻĒā§‚āĻ°ā§āĻŖ āĻšāĻ•ā§āĻ° āĻ¯āĻžāĻ° āĻĻā§āĻŦāĻžāĻ°āĻž āĻ†āĻŽāĻ°āĻž āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§āĻ¨ āĻ•āĻ°āĻ¤ā§‡ āĻšāĻžāĻ‡;
  • āĻāĻ•āĻŸāĻŋ āĻĒāĻ°ā§€āĻ•ā§āĻˇāĻž āĻšāĻ˛ āĻāĻ•āĻŸāĻŋ "āĻŦāĻŋāĻˇāĻ¯āĻŧ" āĻ¯āĻž āĻāĻ•āĻ¸āĻžāĻĨā§‡ āĻšāĻ˛ā§‡āĨ¤

āĻ‰āĻĻāĻžāĻšāĻ°āĻŖā§‡āĻ° āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻ§āĻžāĻĒ āĻ‰āĻŦā§āĻ¨ā§āĻŸā§ 18.04 āĻ…āĻĒāĻžāĻ°ā§‡āĻŸāĻŋāĻ‚ āĻ¸āĻŋāĻ¸ā§āĻŸā§‡āĻŽā§‡ āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻ— āĻ•āĻ°āĻž āĻšāĻ¯āĻŧā§‡āĻ›ā§‡āĨ¤

1. āĻ¸āĻžāĻ°ā§āĻ­āĻžāĻ° āĻ¸ā§āĻĨāĻžāĻĒāĻ¨ āĻ•āĻ°ā§āĻ¨

āĻ¯āĻžāĻ¤ā§‡ āĻ†āĻŽāĻ°āĻž āĻ¸āĻšāĻœā§‡āĻ‡ āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻĒā§āĻ°āĻ•āĻ˛ā§āĻĒ āĻĒāĻ°āĻŋāĻšāĻžāĻ˛āĻ¨āĻž āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°āĻŋ āĻāĻŦāĻ‚ āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻœāĻ¨ā§€āĻ¯āĻŧ āĻ¤āĻĨā§āĻ¯ āĻĒā§‡āĻ¤ā§‡ āĻĒāĻžāĻ°āĻŋ, āĻ†āĻŽāĻ°āĻž āĻāĻ•āĻŸāĻŋ āĻ¸āĻžāĻ°ā§āĻ­āĻžāĻ° āĻ¸ā§āĻĨāĻžāĻĒāĻ¨ āĻ•āĻ°āĻŦāĨ¤ MLflow āĻŸā§āĻ°ā§āĻ¯āĻžāĻ•āĻŋāĻ‚ āĻ¸āĻžāĻ°ā§āĻ­āĻžāĻ°ā§‡āĻ° āĻĻā§āĻŸāĻŋ āĻĒā§āĻ°āĻ§āĻžāĻ¨ āĻ‰āĻĒāĻžāĻĻāĻžāĻ¨ āĻ°āĻ¯āĻŧā§‡āĻ›ā§‡:

  • āĻŦā§āĻ¯āĻžāĻ•āĻāĻ¨ā§āĻĄ āĻ¸ā§āĻŸā§‹āĻ° - āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§āĻŋāĻ¤ āĻŽāĻĄā§‡āĻ˛ āĻ¸āĻŽā§āĻĒāĻ°ā§āĻ•ā§‡ āĻ¤āĻĨā§āĻ¯ āĻ¸āĻ‚āĻ°āĻ•ā§āĻˇāĻŖā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻĻāĻžāĻ¯āĻŧā§€ (4āĻŸāĻŋ DBMS āĻ¸āĻŽāĻ°ā§āĻĨāĻ¨ āĻ•āĻ°ā§‡: mysql, mssql, sqlite, āĻāĻŦāĻ‚ postgresql);
  • āĻ†āĻ°ā§āĻŸāĻŋāĻĢā§āĻ¯āĻžāĻ•ā§āĻŸ āĻ¸ā§āĻŸā§‹āĻ° - āĻ†āĻ°ā§āĻŸāĻŋāĻĢā§āĻ¯āĻžāĻ•ā§āĻŸ āĻ¸āĻ‚āĻ°āĻ•ā§āĻˇāĻŖā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻĻāĻžāĻ¯āĻŧā§€ (7āĻŸāĻŋ āĻ¸ā§āĻŸā§‹āĻ°ā§‡āĻœ āĻŦāĻŋāĻ•āĻ˛ā§āĻĒ āĻ¸āĻŽāĻ°ā§āĻĨāĻ¨ āĻ•āĻ°ā§‡: Amazon S3, Azure Blob Storage, Google Cloud Storage, FTP āĻ¸āĻžāĻ°ā§āĻ­āĻžāĻ°, SFTP āĻ¸āĻžāĻ°ā§āĻ­āĻžāĻ°, NFS, HDFS)āĨ¤

āĻ¯ā§‡āĻŽāĻ¨ āĻļāĻŋāĻ˛ā§āĻĒāĻ•āĻ°ā§āĻŽā§‡āĻ° āĻĻā§‹āĻ•āĻžāĻ¨ āĻ¸āĻ°āĻ˛āĻ¤āĻžāĻ° āĻœāĻ¨ā§āĻ¯, āĻ†āĻ¸ā§āĻ¨ āĻāĻ•āĻŸāĻŋ āĻāĻ¸āĻāĻĢāĻŸāĻŋāĻĒāĻŋ āĻ¸āĻžāĻ°ā§āĻ­āĻžāĻ° āĻ¨ā§‡āĻ“āĻ¯āĻŧāĻž āĻ¯āĻžāĻ•āĨ¤

  • āĻāĻ•āĻŸāĻŋ āĻĻāĻ˛ āĻ—āĻ āĻŖ āĻ•āĻ°
    $ 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 āĻĢāĻžāĻ‡āĻ˛ āĻ¯ā§‹āĻ— āĻ•āĻ°ā§āĻ¨āĨ¤
āĻāĻŽāĻāĻ˛āĻĒā§āĻ°āĻœā§‡āĻ•ā§āĻŸ

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 āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻŋ, 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

āĻĒā§āĻ°āĻ¤āĻŋāĻŸāĻŋ āĻŽāĻĄā§‡āĻ˛ā§‡āĻ° āĻœāĻ¨ā§āĻ¯, āĻ†āĻŽāĻ°āĻž āĻāĻ•āĻŸāĻŋ āĻŦāĻŋāĻŦāĻ°āĻŖ āĻ¯ā§‹āĻ— āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°āĻŋ āĻāĻŦāĻ‚ āĻ¤āĻŋāĻ¨āĻŸāĻŋ āĻ…āĻŦāĻ¸ā§āĻĨāĻžāĻ° āĻŽāĻ§ā§āĻ¯ā§‡ āĻāĻ•āĻŸāĻŋ āĻ¨āĻŋāĻ°ā§āĻŦāĻžāĻšāĻ¨ āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°āĻŋ (āĻŽāĻžā§āĻšāĻžāĻ¯āĻŧāĻ¨, āĻ‰ā§ŽāĻĒāĻžāĻĻāĻ¨, āĻ¸āĻ‚āĻ°āĻ•ā§āĻˇāĻŖāĻžāĻ—āĻžāĻ°); āĻĒāĻ°āĻŦāĻ°ā§āĻ¤ā§€āĻ•āĻžāĻ˛ā§‡, 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)āĨ¤ āĻāĻ–āĻ¨ āĻ†āĻŽāĻ°āĻž āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻŽāĻĄā§‡āĻ˛ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĻ¨. āĻ¸āĻŋāĻ­āĻŋ (āĻāĻŽāĻāĻ˛) āĻŦāĻŋāĻ•āĻžāĻļāĻ•āĻžāĻ°ā§€āĻ°āĻž āĻ¸āĻšāĻœā§‡āĻ‡ āĻŽāĻĄā§‡āĻ˛āĻŸāĻŋ āĻ‰āĻ¨ā§āĻ¨āĻ¤ āĻ•āĻ°āĻ¤ā§‡ āĻāĻŦāĻ‚ āĻ¨āĻ¤ā§āĻ¨ āĻ¸āĻ‚āĻ¸ā§āĻ•āĻ°āĻŖ āĻĒā§āĻ°āĻ•āĻžāĻļ āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĨ¤

āĻ‰āĻĒāĻ¸āĻ‚āĻšāĻžāĻ° āĻ‡āĻ¨

āĻ†āĻŽāĻŋ āĻāĻ•āĻŸāĻŋ āĻ¸āĻŋāĻ¸ā§āĻŸā§‡āĻŽ āĻ‰āĻĒāĻ¸ā§āĻĨāĻžāĻĒāĻ¨ āĻ•āĻ°ā§‡āĻ›āĻŋ āĻ¯āĻž āĻ…āĻ¨ā§āĻŽāĻ¤āĻŋ āĻĻā§‡āĻ¯āĻŧ:

  • āĻ•ā§‡āĻ¨ā§āĻĻā§āĻ°ā§€āĻ¯āĻŧāĻ­āĻžāĻŦā§‡ āĻāĻŽāĻāĻ˛ āĻŽāĻĄā§‡āĻ˛, āĻĒā§āĻ°āĻļāĻŋāĻ•ā§āĻˇāĻŖā§‡āĻ° āĻ…āĻ—ā§āĻ°āĻ—āĻ¤āĻŋ āĻāĻŦāĻ‚ āĻĢāĻ˛āĻžāĻĢāĻ˛ āĻ¸āĻŽā§āĻĒāĻ°ā§āĻ•ā§‡ āĻ¤āĻĨā§āĻ¯ āĻ¸āĻ‚āĻ°āĻ•ā§āĻˇāĻŖ āĻ•āĻ°ā§āĻ¨;
  • āĻĻā§āĻ°ā§āĻ¤ āĻāĻ•āĻŸāĻŋ āĻ‰āĻ¨ā§āĻ¨āĻ¯āĻŧāĻ¨ āĻĒāĻ°āĻŋāĻŦā§‡āĻļ āĻ¸ā§āĻĨāĻžāĻĒāĻ¨;
  • āĻŽāĻĄā§‡āĻ˛ā§‡āĻ° āĻ•āĻžāĻœā§‡āĻ° āĻ…āĻ—ā§āĻ°āĻ—āĻ¤āĻŋ āĻ¨āĻŋāĻ°ā§€āĻ•ā§āĻˇāĻŖ āĻāĻŦāĻ‚ āĻŦāĻŋāĻļā§āĻ˛ā§‡āĻˇāĻŖ;
  • āĻŽāĻĄā§‡āĻ˛ā§‡āĻ° āĻ…āĻŦāĻ¸ā§āĻĨāĻž āĻ¸āĻ‚āĻ¸ā§āĻ•āĻ°āĻŖ āĻāĻŦāĻ‚ āĻĒāĻ°āĻŋāĻšāĻžāĻ˛āĻ¨āĻž āĻ•āĻ°āĻž āĻ¸ā§āĻŦāĻŋāĻ§āĻžāĻœāĻ¨āĻ•;
  • āĻĢāĻ˛āĻ¸ā§āĻŦāĻ°ā§‚āĻĒ āĻŽāĻĄā§‡āĻ˛ āĻ¸ā§āĻĨāĻžāĻĒāĻ¨ āĻ•āĻ°āĻž āĻ¸āĻšāĻœāĨ¤

āĻāĻ‡ āĻ‰āĻĻāĻžāĻšāĻ°āĻŖāĻŸāĻŋ āĻāĻ•āĻŸāĻŋ āĻ–ā§‡āĻ˛āĻ¨āĻž āĻāĻŦāĻ‚ āĻ†āĻĒāĻ¨āĻžāĻ° āĻ¨āĻŋāĻœāĻ¸ā§āĻŦ āĻ¸āĻŋāĻ¸ā§āĻŸā§‡āĻŽ āĻ¤ā§ˆāĻ°āĻŋāĻ° āĻœāĻ¨ā§āĻ¯ āĻāĻ•āĻŸāĻŋ āĻ¸ā§‚āĻšāĻ¨āĻž āĻĒāĻ¯āĻŧā§‡āĻ¨ā§āĻŸ āĻšāĻŋāĻ¸āĻžāĻŦā§‡ āĻ•āĻžāĻœ āĻ•āĻ°ā§‡, āĻ¯āĻžāĻ° āĻŽāĻ§ā§āĻ¯ā§‡ āĻĢāĻ˛āĻžāĻĢāĻ˛ā§‡āĻ° āĻŽā§‚āĻ˛ā§āĻ¯āĻžāĻ¯āĻŧāĻ¨ā§‡āĻ° āĻ¸ā§āĻŦāĻ¯āĻŧāĻ‚āĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻ¤āĻž āĻāĻŦāĻ‚ āĻŽāĻĄā§‡āĻ˛āĻ—ā§āĻ˛āĻŋāĻ° āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§āĻ¨ āĻ…āĻ¨ā§āĻ¤āĻ°ā§āĻ­ā§āĻ•ā§āĻ¤ āĻĨāĻžāĻ•āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡ (āĻ¯āĻĨāĻžāĻ•ā§āĻ°āĻŽā§‡ āĻĒāĻ¯āĻŧā§‡āĻ¨ā§āĻŸ 5 āĻāĻŦāĻ‚ 6) āĻ…āĻĨāĻŦāĻž āĻ†āĻĒāĻ¨āĻŋ āĻĄā§‡āĻŸāĻžāĻ¸ā§‡āĻŸā§‡āĻ° āĻ¸āĻ‚āĻ¸ā§āĻ•āĻ°āĻŖ āĻ¯ā§‹āĻ— āĻ•āĻ°āĻŦā§‡āĻ¨, āĻŦāĻž āĻ…āĻ¨ā§āĻ¯ āĻ•āĻŋāĻ›ā§? āĻ†āĻŽāĻŋ āĻ¯ā§‡ āĻŦāĻŋāĻ¨ā§āĻĻā§āĻŸāĻŋ āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻžāĻ° āĻšā§‡āĻˇā§āĻŸāĻž āĻ•āĻ°āĻ›āĻŋāĻ˛āĻžāĻŽ āĻ¤āĻž āĻšāĻ˛ āĻ†āĻĒāĻ¨āĻžāĻ° āĻ¸āĻžāĻŽāĻ—ā§āĻ°āĻŋāĻ•āĻ­āĻžāĻŦā§‡ MLOps āĻĻāĻ°āĻ•āĻžāĻ°, MLflow āĻšāĻ˛ āĻļā§‡āĻˇ āĻ•āĻ°āĻžāĻ° āĻāĻ•āĻŸāĻŋ āĻ‰āĻĒāĻžāĻ¯āĻŧāĨ¤

āĻ†āĻŽāĻŋ āĻĒā§āĻ°āĻĻāĻ°ā§āĻļāĻ¨ āĻ¨āĻž āĻ•āĻ°ā§‡ āĻ†āĻĒāĻ¨āĻŋ āĻ¸āĻŽā§āĻŽā§āĻ–ā§€āĻ¨ āĻ•āĻŋ āĻ¸āĻŽāĻ¸ā§āĻ¯āĻž āĻ˛āĻŋāĻ–ā§āĻ¨?
āĻ†āĻĒāĻ¨āĻžāĻ° āĻšāĻžāĻšāĻŋāĻĻāĻž āĻĒā§‚āĻ°āĻŖ āĻ•āĻ°āĻ¤ā§‡ āĻ†āĻĒāĻ¨āĻŋ āĻ¸āĻŋāĻ¸ā§āĻŸā§‡āĻŽā§‡ āĻ•ā§€ āĻ¯ā§‹āĻ— āĻ•āĻ°āĻŦā§‡āĻ¨?
āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻŦāĻž āĻ†āĻ‚āĻļāĻŋāĻ• āĻ¸āĻŽāĻ¸ā§āĻ¯āĻžāĻ° āĻ¸āĻŽāĻžāĻ§āĻžāĻ¨ āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻ†āĻĒāĻ¨āĻŋ āĻ•ā§‹āĻ¨ āĻŸā§āĻ˛ āĻāĻŦāĻ‚ āĻĒāĻ¨ā§āĻĨāĻž āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡āĻ¨?

PS āĻ†āĻŽāĻŋ āĻ•āĻ¯āĻŧā§‡āĻ•āĻŸāĻŋ āĻ˛āĻŋāĻ™ā§āĻ• āĻ›ā§‡āĻĄāĻŧā§‡ āĻĻā§‡āĻŦ:
github āĻĒā§āĻ°āĻ•āĻ˛ā§āĻĒ - https://github.com/simbakot/mlflow_example
MLflow - https://mlflow.org/
āĻĒā§āĻ°āĻļā§āĻ¨ā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻ†āĻŽāĻžāĻ° āĻ•āĻžāĻœā§‡āĻ° āĻ‡āĻŽā§‡āĻ˛ - [āĻ‡āĻŽā§‡āĻ˛ āĻ¸ā§āĻ°āĻ•ā§āĻˇāĻŋāĻ¤]

āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻ•ā§‹āĻŽā§āĻĒāĻžāĻ¨āĻŋ āĻĒāĻ°ā§āĻ¯āĻžāĻ¯āĻŧāĻ•ā§āĻ°āĻŽā§‡ āĻ†āĻ‡āĻŸāĻŋ āĻŦāĻŋāĻļā§‡āĻˇāĻœā§āĻžāĻĻā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻŦāĻŋāĻ­āĻŋāĻ¨ā§āĻ¨ āĻ‡āĻ­ā§‡āĻ¨ā§āĻŸ āĻšā§‹āĻ¸ā§āĻŸ āĻ•āĻ°ā§‡, āĻ‰āĻĻāĻžāĻšāĻ°āĻŖāĻ¸ā§āĻŦāĻ°ā§‚āĻĒ: 8 āĻœā§āĻ˛āĻžāĻ‡ āĻŽāĻ¸ā§āĻ•ā§‹āĻ° āĻ¸āĻŽāĻ¯āĻŧ 19:00 āĻ āĻāĻ•āĻŸāĻŋ āĻ…āĻ¨āĻ˛āĻžāĻ‡āĻ¨ āĻĢāĻ°ā§āĻŽā§āĻ¯āĻžāĻŸā§‡ āĻāĻ•āĻŸāĻŋ āĻ¸āĻŋāĻ­āĻŋ āĻŽāĻŋāĻŸāĻ†āĻĒ āĻšāĻŦā§‡, āĻ¯āĻĻāĻŋ āĻ†āĻĒāĻ¨āĻŋ āĻ†āĻ—ā§āĻ°āĻšā§€ āĻšāĻ¨, āĻ†āĻĒāĻ¨āĻŋ āĻ…āĻ‚āĻļ āĻ¨āĻŋāĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĻ¨, āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§āĻ¨ āĻāĻ–āĻžāĻ¨ā§‡ .

āĻ‰āĻ¤ā§āĻ¸: www.habr.com

āĻāĻ•āĻŸāĻŋ āĻŽāĻ¨ā§āĻ¤āĻŦā§āĻ¯ āĻœā§āĻĄāĻŧā§āĻ¨