āĻ—ā§āĻ°āĻžāĻĢāĻŋāĻ•ā§āĻ¸ āĻĒā§āĻ°āĻ¸ā§‡āĻ¸āĻŋāĻ‚ āĻ‡āĻ‰āĻ¨āĻŋāĻŸā§‡ (GPU) āĻ†āĻĒāĻ¨āĻžāĻ° āĻĒā§āĻ°āĻĨāĻŽ āĻ¨āĻŋāĻ‰āĻ°āĻžāĻ˛ āĻ¨ā§‡āĻŸāĻ“āĻ¯āĻŧāĻžāĻ°ā§āĻ•āĨ¤ āĻļāĻŋāĻ•ā§āĻˇāĻžāĻ¨āĻŦāĻŋāĻ¸ āĻ—āĻžāĻ‡āĻĄ

āĻ—ā§āĻ°āĻžāĻĢāĻŋāĻ•ā§āĻ¸ āĻĒā§āĻ°āĻ¸ā§‡āĻ¸āĻŋāĻ‚ āĻ‡āĻ‰āĻ¨āĻŋāĻŸā§‡ (GPU) āĻ†āĻĒāĻ¨āĻžāĻ° āĻĒā§āĻ°āĻĨāĻŽ āĻ¨āĻŋāĻ‰āĻ°āĻžāĻ˛ āĻ¨ā§‡āĻŸāĻ“āĻ¯āĻŧāĻžāĻ°ā§āĻ•āĨ¤ āĻļāĻŋāĻ•ā§āĻˇāĻžāĻ¨āĻŦāĻŋāĻ¸ āĻ—āĻžāĻ‡āĻĄ
āĻāĻ‡ āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§ā§‡, āĻ†āĻŽāĻŋ āĻ†āĻĒāĻ¨āĻžāĻ•ā§‡ āĻŦāĻ˛āĻŦ āĻ•āĻŋāĻ­āĻžāĻŦā§‡ 30 āĻŽāĻŋāĻ¨āĻŋāĻŸā§‡āĻ° āĻŽāĻ§ā§āĻ¯ā§‡ āĻāĻ•āĻŸāĻŋ āĻŽā§‡āĻļāĻŋāĻ¨ āĻ˛āĻžāĻ°ā§āĻ¨āĻŋāĻ‚ āĻāĻ¨āĻ­āĻžāĻ¯āĻŧāĻ°āĻ¨āĻŽā§‡āĻ¨ā§āĻŸ āĻ¸ā§‡āĻŸ āĻ†āĻĒ āĻ•āĻ°āĻ¤ā§‡ āĻšāĻ¯āĻŧ, āĻ‡āĻŽā§‡āĻœ āĻļāĻ¨āĻžāĻ•ā§āĻ¤āĻ•āĻ°āĻŖā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻāĻ•āĻŸāĻŋ āĻ¨āĻŋāĻ‰āĻ°āĻžāĻ˛ āĻ¨ā§‡āĻŸāĻ“āĻ¯āĻŧāĻžāĻ°ā§āĻ• āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻ¤ā§‡ āĻšāĻ¯āĻŧ āĻāĻŦāĻ‚ āĻ¤āĻžāĻ°āĻĒāĻ° āĻ—ā§āĻ°āĻžāĻĢāĻŋāĻ•ā§āĻ¸ āĻĒā§āĻ°āĻ¸ā§‡āĻ¸āĻ°ā§‡ (GPU) āĻāĻ•āĻ‡ āĻ¨ā§‡āĻŸāĻ“āĻ¯āĻŧāĻžāĻ°ā§āĻ• āĻšāĻžāĻ˛āĻžāĻ¤ā§‡ āĻšāĻ¯āĻŧāĨ¤

āĻĒā§āĻ°āĻĨāĻŽāĻ¤, āĻāĻ•āĻŸāĻŋ āĻ¨āĻŋāĻ‰āĻ°āĻžāĻ˛ āĻ¨ā§‡āĻŸāĻ“āĻ¯āĻŧāĻžāĻ°ā§āĻ• āĻ•āĻŋ āĻ¤āĻž āĻ¸āĻ‚āĻœā§āĻžāĻžāĻ¯āĻŧāĻŋāĻ¤ āĻ•āĻ°āĻž āĻ¯āĻžāĻ•āĨ¤

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

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

