āĻāĻ āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§ā§, āĻāĻŽāĻŋ āĻāĻĒāĻ¨āĻžāĻā§ āĻŦāĻ˛āĻŦ āĻāĻŋāĻāĻžāĻŦā§ 30 āĻŽāĻŋāĻ¨āĻŋāĻā§āĻ° āĻŽāĻ§ā§āĻ¯ā§ āĻāĻāĻāĻŋ āĻŽā§āĻļāĻŋāĻ¨ āĻ˛āĻžāĻ°ā§āĻ¨āĻŋāĻ āĻāĻ¨āĻāĻžāĻ¯āĻŧāĻ°āĻ¨āĻŽā§āĻ¨ā§āĻ āĻ¸ā§āĻ āĻāĻĒ āĻāĻ°āĻ¤ā§ āĻšāĻ¯āĻŧ, āĻāĻŽā§āĻ āĻļāĻ¨āĻžāĻā§āĻ¤āĻāĻ°āĻŖā§āĻ° āĻāĻ¨ā§āĻ¯ āĻāĻāĻāĻŋ āĻ¨āĻŋāĻāĻ°āĻžāĻ˛ āĻ¨ā§āĻāĻāĻ¯āĻŧāĻžāĻ°ā§āĻ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻ¤ā§ āĻšāĻ¯āĻŧ āĻāĻŦāĻ āĻ¤āĻžāĻ°āĻĒāĻ° āĻā§āĻ°āĻžāĻĢāĻŋāĻā§āĻ¸ āĻĒā§āĻ°āĻ¸ā§āĻ¸āĻ°ā§ (GPU) āĻāĻāĻ āĻ¨ā§āĻāĻāĻ¯āĻŧāĻžāĻ°ā§āĻ āĻāĻžāĻ˛āĻžāĻ¤ā§ āĻšāĻ¯āĻŧāĨ¤
āĻĒā§āĻ°āĻĨāĻŽāĻ¤, āĻāĻāĻāĻŋ āĻ¨āĻŋāĻāĻ°āĻžāĻ˛ āĻ¨ā§āĻāĻāĻ¯āĻŧāĻžāĻ°ā§āĻ āĻāĻŋ āĻ¤āĻž āĻ¸āĻāĻā§āĻāĻžāĻ¯āĻŧāĻŋāĻ¤ āĻāĻ°āĻž āĻ¯āĻžāĻāĨ¤
āĻāĻŽāĻžāĻĻā§āĻ° āĻā§āĻˇā§āĻ¤ā§āĻ°ā§, āĻāĻāĻŋ āĻāĻāĻāĻŋ āĻāĻžāĻŖāĻŋāĻ¤āĻŋāĻ āĻŽāĻĄā§āĻ˛, āĻ¸ā§āĻāĻ¸āĻžāĻĨā§ āĻāĻ° āĻ¸āĻĢā§āĻāĻāĻ¯āĻŧā§āĻ¯āĻžāĻ° āĻŦāĻž āĻšāĻžāĻ°ā§āĻĄāĻāĻ¯āĻŧā§āĻ¯āĻžāĻ° āĻŽā§āĻ°ā§āĻ¤, āĻ¯āĻž āĻā§āĻŦāĻŋāĻ āĻ¨āĻŋāĻāĻ°āĻžāĻ˛ āĻ¨ā§āĻāĻāĻ¯āĻŧāĻžāĻ°ā§āĻāĻā§āĻ˛āĻŋāĻ° āĻ¸āĻāĻāĻ āĻ¨ āĻāĻŦāĻ āĻāĻžāĻ°ā§āĻ¯āĻāĻžāĻ°āĻŋāĻ¤āĻžāĻ° āĻ¨ā§āĻ¤āĻŋāĻ° āĻāĻĒāĻ° āĻ¨āĻŋāĻ°ā§āĻŽāĻŋāĻ¤ - āĻāĻāĻāĻŋ āĻā§āĻŦāĻ¨ā§āĻ¤ āĻĒā§āĻ°āĻžāĻŖā§āĻ° āĻ¸ā§āĻ¨āĻžāĻ¯āĻŧā§ āĻā§āĻˇā§āĻ° āĻ¨ā§āĻāĻāĻ¯āĻŧāĻžāĻ°ā§āĻāĨ¤ āĻāĻ āĻ§āĻžāĻ°āĻŖāĻžāĻāĻŋ āĻŽāĻ¸ā§āĻ¤āĻŋāĻˇā§āĻā§ āĻāĻā§ āĻ¯āĻžāĻāĻ¯āĻŧāĻž āĻĒā§āĻ°āĻā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻā§āĻ˛āĻŋ āĻ āĻ§ā§āĻ¯āĻ¯āĻŧāĻ¨ āĻāĻ°āĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ āĻāĻŦāĻ āĻāĻ āĻĒā§āĻ°āĻā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻā§āĻ˛āĻŋāĻ° āĻŽāĻĄā§āĻ˛ āĻāĻ°āĻžāĻ° āĻā§āĻˇā§āĻāĻž āĻāĻ°āĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ āĻāĻĻā§āĻā§āĻ¤ āĻšāĻ¯āĻŧā§āĻāĻŋāĻ˛āĨ¤
āĻ¨āĻŋāĻāĻ°āĻžāĻ˛ āĻ¨ā§āĻāĻāĻ¯āĻŧāĻžāĻ°ā§āĻāĻā§āĻ˛āĻŋ āĻļāĻŦā§āĻĻā§āĻ° āĻ¸ā§āĻŦāĻžāĻāĻžāĻŦāĻŋāĻ āĻ āĻ°ā§āĻĨā§ āĻĒā§āĻ°ā§āĻā§āĻ°āĻžāĻŽ āĻāĻ°āĻž āĻšāĻ¯āĻŧ āĻ¨āĻž, āĻ¤āĻžāĻ°āĻž āĻĒā§āĻ°āĻļāĻŋāĻā§āĻˇāĻŋāĻ¤ āĻšāĻ¯āĻŧāĨ¤ āĻļā§āĻāĻžāĻ° āĻā§āĻˇāĻŽāĻ¤āĻž āĻāĻ¤āĻŋāĻšā§āĻ¯āĻāĻ¤ āĻ ā§āĻ¯āĻžāĻ˛āĻāĻ°āĻŋāĻĻāĻŽā§āĻ° āĻ¤ā§āĻ˛āĻ¨āĻžāĻ¯āĻŧ āĻ¨āĻŋāĻāĻ°āĻžāĻ˛ āĻ¨ā§āĻāĻāĻ¯āĻŧāĻžāĻ°ā§āĻā§āĻ° āĻ āĻ¨ā§āĻ¯āĻ¤āĻŽ āĻĒā§āĻ°āĻ§āĻžāĻ¨ āĻ¸ā§āĻŦāĻŋāĻ§āĻžāĨ¤ āĻĒā§āĻ°āĻ¯ā§āĻā§āĻ¤āĻŋāĻāĻ¤āĻāĻžāĻŦā§, āĻļā§āĻāĻžāĻ° āĻŽāĻ§ā§āĻ¯ā§ āĻ°āĻ¯āĻŧā§āĻā§ āĻ¨āĻŋāĻāĻ°āĻ¨ā§āĻ° āĻŽāĻ§ā§āĻ¯ā§ āĻ¸āĻāĻ¯ā§āĻā§āĻ° āĻ¸āĻšāĻ āĻā§āĻāĻā§ āĻŦā§āĻ° āĻāĻ°āĻžāĨ¤ āĻĒā§āĻ°āĻļāĻŋāĻā§āĻˇāĻŖ āĻĒā§āĻ°āĻā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻāĻ˛āĻžāĻāĻžāĻ˛ā§āĻ¨, āĻ¨āĻŋāĻāĻ°āĻžāĻ˛ āĻ¨ā§āĻāĻāĻ¯āĻŧāĻžāĻ°ā§āĻ āĻāĻ¨āĻĒā§āĻ āĻĄā§āĻāĻž āĻāĻŦāĻ āĻāĻāĻāĻĒā§āĻ āĻĄā§āĻāĻžāĻ° āĻŽāĻ§ā§āĻ¯ā§ āĻāĻāĻŋāĻ˛ āĻ¨āĻŋāĻ°ā§āĻāĻ°āĻ¤āĻž āĻ¸āĻ¨āĻžāĻā§āĻ¤ āĻāĻ°āĻ¤ā§ āĻāĻŦāĻ āĻ¸ā§āĻāĻ¸āĻžāĻĨā§ āĻ¸āĻžāĻ§āĻžāĻ°āĻŖā§āĻāĻ°āĻŖ āĻāĻ°āĻ¤ā§ āĻ¸āĻā§āĻˇāĻŽ āĻšāĻ¯āĻŧāĨ¤
āĻŽā§āĻļāĻŋāĻ¨ āĻ˛āĻžāĻ°ā§āĻ¨āĻŋāĻ āĻāĻ° āĻĻā§āĻˇā§āĻāĻŋāĻā§āĻŖ āĻĨā§āĻā§, āĻāĻāĻāĻŋ āĻ¨āĻŋāĻāĻ°āĻžāĻ˛ āĻ¨ā§āĻāĻāĻ¯āĻŧāĻžāĻ°ā§āĻ āĻĒā§āĻ¯āĻžāĻāĻžāĻ°ā§āĻ¨ āĻļāĻ¨āĻžāĻā§āĻ¤āĻāĻ°āĻŖ āĻĒāĻĻā§āĻ§āĻ¤āĻŋ, āĻŦā§āĻˇāĻŽā§āĻ¯āĻŽā§āĻ˛āĻ āĻŦāĻŋāĻļā§āĻ˛ā§āĻˇāĻŖ, āĻā§āĻ˛āĻžāĻ¸ā§āĻāĻžāĻ°āĻŋāĻ āĻĒāĻĻā§āĻ§āĻ¤āĻŋ āĻāĻŦāĻ āĻ āĻ¨ā§āĻ¯āĻžāĻ¨ā§āĻ¯ āĻĒāĻĻā§āĻ§āĻ¤āĻŋāĻ° āĻāĻāĻāĻŋ āĻŦāĻŋāĻļā§āĻˇ āĻā§āĻˇā§āĻ¤ā§āĻ°ā§āĨ¤
āĻāĻĒāĻāĻ°āĻŖ
āĻĒā§āĻ°āĻĨāĻŽāĻ¤, āĻāĻ¸ā§āĻ¨ āĻ¸āĻ°āĻā§āĻāĻžāĻŽāĻā§āĻ˛āĻŋ āĻĻā§āĻāĻŋāĨ¤ āĻāĻŽāĻžāĻĻā§āĻ° āĻ˛āĻŋāĻ¨āĻžāĻā§āĻ¸ āĻ
āĻĒāĻžāĻ°ā§āĻāĻŋāĻ āĻ¸āĻŋāĻ¸ā§āĻā§āĻŽ āĻāĻ¨āĻ¸ā§āĻāĻ˛ āĻāĻ°āĻž āĻāĻāĻāĻŋ āĻ¸āĻžāĻ°ā§āĻāĻžāĻ° āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨āĨ¤ āĻŽā§āĻļāĻŋāĻ¨ āĻ˛āĻžāĻ°ā§āĻ¨āĻŋāĻ āĻ¸āĻŋāĻ¸ā§āĻā§āĻŽāĻā§āĻ˛āĻŋ āĻĒāĻ°āĻŋāĻāĻžāĻ˛āĻ¨āĻž āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ā§āĻ¯āĻŧ āĻ¸āĻ°āĻā§āĻāĻžāĻŽāĻā§āĻ˛āĻŋ āĻŦā§āĻļ āĻļāĻā§āĻ¤āĻŋāĻļāĻžāĻ˛ā§ āĻāĻŦāĻ āĻĢāĻ˛āĻ¸ā§āĻŦāĻ°ā§āĻĒ, āĻŦā§āĻ¯āĻ¯āĻŧāĻŦāĻšā§āĻ˛āĨ¤ āĻ¯āĻžāĻĻā§āĻ° āĻšāĻžāĻ¤ā§ āĻāĻāĻāĻŋ āĻāĻžāĻ˛ āĻŽā§āĻļāĻŋāĻ¨ āĻ¨ā§āĻ, āĻāĻŽāĻŋ āĻā§āĻ˛āĻžāĻāĻĄ āĻ¸āĻ°āĻŦāĻ°āĻžāĻšāĻāĻžāĻ°ā§āĻĻā§āĻ° āĻ
āĻĢāĻžāĻ°āĻā§āĻ˛āĻŋāĻ¤ā§ āĻŽāĻ¨ā§āĻ¯ā§āĻ āĻĻā§āĻāĻ¯āĻŧāĻžāĻ° āĻĒāĻ°āĻžāĻŽāĻ°ā§āĻļ āĻĻāĻŋāĻāĨ¤ āĻāĻĒāĻ¨āĻŋ āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ā§āĻ¯āĻŧ āĻ¸āĻžāĻ°ā§āĻāĻžāĻ°āĻāĻŋ āĻĻā§āĻ°ā§āĻ¤ āĻāĻžāĻĄāĻŧāĻž āĻ¨āĻŋāĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨ āĻāĻŦāĻ āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°ā§āĻ° āĻ¸āĻŽāĻ¯āĻŧā§āĻ° āĻāĻ¨ā§āĻ¯ āĻ
āĻ°ā§āĻĨ āĻĒā§āĻ°āĻĻāĻžāĻ¨ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨āĨ¤
āĻĒā§āĻ°āĻāĻ˛ā§āĻĒāĻā§āĻ˛āĻŋāĻ¤ā§ āĻ¯ā§āĻāĻžāĻ¨ā§ āĻ¨āĻŋāĻāĻ°āĻžāĻ˛ āĻ¨ā§āĻāĻāĻ¯āĻŧāĻžāĻ°ā§āĻ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻž āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨, āĻāĻŽāĻŋ āĻ°āĻžāĻļāĻŋāĻ¯āĻŧāĻžāĻ¨ āĻā§āĻ˛āĻžāĻāĻĄ āĻ¸āĻ°āĻŦāĻ°āĻžāĻšāĻāĻžāĻ°ā§āĻā§āĻ˛āĻŋāĻ° āĻāĻāĻāĻŋāĻ° āĻ¸āĻžāĻ°ā§āĻāĻžāĻ° āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻŋāĨ¤ āĻā§āĻŽā§āĻĒāĻžāĻ¨āĻŋāĻāĻŋ NVIDIA āĻĨā§āĻā§ āĻļāĻā§āĻ¤āĻŋāĻļāĻžāĻ˛ā§ Tesla V100 āĻā§āĻ°āĻžāĻĢāĻŋāĻā§āĻ¸ āĻĒā§āĻ°āĻ¸ā§āĻ¸āĻ° (GPU) āĻ¸āĻš āĻŽā§āĻļāĻŋāĻ¨ āĻ˛āĻžāĻ°ā§āĻ¨āĻŋāĻāĻ¯āĻŧā§āĻ° āĻāĻ¨ā§āĻ¯ āĻŦāĻŋāĻļā§āĻˇāĻāĻžāĻŦā§ āĻāĻžāĻĄāĻŧāĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻā§āĻ˛āĻžāĻāĻĄ āĻ¸āĻžāĻ°ā§āĻāĻžāĻ° āĻ
āĻĢāĻžāĻ° āĻāĻ°ā§āĨ¤ āĻ¸āĻāĻā§āĻˇā§āĻĒā§: āĻāĻāĻāĻŋ GPU āĻ¸āĻš āĻāĻāĻāĻŋ āĻ¸āĻžāĻ°ā§āĻāĻžāĻ° āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻž āĻāĻāĻ āĻāĻ°āĻā§āĻ° āĻāĻāĻāĻŋ āĻ¸āĻžāĻ°ā§āĻāĻžāĻ°ā§āĻ° āĻ¤ā§āĻ˛āĻ¨āĻžāĻ¯āĻŧ āĻĻāĻļāĻā§āĻŖ āĻŦā§āĻļāĻŋ āĻĻāĻā§āĻˇ (āĻĻā§āĻ°ā§āĻ¤) āĻšāĻ¤ā§ āĻĒāĻžāĻ°ā§ āĻ¯āĻž āĻāĻŖāĻ¨āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻāĻāĻŋ CPU (āĻ¸ā§āĻĒāĻ°āĻŋāĻāĻŋāĻ¤ āĻā§āĻ¨ā§āĻĻā§āĻ°ā§āĻ¯āĻŧ āĻĒā§āĻ°āĻā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻāĻ°āĻŖ āĻāĻāĻ¨āĻŋāĻ) āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§āĨ¤ āĻāĻāĻŋ āĻāĻŋāĻĒāĻŋāĻāĻ āĻāĻ°ā§āĻāĻŋāĻā§āĻāĻāĻžāĻ°ā§āĻ° āĻŦā§āĻļāĻŋāĻˇā§āĻā§āĻ¯āĻā§āĻ˛āĻŋāĻ° āĻāĻžāĻ°āĻŖā§ āĻ
āĻ°ā§āĻāĻ¨ āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻā§, āĻ¯āĻž āĻĻā§āĻ°ā§āĻ¤ āĻāĻŖāĻ¨āĻžāĻ° āĻ¸āĻžāĻĨā§ āĻŽā§āĻāĻžāĻŦāĻŋāĻ˛āĻž āĻāĻ°ā§āĨ¤
āĻ¨ā§āĻā§ āĻŦāĻ°ā§āĻŖāĻŋāĻ¤ āĻāĻĻāĻžāĻšāĻ°āĻŖāĻā§āĻ˛āĻŋ āĻŦāĻžāĻ¸ā§āĻ¤āĻŦāĻžāĻ¯āĻŧāĻ¨ āĻāĻ°āĻ¤ā§, āĻāĻŽāĻ°āĻž āĻŦā§āĻļ āĻāĻ¯āĻŧā§āĻ āĻĻāĻŋāĻ¨ā§āĻ° āĻāĻ¨ā§āĻ¯ āĻ¨āĻŋāĻŽā§āĻ¨āĻ˛āĻŋāĻāĻŋāĻ¤ āĻ¸āĻžāĻ°ā§āĻāĻžāĻ°āĻāĻŋ āĻāĻŋāĻ¨ā§āĻāĻŋ:
- āĻāĻ¸āĻāĻ¸āĻĄāĻŋ āĻĄāĻŋāĻ¸ā§āĻ 150 āĻāĻŋāĻŦāĻŋ
- āĻ°âā§āĻ¯āĻžāĻŽ 32 āĻāĻŋāĻŦāĻŋ
- āĻā§āĻ¸āĻ˛āĻž V100 16 āĻāĻŋāĻŦāĻŋ āĻĒā§āĻ°āĻ¸ā§āĻ¸āĻ° 4 āĻā§āĻ° āĻ¸āĻš
āĻāĻŽāĻ°āĻž āĻāĻŽāĻžāĻĻā§āĻ° āĻŽā§āĻļāĻŋāĻ¨ā§ āĻāĻŦā§āĻ¨ā§āĻā§ 18.04 āĻāĻ¨āĻ¸ā§āĻāĻ˛ āĻāĻ°ā§āĻāĻŋāĨ¤
āĻĒāĻ°āĻŋāĻŦā§āĻļ āĻ¸ā§āĻĨāĻžāĻĒāĻ¨ āĻāĻ°āĻž
āĻāĻāĻ¨ āĻ¸āĻžāĻ°ā§āĻāĻžāĻ°ā§ āĻāĻžāĻā§āĻ° āĻāĻ¨ā§āĻ¯ āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ā§āĻ¯āĻŧ āĻ¸āĻŦāĻāĻŋāĻā§ āĻāĻ¨āĻ¸ā§āĻāĻ˛ āĻāĻ°āĻž āĻ¯āĻžāĻāĨ¤ āĻ¯ā§āĻšā§āĻ¤ā§ āĻāĻŽāĻžāĻĻā§āĻ° āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§āĻāĻŋ āĻĒā§āĻ°āĻžāĻĨāĻŽāĻŋāĻāĻāĻžāĻŦā§ āĻ¨āĻ¤ā§āĻ¨āĻĻā§āĻ° āĻāĻ¨ā§āĻ¯, āĻāĻŽāĻŋ āĻāĻŋāĻā§ āĻĒāĻ¯āĻŧā§āĻ¨ā§āĻ āĻ¸āĻŽā§āĻĒāĻ°ā§āĻā§ āĻāĻĨāĻž āĻŦāĻ˛āĻŦ āĻ¯āĻž āĻ¤āĻžāĻĻā§āĻ° āĻāĻžāĻā§ āĻ˛āĻžāĻāĻŦā§āĨ¤
āĻāĻāĻāĻŋ āĻĒāĻ°āĻŋāĻŦā§āĻļ āĻ¸ā§āĻĨāĻžāĻĒāĻ¨ āĻāĻ°āĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ āĻ
āĻ¨ā§āĻ āĻāĻžāĻ āĻāĻŽāĻžāĻ¨ā§āĻĄ āĻ˛āĻžāĻāĻ¨ā§āĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§ āĻ¸āĻŽā§āĻĒāĻ¨ā§āĻ¨ āĻšāĻ¯āĻŧāĨ¤ āĻŦā§āĻļāĻŋāĻ°āĻāĻžāĻ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻāĻžāĻ°ā§ āĻ¤āĻžāĻĻā§āĻ° āĻāĻžāĻā§āĻ° āĻ
āĻĒāĻžāĻ°ā§āĻāĻŋāĻ āĻ¸āĻŋāĻ¸ā§āĻā§āĻŽ āĻšāĻŋāĻ¸āĻžāĻŦā§ āĻāĻāĻ¨ā§āĻĄā§āĻ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§āĨ¤ āĻāĻ āĻāĻāĻ¸-āĻāĻ° āĻ¸ā§āĻā§āĻ¯āĻžāĻ¨ā§āĻĄāĻžāĻ°ā§āĻĄ āĻāĻ¨āĻ¸ā§āĻ˛āĻāĻŋ āĻĒāĻāĻ¨ā§āĻĻā§āĻ° āĻāĻ¨ā§āĻ¯ āĻ
āĻ¨ā§āĻ āĻāĻŋāĻā§ āĻā§āĻĄāĻŧā§ āĻĻā§āĻ¯āĻŧāĨ¤ āĻ
āĻ¤āĻāĻŦ, āĻāĻŽāĻ°āĻž āĻāĻāĻāĻŋ āĻ¸ā§āĻŦāĻŋāĻ§āĻžāĻāĻ¨āĻ āĻā§āĻ˛ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻŦ
ssh root@server-ip-or-hostname
āĻ¸āĻžāĻ°ā§āĻāĻžāĻ°-āĻāĻāĻĒāĻŋ-āĻŦāĻž-āĻšā§āĻ¸ā§āĻāĻ¨āĻžāĻŽā§āĻ° āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤ā§, āĻāĻĒāĻ¨āĻžāĻ° āĻ¸āĻžāĻ°ā§āĻāĻžāĻ°ā§āĻ° āĻāĻāĻĒāĻŋ āĻ āĻŋāĻāĻžāĻ¨āĻž āĻŦāĻž āĻĄāĻŋāĻāĻ¨āĻāĻ¸ āĻ¨āĻžāĻŽ āĻāĻ˛ā§āĻ˛ā§āĻ āĻāĻ°ā§āĻ¨āĨ¤ āĻāĻ° āĻĒāĻ°ā§, āĻĒāĻžāĻ¸āĻāĻ¯āĻŧāĻžāĻ°ā§āĻĄ āĻ˛āĻŋāĻā§āĻ¨ āĻāĻŦāĻ āĻ¸āĻāĻ¯ā§āĻāĻāĻŋ āĻ¸āĻĢāĻ˛ āĻšāĻ˛ā§, āĻāĻŽāĻ°āĻž āĻāĻ° āĻŽāĻ¤ā§ āĻāĻāĻāĻŋ āĻŦāĻžāĻ°ā§āĻ¤āĻž āĻĒā§āĻ¤ā§ āĻĒāĻžāĻ°āĻŋāĨ¤
Welcome to Ubuntu 18.04.3 LTS (GNU/Linux 4.15.0-74-generic x86_64)
āĻāĻŽāĻāĻ˛ āĻŽāĻĄā§āĻ˛ āĻ¤ā§āĻ°āĻŋāĻ° āĻĒā§āĻ°āĻ§āĻžāĻ¨ āĻāĻžāĻˇāĻž āĻšāĻ˛ āĻĒāĻžāĻāĻĨāĻ¨āĨ¤ āĻāĻ° āĻ˛āĻŋāĻ¨āĻžāĻā§āĻ¸ā§ āĻāĻ° āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°ā§āĻ° āĻāĻ¨ā§āĻ¯ āĻ¸āĻŦāĻā§āĻ¯āĻŧā§ āĻāĻ¨āĻĒā§āĻ°āĻŋāĻ¯āĻŧ āĻĒā§āĻ˛āĻžāĻāĻĢāĻ°ā§āĻŽ
āĻāĻŽāĻžāĻĻā§āĻ° āĻ¸āĻžāĻ°ā§āĻāĻžāĻ°ā§ āĻāĻāĻŋ āĻāĻ¨āĻ¸ā§āĻāĻ˛ āĻāĻ°āĻž āĻ¯āĻžāĻ.
āĻāĻŽāĻ°āĻž āĻ¸ā§āĻĨāĻžāĻ¨ā§āĻ¯āĻŧ āĻĒā§āĻ¯āĻžāĻā§āĻ āĻŽā§āĻ¯āĻžāĻ¨ā§āĻāĻžāĻ° āĻāĻĒāĻĄā§āĻ āĻāĻ°ā§ āĻļā§āĻ°ā§ āĻāĻ°āĻŋ:
sudo apt-get update
āĻāĻžāĻ°ā§āĻ˛ āĻāĻ¨āĻ¸ā§āĻāĻ˛ āĻāĻ°ā§āĻ¨ (āĻāĻŽāĻžāĻ¨ā§āĻĄ āĻ˛āĻžāĻāĻ¨ āĻāĻāĻāĻŋāĻ˛āĻŋāĻāĻŋ):
sudo apt-get install curl
āĻ ā§āĻ¯āĻžāĻ¨āĻžāĻā§āĻ¨ā§āĻĄāĻž āĻĄāĻŋāĻ¸ā§āĻā§āĻ°āĻŋāĻŦāĻŋāĻāĻļāĻ¨ā§āĻ° āĻ¸āĻ°ā§āĻŦāĻļā§āĻˇ āĻ¸āĻāĻ¸ā§āĻāĻ°āĻŖ āĻĄāĻžāĻāĻ¨āĻ˛ā§āĻĄ āĻāĻ°ā§āĻ¨:
cd /tmp
curl âO https://repo.anaconda.com/archive/Anaconda3-2019.10-Linux-x86_64.sh
āĻāĻ° āĻāĻ¨āĻ¸ā§āĻāĻ˛ā§āĻļāĻ¨ āĻļā§āĻ°ā§ āĻāĻ°āĻž āĻ¯āĻžāĻ:
bash Anaconda3-2019.10-Linux-x86_64.sh
āĻāĻ¨āĻ¸ā§āĻāĻ˛ā§āĻļāĻ¨ āĻĒā§āĻ°āĻā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻāĻ˛āĻžāĻāĻžāĻ˛ā§āĻ¨, āĻāĻĒāĻ¨āĻžāĻā§ āĻ˛āĻžāĻāĻ¸ā§āĻ¨ā§āĻ¸ āĻā§āĻā§āĻ¤āĻŋ āĻ¨āĻŋāĻļā§āĻāĻŋāĻ¤ āĻāĻ°āĻ¤ā§ āĻŦāĻ˛āĻž āĻšāĻŦā§āĨ¤ āĻ¸āĻĢāĻ˛ āĻāĻ¨āĻ¸ā§āĻāĻ˛ā§āĻļāĻ¨ā§āĻ° āĻĒāĻ°ā§ āĻāĻĒāĻ¨āĻžāĻ° āĻāĻāĻŋ āĻĻā§āĻāĻ¤ā§ āĻšāĻŦā§:
Thank you for installing Anaconda3!
āĻāĻŽāĻāĻ˛ āĻŽāĻĄā§āĻ˛āĻā§āĻ˛āĻŋāĻ° āĻŦāĻŋāĻāĻžāĻļā§āĻ° āĻāĻ¨ā§āĻ¯ āĻāĻāĻ¨ āĻ
āĻ¨ā§āĻāĻā§āĻ˛āĻŋ āĻāĻžāĻ āĻžāĻŽā§ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻā§; āĻāĻŽāĻ°āĻž āĻ¸āĻŦāĻā§āĻ¯āĻŧā§ āĻāĻ¨āĻĒā§āĻ°āĻŋāĻ¯āĻŧāĻā§āĻ˛āĻŋāĻ° āĻ¸āĻžāĻĨā§ āĻāĻžāĻ āĻāĻ°āĻŋ:
āĻĢā§āĻ°ā§āĻŽāĻāĻ¯āĻŧāĻžāĻ°ā§āĻ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§ āĻāĻĒāĻ¨āĻŋ āĻŦāĻŋāĻāĻžāĻļā§āĻ° āĻāĻ¤āĻŋ āĻŦāĻžāĻĄāĻŧāĻžāĻ¤ā§ āĻāĻŦāĻ āĻ¸ā§āĻā§āĻ¯āĻžāĻ¨ā§āĻĄāĻžāĻ°ā§āĻĄ āĻāĻžāĻā§āĻ° āĻāĻ¨ā§āĻ¯ āĻĒā§āĻ°āĻ¸ā§āĻ¤ā§āĻ¤-āĻ¤ā§āĻ°āĻŋ āĻ¸āĻ°āĻā§āĻāĻžāĻŽāĻā§āĻ˛āĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°āĻŦā§āĻ¨āĨ¤
āĻāĻ āĻāĻĻāĻžāĻšāĻ°āĻŖā§ āĻāĻŽāĻ°āĻž PyTorch āĻāĻ° āĻ¸āĻžāĻĨā§ āĻāĻžāĻ āĻāĻ°āĻŦāĨ¤ āĻāĻ¸ā§āĻ¨ āĻāĻāĻŋ āĻāĻ¨āĻ¸ā§āĻāĻ˛ āĻāĻ°āĻž āĻ¯āĻžāĻ:
conda install pytorch torchvision cudatoolkit=10.1 -c pytorch
āĻāĻāĻ¨ āĻāĻŽāĻžāĻĻā§āĻ° āĻā§āĻĒāĻŋāĻāĻžāĻ° āĻ¨ā§āĻāĻŦā§āĻ āĻāĻžāĻ˛ā§ āĻāĻ°āĻ¤ā§ āĻšāĻŦā§, āĻāĻŽāĻāĻ˛ āĻŦāĻŋāĻļā§āĻˇāĻā§āĻāĻĻā§āĻ° āĻāĻ¨ā§āĻ¯ āĻāĻāĻāĻŋ āĻāĻ¨āĻĒā§āĻ°āĻŋāĻ¯āĻŧ āĻĄā§āĻā§āĻ˛āĻĒāĻŽā§āĻ¨ā§āĻ āĻā§āĻ˛āĨ¤ āĻāĻāĻŋ āĻāĻĒāĻ¨āĻžāĻā§ āĻā§āĻĄ āĻ˛āĻŋāĻāĻ¤ā§ āĻāĻŦāĻ āĻ āĻŦāĻŋāĻ˛āĻŽā§āĻŦā§ āĻāĻ° āĻ¸āĻŽā§āĻĒāĻžāĻĻāĻ¨ā§āĻ° āĻĢāĻ˛āĻžāĻĢāĻ˛ āĻĻā§āĻāĻ¤ā§ āĻĻā§āĻ¯āĻŧāĨ¤ āĻā§āĻĒāĻŋāĻāĻžāĻ° āĻ¨ā§āĻāĻŦā§āĻ āĻ ā§āĻ¯āĻžāĻ¨āĻžāĻā§āĻ¨ā§āĻĄāĻžāĻ° āĻ¸āĻžāĻĨā§ āĻ āĻ¨ā§āĻ¤āĻ°ā§āĻā§āĻā§āĻ¤ āĻāĻŦāĻ āĻāĻ¤āĻŋāĻŽāĻ§ā§āĻ¯ā§āĻ āĻāĻŽāĻžāĻĻā§āĻ° āĻ¸āĻžāĻ°ā§āĻāĻžāĻ°ā§ āĻāĻ¨āĻ¸ā§āĻāĻ˛ āĻāĻ°āĻž āĻāĻā§āĨ¤ āĻāĻĒāĻ¨āĻžāĻā§ āĻāĻŽāĻžāĻĻā§āĻ° āĻĄā§āĻ¸ā§āĻāĻāĻĒ āĻ¸āĻŋāĻ¸ā§āĻā§āĻŽ āĻĨā§āĻā§ āĻāĻāĻŋāĻ° āĻ¸āĻžāĻĨā§ āĻ¸āĻāĻ¯ā§āĻ āĻāĻ°āĻ¤ā§ āĻšāĻŦā§āĨ¤
āĻāĻāĻŋ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯, āĻāĻŽāĻ°āĻž āĻĒā§āĻ°āĻĨāĻŽā§ āĻĒā§āĻ°ā§āĻ 8080 āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻ āĻāĻ°ā§ āĻ¸āĻžāĻ°ā§āĻāĻžāĻ°ā§ Jupyter āĻāĻžāĻ˛ā§ āĻāĻ°āĻŦ:
jupyter notebook --no-browser --port=8080 --allow-root
āĻāĻ°āĻĒāĻ°ā§, āĻāĻŽāĻžāĻĻā§āĻ° Cmder āĻāĻ¨āĻ¸ā§āĻ˛ā§ āĻ āĻ¨ā§āĻ¯ āĻāĻāĻāĻŋ āĻā§āĻ¯āĻžāĻŦ āĻā§āĻ˛āĻ˛ā§ (āĻļā§āĻ°ā§āĻˇ āĻŽā§āĻ¨ā§ - āĻ¨āĻ¤ā§āĻ¨ āĻāĻ¨āĻ¸ā§āĻ˛ āĻĄāĻžāĻ¯āĻŧāĻžāĻ˛āĻ) āĻāĻŽāĻ°āĻž SSH āĻāĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§ āĻ¸āĻžāĻ°ā§āĻāĻžāĻ°ā§āĻ° āĻĒā§āĻ°ā§āĻ 8080 āĻāĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§ āĻ¸āĻāĻ¯ā§āĻ āĻāĻ°āĻŦ:
ssh -L 8080:localhost:8080 root@server-ip-or-hostname
āĻ¯āĻāĻ¨ āĻāĻŽāĻ°āĻž āĻĒā§āĻ°āĻĨāĻŽ āĻāĻŽāĻžāĻ¨ā§āĻĄāĻāĻŋ āĻĒā§āĻ°āĻŦā§āĻļ āĻāĻ°āĻŋ, āĻ¤āĻāĻ¨ āĻāĻŽāĻžāĻĻā§āĻ° āĻŦā§āĻ°āĻžāĻāĻāĻžāĻ°ā§ āĻā§āĻĒāĻŋāĻāĻžāĻ° āĻā§āĻ˛āĻ¤ā§ āĻ˛āĻŋāĻā§āĻāĻā§āĻ˛āĻŋ āĻ āĻĢāĻžāĻ° āĻāĻ°āĻž āĻšāĻŦā§:
To access the notebook, open this file in a browser:
file:///root/.local/share/jupyter/runtime/nbserver-18788-open.html
Or copy and paste one of these URLs:
http://localhost:8080/?token=cca0bd0b30857821194b9018a5394a4ed2322236f116d311
or http://127.0.0.1:8080/?token=cca0bd0b30857821194b9018a5394a4ed2322236f116d311
āĻāĻ¸ā§āĻ¨ āĻ¸ā§āĻĨāĻžāĻ¨ā§āĻ¯āĻŧ āĻšā§āĻ¸ā§āĻā§āĻ° āĻāĻ¨ā§āĻ¯ āĻ˛āĻŋāĻā§āĻāĻāĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻŋ: 8080āĨ¤ āĻ¸āĻŽā§āĻĒā§āĻ°ā§āĻŖ āĻĒāĻĨāĻāĻŋ āĻ āĻ¨ā§āĻ˛āĻŋāĻĒāĻŋ āĻāĻ°ā§āĻ¨ āĻāĻŦāĻ āĻāĻĒāĻ¨āĻžāĻ° āĻĒāĻŋāĻ¸āĻŋāĻ° āĻ¸ā§āĻĨāĻžāĻ¨ā§āĻ¯āĻŧ āĻŦā§āĻ°āĻžāĻāĻāĻžāĻ°ā§āĻ° āĻ āĻŋāĻāĻžāĻ¨āĻž āĻŦāĻžāĻ°ā§ āĻĒā§āĻ¸ā§āĻ āĻāĻ°ā§āĻ¨āĨ¤ āĻā§āĻĒāĻŋāĻāĻžāĻ° āĻ¨ā§āĻāĻŦā§āĻ āĻā§āĻ˛āĻŦā§āĨ¤
āĻāĻ¸ā§āĻ¨ āĻāĻāĻāĻŋ āĻ¨āĻ¤ā§āĻ¨ āĻ¨ā§āĻāĻŦā§āĻ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻŋ: āĻ¨āĻ¤ā§āĻ¨ - āĻ¨ā§āĻāĻŦā§āĻ - āĻĒāĻžāĻāĻĨāĻ¨ 3āĨ¤
āĻāĻ¸ā§āĻ¨ āĻāĻŽāĻ°āĻž āĻāĻ¨āĻ¸ā§āĻāĻ˛ āĻāĻ°āĻž āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻāĻĒāĻžāĻĻāĻžāĻ¨āĻā§āĻ˛āĻŋāĻ° āĻ¸āĻ āĻŋāĻ āĻā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻāĻ˛āĻžāĻĒ āĻĒāĻ°ā§āĻā§āĻˇāĻž āĻāĻ°āĻŋāĨ¤ āĻā§āĻĒāĻŋāĻāĻžāĻ°ā§ PyTorch āĻā§āĻĄāĻāĻŋ āĻ˛āĻŋāĻā§āĻ¨ āĻāĻŦāĻ āĻāĻā§āĻ¸āĻŋāĻāĻŋāĻāĻļāĻ¨ āĻāĻžāĻ˛āĻžāĻ¨ (āĻ°āĻžāĻ¨ āĻŦā§āĻ¤āĻžāĻŽ):
from __future__ import print_function
import torch
x = torch.rand(5, 3)
print(x)
āĻĢāĻ˛āĻžāĻĢāĻ˛ āĻāĻ āĻŽāĻ¤ āĻāĻŋāĻā§ āĻšāĻāĻ¯āĻŧāĻž āĻāĻāĻŋāĻ¤:
āĻāĻĒāĻ¨āĻžāĻ° āĻ¯āĻĻāĻŋ āĻ
āĻ¨ā§āĻ°ā§āĻĒ āĻĢāĻ˛āĻžāĻĢāĻ˛ āĻĨāĻžāĻā§, āĻ¤āĻžāĻšāĻ˛ā§ āĻāĻŽāĻ°āĻž āĻ¸āĻŦāĻāĻŋāĻā§ āĻ¸āĻ āĻŋāĻāĻāĻžāĻŦā§ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ° āĻāĻ°ā§āĻāĻŋ āĻāĻŦāĻ āĻāĻŽāĻ°āĻž āĻāĻāĻāĻŋ āĻ¨āĻŋāĻāĻ°āĻžāĻ˛ āĻ¨ā§āĻāĻāĻ¯āĻŧāĻžāĻ°ā§āĻ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻž āĻļā§āĻ°ā§ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°āĻŋ!
āĻāĻāĻāĻŋ āĻ¨āĻŋāĻāĻ°āĻžāĻ˛ āĻ¨ā§āĻāĻāĻ¯āĻŧāĻžāĻ°ā§āĻ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻž
āĻāĻŽāĻ°āĻž āĻāĻŦāĻŋ āĻ¸ā§āĻŦā§āĻā§āĻ¤āĻŋāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻāĻāĻŋ āĻ¨āĻŋāĻāĻ°āĻžāĻ˛ āĻ¨ā§āĻāĻāĻ¯āĻŧāĻžāĻ°ā§āĻ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻŦāĨ¤ āĻāĻ° āĻāĻāĻāĻŋ āĻāĻŋāĻ¤ā§āĻ¤āĻŋ āĻšāĻŋāĻ¸āĻžāĻŦā§ āĻāĻāĻŋ āĻā§āĻ°āĻšāĻŖ āĻāĻ°āĻž āĻ¯āĻžāĻ
āĻ¨ā§āĻāĻāĻ¯āĻŧāĻžāĻ°ā§āĻ āĻĒā§āĻ°āĻļāĻŋāĻā§āĻˇāĻŖā§āĻ° āĻāĻ¨ā§āĻ¯ āĻāĻŽāĻ°āĻž āĻ¸āĻ°ā§āĻŦāĻāĻ¨ā§āĻ¨āĻāĻžāĻŦā§ āĻāĻĒāĻ˛āĻŦā§āĻ§ CIFAR10 āĻĄā§āĻāĻžāĻ¸ā§āĻ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻŦāĨ¤ āĻāĻāĻŋāĻ° āĻā§āĻ˛āĻžāĻ¸ āĻ°āĻ¯āĻŧā§āĻā§: "āĻŦāĻŋāĻŽāĻžāĻ¨", "āĻāĻžāĻĄāĻŧāĻŋ", "āĻĒāĻžāĻāĻŋ", "āĻŦāĻŋāĻĄāĻŧāĻžāĻ˛", "āĻšāĻ°āĻŋāĻŖ", "āĻā§āĻā§āĻ°", "āĻŦā§āĻ¯āĻžāĻ", "āĻā§āĻĄāĻŧāĻž", "āĻāĻžāĻšāĻžāĻ", "āĻā§āĻ°āĻžāĻ"āĨ¤ CIFAR10-āĻāĻ° āĻāĻŦāĻŋāĻā§āĻ˛āĻŋ āĻšāĻ˛ 3x32x32, āĻ āĻ°ā§āĻĨāĻžā§, 3x32 āĻĒāĻŋāĻā§āĻ¸ā§āĻ˛ā§āĻ° 32-āĻā§āĻ¯āĻžāĻ¨ā§āĻ˛ āĻ°āĻā§āĻ° āĻāĻŦāĻŋā§ˇ
āĻāĻžāĻā§āĻ° āĻāĻ¨ā§āĻ¯, āĻāĻŽāĻ°āĻž āĻāĻŋāĻ¤ā§āĻ°āĻā§āĻ˛āĻŋāĻ° āĻ¸āĻžāĻĨā§ āĻāĻžāĻ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻĒāĻžāĻāĻāĻ°ā§āĻ āĻĻā§āĻŦāĻžāĻ°āĻž āĻ¤ā§āĻ°āĻŋ āĻĒā§āĻ¯āĻžāĻā§āĻāĻāĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻŦ - āĻāĻ°ā§āĻāĻāĻŋāĻļāĻ¨āĨ¤
āĻāĻŽāĻ°āĻž āĻā§āĻ°āĻŽāĻžāĻ¨ā§āĻ¸āĻžāĻ°ā§ āĻ¨āĻŋāĻŽā§āĻ¨āĻ˛āĻŋāĻāĻŋāĻ¤ āĻĒāĻĻāĻā§āĻˇā§āĻĒāĻā§āĻ˛āĻŋ āĻāĻ°āĻŦ:
- āĻĒā§āĻ°āĻļāĻŋāĻā§āĻˇāĻŖ āĻāĻŦāĻ āĻĒāĻ°ā§āĻā§āĻˇāĻžāĻ° āĻĄā§āĻāĻž āĻ¸ā§āĻ āĻ˛ā§āĻĄ āĻāĻŦāĻ āĻ¸ā§āĻŦāĻžāĻāĻžāĻŦāĻŋāĻāĻāĻ°āĻŖ
- āĻ¨āĻŋāĻāĻ°āĻžāĻ˛ āĻ¨ā§āĻāĻāĻ¯āĻŧāĻžāĻ°ā§āĻ āĻ¸āĻāĻā§āĻāĻž
- āĻĒā§āĻ°āĻļāĻŋāĻā§āĻˇāĻŖ āĻ¤āĻĨā§āĻ¯ āĻ¨ā§āĻāĻāĻ¯āĻŧāĻžāĻ°ā§āĻ āĻĒā§āĻ°āĻļāĻŋāĻā§āĻˇāĻŖ
- āĻĒāĻ°ā§āĻā§āĻˇāĻžāĻ° āĻĄā§āĻāĻžāĻ¤ā§ āĻ¨ā§āĻāĻāĻ¯āĻŧāĻžāĻ°ā§āĻ āĻĒāĻ°ā§āĻā§āĻˇāĻž
- āĻāĻ¸ā§āĻ¨ āĻāĻŋāĻĒāĻŋāĻāĻ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§ āĻĒā§āĻ°āĻļāĻŋāĻā§āĻˇāĻŖ āĻāĻŦāĻ āĻĒāĻ°ā§āĻā§āĻˇāĻžāĻ° āĻĒā§āĻ¨āĻ°āĻžāĻŦā§āĻ¤ā§āĻ¤āĻŋ āĻāĻ°āĻŋ
āĻāĻŽāĻ°āĻž āĻā§āĻĒāĻŋāĻāĻžāĻ° āĻ¨ā§āĻāĻŦā§āĻā§ āĻ¨ā§āĻā§āĻ° āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻā§āĻĄ āĻāĻžāĻ°ā§āĻ¯āĻāĻ° āĻāĻ°āĻŦāĨ¤
CIFAR10 āĻ˛ā§āĻĄ āĻāĻŦāĻ āĻ¸ā§āĻŦāĻžāĻāĻžāĻŦāĻŋāĻāĻāĻ°āĻŖ
āĻā§āĻĒāĻŋāĻāĻžāĻ°ā§ āĻ¨āĻŋāĻŽā§āĻ¨āĻ˛āĻŋāĻāĻŋāĻ¤ āĻā§āĻĄāĻāĻŋ āĻ āĻ¨ā§āĻ˛āĻŋāĻĒāĻŋ āĻāĻ°ā§āĻ¨ āĻāĻŦāĻ āĻāĻžāĻ˛āĻžāĻ¨:
import torch
import torchvision
import torchvision.transforms as transforms
transform = transforms.Compose(
[transforms.ToTensor(),
transforms.Normalize((0.5, 0.5, 0.5), (0.5, 0.5, 0.5))])
trainset = torchvision.datasets.CIFAR10(root='./data', train=True,
download=True, transform=transform)
trainloader = torch.utils.data.DataLoader(trainset, batch_size=4,
shuffle=True, num_workers=2)
testset = torchvision.datasets.CIFAR10(root='./data', train=False,
download=True, transform=transform)
testloader = torch.utils.data.DataLoader(testset, batch_size=4,
shuffle=False, num_workers=2)
classes = ('plane', 'car', 'bird', 'cat',
'deer', 'dog', 'frog', 'horse', 'ship', 'truck')
āĻāĻ¤ā§āĻ¤āĻ°āĻāĻŋ āĻšāĻāĻ¯āĻŧāĻž āĻāĻāĻŋāĻ¤:
Downloading https://www.cs.toronto.edu/~kriz/cifar-10-python.tar.gz to ./data/cifar-10-python.tar.gz
Extracting ./data/cifar-10-python.tar.gz to ./data
Files already downloaded and verified
āĻāĻ¸ā§āĻ¨ āĻĒāĻ°ā§āĻā§āĻˇāĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻŦā§āĻļ āĻāĻ¯āĻŧā§āĻāĻāĻŋ āĻĒā§āĻ°āĻļāĻŋāĻā§āĻˇāĻŖ āĻāĻŋāĻ¤ā§āĻ° āĻĒā§āĻ°āĻĻāĻ°ā§āĻļāĻ¨ āĻāĻ°āĻŋ:
import matplotlib.pyplot as plt
import numpy as np
# functions to show an image
def imshow(img):
img = img / 2 + 0.5 # unnormalize
npimg = img.numpy()
plt.imshow(np.transpose(npimg, (1, 2, 0)))
plt.show()
# get some random training images
dataiter = iter(trainloader)
images, labels = dataiter.next()
# show images
imshow(torchvision.utils.make_grid(images))
# print labels
print(' '.join('%5s' % classes[labels[j]] for j in range(4)))
āĻ¨āĻŋāĻāĻ°āĻžāĻ˛ āĻ¨ā§āĻāĻāĻ¯āĻŧāĻžāĻ°ā§āĻ āĻ¸āĻāĻā§āĻāĻž
āĻāĻ¸ā§āĻ¨ āĻĒā§āĻ°āĻĨāĻŽā§ āĻŦāĻŋāĻŦā§āĻāĻ¨āĻž āĻāĻ°āĻŋ āĻāĻŋāĻāĻžāĻŦā§ āĻāĻŋāĻ¤ā§āĻ° āĻ¸āĻ¨āĻžāĻā§āĻ¤āĻāĻ°āĻŖā§āĻ° āĻāĻ¨ā§āĻ¯ āĻāĻāĻāĻŋ āĻ¨āĻŋāĻāĻ°āĻžāĻ˛ āĻ¨ā§āĻāĻāĻ¯āĻŧāĻžāĻ°ā§āĻ āĻāĻžāĻ āĻāĻ°ā§āĨ¤ āĻāĻāĻŋ āĻāĻāĻāĻŋ āĻ¸āĻžāĻ§āĻžāĻ°āĻŖ āĻĒāĻ¯āĻŧā§āĻ¨ā§āĻ-āĻā§-āĻĒāĻ¯āĻŧā§āĻ¨ā§āĻ āĻ¨ā§āĻāĻāĻ¯āĻŧāĻžāĻ°ā§āĻāĨ¤ āĻāĻāĻŋ āĻāĻ¨āĻĒā§āĻ āĻĄā§āĻāĻž āĻ¨ā§āĻ¯āĻŧ, āĻāĻā§ āĻāĻā§ āĻŦāĻŋāĻāĻŋāĻ¨ā§āĻ¨ āĻ¸ā§āĻ¤āĻ°ā§āĻ° āĻŽāĻ§ā§āĻ¯ āĻĻāĻŋāĻ¯āĻŧā§ āĻ¯āĻžāĻ¯āĻŧ āĻāĻŦāĻ āĻ āĻŦāĻļā§āĻˇā§ āĻāĻāĻāĻĒā§āĻ āĻĄā§āĻāĻž āĻ¤ā§āĻ°āĻŋ āĻāĻ°ā§āĨ¤
āĻāĻŽāĻžāĻĻā§āĻ° āĻĒāĻ°āĻŋāĻŦā§āĻļā§ āĻāĻāĻāĻŋ āĻ
āĻ¨ā§āĻ°ā§āĻĒ āĻ¨ā§āĻāĻāĻ¯āĻŧāĻžāĻ°ā§āĻ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻž āĻ¯āĻžāĻ:
import torch.nn as nn
import torch.nn.functional as F
class Net(nn.Module):
def __init__(self):
super(Net, self).__init__()
self.conv1 = nn.Conv2d(3, 6, 5)
self.pool = nn.MaxPool2d(2, 2)
self.conv2 = nn.Conv2d(6, 16, 5)
self.fc1 = nn.Linear(16 * 5 * 5, 120)
self.fc2 = nn.Linear(120, 84)
self.fc3 = nn.Linear(84, 10)
def forward(self, x):
x = self.pool(F.relu(self.conv1(x)))
x = self.pool(F.relu(self.conv2(x)))
x = x.view(-1, 16 * 5 * 5)
x = F.relu(self.fc1(x))
x = F.relu(self.fc2(x))
x = self.fc3(x)
return x
net = Net()
āĻāĻŽāĻ°āĻž āĻāĻāĻāĻŋ āĻā§āĻˇāĻ¤āĻŋ āĻĢāĻžāĻāĻļāĻ¨ āĻāĻŦāĻ āĻāĻāĻāĻŋ āĻ āĻĒā§āĻāĻŋāĻŽāĻžāĻāĻāĻžāĻ° āĻ¸āĻāĻā§āĻāĻžāĻ¯āĻŧāĻŋāĻ¤ āĻāĻ°āĻŋ
import torch.optim as optim
criterion = nn.CrossEntropyLoss()
optimizer = optim.SGD(net.parameters(), lr=0.001, momentum=0.9)
āĻĒā§āĻ°āĻļāĻŋāĻā§āĻˇāĻŖ āĻ¤āĻĨā§āĻ¯ āĻ¨ā§āĻāĻāĻ¯āĻŧāĻžāĻ°ā§āĻ āĻĒā§āĻ°āĻļāĻŋāĻā§āĻˇāĻŖ
āĻāĻŽāĻžāĻĻā§āĻ° āĻ¨āĻŋāĻāĻ°āĻžāĻ˛ āĻ¨ā§āĻāĻāĻ¯āĻŧāĻžāĻ°ā§āĻā§āĻ° āĻĒā§āĻ°āĻļāĻŋāĻā§āĻˇāĻŖ āĻļā§āĻ°ā§ āĻāĻ°āĻž āĻ¯āĻžāĻāĨ¤ āĻĻāĻ¯āĻŧāĻž āĻāĻ°ā§ āĻŽāĻ¨ā§ āĻ°āĻžāĻāĻŦā§āĻ¨ āĻ¯ā§ āĻāĻĒāĻ¨āĻŋ āĻāĻ āĻā§āĻĄāĻāĻŋ āĻāĻžāĻ˛āĻžāĻ¨ā§āĻ° āĻĒāĻ°ā§, āĻāĻžāĻāĻāĻŋ āĻ¸āĻŽā§āĻĒā§āĻ°ā§āĻŖ āĻ¨āĻž āĻšāĻāĻ¯āĻŧāĻž āĻĒāĻ°ā§āĻ¯āĻ¨ā§āĻ¤ āĻāĻĒāĻ¨āĻžāĻā§ āĻāĻŋāĻā§ āĻ¸āĻŽāĻ¯āĻŧ āĻ āĻĒā§āĻā§āĻˇāĻž āĻāĻ°āĻ¤ā§ āĻšāĻŦā§āĨ¤ āĻāĻāĻž āĻāĻŽāĻžāĻ° 5 āĻŽāĻŋāĻ¨āĻŋāĻ āĻ¸āĻŽāĻ¯āĻŧ āĻ¨āĻŋāĻ¯āĻŧā§āĻā§. āĻ¨ā§āĻāĻāĻ¯āĻŧāĻžāĻ°ā§āĻ āĻĒā§āĻ°āĻļāĻŋāĻā§āĻˇāĻŖā§āĻ° āĻāĻ¨ā§āĻ¯ āĻ¸āĻŽāĻ¯āĻŧ āĻ˛āĻžāĻā§āĨ¤
for epoch in range(2): # loop over the dataset multiple times
running_loss = 0.0
for i, data in enumerate(trainloader, 0):
# get the inputs; data is a list of [inputs, labels]
inputs, labels = data
# zero the parameter gradients
optimizer.zero_grad()
# forward + backward + optimize
outputs = net(inputs)
loss = criterion(outputs, labels)
loss.backward()
optimizer.step()
# print statistics
running_loss += loss.item()
if i % 2000 == 1999: # print every 2000 mini-batches
print('[%d, %5d] loss: %.3f' %
(epoch + 1, i + 1, running_loss / 2000))
running_loss = 0.0
print('Finished Training')
āĻāĻŽāĻ°āĻž āĻ¨āĻŋāĻŽā§āĻ¨āĻ˛āĻŋāĻāĻŋāĻ¤ āĻĢāĻ˛āĻžāĻĢāĻ˛ āĻĒā§āĻ¤ā§:
āĻāĻŽāĻ°āĻž āĻāĻŽāĻžāĻĻā§āĻ° āĻĒā§āĻ°āĻļāĻŋāĻā§āĻˇāĻŋāĻ¤ āĻŽāĻĄā§āĻ˛ āĻ¸āĻāĻ°āĻā§āĻˇāĻŖ āĻāĻ°āĻŋ:
PATH = './cifar_net.pth'
torch.save(net.state_dict(), PATH)
āĻĒāĻ°ā§āĻā§āĻˇāĻžāĻ° āĻĄā§āĻāĻžāĻ¤ā§ āĻ¨ā§āĻāĻāĻ¯āĻŧāĻžāĻ°ā§āĻ āĻĒāĻ°ā§āĻā§āĻˇāĻž
āĻāĻŽāĻ°āĻž āĻĒā§āĻ°āĻļāĻŋāĻā§āĻˇāĻŖ āĻĄā§āĻāĻžāĻ° āĻāĻāĻāĻŋ āĻ¸ā§āĻ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§ āĻ¨ā§āĻāĻāĻ¯āĻŧāĻžāĻ°ā§āĻāĻā§ āĻĒā§āĻ°āĻļāĻŋāĻā§āĻˇāĻŖ āĻĻāĻŋāĻ¯āĻŧā§āĻāĻŋāĨ¤ āĻāĻŋāĻ¨ā§āĻ¤ā§ āĻāĻŽāĻžāĻĻā§āĻ° āĻā§āĻ āĻāĻ°āĻ¤ā§ āĻšāĻŦā§ āĻ¨ā§āĻāĻāĻ¯āĻŧāĻžāĻ°ā§āĻ āĻāĻĻā§ āĻāĻŋāĻā§ āĻļāĻŋāĻā§āĻā§ āĻāĻŋāĻ¨āĻžāĨ¤
āĻ¨āĻŋāĻāĻ°āĻžāĻ˛ āĻ¨ā§āĻāĻāĻ¯āĻŧāĻžāĻ°ā§āĻ āĻāĻāĻāĻĒā§āĻ āĻāĻ°ā§ āĻāĻŽāĻ¨ āĻā§āĻ˛āĻžāĻ¸ āĻ˛ā§āĻŦā§āĻ˛ā§āĻ° āĻāĻŦāĻŋāĻˇā§āĻ¯āĻĻā§āĻŦāĻžāĻŖā§ āĻāĻ°ā§ āĻāĻŦāĻ āĻāĻāĻŋ āĻ¸āĻ¤ā§āĻ¯ āĻāĻŋāĻ¨āĻž āĻ¤āĻž āĻĒāĻ°ā§āĻā§āĻˇāĻž āĻāĻ°ā§ āĻāĻŽāĻ°āĻž āĻāĻāĻŋ āĻĒāĻ°ā§āĻā§āĻˇāĻž āĻāĻ°āĻŦāĨ¤ āĻāĻŦāĻŋāĻˇā§āĻ¯āĻĻā§āĻŦāĻžāĻŖā§ āĻ¸āĻ āĻŋāĻ āĻšāĻ˛ā§, āĻāĻŽāĻ°āĻž āĻ¸āĻ āĻŋāĻ āĻāĻŦāĻŋāĻˇā§āĻ¯āĻĻā§āĻŦāĻžāĻŖā§āĻ° āĻ¤āĻžāĻ˛āĻŋāĻāĻžāĻ¯āĻŧ āĻ¨āĻŽā§āĻ¨āĻž āĻ¯ā§āĻ āĻāĻ°āĻŋāĨ¤
āĻāĻ¸ā§āĻ¨ āĻĒāĻ°ā§āĻā§āĻˇāĻžāĻ° āĻ¸ā§āĻ āĻĨā§āĻā§ āĻāĻāĻāĻŋ āĻāĻŋāĻ¤ā§āĻ° āĻĻā§āĻāĻžāĻ:
dataiter = iter(testloader)
images, labels = dataiter.next()
# print images
imshow(torchvision.utils.make_grid(images))
print('GroundTruth: ', ' '.join('%5s' % classes[labels[j]] for j in range(4)))
āĻāĻāĻ¨ āĻāĻ¸ā§āĻ¨ āĻ¨āĻŋāĻāĻ°āĻžāĻ˛ āĻ¨ā§āĻāĻāĻ¯āĻŧāĻžāĻ°ā§āĻāĻā§ āĻāĻ āĻāĻŦāĻŋāĻ¤ā§ āĻā§ āĻāĻā§ āĻ¤āĻž āĻāĻŽāĻžāĻĻā§āĻ° āĻŦāĻ˛āĻ¤ā§ āĻŦāĻ˛āĻŋ:
net = Net()
net.load_state_dict(torch.load(PATH))
outputs = net(images)
_, predicted = torch.max(outputs, 1)
print('Predicted: ', ' '.join('%5s' % classes[predicted[j]]
for j in range(4)))
āĻĢāĻ˛āĻžāĻĢāĻ˛āĻā§āĻ˛āĻŋ āĻŦā§āĻļ āĻāĻžāĻ˛ āĻŦāĻ˛ā§ āĻŽāĻ¨ā§ āĻšāĻā§āĻā§: āĻ¨ā§āĻāĻāĻ¯āĻŧāĻžāĻ°ā§āĻāĻāĻŋ āĻāĻžāĻ°āĻāĻŋ āĻāĻŦāĻŋāĻ° āĻŽāĻ§ā§āĻ¯ā§ āĻ¤āĻŋāĻ¨āĻāĻŋ āĻ¸āĻ āĻŋāĻāĻāĻžāĻŦā§ āĻāĻŋāĻšā§āĻ¨āĻŋāĻ¤ āĻāĻ°ā§āĻā§āĨ¤
āĻĒā§āĻ°ā§ āĻĄā§āĻāĻžāĻ¸ā§āĻ āĻā§āĻĄāĻŧā§ āĻ¨ā§āĻāĻāĻ¯āĻŧāĻžāĻ°ā§āĻ āĻāĻŋāĻāĻžāĻŦā§ āĻĒāĻžāĻ°āĻĢāĻ°ā§āĻŽ āĻāĻ°ā§ āĻ¤āĻž āĻĻā§āĻāĻž āĻ¯āĻžāĻāĨ¤
correct = 0
total = 0
with torch.no_grad():
for data in testloader:
images, labels = data
outputs = net(images)
_, predicted = torch.max(outputs.data, 1)
total += labels.size(0)
correct += (predicted == labels).sum().item()
print('Accuracy of the network on the 10000 test images: %d %%' % (
100 * correct / total))
āĻĻā§āĻā§ āĻŽāĻ¨ā§ āĻšāĻā§āĻā§ āĻ¨ā§āĻāĻāĻ¯āĻŧāĻžāĻ°ā§āĻ āĻāĻŋāĻā§ āĻāĻžāĻ¨ā§ āĻāĻŦāĻ āĻāĻžāĻ āĻāĻ°āĻā§āĨ¤ āĻ¯āĻĻāĻŋ āĻ¤āĻŋāĻ¨āĻŋ āĻāĻ˛ā§āĻŽā§āĻ˛ā§āĻāĻžāĻŦā§ āĻā§āĻ˛āĻžāĻ¸ āĻ¨āĻŋāĻ°ā§āĻ§āĻžāĻ°āĻŖ āĻāĻ°ā§āĻ¨, āĻ¤āĻžāĻšāĻ˛ā§ āĻ¨āĻŋāĻ°ā§āĻā§āĻ˛āĻ¤āĻž 10% āĻšāĻŦā§āĨ¤
āĻāĻāĻ¨ āĻĻā§āĻāĻž āĻ¯āĻžāĻ āĻ¨ā§āĻāĻāĻ¯āĻŧāĻžāĻ°ā§āĻ āĻā§āĻ¨ āĻā§āĻ˛āĻžāĻ¸āĻā§āĻ˛ā§āĻā§ āĻāĻžāĻ˛ā§āĻāĻžāĻŦā§ āĻāĻŋāĻšā§āĻ¨āĻŋāĻ¤ āĻāĻ°ā§:
class_correct = list(0. for i in range(10))
class_total = list(0. for i in range(10))
with torch.no_grad():
for data in testloader:
images, labels = data
outputs = net(images)
_, predicted = torch.max(outputs, 1)
c = (predicted == labels).squeeze()
for i in range(4):
label = labels[i]
class_correct[label] += c[i].item()
class_total[label] += 1
for i in range(10):
print('Accuracy of %5s : %2d %%' % (
classes[i], 100 * class_correct[i] / class_total[i]))
āĻŽāĻ¨ā§ āĻšāĻā§āĻā§ āĻāĻžāĻĄāĻŧāĻŋ āĻāĻŦāĻ āĻāĻžāĻšāĻžāĻ āĻļāĻ¨āĻžāĻā§āĻ¤ āĻāĻ°āĻžāĻ° āĻā§āĻˇā§āĻ¤ā§āĻ°ā§ āĻ¨ā§āĻāĻāĻ¯āĻŧāĻžāĻ°ā§āĻāĻāĻŋ āĻ¸ā§āĻ°āĻž: 71% āĻ¨āĻŋāĻ°ā§āĻā§āĻ˛āĻ¤āĻžāĨ¤
āĻ¤āĻžāĻ āĻ¨ā§āĻāĻāĻ¯āĻŧāĻžāĻ°ā§āĻ āĻāĻžāĻ āĻāĻ°āĻā§āĨ¤ āĻāĻāĻ¨ āĻāĻ° āĻāĻžāĻāĻāĻŋ āĻā§āĻ°āĻžāĻĢāĻŋāĻā§āĻ¸ āĻĒā§āĻ°āĻ¸ā§āĻ¸āĻ°ā§ (GPU) āĻ¸ā§āĻĨāĻžāĻ¨āĻžāĻ¨ā§āĻ¤āĻ° āĻāĻ°āĻžāĻ° āĻā§āĻˇā§āĻāĻž āĻāĻ°āĻž āĻ¯āĻžāĻ āĻāĻŦāĻ āĻĻā§āĻā§āĻ¨ āĻā§ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻšāĻ¯āĻŧāĨ¤
āĻāĻŋāĻĒāĻŋāĻāĻāĻ¤ā§ āĻāĻāĻāĻŋ āĻ¨āĻŋāĻāĻ°āĻžāĻ˛ āĻ¨ā§āĻāĻāĻ¯āĻŧāĻžāĻ°ā§āĻā§āĻ° āĻĒā§āĻ°āĻļāĻŋāĻā§āĻˇāĻŖ
āĻĒā§āĻ°āĻĨāĻŽā§, āĻāĻŽāĻŋ āĻ¸āĻāĻā§āĻˇā§āĻĒā§ āĻŦā§āĻ¯āĻžāĻā§āĻ¯āĻž āĻāĻ°āĻŦ CUDA āĻāĻŋāĨ¤ CUDA (āĻāĻŽā§āĻĒāĻŋāĻāĻ āĻāĻāĻ¨āĻŋāĻĢāĻžāĻāĻĄ āĻĄāĻŋāĻāĻžāĻāĻ¸ āĻāĻ°ā§āĻāĻŋāĻā§āĻāĻāĻžāĻ°) āĻšāĻ˛ āĻāĻāĻāĻŋ āĻ¸āĻŽāĻžāĻ¨ā§āĻ¤āĻ°āĻžāĻ˛ āĻāĻŽā§āĻĒāĻŋāĻāĻāĻŋāĻ āĻĒā§āĻ˛ā§āĻ¯āĻžāĻāĻĢāĻ°ā§āĻŽ āĻ¯āĻž NVIDIA āĻĻā§āĻŦāĻžāĻ°āĻž āĻā§āĻ°āĻžāĻĢāĻŋāĻā§āĻ¸ āĻĒā§āĻ°āĻ¸ā§āĻ¸āĻŋāĻ āĻāĻāĻ¨āĻŋāĻā§ (GPUs) āĻ¸āĻžāĻ§āĻžāĻ°āĻŖ āĻāĻŽā§āĻĒāĻŋāĻāĻāĻŋāĻāĻ¯āĻŧā§āĻ° āĻāĻ¨ā§āĻ¯ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻā§āĨ¤ CUDA-āĻāĻ° āĻ¸āĻžāĻšāĻžāĻ¯ā§āĻ¯ā§, āĻŦāĻŋāĻāĻžāĻļāĻāĻžāĻ°ā§āĻ°āĻž GPU-āĻāĻ° āĻļāĻā§āĻ¤āĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§ āĻāĻŽā§āĻĒāĻŋāĻāĻāĻŋāĻ āĻ ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻā§āĻļāĻ¨āĻā§āĻ˛āĻŋāĻā§ āĻ¨āĻžāĻāĻā§āĻ¯āĻŧāĻāĻžāĻŦā§ āĻ¤ā§āĻŦāĻ°āĻžāĻ¨ā§āĻŦāĻŋāĻ¤ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§āĨ¤ āĻāĻ āĻĒā§āĻ˛ā§āĻ¯āĻžāĻāĻĢāĻ°ā§āĻŽāĻāĻŋ āĻāĻ¤āĻŋāĻŽāĻ§ā§āĻ¯ā§āĻ āĻāĻŽāĻžāĻĻā§āĻ° āĻ¸āĻžāĻ°ā§āĻāĻžāĻ°ā§ āĻāĻ¨āĻ¸ā§āĻāĻ˛ āĻāĻ°āĻž āĻāĻā§ āĻ¯āĻž āĻāĻŽāĻ°āĻž āĻāĻŋāĻ¨ā§āĻāĻŋāĨ¤
āĻāĻ¸ā§āĻ¨ āĻĒā§āĻ°āĻĨāĻŽā§ āĻāĻŽāĻžāĻĻā§āĻ° GPU āĻā§ ââāĻĒā§āĻ°āĻĨāĻŽ āĻĻā§āĻļā§āĻ¯āĻŽāĻžāĻ¨ āĻā§āĻĻāĻž āĻĄāĻŋāĻāĻžāĻāĻ¸ āĻšāĻŋāĻ¸āĻžāĻŦā§ āĻ¸āĻāĻā§āĻāĻžāĻ¯āĻŧāĻŋāĻ¤ āĻāĻ°āĻŋāĨ¤
device = torch . device ( "cuda:0" if torch . cuda . is_available () else "cpu" )
# Assuming that we are on a CUDA machine, this should print a CUDA device:
print ( device )
GPU-āĻ¤ā§ āĻ¨ā§āĻāĻāĻ¯āĻŧāĻžāĻ°ā§āĻ āĻĒāĻžāĻ āĻžāĻ¨ā§ āĻšāĻā§āĻā§:
net.to(device)
āĻāĻāĻžāĻĄāĻŧāĻžāĻ āĻāĻŽāĻžāĻĻā§āĻ° GPU-āĻ¤ā§ āĻĒā§āĻ°āĻ¤āĻŋāĻāĻŋ āĻ§āĻžāĻĒā§ āĻāĻ¨āĻĒā§āĻ āĻāĻŦāĻ āĻ˛āĻā§āĻˇā§āĻ¯ āĻĒāĻžāĻ āĻžāĻ¤ā§ āĻšāĻŦā§:
inputs, labels = data[0].to(device), data[1].to(device)
āĻāĻ˛ā§āĻ¨ GPU-āĻ¤ā§ āĻ¨ā§āĻāĻāĻ¯āĻŧāĻžāĻ°ā§āĻāĻā§ āĻĒā§āĻ¨āĻ°āĻžāĻ¯āĻŧ āĻĒā§āĻ°āĻļāĻŋāĻā§āĻˇāĻŖ āĻĻāĻŋāĻ:
import torch.optim as optim
criterion = nn.CrossEntropyLoss()
optimizer = optim.SGD(net.parameters(), lr=0.001, momentum=0.9)
for epoch in range(2): # loop over the dataset multiple times
running_loss = 0.0
for i, data in enumerate(trainloader, 0):
# get the inputs; data is a list of [inputs, labels]
inputs, labels = data[0].to(device), data[1].to(device)
# zero the parameter gradients
optimizer.zero_grad()
# forward + backward + optimize
outputs = net(inputs)
loss = criterion(outputs, labels)
loss.backward()
optimizer.step()
# print statistics
running_loss += loss.item()
if i % 2000 == 1999: # print every 2000 mini-batches
print('[%d, %5d] loss: %.3f' %
(epoch + 1, i + 1, running_loss / 2000))
running_loss = 0.0
print('Finished Training')
āĻāĻ āĻ¸āĻŽāĻ¯āĻŧ, āĻ¨ā§āĻāĻāĻ¯āĻŧāĻžāĻ°ā§āĻ āĻĒā§āĻ°āĻļāĻŋāĻā§āĻˇāĻŖ āĻĒā§āĻ°āĻžāĻ¯āĻŧ 3 āĻŽāĻŋāĻ¨āĻŋāĻ āĻ¸ā§āĻĨāĻžāĻ¯āĻŧā§ āĻšāĻ¯āĻŧ. āĻāĻŽāĻžāĻĻā§āĻ° āĻ¸ā§āĻŽāĻ°āĻŖ āĻāĻ°āĻž āĻ¯āĻžāĻ āĻ¯ā§ āĻāĻāĻāĻŋ āĻĒā§āĻ°āĻāĻ˛āĻŋāĻ¤ āĻĒā§āĻ°āĻ¸ā§āĻ¸āĻ°ā§ āĻāĻāĻ āĻĒāĻ°ā§āĻ¯āĻžāĻ¯āĻŧ 5 āĻŽāĻŋāĻ¨āĻŋāĻ āĻ¸ā§āĻĨāĻžāĻ¯āĻŧā§ āĻšāĻ¯āĻŧāĨ¤ āĻĒāĻžāĻ°ā§āĻĨāĻā§āĻ¯āĻāĻŋ āĻāĻ˛ā§āĻ˛ā§āĻāĻ¯ā§āĻā§āĻ¯ āĻ¨āĻ¯āĻŧ, āĻāĻāĻŋ āĻāĻā§ āĻāĻžāĻ°āĻŖ āĻāĻŽāĻžāĻĻā§āĻ° āĻ¨ā§āĻāĻāĻ¯āĻŧāĻžāĻ°ā§āĻ āĻāĻ¤ āĻŦāĻĄāĻŧ āĻ¨āĻ¯āĻŧāĨ¤ āĻĒā§āĻ°āĻļāĻŋāĻā§āĻˇāĻŖā§āĻ° āĻāĻ¨ā§āĻ¯ āĻŦāĻĄāĻŧ āĻ ā§āĻ¯āĻžāĻ°ā§ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ, GPU āĻāĻŦāĻ āĻāĻāĻāĻŋ āĻāĻ¤āĻŋāĻšā§āĻ¯āĻāĻ¤ āĻĒā§āĻ°āĻ¸ā§āĻ¸āĻ°ā§āĻ° āĻāĻ¤āĻŋāĻ° āĻŽāĻ§ā§āĻ¯ā§ āĻĒāĻžāĻ°ā§āĻĨāĻā§āĻ¯ āĻŦā§āĻĻā§āĻ§āĻŋ āĻĒāĻžāĻŦā§āĨ¤
āĻāĻāĻžāĻ āĻŽāĻ¨ā§ āĻšāĻ¯āĻŧ āĻ¸āĻŦāĨ¤ āĻāĻŽāĻ°āĻž āĻ¯āĻž āĻāĻ°āĻ¤ā§ āĻĒā§āĻ°ā§āĻāĻŋ:
- āĻāĻŽāĻ°āĻž āĻāĻāĻāĻŋ GPU āĻāĻŋ āĻ¤āĻž āĻĻā§āĻā§āĻāĻŋ āĻāĻŦāĻ āĻāĻāĻŋ āĻ¯ā§ āĻ¸āĻžāĻ°ā§āĻāĻžāĻ°ā§ āĻāĻ¨āĻ¸ā§āĻāĻ˛ āĻāĻ°āĻž āĻāĻā§ āĻ¸ā§āĻāĻŋ āĻ¨āĻŋāĻ°ā§āĻŦāĻžāĻāĻ¨ āĻāĻ°ā§āĻāĻŋ;
- āĻāĻŽāĻ°āĻž āĻāĻāĻāĻŋ āĻ¨āĻŋāĻāĻ°āĻžāĻ˛ āĻ¨ā§āĻāĻāĻ¯āĻŧāĻžāĻ°ā§āĻ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻāĻāĻŋ āĻ¸āĻĢā§āĻāĻāĻ¯āĻŧā§āĻ¯āĻžāĻ° āĻĒāĻ°āĻŋāĻŦā§āĻļ āĻ¸ā§āĻĨāĻžāĻĒāĻ¨ āĻāĻ°ā§āĻāĻŋ;
- āĻāĻŽāĻ°āĻž āĻāĻŦāĻŋ āĻ¸ā§āĻŦā§āĻā§āĻ¤āĻŋāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻāĻāĻŋ āĻ¨āĻŋāĻāĻ°āĻžāĻ˛ āĻ¨ā§āĻāĻāĻ¯āĻŧāĻžāĻ°ā§āĻ āĻ¤ā§āĻ°āĻŋ āĻāĻ°ā§āĻāĻŋ āĻāĻŦāĻ āĻāĻāĻŋāĻā§ āĻĒā§āĻ°āĻļāĻŋāĻā§āĻˇāĻŖ āĻĻāĻŋāĻ¯āĻŧā§āĻāĻŋ;
- āĻāĻŽāĻ°āĻž GPU āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§ āĻ¨ā§āĻāĻāĻ¯āĻŧāĻžāĻ°ā§āĻ āĻĒā§āĻ°āĻļāĻŋāĻā§āĻˇāĻŖā§āĻ° āĻĒā§āĻ¨āĻ°āĻžāĻŦā§āĻ¤ā§āĻ¤āĻŋ āĻāĻ°ā§āĻāĻŋ āĻāĻŦāĻ āĻāĻ¤āĻŋ āĻŦā§āĻĻā§āĻ§āĻŋ āĻĒā§āĻ¯āĻŧā§āĻāĻŋāĨ¤
āĻāĻŽāĻŋ āĻŽāĻ¨ā§āĻ¤āĻŦā§āĻ¯ā§ āĻĒā§āĻ°āĻļā§āĻ¨ā§āĻ° āĻāĻ¤ā§āĻ¤āĻ° āĻĻāĻŋāĻ¤ā§ āĻā§āĻļāĻŋ āĻšāĻŦā§.
āĻāĻ¤ā§āĻ¸: www.habr.com