āĻšāĻžāĻ āĻ¸āĻŦ! āĻāĻŽāĻŋ CROC āĻ āĻāĻāĻāĻ¨ CV āĻŦāĻŋāĻāĻžāĻļāĻāĻžāĻ°ā§āĨ¤ āĻāĻŽāĻ°āĻž āĻāĻāĻ¨ 3 āĻŦāĻāĻ° āĻ§āĻ°ā§ āĻ¸āĻŋāĻāĻŋāĻ° āĻā§āĻˇā§āĻ¤ā§āĻ°ā§ āĻĒā§āĻ°āĻāĻ˛ā§āĻĒāĻā§āĻ˛āĻŋ āĻŦāĻžāĻ¸ā§āĻ¤āĻŦāĻžāĻ¯āĻŧāĻ¨ āĻāĻ°āĻāĻŋāĨ¤ āĻāĻ āĻ¸āĻŽāĻ¯āĻŧā§āĻ° āĻŽāĻ§ā§āĻ¯ā§, āĻāĻŽāĻ°āĻž āĻ āĻ¨ā§āĻ āĻāĻŋāĻā§ āĻāĻ°ā§āĻāĻŋ, āĻāĻĻāĻžāĻšāĻ°āĻŖāĻ¸ā§āĻŦāĻ°ā§āĻĒ: āĻāĻŽāĻ°āĻž āĻāĻžāĻ˛āĻāĻĻā§āĻ° āĻĒāĻ°ā§āĻ¯āĻŦā§āĻā§āĻˇāĻŖ āĻāĻ°ā§āĻāĻŋ āĻ¯āĻžāĻ¤ā§ āĻāĻžāĻĄāĻŧāĻŋ āĻāĻžāĻ˛āĻžāĻ¨ā§āĻ° āĻ¸āĻŽāĻ¯āĻŧ āĻ¤āĻžāĻ°āĻž āĻŽāĻĻā§āĻ¯āĻĒāĻžāĻ¨ āĻāĻ°ā§ āĻ¨āĻž, āĻ§ā§āĻŽāĻĒāĻžāĻ¨ āĻāĻ°ā§ āĻ¨āĻž, āĻĢā§āĻ¨ā§ āĻāĻĨāĻž āĻŦāĻ˛ā§ āĻ¨āĻž, āĻ°āĻžāĻ¸ā§āĻ¤āĻžāĻ° āĻĻāĻŋāĻā§ āĻ¤āĻžāĻāĻžāĻ¯āĻŧ āĻāĻŦāĻ āĻ¸ā§āĻŦāĻĒā§āĻ¨ā§ āĻŦāĻž āĻŽā§āĻā§āĻ° āĻĻāĻŋāĻā§ āĻ¨āĻžāĨ¤ ; āĻāĻŽāĻ°āĻž āĻāĻŽāĻ¨ āĻ˛ā§āĻāĻĻā§āĻ° āĻ°ā§āĻāĻ°ā§āĻĄ āĻāĻ°ā§āĻāĻŋ āĻ¯āĻžāĻ°āĻž āĻĄā§āĻĄāĻŋāĻā§āĻā§āĻĄ āĻ˛ā§āĻ¨ā§ āĻāĻžāĻĄāĻŧāĻŋ āĻāĻžāĻ˛āĻžāĻ¯āĻŧ āĻāĻŦāĻ āĻŦā§āĻļ āĻāĻ¯āĻŧā§āĻāĻāĻŋ āĻĒāĻžāĻ°ā§āĻāĻŋāĻ āĻ¸ā§āĻĒā§āĻ¸ āĻ¨ā§āĻ¯āĻŧ; āĻļā§āĻ°āĻŽāĻŋāĻāĻ°āĻž āĻšā§āĻ˛āĻŽā§āĻ, āĻā§āĻ˛āĻžāĻāĻ¸ āĻāĻ¤ā§āĻ¯āĻžāĻĻāĻŋ āĻĒāĻ°āĻ¤ā§āĻ¨ āĻ¤āĻž āĻ¨āĻŋāĻļā§āĻāĻŋāĻ¤ āĻāĻ°āĻž; āĻ¸ā§āĻŦāĻŋāĻ§āĻžāĻ¯āĻŧ āĻĒā§āĻ°āĻŦā§āĻļ āĻāĻ°āĻ¤ā§ āĻāĻžāĻ¨ āĻāĻŽāĻ¨ āĻāĻāĻāĻ¨ āĻāĻ°ā§āĻŽāĻāĻžāĻ°ā§āĻā§ āĻāĻŋāĻšā§āĻ¨āĻŋāĻ¤ āĻāĻ°ā§āĻā§āĻ¨; āĻāĻŽāĻ°āĻž āĻ¯āĻž āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°āĻŋ āĻ¸āĻŦ āĻāĻŖāĻ¨āĻž āĻāĻ°ā§āĻāĻŋāĨ¤
āĻāĻŽāĻŋ āĻāĻŋ āĻāĻ¨ā§āĻ¯ āĻāĻ āĻ¸āĻŦ āĻāĻ°āĻāĻŋ?
āĻĒā§āĻ°āĻāĻ˛ā§āĻĒāĻā§āĻ˛āĻŋ āĻŦāĻžāĻ¸ā§āĻ¤āĻŦāĻžāĻ¯āĻŧāĻ¨ā§āĻ° āĻĒā§āĻ°āĻā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻ¯āĻŧ, āĻāĻŽāĻ°āĻž āĻ§āĻžāĻā§āĻāĻž āĻā§āĻ¯āĻŧā§āĻāĻŋ, āĻĒā§āĻ°āĻā§āĻ° āĻŦāĻžāĻ§āĻž, āĻāĻŋāĻā§ āĻ¸āĻŽāĻ¸ā§āĻ¯āĻž āĻ¯āĻžāĻ° āĻ¸āĻžāĻĨā§ āĻāĻĒāĻ¨āĻŋ āĻšāĻ¯āĻŧ āĻĒāĻ°āĻŋāĻāĻŋāĻ¤ āĻŦāĻž āĻāĻŦāĻŋāĻˇā§āĻ¯āĻ¤ā§ āĻĒāĻ°āĻŋāĻāĻŋāĻ¤ āĻšāĻŦā§āĻ¨āĨ¤
āĻāĻ° āĻĒāĻ°āĻŋāĻ¸ā§āĻĨāĻŋāĻ¤āĻŋ āĻ āĻ¨ā§āĻāĻ°āĻŖ āĻāĻ°āĻž āĻ¯āĻžāĻ
āĻāĻ¸ā§āĻ¨ āĻāĻ˛ā§āĻĒāĻ¨āĻž āĻāĻ°āĻŋ āĻ¯ā§ āĻāĻŽāĻ°āĻž āĻāĻāĻāĻŋ āĻ¤āĻ°ā§āĻŖ āĻā§āĻŽā§āĻĒāĻžāĻ¨āĻŋ "N" āĻ āĻāĻžāĻāĻ°āĻŋ āĻĒā§āĻ¯āĻŧā§āĻāĻŋ, āĻ¯āĻžāĻ° āĻāĻžāĻ°ā§āĻ¯āĻā§āĻ°āĻŽ ML āĻāĻ° āĻ¸āĻžāĻĨā§ āĻ¸āĻŽā§āĻĒāĻ°ā§āĻāĻŋāĻ¤āĨ¤ āĻāĻŽāĻ°āĻž āĻāĻāĻāĻŋ ML (DL, CV) āĻĒā§āĻ°āĻā§āĻā§āĻā§ āĻāĻžāĻ āĻāĻ°āĻŋ, āĻ¤āĻžāĻ°āĻĒāĻ° āĻā§āĻ¨ā§ āĻāĻžāĻ°āĻŖā§ āĻāĻŽāĻ°āĻž āĻ āĻ¨ā§āĻ¯ āĻāĻžāĻāĻ°āĻŋāĻ¤ā§ āĻ¸ā§āĻ¯ā§āĻāĻ āĻāĻ°āĻŋ, āĻ¸āĻžāĻ§āĻžāĻ°āĻŖāĻ¤ āĻŦāĻŋāĻ°āĻ¤āĻŋ āĻ¨āĻŋāĻ āĻāĻŦāĻ āĻāĻŽāĻžāĻĻā§āĻ° āĻ¨āĻŋāĻā§āĻ° āĻŦāĻž āĻ āĻ¨ā§āĻ¯ āĻāĻžāĻ°ā§ āĻ¨āĻŋāĻāĻ°āĻ¨ā§ āĻĢāĻŋāĻ°ā§ āĻ¯āĻžāĻāĨ¤
- āĻ¸āĻ¤ā§āĻ¯ā§āĻ° āĻŽā§āĻšā§āĻ°ā§āĻ¤āĻāĻŋ āĻāĻ¸ā§, āĻāĻĒāĻ¨āĻžāĻā§ āĻāĻāĻ°āĻāĻŽ āĻŽāĻ¨ā§ āĻ°āĻžāĻāĻ¤ā§ āĻšāĻŦā§ āĻāĻĒāĻ¨āĻŋ āĻā§āĻĨāĻžāĻ¯āĻŧ āĻĨāĻžāĻŽāĻ˛ā§āĻ¨, āĻāĻĒāĻ¨āĻŋ āĻā§ āĻšāĻžāĻāĻĒāĻžāĻ°āĻĒā§āĻ¯āĻžāĻ°āĻžāĻŽāĻŋāĻāĻžāĻ° āĻā§āĻˇā§āĻāĻž āĻāĻ°ā§āĻāĻŋāĻ˛ā§āĻ¨ āĻāĻŦāĻ āĻ¸āĻŦāĻā§āĻ¯āĻŧā§ āĻā§āĻ°ā§āĻ¤ā§āĻŦāĻĒā§āĻ°ā§āĻŖāĻāĻžāĻŦā§, āĻ¤āĻžāĻ°āĻž āĻā§ āĻĢāĻ˛āĻžāĻĢāĻ˛ āĻ¨āĻŋāĻ¯āĻŧā§āĻāĻŋāĻ˛āĨ¤
āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻ˛āĻā§āĻā§āĻ° āĻ¤āĻĨā§āĻ¯ āĻā§ āĻ¸āĻāĻ°āĻā§āĻˇāĻŖ āĻāĻ°ā§āĻā§ āĻ¤āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻ āĻ¨ā§āĻāĻā§āĻ˛āĻŋ āĻŦāĻŋāĻāĻ˛ā§āĻĒ āĻĨāĻžāĻāĻ¤ā§ āĻĒāĻžāĻ°ā§: āĻŽāĻžāĻĨāĻžāĻ¯āĻŧ, āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨, āĻ¨ā§āĻāĻĒā§āĻ¯āĻžāĻĄ, āĻā§āĻ˛āĻžāĻāĻĄā§ āĻāĻžāĻā§āĻ° āĻĒāĻ°āĻŋāĻŦā§āĻļā§āĨ¤ āĻāĻŽāĻŋ āĻāĻāĻāĻŋ āĻŦāĻŋāĻāĻ˛ā§āĻĒ āĻĻā§āĻāĻ¤ā§ āĻĒā§āĻ¯āĻŧā§āĻāĻŋ āĻ¯āĻāĻ¨ āĻšāĻžāĻāĻĒāĻžāĻ°āĻĒā§āĻ¯āĻžāĻ°āĻžāĻŽāĻŋāĻāĻžāĻ°āĻā§āĻ˛āĻŋ āĻā§āĻĄā§ āĻŽāĻ¨ā§āĻ¤āĻŦā§āĻ¯ āĻāĻ°āĻž āĻ˛āĻžāĻāĻ¨ āĻšāĻŋāĻ¸āĻžāĻŦā§ āĻ¸āĻāĻ°āĻā§āĻˇāĻŖ āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻāĻŋāĻ˛, āĻ¸āĻžāĻ§āĻžāĻ°āĻŖāĻāĻžāĻŦā§, āĻ āĻāĻŋāĻ¨āĻŦ āĻĢā§āĻ˛āĻžāĻāĻāĨ¤ āĻāĻāĻ¨ āĻāĻ˛ā§āĻĒāĻ¨āĻž āĻāĻ°ā§āĻ¨ āĻ¯ā§ āĻāĻĒāĻ¨āĻŋ āĻāĻĒāĻ¨āĻžāĻ° āĻĒā§āĻ°āĻāĻ˛ā§āĻĒā§ āĻĢāĻŋāĻ°ā§ āĻāĻ¸ā§āĻ¨āĻ¨āĻŋ, āĻāĻŋāĻ¨ā§āĻ¤ā§ āĻāĻŽāĻ¨ āĻāĻāĻāĻ¨ āĻŦā§āĻ¯āĻā§āĻ¤āĻŋāĻ° āĻĒā§āĻ°āĻāĻ˛ā§āĻĒā§ āĻĢāĻŋāĻ°ā§ āĻāĻ¸ā§āĻā§āĻ¨ āĻ¯āĻŋāĻ¨āĻŋ āĻā§āĻŽā§āĻĒāĻžāĻ¨āĻŋ āĻā§āĻĄāĻŧā§āĻā§āĻ¨ āĻāĻŦāĻ āĻāĻĒāĻ¨āĻŋ āĻāĻāĻāĻŋ āĻā§āĻĄ āĻāĻŦāĻ āĻŽāĻĄā§āĻ˛_1.pb āĻ¨āĻžāĻŽāĻ āĻāĻāĻāĻŋ āĻŽāĻĄā§āĻ˛ āĻāĻ¤ā§āĻ¤āĻ°āĻžāĻ§āĻŋāĻāĻžāĻ° āĻ¸ā§āĻ¤ā§āĻ°ā§ āĻĒā§āĻ¯āĻŧā§āĻā§āĻ¨āĨ¤ āĻāĻŦāĻŋāĻāĻŋ āĻ¸āĻŽā§āĻĒā§āĻ°ā§āĻŖ āĻāĻ°āĻ¤ā§ āĻāĻŦāĻ āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻŦā§āĻ¯āĻĨāĻž āĻŦā§āĻāĻžāĻ¤ā§, āĻāĻ¸ā§āĻ¨ āĻāĻ˛ā§āĻĒāĻ¨āĻž āĻāĻ°āĻŋ āĻ¯ā§ āĻāĻĒāĻ¨āĻŋāĻ āĻāĻāĻāĻ¨ āĻļāĻŋāĻā§āĻˇāĻžāĻ¨āĻŦāĻŋāĻļ āĻŦāĻŋāĻļā§āĻˇāĻā§āĻāĨ¤ - āĻāĻāĻŋāĻ¯āĻŧā§ āĻ¯āĻžāĻ¨. āĻā§āĻĄāĻāĻŋ āĻāĻžāĻ˛āĻžāĻ¨ā§āĻ° āĻāĻ¨ā§āĻ¯, āĻāĻŽāĻžāĻĻā§āĻ° āĻāĻŦāĻ āĻ¯āĻžāĻ°āĻž āĻāĻāĻŋāĻ° āĻ¸āĻžāĻĨā§ āĻāĻžāĻ āĻāĻ°āĻŦā§ āĻ¤āĻžāĻĻā§āĻ° āĻ¸āĻŦāĻžāĻāĻā§ āĻāĻāĻāĻŋ āĻĒāĻ°āĻŋāĻŦā§āĻļ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻ¤ā§ āĻšāĻŦā§āĨ¤ āĻāĻāĻŋ āĻĒā§āĻ°āĻžāĻ¯āĻŧāĻļāĻ āĻāĻā§ āĻ¯ā§ āĻā§āĻ¨āĻ āĻāĻžāĻ°āĻŖā§ āĻ¤āĻžāĻ°āĻž āĻ¤āĻžāĻā§ āĻāĻŽāĻžāĻĻā§āĻ° āĻāĻ¤ā§āĻ¤āĻ°āĻžāĻ§āĻŋāĻāĻžāĻ° āĻšāĻŋāĻ¸āĻžāĻŦā§ āĻā§āĻĄāĻŧā§ āĻ¯āĻžāĻ¯āĻŧāĻ¨āĻŋāĨ¤ āĻāĻāĻŋ āĻāĻāĻāĻŋ āĻ -āĻ¤ā§āĻā§āĻ āĻāĻžāĻ āĻšāĻ¯āĻŧā§ āĻāĻ āĻ¤ā§ āĻĒāĻžāĻ°ā§āĨ¤ āĻāĻĒāĻ¨āĻŋ āĻāĻ āĻĒāĻĻāĻā§āĻˇā§āĻĒā§ āĻ¸āĻŽāĻ¯āĻŧ āĻ¨āĻˇā§āĻ āĻāĻ°āĻ¤ā§ āĻāĻžāĻ¨ āĻ¨āĻž, āĻ¤āĻžāĻ āĻ¨āĻž?
- āĻāĻŽāĻ°āĻž āĻāĻāĻāĻŋ āĻŽāĻĄā§āĻ˛ āĻĒā§āĻ°āĻļāĻŋāĻā§āĻˇāĻŖ (āĻāĻĻāĻžāĻšāĻ°āĻŖāĻ¸ā§āĻŦāĻ°ā§āĻĒ, āĻāĻāĻāĻŋ āĻāĻžāĻĄāĻŧā§ āĻāĻŦāĻŋāĻˇā§āĻāĻžāĻ°āĻ)āĨ¤ āĻāĻŽāĻ°āĻž āĻāĻŽāĻ¨ āĻāĻžāĻ¯āĻŧāĻāĻžāĻ¯āĻŧ āĻĒā§āĻāĻā§āĻāĻŋ āĻ¯ā§āĻāĻžāĻ¨ā§ āĻāĻāĻŋ āĻā§āĻŦ āĻāĻžāĻ˛ āĻšāĻ¯āĻŧā§ āĻāĻ ā§āĻā§ - āĻāĻāĻŋ āĻĢāĻ˛āĻžāĻĢāĻ˛ āĻ¸āĻāĻ°āĻā§āĻˇāĻŖ āĻāĻ°āĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧāĨ¤ āĻāĻ¸ā§āĻ¨ āĻāĻāĻŋāĻā§ car_detection_v1.pb āĻŦāĻ˛āĻŋāĨ¤ āĻ¤āĻžāĻ°āĻĒāĻ°ā§ āĻāĻŽāĻ°āĻž āĻāĻ°ā§āĻāĻāĻŋ āĻĒā§āĻ°āĻļāĻŋāĻā§āĻˇāĻŖ āĻĻāĻŋāĻ - car_detection_v2.pbāĨ¤ āĻāĻŋāĻā§ āĻ¸āĻŽāĻ¯āĻŧ āĻĒāĻ°ā§, āĻāĻŽāĻžāĻĻā§āĻ° āĻ¸āĻšāĻāĻ°ā§āĻŽā§āĻ°āĻž āĻŦāĻž āĻāĻŽāĻ°āĻž āĻ¨āĻŋāĻā§āĻ°āĻžāĻ āĻŦāĻŋāĻāĻŋāĻ¨ā§āĻ¨ āĻ¸ā§āĻĨāĻžāĻĒāĻ¤ā§āĻ¯ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§ āĻāĻ°āĻ āĻŦā§āĻļāĻŋ āĻāĻ°ā§ āĻļā§āĻāĻžāĻāĨ¤ āĻĢāĻ˛āĻ¸ā§āĻŦāĻ°ā§āĻĒ, āĻāĻāĻā§āĻā§āĻ āĻ¨āĻŋāĻĻāĻ°ā§āĻļāĻ¨ āĻ¤ā§āĻ°āĻŋ āĻšāĻ¯āĻŧ, āĻ¯āĻžāĻ° āĻ¸āĻŽā§āĻĒāĻ°ā§āĻā§ āĻ¤āĻĨā§āĻ¯ āĻ āĻŦāĻļā§āĻ¯āĻ āĻĒāĻ°āĻŋāĻļā§āĻ°āĻŽā§āĻ° āĻ¸āĻžāĻĨā§ āĻ¸āĻāĻā§āĻ°āĻš āĻāĻ°āĻ¤ā§ āĻšāĻŦā§ (āĻ¤āĻŦā§ āĻāĻŽāĻ°āĻž āĻāĻāĻŋ āĻĒāĻ°ā§ āĻāĻ°āĻŦ, āĻāĻžāĻ°āĻŖ āĻāĻĒāĻžāĻ¤āĻ¤ āĻāĻŽāĻžāĻĻā§āĻ° āĻāĻ°āĻ āĻ āĻā§āĻ°āĻžāĻ§āĻŋāĻāĻžāĻ° āĻŦāĻŋāĻˇāĻ¯āĻŧ āĻ°āĻ¯āĻŧā§āĻā§)āĨ¤
- āĻ āĻŋāĻ āĻāĻā§ āĻāĻāĻ¨ āĻ¸āĻŦ āĻļā§āĻˇ! āĻāĻŽāĻ°āĻž āĻāĻāĻāĻŋ āĻŽāĻĄā§āĻ˛ āĻāĻā§! āĻāĻŽāĻ°āĻž āĻāĻŋ āĻĒāĻ°āĻŦāĻ°ā§āĻ¤ā§ āĻŽāĻĄā§āĻ˛ā§āĻ° āĻĒā§āĻ°āĻļāĻŋāĻā§āĻˇāĻŖ āĻļā§āĻ°ā§ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°āĻŋ, āĻāĻāĻāĻŋ āĻ¨āĻ¤ā§āĻ¨ āĻ¸āĻŽāĻ¸ā§āĻ¯āĻž āĻ¸āĻŽāĻžāĻ§āĻžāĻ¨ā§āĻ° āĻāĻ¨ā§āĻ¯ āĻāĻāĻāĻŋ āĻ¸ā§āĻĨāĻžāĻĒāĻ¤ā§āĻ¯ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°āĻŋ, āĻŦāĻž āĻāĻŽāĻ°āĻž āĻāĻŋāĻā§ āĻāĻž āĻā§āĻ¤ā§ āĻ¯ā§āĻ¤ā§ āĻĒāĻžāĻ°āĻŋ? āĻāĻ° āĻŽā§āĻ¤āĻžāĻ¯āĻŧā§āĻ¨ āĻāĻ°āĻŦā§ āĻā§?
āĻ¸āĻŽāĻ¸ā§āĻ¯āĻž āĻāĻŋāĻšā§āĻ¨āĻŋāĻ¤ āĻāĻ°āĻž
āĻāĻāĻāĻŋ āĻĒā§āĻ°āĻāĻ˛ā§āĻĒ āĻŦāĻž āĻĒāĻŖā§āĻ¯ā§ āĻāĻžāĻ āĻāĻ°āĻž āĻ āĻ¨ā§āĻ āĻŽāĻžāĻ¨ā§āĻˇā§āĻ° āĻāĻžāĻāĨ¤ āĻāĻŦāĻ āĻ¸āĻŽāĻ¯āĻŧā§āĻ° āĻ¸āĻžāĻĨā§ āĻ¸āĻžāĻĨā§, āĻ˛ā§āĻā§āĻ°āĻž āĻāĻ˛ā§ āĻ¯āĻžāĻ¯āĻŧ āĻāĻŦāĻ āĻāĻ¸ā§, āĻāĻ°āĻ āĻĒā§āĻ°āĻāĻ˛ā§āĻĒ āĻ°āĻ¯āĻŧā§āĻā§ āĻāĻŦāĻ āĻĒā§āĻ°āĻāĻ˛ā§āĻĒāĻā§āĻ˛āĻŋ āĻ¨āĻŋāĻā§āĻ āĻāĻ°āĻ āĻāĻāĻŋāĻ˛ āĻšāĻ¯āĻŧā§ āĻāĻ ā§āĨ¤ āĻāĻāĻāĻžāĻŦā§ āĻŦāĻž āĻ āĻ¨ā§āĻ¯āĻāĻžāĻŦā§, āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻ āĻ¸āĻāĻŽāĻŋāĻļā§āĻ°āĻŖā§ āĻāĻĒāĻ°ā§ āĻŦāĻ°ā§āĻŖāĻŋāĻ¤ āĻāĻā§āĻ°ā§āĻ° āĻĒāĻ°āĻŋāĻ¸ā§āĻĨāĻŋāĻ¤āĻŋ (āĻāĻŦāĻ āĻā§āĻŦāĻ˛ āĻ¨āĻ¯āĻŧ) āĻĒā§āĻ¨āĻ°āĻžāĻŦā§āĻ¤ā§āĻ¤āĻŋ āĻĨā§āĻā§ āĻĒā§āĻ¨āĻ°āĻžāĻŦā§āĻ¤ā§āĻ¤āĻŋāĻ¤ā§ āĻāĻāĻŦā§āĨ¤ āĻāĻ āĻ¸āĻŦā§āĻ° āĻĢāĻ˛ā§ āĻ¸āĻŽāĻ¯āĻŧ āĻ¨āĻˇā§āĻ āĻšāĻ¯āĻŧ, āĻŦāĻŋāĻā§āĻ°āĻžāĻ¨ā§āĻ¤āĻŋ, āĻ¸ā§āĻ¨āĻžāĻ¯āĻŧā§, āĻ¸āĻŽā§āĻāĻŦāĻ¤ āĻā§āĻ°āĻžāĻšāĻā§āĻ° āĻ āĻ¸āĻ¨ā§āĻ¤ā§āĻˇ āĻāĻŦāĻ āĻļā§āĻˇ āĻĒāĻ°ā§āĻ¯āĻ¨ā§āĻ¤ āĻ āĻ°ā§āĻĨ āĻ¨āĻˇā§āĻ āĻšāĻ¯āĻŧāĨ¤ āĻ¯āĻĻāĻŋāĻ āĻāĻŽāĻ°āĻž āĻ¸āĻŦāĻžāĻ āĻ¸āĻžāĻ§āĻžāĻ°āĻŖāĻ¤ āĻāĻāĻ āĻĒā§āĻ°āĻžāĻ¨ā§ āĻ°ā§āĻ āĻ āĻ¨ā§āĻ¸āĻ°āĻŖ āĻāĻ°āĻŋ, āĻāĻŽāĻŋ āĻŦāĻŋāĻļā§āĻŦāĻžāĻ¸ āĻāĻ°āĻŋ āĻ¯ā§ āĻā§āĻāĻ āĻāĻ āĻŽā§āĻšā§āĻ°ā§āĻ¤āĻā§āĻ˛āĻŋ āĻŦāĻžāĻ°āĻŦāĻžāĻ° āĻĒā§āĻ¨āĻ°ā§āĻĻā§āĻ§āĻžāĻ° āĻāĻ°āĻ¤ā§ āĻāĻžāĻ¯āĻŧ āĻ¨āĻžāĨ¤
āĻ¸ā§āĻ¤āĻ°āĻžāĻ, āĻāĻŽāĻ°āĻž āĻāĻāĻāĻŋ āĻāĻ¨ā§āĻ¨āĻ¯āĻŧāĻ¨ āĻāĻā§āĻ°ā§āĻ° āĻŽāĻ§ā§āĻ¯ āĻĻāĻŋāĻ¯āĻŧā§ āĻāĻ˛ā§āĻāĻŋ āĻāĻŦāĻ āĻāĻŽāĻ°āĻž āĻĻā§āĻāĻ¤ā§ āĻĒāĻžāĻā§āĻāĻŋ āĻ¯ā§ āĻāĻŽāĻ¨ āĻ¸āĻŽāĻ¸ā§āĻ¯āĻž āĻ°āĻ¯āĻŧā§āĻā§ āĻ¯āĻž āĻ¸āĻŽāĻžāĻ§āĻžāĻ¨ āĻāĻ°āĻž āĻĻāĻ°āĻāĻžāĻ°āĨ¤ āĻāĻāĻŋ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻĒāĻ¨āĻžāĻ° āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨:
- āĻāĻžāĻā§āĻ° āĻĢāĻ˛āĻžāĻĢāĻ˛ āĻ¸ā§āĻŦāĻŋāĻ§āĻžāĻāĻ¨āĻāĻāĻžāĻŦā§ āĻ¸āĻāĻ°āĻā§āĻˇāĻŖ āĻāĻ°ā§āĻ¨;
- āĻ¨āĻ¤ā§āĻ¨ āĻāĻ°ā§āĻŽā§āĻĻā§āĻ° āĻāĻĄāĻŧāĻŋāĻ¤ āĻāĻ°āĻžāĻ° āĻĒā§āĻ°āĻā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻ¸āĻšāĻ āĻāĻ°ā§āĻ¨;
- āĻāĻāĻāĻŋ āĻāĻ¨ā§āĻ¨āĻ¯āĻŧāĻ¨ āĻĒāĻ°āĻŋāĻŦā§āĻļ āĻ¸ā§āĻĨāĻžāĻĒāĻ¨ā§āĻ° āĻĒā§āĻ°āĻā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻ¸āĻšāĻāĻ¤āĻ° āĻāĻ°āĻž;
- āĻŽāĻĄā§āĻ˛ āĻ¸āĻāĻ¸ā§āĻāĻ°āĻŖ āĻĒā§āĻ°āĻā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ° āĻāĻ°ā§āĻ¨;
- āĻŽāĻĄā§āĻ˛ āĻ¯āĻžāĻāĻžāĻ āĻāĻ°āĻžāĻ° āĻāĻāĻāĻŋ āĻ¸ā§āĻŦāĻŋāĻ§āĻžāĻāĻ¨āĻ āĻāĻĒāĻžāĻ¯āĻŧ āĻāĻā§;
- āĻāĻāĻāĻŋ āĻŽāĻĄā§āĻ˛ āĻ°āĻžāĻˇā§āĻā§āĻ° āĻŦā§āĻ¯āĻŦāĻ¸ā§āĻĨāĻžāĻĒāĻ¨āĻž āĻā§āĻ˛ āĻā§āĻāĻā§āĻ¨;
- āĻāĻ¤ā§āĻĒāĻžāĻĻāĻ¨ā§ āĻŽāĻĄā§āĻ˛ āĻ¸āĻ°āĻŦāĻ°āĻžāĻš āĻāĻ°āĻžāĻ° āĻāĻāĻāĻŋ āĻāĻĒāĻžāĻ¯āĻŧ āĻā§āĻāĻā§āĻ¨āĨ¤
āĻĻā§āĻļā§āĻ¯āĻ¤ āĻāĻāĻŋ āĻāĻāĻāĻŋ āĻāĻ°ā§āĻŽāĻĒā§āĻ°āĻŦāĻžāĻš āĻ¸āĻā§āĻā§ āĻāĻ¸āĻž āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ āĻ¯ā§ āĻāĻĒāĻ¨āĻŋ āĻ¸āĻšāĻā§ āĻāĻŦāĻ āĻ¸ā§āĻŦāĻŋāĻ§āĻžāĻāĻ¨āĻāĻāĻžāĻŦā§ āĻāĻ āĻā§āĻŦāĻ¨ āĻāĻā§āĻ° āĻĒāĻ°āĻŋāĻāĻžāĻ˛āĻ¨āĻž āĻāĻ°āĻžāĻ° āĻ āĻ¨ā§āĻŽāĻ¤āĻŋ āĻĻā§āĻŦā§? āĻāĻ āĻ āĻ¨ā§āĻļā§āĻ˛āĻ¨āĻā§ MLOps āĻŦāĻ˛āĻž āĻšāĻ¯āĻŧ
āĻŽā§āĻļāĻŋāĻ¨ āĻ˛āĻžāĻ°ā§āĻ¨āĻŋāĻ āĻāĻ° āĻāĻ¨ā§āĻ¯ MLOps, āĻŦāĻž DevOps, āĻĄā§āĻāĻž āĻ¸āĻžāĻ¯āĻŧā§āĻ¨ā§āĻ¸ āĻāĻŦāĻ IT āĻāĻŋāĻŽāĻā§āĻ˛āĻŋāĻā§ āĻŽā§āĻļāĻŋāĻ¨ āĻ˛āĻžāĻ°ā§āĻ¨āĻŋāĻ āĻŽāĻĄā§āĻ˛āĻā§āĻ˛āĻŋāĻ° āĻāĻ¨ā§āĻ¯ āĻŽāĻ¨āĻŋāĻāĻ°āĻŋāĻ, āĻŦā§āĻ§āĻ¤āĻž āĻāĻŦāĻ āĻĒāĻ°āĻŋāĻāĻžāĻ˛āĻ¨āĻžāĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§ āĻŽāĻĄā§āĻ˛ āĻĄā§āĻā§āĻ˛āĻĒāĻŽā§āĻ¨ā§āĻ āĻāĻŦāĻ āĻ¸ā§āĻĨāĻžāĻĒāĻ¨āĻžāĻ° āĻāĻ¤āĻŋ āĻŦāĻžāĻĄāĻŧāĻžāĻ¨ā§āĻ° āĻ āĻ¨ā§āĻŽāĻ¤āĻŋ āĻĻā§āĻ¯āĻŧāĨ¤
āĻāĻĒāĻ¨āĻŋ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨
āĻāĻŽāĻžāĻ° āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§ā§ āĻāĻ°āĻ āĻāĻŽāĻŋ āĻĒā§āĻ°āĻā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻāĻŋāĻ° āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻ āĻāĻļ āĻŦāĻ°ā§āĻŖāĻ¨āĻž āĻāĻ°āĻŦāĨ¤ āĻŦāĻžāĻ¸ā§āĻ¤āĻŦāĻžāĻ¯āĻŧāĻ¨ā§āĻ° āĻāĻ¨ā§āĻ¯, āĻāĻŽāĻŋ MLflow āĻā§āĻ˛ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻŦ, āĻāĻžāĻ°āĻŖ... āĻāĻāĻŋ āĻāĻāĻāĻŋ āĻāĻĒā§āĻ¨ āĻ¸ā§āĻ°ā§āĻ¸ āĻĒā§āĻ°āĻā§āĻā§āĻ, āĻ¸āĻāĻ¯ā§āĻā§āĻ° āĻāĻ¨ā§āĻ¯ āĻ āĻ˛ā§āĻĒ āĻĒāĻ°āĻŋāĻŽāĻžāĻŖ āĻā§āĻĄ āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ āĻāĻŦāĻ āĻāĻ¨āĻĒā§āĻ°āĻŋāĻ¯āĻŧ āĻāĻŽāĻāĻ˛ āĻĢā§āĻ°ā§āĻŽāĻāĻ¯āĻŧāĻžāĻ°ā§āĻā§āĻ° āĻ¸āĻžāĻĨā§ āĻāĻ¨ā§āĻāĻŋāĻā§āĻ°ā§āĻļāĻ¨ āĻ°āĻ¯āĻŧā§āĻā§āĨ¤ āĻāĻĒāĻ¨āĻŋ āĻā§āĻŦā§āĻĢā§āĻ˛ā§, āĻ¸ā§āĻāĻŽā§āĻāĻžāĻ°, āĻā§āĻ°ā§āĻ¨ āĻāĻ¤ā§āĻ¯āĻžāĻĻāĻŋāĻ° āĻŽāĻ¤ā§ āĻ āĻ¨ā§āĻ¯āĻžāĻ¨ā§āĻ¯ āĻ¸āĻ°āĻā§āĻāĻžāĻŽāĻā§āĻ˛āĻŋāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻ¨ā§āĻāĻžāĻ°āĻ¨ā§āĻā§ āĻ āĻ¨ā§āĻ¸āĻ¨ā§āĻ§āĻžāĻ¨ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨ āĻāĻŦāĻ āĻ¸āĻŽā§āĻāĻŦāĻ¤ āĻāĻĒāĻ¨āĻžāĻ° āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ā§āĻ° āĻ¸āĻžāĻĨā§ āĻāĻ°āĻ āĻāĻĒāĻ¯ā§āĻā§āĻ¤ āĻāĻāĻāĻŋ āĻā§āĻāĻā§ āĻĒā§āĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨āĨ¤
MLFlow āĻā§āĻ˛ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻžāĻ° āĻāĻĻāĻžāĻšāĻ°āĻŖ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§ MLOps "āĻŦāĻŋāĻ˛ā§āĻĄāĻŋāĻ"
MLFlow āĻšāĻ˛ ML āĻŽāĻĄā§āĻ˛ā§āĻ° āĻā§āĻŦāĻ¨āĻāĻā§āĻ° āĻŦā§āĻ¯āĻŦāĻ¸ā§āĻĨāĻžāĻĒāĻ¨āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻāĻāĻŋ āĻāĻĒā§āĻ¨ āĻ¸ā§āĻ°ā§āĻ¸ āĻĒā§āĻ˛ā§āĻ¯āĻžāĻāĻĢāĻ°ā§āĻŽ (
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. āĻā§āĻ°ā§āĻ¯āĻžāĻāĻŋāĻ āĻ¯ā§āĻ āĻāĻ°ā§āĻ¨
āĻāĻŽāĻžāĻĻā§āĻ° āĻĒā§āĻ°āĻļāĻŋāĻā§āĻˇāĻŖā§āĻ° āĻĢāĻ˛āĻžāĻĢāĻ˛ āĻ¯āĻžāĻ¤ā§ āĻšāĻžāĻ°āĻŋāĻ¯āĻŧā§ āĻ¨āĻž āĻ¯āĻžāĻ¯āĻŧ, āĻāĻŦāĻŋāĻˇā§āĻ¯āĻ¤ā§āĻ° āĻĒā§āĻ°āĻāĻ¨ā§āĻŽā§āĻ° āĻŦāĻŋāĻāĻžāĻļāĻāĻžāĻ°ā§āĻ°āĻž āĻŦā§āĻāĻ¤ā§ āĻĒāĻžāĻ°ā§ āĻā§ āĻāĻāĻā§, āĻāĻŦāĻ āĻŦāĻ¯āĻŧāĻ¸ā§āĻ āĻāĻŽāĻ°ā§āĻĄ āĻāĻŦāĻ āĻāĻĒāĻ¨āĻŋ āĻļāĻžāĻ¨ā§āĻ¤āĻāĻžāĻŦā§ āĻļā§āĻāĻžāĻ° āĻĒā§āĻ°āĻā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻāĻŋ āĻŦāĻŋāĻļā§āĻ˛ā§āĻˇāĻŖ āĻāĻ°āĻ¤ā§ āĻ¸āĻā§āĻˇāĻŽ āĻšāĻāĻ¯āĻŧāĻžāĻ° āĻāĻ¨ā§āĻ¯, āĻāĻŽāĻžāĻĻā§āĻ° āĻā§āĻ°ā§āĻ¯āĻžāĻāĻŋāĻ āĻ¯ā§āĻ āĻāĻ°āĻ¤ā§ āĻšāĻŦā§āĨ¤ āĻā§āĻ°ā§āĻ¯āĻžāĻāĻŋāĻ āĻŽāĻžāĻ¨ā§ āĻāĻŽāĻžāĻĻā§āĻ° āĻā§āĻˇā§āĻ¤ā§āĻ°ā§ āĻ¸āĻžāĻ°ā§āĻāĻžāĻ°ā§ āĻĒā§āĻ¯āĻžāĻ°āĻžāĻŽāĻŋāĻāĻžāĻ°, āĻŽā§āĻā§āĻ°āĻŋāĻā§āĻ¸, āĻāĻ°ā§āĻāĻŋāĻĢā§āĻ¯āĻžāĻā§āĻ āĻāĻŦāĻ āĻĒā§āĻ°āĻļāĻŋāĻā§āĻˇāĻŖ āĻļā§āĻ°ā§āĻ° āĻŦāĻŋāĻˇāĻ¯āĻŧā§ āĻ¯ā§āĻā§āĻ¨ āĻ āĻ¤āĻŋāĻ°āĻŋāĻā§āĻ¤ āĻ¤āĻĨā§āĻ¯ āĻ¸āĻāĻ°āĻā§āĻˇāĻŖ āĻāĻ°āĻžāĨ¤
āĻāĻĻāĻžāĻšāĻ°āĻŖāĻ¸ā§āĻŦāĻ°ā§āĻĒ, āĻāĻŽāĻŋ āĻāĻāĻāĻŋ āĻā§āĻ āĻ¤ā§āĻ°āĻŋ āĻāĻ°ā§āĻāĻŋ
āĻāĻāĻžāĻ¨ā§ āĻ¸ā§āĻ āĻ˛āĻžāĻāĻ¨āĻā§āĻ˛āĻŋ āĻ°āĻ¯āĻŧā§āĻā§ āĻ¯ā§āĻāĻžāĻ¨ā§ āĻ¸āĻŦāĻā§āĻ¯āĻŧā§ āĻāĻāĻ°ā§āĻˇāĻŖā§āĻ¯āĻŧ āĻāĻŋāĻ¨āĻŋāĻ¸āĻā§āĻ˛āĻŋ āĻāĻā§:
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. āĻļā§āĻāĻžāĻ° āĻĢāĻ˛āĻžāĻĢāĻ˛ āĻŽā§āĻ˛ā§āĻ¯āĻžāĻ¯āĻŧāĻ¨
āĻĒā§āĻ°āĻļāĻŋāĻā§āĻˇāĻŖ āĻļā§āĻˇ āĻāĻ°āĻžāĻ° āĻĒāĻ°, āĻāĻŽāĻ°āĻž āĻŦā§āĻ°āĻžāĻāĻāĻžāĻ°ā§ āĻāĻŽāĻžāĻĻā§āĻ° āĻ¸āĻžāĻ°ā§āĻāĻžāĻ°ā§āĻ° āĻ āĻŋāĻāĻžāĻ¨āĻžāĻ¯āĻŧ āĻ¯ā§āĻ¤ā§ āĻĒāĻžāĻ°āĻŋ
āĻāĻāĻžāĻ¨ā§ āĻāĻŽāĻ°āĻž āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻĒāĻ°ā§āĻā§āĻˇāĻž-āĻ¨āĻŋāĻ°ā§āĻā§āĻˇāĻžāĻ° āĻāĻāĻāĻŋ āĻ¤āĻžāĻ˛āĻŋāĻāĻž āĻĻā§āĻāĻ¤ā§ āĻĒāĻžāĻ (āĻāĻĒāĻ°ā§ āĻŦāĻžāĻŽ), āĻ¸ā§āĻāĻ¸āĻžāĻĨā§ āĻ°āĻžāĻ¨ā§āĻ° āĻ¤āĻĨā§āĻ¯ (āĻŽāĻžāĻāĻāĻžāĻ¨ā§)āĨ¤ āĻāĻŽāĻ°āĻž āĻĒā§āĻ°āĻ¤āĻŋāĻāĻŋ āĻ˛āĻā§āĻā§āĻ° āĻāĻ¨ā§āĻ¯ āĻāĻ°āĻ āĻŦāĻŋāĻ¸ā§āĻ¤āĻžāĻ°āĻŋāĻ¤ āĻ¤āĻĨā§āĻ¯ (āĻĒā§āĻ¯āĻžāĻ°āĻžāĻŽāĻŋāĻāĻžāĻ°, āĻŽā§āĻā§āĻ°āĻŋāĻā§āĻ¸, āĻāĻ°ā§āĻāĻŋāĻĢā§āĻ¯āĻžāĻā§āĻ āĻāĻŦāĻ āĻāĻŋāĻā§ āĻ āĻ¤āĻŋāĻ°āĻŋāĻā§āĻ¤ āĻ¤āĻĨā§āĻ¯) āĻĻā§āĻāĻ¤ā§ āĻĒāĻžāĻ°āĻŋāĨ¤
āĻĒā§āĻ°āĻ¤āĻŋāĻāĻŋ āĻŽā§āĻā§āĻ°āĻŋāĻā§āĻ° āĻāĻ¨ā§āĻ¯ āĻāĻŽāĻ°āĻž āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ā§āĻ° āĻāĻ¤āĻŋāĻšāĻžāĻ¸ āĻĒāĻ°ā§āĻ¯āĻŦā§āĻā§āĻˇāĻŖ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°āĻŋ
āĻ¸ā§āĻā§āĻ˛ā§. āĻāĻ āĻŽā§āĻšā§āĻ°ā§āĻ¤ā§ āĻāĻŽāĻ°āĻž āĻāĻāĻāĻŋ "āĻŽā§āĻ¯āĻžāĻ¨ā§āĻ¯āĻŧāĻžāĻ˛" āĻŽā§āĻĄā§ āĻĢāĻ˛āĻžāĻĢāĻ˛āĻā§āĻ˛āĻŋ āĻŦāĻŋāĻļā§āĻ˛ā§āĻˇāĻŖ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°āĻŋ āĻāĻŦāĻ āĻāĻĒāĻ¨āĻŋ MLflow API āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§ āĻ¸ā§āĻŦāĻ¯āĻŧāĻāĻā§āĻ°āĻŋāĻ¯āĻŧ āĻŦā§āĻ§āĻ¤āĻž āĻ¸ā§āĻ āĻāĻĒ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨ā§ˇ
6. āĻŽāĻĄā§āĻ˛ āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§āĻ¨
āĻāĻŽāĻ°āĻž āĻāĻŽāĻžāĻĻā§āĻ° āĻŽāĻĄā§āĻ˛ āĻŦāĻŋāĻļā§āĻ˛ā§āĻˇāĻŖ āĻāĻ°āĻžāĻ° āĻĒāĻ°ā§ āĻāĻŦāĻ āĻ¸āĻŋāĻĻā§āĻ§āĻžāĻ¨ā§āĻ¤ āĻ¨ā§āĻāĻ¯āĻŧāĻžāĻ° āĻĒāĻ°ā§ āĻ¯ā§ āĻāĻāĻŋ āĻ¯ā§āĻĻā§āĻ§ā§āĻ° āĻāĻ¨ā§āĻ¯ āĻĒā§āĻ°āĻ¸ā§āĻ¤ā§āĻ¤, āĻāĻŽāĻ°āĻž āĻāĻāĻŋ āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§āĻ¨ āĻāĻ°āĻ¤ā§ āĻāĻāĻŋāĻ¯āĻŧā§ āĻ¯āĻžāĻ, āĻāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻŽāĻ°āĻž āĻāĻŽāĻžāĻĻā§āĻ° āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ā§āĻ¯āĻŧ āĻ˛āĻā§āĻāĻāĻŋ āĻ¨āĻŋāĻ°ā§āĻŦāĻžāĻāĻ¨ āĻāĻ°āĻŋ (āĻāĻā§āĻ° āĻ āĻ¨ā§āĻā§āĻā§āĻĻā§ āĻĻā§āĻāĻžāĻ¨ā§ āĻšāĻ¯āĻŧā§āĻā§) āĻāĻŦāĻ āĻ¨āĻŋāĻā§ āĻāĻ˛ā§ āĻ¯āĻžāĻāĨ¤
āĻāĻŽāĻ°āĻž āĻāĻŽāĻžāĻĻā§āĻ° āĻŽāĻĄā§āĻ˛āĻā§ āĻāĻāĻāĻŋ āĻ¨āĻžāĻŽ āĻĻā§āĻāĻ¯āĻŧāĻžāĻ° āĻĒāĻ°ā§, āĻāĻāĻŋāĻ° āĻāĻāĻāĻŋ āĻ¸āĻāĻ¸ā§āĻāĻ°āĻŖ āĻ°āĻ¯āĻŧā§āĻā§ā§ˇ āĻāĻĒāĻ¨āĻŋ āĻāĻāĻ āĻ¨āĻžāĻŽā§āĻ° āĻ āĻ¨ā§āĻ¯ āĻŽāĻĄā§āĻ˛ āĻ¸āĻāĻ°āĻā§āĻˇāĻŖ āĻāĻ°āĻ˛ā§, āĻ¸āĻāĻ¸ā§āĻāĻ°āĻŖāĻāĻŋ āĻ¸ā§āĻŦāĻ¯āĻŧāĻāĻā§āĻ°āĻŋāĻ¯āĻŧāĻāĻžāĻŦā§ āĻāĻĒāĻā§āĻ°ā§āĻĄ āĻšāĻŦā§āĨ¤
āĻĒā§āĻ°āĻ¤āĻŋāĻāĻŋ āĻŽāĻĄā§āĻ˛ā§āĻ° āĻāĻ¨ā§āĻ¯, āĻāĻŽāĻ°āĻž āĻāĻāĻāĻŋ āĻŦāĻŋāĻŦāĻ°āĻŖ āĻ¯ā§āĻ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°āĻŋ āĻāĻŦāĻ āĻ¤āĻŋāĻ¨āĻāĻŋ āĻ āĻŦāĻ¸ā§āĻĨāĻžāĻ° āĻŽāĻ§ā§āĻ¯ā§ āĻāĻāĻāĻŋ āĻ¨āĻŋāĻ°ā§āĻŦāĻžāĻāĻ¨ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°āĻŋ (āĻŽāĻā§āĻāĻžāĻ¯āĻŧāĻ¨, āĻā§āĻĒāĻžāĻĻāĻ¨, āĻ¸āĻāĻ°āĻā§āĻˇāĻŖāĻžāĻāĻžāĻ°); āĻĒāĻ°āĻŦāĻ°ā§āĻ¤ā§āĻāĻžāĻ˛ā§, API āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§, āĻāĻŽāĻ°āĻž āĻāĻ āĻ°āĻžāĻā§āĻ¯āĻā§āĻ˛āĻŋ āĻ ā§āĻ¯āĻžāĻā§āĻ¸ā§āĻ¸ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°āĻŋ, āĻ¯āĻž āĻ¸āĻāĻ¸ā§āĻāĻ°āĻŖā§āĻ° āĻ¸āĻžāĻĨā§ āĻ āĻ¤āĻŋāĻ°āĻŋāĻā§āĻ¤ āĻ¨āĻŽāĻ¨ā§āĻ¯āĻŧāĻ¤āĻž āĻĒā§āĻ°āĻĻāĻžāĻ¨ āĻāĻ°ā§āĨ¤
āĻāĻŽāĻ°āĻž āĻ¸āĻŦ āĻŽāĻĄā§āĻ˛ā§āĻ° āĻ¸āĻšāĻ āĻ ā§āĻ¯āĻžāĻā§āĻ¸ā§āĻ¸ āĻāĻā§
āĻāĻŦāĻ āĻ¤āĻžāĻĻā§āĻ° āĻ¸āĻāĻ¸ā§āĻāĻ°āĻŖ
āĻĒā§āĻ°ā§āĻŦāĻŦāĻ°ā§āĻ¤ā§ āĻ āĻ¨ā§āĻā§āĻā§āĻĻā§āĻ° āĻŽāĻ¤ā§, āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻāĻ˛āĻžāĻĒ 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 āĻĒā§āĻ°āĻāĻ˛ā§āĻĒ -
MLflow -
āĻĒā§āĻ°āĻļā§āĻ¨ā§āĻ° āĻāĻ¨ā§āĻ¯ āĻāĻŽāĻžāĻ° āĻāĻžāĻā§āĻ° āĻāĻŽā§āĻ˛ - [āĻāĻŽā§āĻ˛ āĻ¸ā§āĻ°āĻā§āĻˇāĻŋāĻ¤]
āĻāĻŽāĻžāĻĻā§āĻ° āĻā§āĻŽā§āĻĒāĻžāĻ¨āĻŋ āĻĒāĻ°ā§āĻ¯āĻžāĻ¯āĻŧāĻā§āĻ°āĻŽā§ āĻāĻāĻāĻŋ āĻŦāĻŋāĻļā§āĻˇāĻā§āĻāĻĻā§āĻ° āĻāĻ¨ā§āĻ¯ āĻŦāĻŋāĻāĻŋāĻ¨ā§āĻ¨ āĻāĻā§āĻ¨ā§āĻ āĻšā§āĻ¸ā§āĻ āĻāĻ°ā§, āĻāĻĻāĻžāĻšāĻ°āĻŖāĻ¸ā§āĻŦāĻ°ā§āĻĒ: 8 āĻā§āĻ˛āĻžāĻ āĻŽāĻ¸ā§āĻā§āĻ° āĻ¸āĻŽāĻ¯āĻŧ 19:00 āĻ āĻāĻāĻāĻŋ āĻ
āĻ¨āĻ˛āĻžāĻāĻ¨ āĻĢāĻ°ā§āĻŽā§āĻ¯āĻžāĻā§ āĻāĻāĻāĻŋ āĻ¸āĻŋāĻāĻŋ āĻŽāĻŋāĻāĻāĻĒ āĻšāĻŦā§, āĻ¯āĻĻāĻŋ āĻāĻĒāĻ¨āĻŋ āĻāĻā§āĻ°āĻšā§ āĻšāĻ¨, āĻāĻĒāĻ¨āĻŋ āĻ
āĻāĻļ āĻ¨āĻŋāĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨, āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§āĻ¨
āĻāĻ¤ā§āĻ¸: www.habr.com