āĻŽā§‡āĻļāĻŋāĻ¨ āĻ˛āĻžāĻ°ā§āĻ¨āĻŋāĻ‚ āĻāĻ° āĻĻā§ƒāĻˇā§āĻŸāĻŋāĻ•ā§‹āĻŖ āĻĨā§‡āĻ•ā§‡, āĻāĻ•āĻŸāĻŋ āĻ¨āĻŋāĻ‰āĻ°āĻžāĻ˛ āĻ¨ā§‡āĻŸāĻ“āĻ¯āĻŧāĻžāĻ°ā§āĻ• āĻĒā§āĻ¯āĻžāĻŸāĻžāĻ°ā§āĻ¨ āĻļāĻ¨āĻžāĻ•ā§āĻ¤āĻ•āĻ°āĻŖ āĻĒāĻĻā§āĻ§āĻ¤āĻŋ, āĻŦā§ˆāĻˇāĻŽā§āĻ¯āĻŽā§‚āĻ˛āĻ• āĻŦāĻŋāĻļā§āĻ˛ā§‡āĻˇāĻŖ, āĻ•ā§āĻ˛āĻžāĻ¸ā§āĻŸāĻžāĻ°āĻŋāĻ‚ āĻĒāĻĻā§āĻ§āĻ¤āĻŋ āĻāĻŦāĻ‚ āĻ…āĻ¨ā§āĻ¯āĻžāĻ¨ā§āĻ¯ āĻĒāĻĻā§āĻ§āĻ¤āĻŋāĻ° āĻāĻ•āĻŸāĻŋ āĻŦāĻŋāĻļā§‡āĻˇ āĻ•ā§āĻˇā§‡āĻ¤ā§āĻ°ā§‡āĨ¤

āĻ‰āĻĒāĻ•āĻ°āĻŖ

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

āĻĒā§āĻ°āĻ•āĻ˛ā§āĻĒāĻ—ā§āĻ˛āĻŋāĻ¤ā§‡ āĻ¯ā§‡āĻ–āĻžāĻ¨ā§‡ āĻ¨āĻŋāĻ‰āĻ°āĻžāĻ˛ āĻ¨ā§‡āĻŸāĻ“āĻ¯āĻŧāĻžāĻ°ā§āĻ• āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻž āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻœāĻ¨, āĻ†āĻŽāĻŋ āĻ°āĻžāĻļāĻŋāĻ¯āĻŧāĻžāĻ¨ āĻ•ā§āĻ˛āĻžāĻ‰āĻĄ āĻ¸āĻ°āĻŦāĻ°āĻžāĻšāĻ•āĻžāĻ°ā§€āĻ—ā§āĻ˛āĻŋāĻ° āĻāĻ•āĻŸāĻŋāĻ° āĻ¸āĻžāĻ°ā§āĻ­āĻžāĻ° āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻŋāĨ¤ āĻ•ā§‹āĻŽā§āĻĒāĻžāĻ¨āĻŋāĻŸāĻŋ NVIDIA āĻĨā§‡āĻ•ā§‡ āĻļāĻ•ā§āĻ¤āĻŋāĻļāĻžāĻ˛ā§€ Tesla V100 āĻ—ā§āĻ°āĻžāĻĢāĻŋāĻ•ā§āĻ¸ āĻĒā§āĻ°āĻ¸ā§‡āĻ¸āĻ° (GPU) āĻ¸āĻš āĻŽā§‡āĻļāĻŋāĻ¨ āĻ˛āĻžāĻ°ā§āĻ¨āĻŋāĻ‚āĻ¯āĻŧā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻŦāĻŋāĻļā§‡āĻˇāĻ­āĻžāĻŦā§‡ āĻ­āĻžāĻĄāĻŧāĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻ•ā§āĻ˛āĻžāĻ‰āĻĄ āĻ¸āĻžāĻ°ā§āĻ­āĻžāĻ° āĻ…āĻĢāĻžāĻ° āĻ•āĻ°ā§‡āĨ¤ āĻ¸āĻ‚āĻ•ā§āĻˇā§‡āĻĒā§‡: āĻāĻ•āĻŸāĻŋ GPU āĻ¸āĻš āĻāĻ•āĻŸāĻŋ āĻ¸āĻžāĻ°ā§āĻ­āĻžāĻ° āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻž āĻāĻ•āĻ‡ āĻ–āĻ°āĻšā§‡āĻ° āĻāĻ•āĻŸāĻŋ āĻ¸āĻžāĻ°ā§āĻ­āĻžāĻ°ā§‡āĻ° āĻ¤ā§āĻ˛āĻ¨āĻžāĻ¯āĻŧ āĻĻāĻļāĻ—ā§āĻŖ āĻŦā§‡āĻļāĻŋ āĻĻāĻ•ā§āĻˇ (āĻĻā§āĻ°ā§āĻ¤) āĻšāĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡ āĻ¯āĻž āĻ—āĻŖāĻ¨āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻāĻ•āĻŸāĻŋ CPU (āĻ¸ā§āĻĒāĻ°āĻŋāĻšāĻŋāĻ¤ āĻ•ā§‡āĻ¨ā§āĻĻā§āĻ°ā§€āĻ¯āĻŧ āĻĒā§āĻ°āĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻ•āĻ°āĻŖ āĻ‡āĻ‰āĻ¨āĻŋāĻŸ) āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡āĨ¤ āĻāĻŸāĻŋ āĻœāĻŋāĻĒāĻŋāĻ‡āĻ‰ āĻ†āĻ°ā§āĻ•āĻŋāĻŸā§‡āĻ•āĻšāĻžāĻ°ā§‡āĻ° āĻŦā§ˆāĻļāĻŋāĻˇā§āĻŸā§āĻ¯āĻ—ā§āĻ˛āĻŋāĻ° āĻ•āĻžāĻ°āĻŖā§‡ āĻ…āĻ°ā§āĻœāĻ¨ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧā§‡āĻ›ā§‡, āĻ¯āĻž āĻĻā§āĻ°ā§āĻ¤ āĻ—āĻŖāĻ¨āĻžāĻ° āĻ¸āĻžāĻĨā§‡ āĻŽā§‹āĻ•āĻžāĻŦāĻŋāĻ˛āĻž āĻ•āĻ°ā§‡āĨ¤

āĻ¨ā§€āĻšā§‡ āĻŦāĻ°ā§āĻŖāĻŋāĻ¤ āĻ‰āĻĻāĻžāĻšāĻ°āĻŖāĻ—ā§āĻ˛āĻŋ āĻŦāĻžāĻ¸ā§āĻ¤āĻŦāĻžāĻ¯āĻŧāĻ¨ āĻ•āĻ°āĻ¤ā§‡, āĻ†āĻŽāĻ°āĻž āĻŦā§‡āĻļ āĻ•āĻ¯āĻŧā§‡āĻ• āĻĻāĻŋāĻ¨ā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻ¨āĻŋāĻŽā§āĻ¨āĻ˛āĻŋāĻ–āĻŋāĻ¤ āĻ¸āĻžāĻ°ā§āĻ­āĻžāĻ°āĻŸāĻŋ āĻ•āĻŋāĻ¨ā§‡āĻ›āĻŋ:

  • āĻāĻ¸āĻāĻ¸āĻĄāĻŋ āĻĄāĻŋāĻ¸ā§āĻ• 150 āĻœāĻŋāĻŦāĻŋ
  • āĻ°â€ā§āĻ¯āĻžāĻŽ 32 āĻœāĻŋāĻŦāĻŋ
  • āĻŸā§‡āĻ¸āĻ˛āĻž V100 16 āĻœāĻŋāĻŦāĻŋ āĻĒā§āĻ°āĻ¸ā§‡āĻ¸āĻ° 4 āĻ•ā§‹āĻ° āĻ¸āĻš

āĻ†āĻŽāĻ°āĻž āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻŽā§‡āĻļāĻŋāĻ¨ā§‡ āĻ‰āĻŦā§āĻ¨ā§āĻŸā§ 18.04 āĻ‡āĻ¨āĻ¸ā§āĻŸāĻ˛ āĻ•āĻ°ā§‡āĻ›āĻŋāĨ¤

āĻĒāĻ°āĻŋāĻŦā§‡āĻļ āĻ¸ā§āĻĨāĻžāĻĒāĻ¨ āĻ•āĻ°āĻž

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

āĻāĻ•āĻŸāĻŋ āĻĒāĻ°āĻŋāĻŦā§‡āĻļ āĻ¸ā§āĻĨāĻžāĻĒāĻ¨ āĻ•āĻ°āĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ āĻ…āĻ¨ā§‡āĻ• āĻ•āĻžāĻœ āĻ•āĻŽāĻžāĻ¨ā§āĻĄ āĻ˛āĻžāĻ‡āĻ¨ā§‡āĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§‡ āĻ¸āĻŽā§āĻĒāĻ¨ā§āĻ¨ āĻšāĻ¯āĻŧāĨ¤ āĻŦā§‡āĻļāĻŋāĻ°āĻ­āĻžāĻ— āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻ•āĻžāĻ°ā§€ āĻ¤āĻžāĻĻā§‡āĻ° āĻ•āĻžāĻœā§‡āĻ° āĻ…āĻĒāĻžāĻ°ā§‡āĻŸāĻŋāĻ‚ āĻ¸āĻŋāĻ¸ā§āĻŸā§‡āĻŽ āĻšāĻŋāĻ¸āĻžāĻŦā§‡ āĻ‰āĻ‡āĻ¨ā§āĻĄā§‹āĻœ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡āĨ¤ āĻāĻ‡ āĻ“āĻāĻ¸-āĻāĻ° āĻ¸ā§āĻŸā§āĻ¯āĻžāĻ¨ā§āĻĄāĻžāĻ°ā§āĻĄ āĻ•āĻ¨āĻ¸ā§‹āĻ˛āĻŸāĻŋ āĻĒāĻ›āĻ¨ā§āĻĻā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻ…āĻ¨ā§‡āĻ• āĻ•āĻŋāĻ›ā§ āĻ›ā§‡āĻĄāĻŧā§‡ āĻĻā§‡āĻ¯āĻŧāĨ¤ āĻ…āĻ¤āĻāĻŦ, āĻ†āĻŽāĻ°āĻž āĻāĻ•āĻŸāĻŋ āĻ¸ā§āĻŦāĻŋāĻ§āĻžāĻœāĻ¨āĻ• āĻŸā§āĻ˛ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻŦ Cmder/. āĻŽāĻŋāĻ¨āĻŋ āĻ¸āĻ‚āĻ¸ā§āĻ•āĻ°āĻŖ āĻĄāĻžāĻ‰āĻ¨āĻ˛ā§‹āĻĄ āĻ•āĻ°ā§āĻ¨ āĻāĻŦāĻ‚ Cmder.exe āĻšāĻžāĻ˛āĻžāĻ¨āĨ¤ āĻĒāĻ°āĻŦāĻ°ā§āĻ¤ā§€āĻ¤ā§‡ āĻ†āĻĒāĻ¨āĻžāĻ•ā§‡ SSH āĻāĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§‡ āĻ¸āĻžāĻ°ā§āĻ­āĻžāĻ°ā§‡āĻ° āĻ¸āĻžāĻĨā§‡ āĻ¸āĻ‚āĻ¯ā§‹āĻ— āĻ•āĻ°āĻ¤ā§‡ āĻšāĻŦā§‡:

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)

āĻĢāĻ˛āĻžāĻĢāĻ˛ āĻāĻ‡ āĻŽāĻ¤ āĻ•āĻŋāĻ›ā§ āĻšāĻ“āĻ¯āĻŧāĻž āĻ‰āĻšāĻŋāĻ¤:

āĻ—ā§āĻ°āĻžāĻĢāĻŋāĻ•ā§āĻ¸ āĻĒā§āĻ°āĻ¸ā§‡āĻ¸āĻŋāĻ‚ āĻ‡āĻ‰āĻ¨āĻŋāĻŸā§‡ (GPU) āĻ†āĻĒāĻ¨āĻžāĻ° āĻĒā§āĻ°āĻĨāĻŽ āĻ¨āĻŋāĻ‰āĻ°āĻžāĻ˛ āĻ¨ā§‡āĻŸāĻ“āĻ¯āĻŧāĻžāĻ°ā§āĻ•āĨ¤ āĻļāĻŋāĻ•ā§āĻˇāĻžāĻ¨āĻŦāĻŋāĻ¸ āĻ—āĻžāĻ‡āĻĄ

āĻ†āĻĒāĻ¨āĻžāĻ° āĻ¯āĻĻāĻŋ āĻ…āĻ¨ā§āĻ°ā§‚āĻĒ āĻĢāĻ˛āĻžāĻĢāĻ˛ āĻĨāĻžāĻ•ā§‡, āĻ¤āĻžāĻšāĻ˛ā§‡ āĻ†āĻŽāĻ°āĻž āĻ¸āĻŦāĻ•āĻŋāĻ›ā§ āĻ¸āĻ āĻŋāĻ•āĻ­āĻžāĻŦā§‡ āĻ•āĻ¨āĻĢāĻŋāĻ—āĻžāĻ° āĻ•āĻ°ā§‡āĻ›āĻŋ āĻāĻŦāĻ‚ āĻ†āĻŽāĻ°āĻž āĻāĻ•āĻŸāĻŋ āĻ¨āĻŋāĻ‰āĻ°āĻžāĻ˛ āĻ¨ā§‡āĻŸāĻ“āĻ¯āĻŧāĻžāĻ°ā§āĻ• āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻž āĻļā§āĻ°ā§ āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°āĻŋ!

āĻāĻ•āĻŸāĻŋ āĻ¨āĻŋāĻ‰āĻ°āĻžāĻ˛ āĻ¨ā§‡āĻŸāĻ“āĻ¯āĻŧāĻžāĻ°ā§āĻ• āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻž

āĻ†āĻŽāĻ°āĻž āĻ›āĻŦāĻŋ āĻ¸ā§āĻŦā§€āĻ•ā§ƒāĻ¤āĻŋāĻ° āĻœāĻ¨ā§āĻ¯ āĻāĻ•āĻŸāĻŋ āĻ¨āĻŋāĻ‰āĻ°āĻžāĻ˛ āĻ¨ā§‡āĻŸāĻ“āĻ¯āĻŧāĻžāĻ°ā§āĻ• āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻŦāĨ¤ āĻāĻ° āĻāĻ•āĻŸāĻŋ āĻ­āĻŋāĻ¤ā§āĻ¤āĻŋ āĻšāĻŋāĻ¸āĻžāĻŦā§‡ āĻāĻŸāĻŋ āĻ—ā§āĻ°āĻšāĻŖ āĻ•āĻ°āĻž āĻ¯āĻžāĻ• āĻ¨ā§‡āĻ¤ā§ƒāĻ¤ā§āĻŦ.

āĻ¨ā§‡āĻŸāĻ“āĻ¯āĻŧāĻžāĻ°ā§āĻ• āĻĒā§āĻ°āĻļāĻŋāĻ•ā§āĻˇāĻŖā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻ†āĻŽāĻ°āĻž āĻ¸āĻ°ā§āĻŦāĻœāĻ¨ā§€āĻ¨āĻ­āĻžāĻŦā§‡ āĻ‰āĻĒāĻ˛āĻŦā§āĻ§ CIFAR10 āĻĄā§‡āĻŸāĻžāĻ¸ā§‡āĻŸ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻŦāĨ¤ āĻāĻŸāĻŋāĻ° āĻ•ā§āĻ˛āĻžāĻ¸ āĻ°āĻ¯āĻŧā§‡āĻ›ā§‡: "āĻŦāĻŋāĻŽāĻžāĻ¨", "āĻ—āĻžāĻĄāĻŧāĻŋ", "āĻĒāĻžāĻ–āĻŋ", "āĻŦāĻŋāĻĄāĻŧāĻžāĻ˛", "āĻšāĻ°āĻŋāĻŖ", "āĻ•ā§āĻ•ā§āĻ°", "āĻŦā§āĻ¯āĻžāĻ™", "āĻ˜ā§‹āĻĄāĻŧāĻž", "āĻœāĻžāĻšāĻžāĻœ", "āĻŸā§āĻ°āĻžāĻ•"āĨ¤ CIFAR10-āĻāĻ° āĻ›āĻŦāĻŋāĻ—ā§āĻ˛āĻŋ āĻšāĻ˛ 3x32x32, āĻ…āĻ°ā§āĻĨāĻžā§Ž, 3x32 āĻĒāĻŋāĻ•ā§āĻ¸ā§‡āĻ˛ā§‡āĻ° 32-āĻšā§āĻ¯āĻžāĻ¨ā§‡āĻ˛ āĻ°āĻ™ā§‡āĻ° āĻ›āĻŦāĻŋā§ˇ

āĻ—ā§āĻ°āĻžāĻĢāĻŋāĻ•ā§āĻ¸ āĻĒā§āĻ°āĻ¸ā§‡āĻ¸āĻŋāĻ‚ āĻ‡āĻ‰āĻ¨āĻŋāĻŸā§‡ (GPU) āĻ†āĻĒāĻ¨āĻžāĻ° āĻĒā§āĻ°āĻĨāĻŽ āĻ¨āĻŋāĻ‰āĻ°āĻžāĻ˛ āĻ¨ā§‡āĻŸāĻ“āĻ¯āĻŧāĻžāĻ°ā§āĻ•āĨ¤ āĻļāĻŋāĻ•ā§āĻˇāĻžāĻ¨āĻŦāĻŋāĻ¸ āĻ—āĻžāĻ‡āĻĄ
āĻ•āĻžāĻœā§‡āĻ° āĻœāĻ¨ā§āĻ¯, āĻ†āĻŽāĻ°āĻž āĻšāĻŋāĻ¤ā§āĻ°āĻ—ā§āĻ˛āĻŋāĻ° āĻ¸āĻžāĻĨā§‡ āĻ•āĻžāĻœ āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻĒāĻžāĻ‡āĻŸāĻ°ā§āĻš āĻĻā§āĻŦāĻžāĻ°āĻž āĻ¤ā§ˆāĻ°āĻŋ āĻĒā§āĻ¯āĻžāĻ•ā§‡āĻœāĻŸāĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻŦ - āĻŸāĻ°ā§āĻšāĻ­āĻŋāĻļāĻ¨āĨ¤

āĻ†āĻŽāĻ°āĻž āĻ•ā§āĻ°āĻŽāĻžāĻ¨ā§āĻ¸āĻžāĻ°ā§‡ āĻ¨āĻŋāĻŽā§āĻ¨āĻ˛āĻŋāĻ–āĻŋāĻ¤ āĻĒāĻĻāĻ•ā§āĻˇā§‡āĻĒāĻ—ā§āĻ˛āĻŋ āĻ•āĻ°āĻŦ:

  • āĻĒā§āĻ°āĻļāĻŋāĻ•ā§āĻˇāĻŖ āĻāĻŦāĻ‚ āĻĒāĻ°ā§€āĻ•ā§āĻˇāĻžāĻ° āĻĄā§‡āĻŸāĻž āĻ¸ā§‡āĻŸ āĻ˛ā§‹āĻĄ āĻāĻŦāĻ‚ āĻ¸ā§āĻŦāĻžāĻ­āĻžāĻŦāĻŋāĻ•āĻ•āĻ°āĻŖ
  • āĻ¨āĻŋāĻ‰āĻ°āĻžāĻ˛ āĻ¨ā§‡āĻŸāĻ“āĻ¯āĻŧāĻžāĻ°ā§āĻ• āĻ¸āĻ‚āĻœā§āĻžāĻž
  • āĻĒā§āĻ°āĻļāĻŋāĻ•ā§āĻˇāĻŖ āĻ¤āĻĨā§āĻ¯ āĻ¨ā§‡āĻŸāĻ“āĻ¯āĻŧāĻžāĻ°ā§āĻ• āĻĒā§āĻ°āĻļāĻŋāĻ•ā§āĻˇāĻŖ
  • āĻĒāĻ°ā§€āĻ•ā§āĻˇāĻžāĻ° āĻĄā§‡āĻŸāĻžāĻ¤ā§‡ āĻ¨ā§‡āĻŸāĻ“āĻ¯āĻŧāĻžāĻ°ā§āĻ• āĻĒāĻ°ā§€āĻ•ā§āĻˇāĻž
  • āĻ†āĻ¸ā§āĻ¨ āĻœāĻŋāĻĒāĻŋāĻ‡āĻ‰ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡ āĻĒā§āĻ°āĻļāĻŋāĻ•ā§āĻˇāĻŖ āĻāĻŦāĻ‚ āĻĒāĻ°ā§€āĻ•ā§āĻˇāĻžāĻ° āĻĒā§āĻ¨āĻ°āĻžāĻŦā§ƒāĻ¤ā§āĻ¤āĻŋ āĻ•āĻ°āĻŋ

āĻ†āĻŽāĻ°āĻž āĻœā§āĻĒāĻŋāĻŸāĻžāĻ° āĻ¨ā§‹āĻŸāĻŦā§āĻ•ā§‡ āĻ¨ā§€āĻšā§‡āĻ° āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻ•ā§‹āĻĄ āĻ•āĻžāĻ°ā§āĻ¯āĻ•āĻ° āĻ•āĻ°āĻŦāĨ¤

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)))

āĻ—ā§āĻ°āĻžāĻĢāĻŋāĻ•ā§āĻ¸ āĻĒā§āĻ°āĻ¸ā§‡āĻ¸āĻŋāĻ‚ āĻ‡āĻ‰āĻ¨āĻŋāĻŸā§‡ (GPU) āĻ†āĻĒāĻ¨āĻžāĻ° āĻĒā§āĻ°āĻĨāĻŽ āĻ¨āĻŋāĻ‰āĻ°āĻžāĻ˛ āĻ¨ā§‡āĻŸāĻ“āĻ¯āĻŧāĻžāĻ°ā§āĻ•āĨ¤ āĻļāĻŋāĻ•ā§āĻˇāĻžāĻ¨āĻŦāĻŋāĻ¸ āĻ—āĻžāĻ‡āĻĄ

āĻ¨āĻŋāĻ‰āĻ°āĻžāĻ˛ āĻ¨ā§‡āĻŸāĻ“āĻ¯āĻŧāĻžāĻ°ā§āĻ• āĻ¸āĻ‚āĻœā§āĻžāĻž

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

āĻ—ā§āĻ°āĻžāĻĢāĻŋāĻ•ā§āĻ¸ āĻĒā§āĻ°āĻ¸ā§‡āĻ¸āĻŋāĻ‚ āĻ‡āĻ‰āĻ¨āĻŋāĻŸā§‡ (GPU) āĻ†āĻĒāĻ¨āĻžāĻ° āĻĒā§āĻ°āĻĨāĻŽ āĻ¨āĻŋāĻ‰āĻ°āĻžāĻ˛ āĻ¨ā§‡āĻŸāĻ“āĻ¯āĻŧāĻžāĻ°ā§āĻ•āĨ¤ āĻļāĻŋāĻ•ā§āĻˇāĻžāĻ¨āĻŦāĻŋāĻ¸ āĻ—āĻžāĻ‡āĻĄ

āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻĒāĻ°āĻŋāĻŦā§‡āĻļā§‡ āĻāĻ•āĻŸāĻŋ āĻ…āĻ¨ā§āĻ°ā§‚āĻĒ āĻ¨ā§‡āĻŸāĻ“āĻ¯āĻŧāĻžāĻ°ā§āĻ• āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻž āĻ¯āĻžāĻ•:


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')

āĻ†āĻŽāĻ°āĻž āĻ¨āĻŋāĻŽā§āĻ¨āĻ˛āĻŋāĻ–āĻŋāĻ¤ āĻĢāĻ˛āĻžāĻĢāĻ˛ āĻĒā§‡āĻ¤ā§‡:

āĻ—ā§āĻ°āĻžāĻĢāĻŋāĻ•ā§āĻ¸ āĻĒā§āĻ°āĻ¸ā§‡āĻ¸āĻŋāĻ‚ āĻ‡āĻ‰āĻ¨āĻŋāĻŸā§‡ (GPU) āĻ†āĻĒāĻ¨āĻžāĻ° āĻĒā§āĻ°āĻĨāĻŽ āĻ¨āĻŋāĻ‰āĻ°āĻžāĻ˛ āĻ¨ā§‡āĻŸāĻ“āĻ¯āĻŧāĻžāĻ°ā§āĻ•āĨ¤ āĻļāĻŋāĻ•ā§āĻˇāĻžāĻ¨āĻŦāĻŋāĻ¸ āĻ—āĻžāĻ‡āĻĄ

āĻ†āĻŽāĻ°āĻž āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻĒā§āĻ°āĻļāĻŋāĻ•ā§āĻˇāĻŋāĻ¤ āĻŽāĻĄā§‡āĻ˛ āĻ¸āĻ‚āĻ°āĻ•ā§āĻˇāĻŖ āĻ•āĻ°āĻŋ:

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)))

āĻ—ā§āĻ°āĻžāĻĢāĻŋāĻ•ā§āĻ¸ āĻĒā§āĻ°āĻ¸ā§‡āĻ¸āĻŋāĻ‚ āĻ‡āĻ‰āĻ¨āĻŋāĻŸā§‡ (GPU) āĻ†āĻĒāĻ¨āĻžāĻ° āĻĒā§āĻ°āĻĨāĻŽ āĻ¨āĻŋāĻ‰āĻ°āĻžāĻ˛ āĻ¨ā§‡āĻŸāĻ“āĻ¯āĻŧāĻžāĻ°ā§āĻ•āĨ¤ āĻļāĻŋāĻ•ā§āĻˇāĻžāĻ¨āĻŦāĻŋāĻ¸ āĻ—āĻžāĻ‡āĻĄ

āĻāĻ–āĻ¨ āĻ†āĻ¸ā§āĻ¨ āĻ¨āĻŋāĻ‰āĻ°āĻžāĻ˛ āĻ¨ā§‡āĻŸāĻ“āĻ¯āĻŧāĻžāĻ°ā§āĻ•āĻ•ā§‡ āĻāĻ‡ āĻ›āĻŦāĻŋāĻ¤ā§‡ āĻ•ā§€ āĻ†āĻ›ā§‡ āĻ¤āĻž āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻŦāĻ˛āĻ¤ā§‡ āĻŦāĻ˛āĻŋ:


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)))

āĻ—ā§āĻ°āĻžāĻĢāĻŋāĻ•ā§āĻ¸ āĻĒā§āĻ°āĻ¸ā§‡āĻ¸āĻŋāĻ‚ āĻ‡āĻ‰āĻ¨āĻŋāĻŸā§‡ (GPU) āĻ†āĻĒāĻ¨āĻžāĻ° āĻĒā§āĻ°āĻĨāĻŽ āĻ¨āĻŋāĻ‰āĻ°āĻžāĻ˛ āĻ¨ā§‡āĻŸāĻ“āĻ¯āĻŧāĻžāĻ°ā§āĻ•āĨ¤ āĻļāĻŋāĻ•ā§āĻˇāĻžāĻ¨āĻŦāĻŋāĻ¸ āĻ—āĻžāĻ‡āĻĄ

āĻĢāĻ˛āĻžāĻĢāĻ˛āĻ—ā§āĻ˛āĻŋ āĻŦā§‡āĻļ āĻ­āĻžāĻ˛ āĻŦāĻ˛ā§‡ āĻŽāĻ¨ā§‡ āĻšāĻšā§āĻ›ā§‡: āĻ¨ā§‡āĻŸāĻ“āĻ¯āĻŧāĻžāĻ°ā§āĻ•āĻŸāĻŋ āĻšāĻžāĻ°āĻŸāĻŋ āĻ›āĻŦāĻŋāĻ° āĻŽāĻ§ā§āĻ¯ā§‡ āĻ¤āĻŋāĻ¨āĻŸāĻŋ āĻ¸āĻ āĻŋāĻ•āĻ­āĻžāĻŦā§‡ āĻšāĻŋāĻšā§āĻ¨āĻŋāĻ¤ āĻ•āĻ°ā§‡āĻ›ā§‡āĨ¤

āĻĒā§āĻ°ā§‹ āĻĄā§‡āĻŸāĻžāĻ¸ā§‡āĻŸ āĻœā§āĻĄāĻŧā§‡ āĻ¨ā§‡āĻŸāĻ“āĻ¯āĻŧāĻžāĻ°ā§āĻ• āĻ•āĻŋāĻ­āĻžāĻŦā§‡ āĻĒāĻžāĻ°āĻĢāĻ°ā§āĻŽ āĻ•āĻ°ā§‡ āĻ¤āĻž āĻĻā§‡āĻ–āĻž āĻ¯āĻžāĻ•āĨ¤


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))

āĻ—ā§āĻ°āĻžāĻĢāĻŋāĻ•ā§āĻ¸ āĻĒā§āĻ°āĻ¸ā§‡āĻ¸āĻŋāĻ‚ āĻ‡āĻ‰āĻ¨āĻŋāĻŸā§‡ (GPU) āĻ†āĻĒāĻ¨āĻžāĻ° āĻĒā§āĻ°āĻĨāĻŽ āĻ¨āĻŋāĻ‰āĻ°āĻžāĻ˛ āĻ¨ā§‡āĻŸāĻ“āĻ¯āĻŧāĻžāĻ°ā§āĻ•āĨ¤ āĻļāĻŋāĻ•ā§āĻˇāĻžāĻ¨āĻŦāĻŋāĻ¸ āĻ—āĻžāĻ‡āĻĄ

āĻĻā§‡āĻ–ā§‡ āĻŽāĻ¨ā§‡ āĻšāĻšā§āĻ›ā§‡ āĻ¨ā§‡āĻŸāĻ“āĻ¯āĻŧāĻžāĻ°ā§āĻ• āĻ•āĻŋāĻ›ā§ āĻœāĻžāĻ¨ā§‡ āĻāĻŦāĻ‚ āĻ•āĻžāĻœ āĻ•āĻ°āĻ›ā§‡āĨ¤ āĻ¯āĻĻāĻŋ āĻ¤āĻŋāĻ¨āĻŋ āĻāĻ˛ā§‹āĻŽā§‡āĻ˛ā§‹āĻ­āĻžāĻŦā§‡ āĻ•ā§āĻ˛āĻžāĻ¸ āĻ¨āĻŋāĻ°ā§āĻ§āĻžāĻ°āĻŖ āĻ•āĻ°ā§‡āĻ¨, āĻ¤āĻžāĻšāĻ˛ā§‡ āĻ¨āĻŋāĻ°ā§āĻ­ā§āĻ˛āĻ¤āĻž 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]))

āĻ—ā§āĻ°āĻžāĻĢāĻŋāĻ•ā§āĻ¸ āĻĒā§āĻ°āĻ¸ā§‡āĻ¸āĻŋāĻ‚ āĻ‡āĻ‰āĻ¨āĻŋāĻŸā§‡ (GPU) āĻ†āĻĒāĻ¨āĻžāĻ° āĻĒā§āĻ°āĻĨāĻŽ āĻ¨āĻŋāĻ‰āĻ°āĻžāĻ˛ āĻ¨ā§‡āĻŸāĻ“āĻ¯āĻŧāĻžāĻ°ā§āĻ•āĨ¤ āĻļāĻŋāĻ•ā§āĻˇāĻžāĻ¨āĻŦāĻŋāĻ¸ āĻ—āĻžāĻ‡āĻĄ

āĻŽāĻ¨ā§‡ āĻšāĻšā§āĻ›ā§‡ āĻ—āĻžāĻĄāĻŧāĻŋ āĻāĻŦāĻ‚ āĻœāĻžāĻšāĻžāĻœ āĻļāĻ¨āĻžāĻ•ā§āĻ¤ āĻ•āĻ°āĻžāĻ° āĻ•ā§āĻˇā§‡āĻ¤ā§āĻ°ā§‡ āĻ¨ā§‡āĻŸāĻ“āĻ¯āĻŧāĻžāĻ°ā§āĻ•āĻŸāĻŋ āĻ¸ā§‡āĻ°āĻž: 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) āĻ†āĻĒāĻ¨āĻžāĻ° āĻĒā§āĻ°āĻĨāĻŽ āĻ¨āĻŋāĻ‰āĻ°āĻžāĻ˛ āĻ¨ā§‡āĻŸāĻ“āĻ¯āĻŧāĻžāĻ°ā§āĻ•āĨ¤ āĻļāĻŋāĻ•ā§āĻˇāĻžāĻ¨āĻŦāĻŋāĻ¸ āĻ—āĻžāĻ‡āĻĄ

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

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