เจ—เฉเจฐเจพเจซเจฟเจ•เจธ เจชเฉเจฐเฉ‹เจธเฉˆเจธเจฟเฉฐเจ— เจฏเฉ‚เจจเจฟเจŸ (GPU) 'เจคเฉ‡ เจคเฉเจนเจพเจกเจพ เจชเจนเจฟเจฒเจพ เจจเจฟเจŠเจฐเจฒ เจจเฉˆเฉฑเจŸเจตเจฐเจ•เฅค เจธเจผเฉเจฐเฉ‚เจ†เจคเฉ€ เจ—เจพเจˆเจก

เจ—เฉเจฐเจพเจซเจฟเจ•เจธ เจชเฉเจฐเฉ‹เจธเฉˆเจธเจฟเฉฐเจ— เจฏเฉ‚เจจเจฟเจŸ (GPU) 'เจคเฉ‡ เจคเฉเจนเจพเจกเจพ เจชเจนเจฟเจฒเจพ เจจเจฟเจŠเจฐเจฒ เจจเฉˆเฉฑเจŸเจตเจฐเจ•เฅค เจธเจผเฉเจฐเฉ‚เจ†เจคเฉ€ เจ—เจพเจˆเจก
เจ‡เจธ เจฒเฉ‡เจ– เจตเจฟเฉฑเจš, เจฎเฉˆเจ‚ เจคเฉเจนเจพเจจเฉ‚เฉฐ เจฆเฉฑเจธเจพเจ‚เจ—เจพ เจ•เจฟ เจ•เจฟเจตเฉ‡เจ‚ 30 เจฎเจฟเฉฐเจŸเจพเจ‚ เจตเจฟเฉฑเจš เจ‡เฉฑเจ• เจฎเจธเจผเฉ€เจจ เจฒเจฐเจจเจฟเฉฐเจ— เจตเจพเจคเจพเจตเจฐเจจ เจธเฉˆเจŸ เจ…เจช เจ•เจฐเจจเจพ เจนเฉˆ, เจšเจฟเฉฑเจคเจฐ เจชเจ›เจพเจฃ เจฒเจˆ เจ‡เฉฑเจ• เจจเจฟเจŠเจฐเจฒ เจจเฉˆเฉฑเจŸเจตเจฐเจ• เจฌเจฃเจพเจ‰เจฃเจพ เจนเฉˆ, เจ…เจคเฉ‡ เจซเจฟเจฐ เจ‰เจธเฉ‡ เจจเฉˆเฉฑเจŸเจตเจฐเจ• เจจเฉ‚เฉฐ เจ—เฉเจฐเจพเจซเจฟเจ•เจธ เจชเฉเจฐเฉ‹เจธเฉˆเจธเจฐ (GPU) 'เจคเฉ‡ เจšเจฒเจพเจ‰เจฃเจพ เจนเฉˆเฅค

เจชเจนเจฟเจฒเจพเจ‚, เจ†เจ“ เจชเจฐเจฟเจญเจพเจธเจผเจฟเจค เจ•เจฐเฉ€เจ เจ•เจฟ เจจเจฟเจŠเจฐเจฒ เจจเฉˆเฉฑเจŸเจตเจฐเจ• เจ•เฉ€ เจนเฉˆเฅค

เจธเจพเจกเฉ‡ เจ•เฉ‡เจธ เจตเจฟเฉฑเจš, เจ‡เจน เจ‡เฉฑเจ• เจ—เจฃเจฟเจคเจฟเจ• เจฎเจพเจกเจฒ เจนเฉˆ, เจจเจพเจฒ เจนเฉ€ เจ‡เจธเจฆเฉ‡ เจธเฉŒเจซเจŸเจตเฉ‡เจ…เจฐ เจœเจพเจ‚ เจนเจพเจฐเจกเจตเฉ‡เจ…เจฐ เจฆเจพ เจฐเฉ‚เจช เจนเฉˆ, เจœเฉ‹ เจ•เจฟ เจœเฉ€เจต-เจตเจฟเจ—เจฟเจ†เจจเจ• เจคเฉฐเจคเฉ‚ เจจเฉˆเจŸเจตเจฐเจ•เจพเจ‚ เจฆเฉ‡ เจธเฉฐเจ—เจ เจจ เจ…เจคเฉ‡ เจ•เฉฐเจฎเจ•เจพเจœ เจฆเฉ‡ เจธเจฟเจงเจพเจ‚เจค 'เจคเฉ‡ เจฌเจฃเจพเจ‡เจ† เจ—เจฟเจ† เจนเฉˆ - เจ‡เฉฑเจ• เจœเฉ€เจตเจค เจœเฉ€เจต เจฆเฉ‡ เจจเจฐเจต เจธเฉˆเฉฑเจฒเจพเจ‚ เจฆเฉ‡ เจจเฉˆเจŸเจตเจฐเจ•. เจ‡เจน เจงเจพเจฐเจจเจพ เจฆเจฟเจฎเจพเจ— เจตเจฟเฉฑเจš เจนเฉ‹เจฃ เจตเจพเจฒเฉ€เจ†เจ‚ เจชเฉเจฐเจ•เจฟเจฐเจฟเจ†เจตเจพเจ‚ เจฆเจพ เจ…เจงเจฟเจเจจ เจ•เจฐเจจ เจ…เจคเฉ‡ เจ‡เจนเจจเจพเจ‚ เจชเฉเจฐเจ•เจฟเจฐเจฟเจ†เจตเจพเจ‚ เจจเฉ‚เฉฐ เจฎเจพเจกเจฒ เจฌเจฃเจพเจ‰เจฃ เจฆเฉ€ เจ•เฉ‹เจธเจผเจฟเจธเจผ เจ•เจฐเจฆเฉ‡ เจธเจฎเฉ‡เจ‚ เจชเฉˆเจฆเจพ เจนเฉ‹เจˆเฅค

เจจเจฟเจŠเจฐเจฒ เจจเฉˆเจŸเจตเจฐเจ• เจธเจผเจฌเจฆ เจฆเฉ‡ เจ†เจฎ เจ…เจฐเจฅเจพเจ‚ เจตเจฟเฉฑเจš เจชเฉเจฐเฉ‹เจ—เจฐเจพเจฎ เจจเจนเฉ€เจ‚ เจ•เฉ€เจคเฉ‡ เจœเจพเจ‚เจฆเฉ‡ เจนเจจ, เจ‰เจนเจจเจพเจ‚ เจจเฉ‚เฉฐ เจธเจฟเจ–เจฒเจพเจˆ เจฆเจฟเฉฑเจคเฉ€ เจœเจพเจ‚เจฆเฉ€ เจนเฉˆเฅค เจธเจฟเฉฑเจ–เจฃ เจฆเฉ€ เจฏเฉ‹เจ—เจคเจพ เจชเจฐเฉฐเจชเจฐเจพเจ—เจค เจเจฒเจ—เฉ‹เจฐเจฟเจฆเจฎ เจจเจพเจฒเฉ‹เจ‚ เจจเจฟเจŠเจฐเจฒ เจจเฉˆเจŸเจตเจฐเจ• เจฆเฉ‡ เจฎเฉเฉฑเจ– เจซเจพเจ‡เจฆเจฟเจ†เจ‚ เจตเจฟเฉฑเจšเฉ‹เจ‚ เจ‡เฉฑเจ• เจนเฉˆเฅค เจคเจ•เจจเฉ€เจ•เฉ€ เจคเฉŒเจฐ 'เจคเฉ‡, เจธเจฟเฉฑเจ–เจฃ เจตเจฟเฉฑเจš เจจเจฟเจŠเจฐเฉ‹เจจเจธ เจฆเฉ‡ เจตเจฟเจšเจ•เจพเจฐ เจ•เฉเจจเฉˆเจ•เจธเจผเจจเจพเจ‚ เจฆเฉ‡ เจ—เฉเจฃเจพเจ‚ เจจเฉ‚เฉฐ เจฒเฉฑเจญเจฃเจพ เจธเจผเจพเจฎเจฒ เจนเฉเฉฐเจฆเจพ เจนเฉˆเฅค เจธเจฟเจ–เจฒเจพเจˆ เจชเฉเจฐเจ•เจฟเจฐเจฟเจ† เจฆเฉ‡ เจฆเฉŒเจฐเจพเจจ, เจจเจฟเจŠเจฐเจฒ เจจเฉˆเจŸเจตเจฐเจ• เจ‡เจจเจชเฉเจŸ เจกเฉ‡เจŸเจพ เจ…เจคเฉ‡ เจ†เจ‰เจŸเจชเฉเฉฑเจŸ เจกเฉ‡เจŸเจพ เจฆเฉ‡ เจตเจฟเจšเจ•เจพเจฐ เจ—เฉเฉฐเจเจฒเจฆเจพเจฐ เจจเจฟเจฐเจญเจฐเจคเจพ เจฆเฉ€ เจชเจ›เจพเจฃ เจ•เจฐเจจ เจฆเฉ‡ เจจเจพเจฒ-เจจเจพเจฒ เจธเจงเจพเจฐเจฃเจ•เจฐเจจ เจ•เจฐเจจ เจฆเฉ‡ เจฏเฉ‹เจ— เจนเฉเฉฐเจฆเจพ เจนเฉˆเฅค

เจฎเจธเจผเฉ€เจจ เจฒเจฐเจจเจฟเฉฐเจ— เจฆเฉ‡ เจฆเฉเจฐเจฟเจธเจผเจŸเฉ€เจ•เฉ‹เจฃ เจคเฉ‹เจ‚, เจ‡เฉฑเจ• เจจเจฟเจŠเจฐเจฒ เจจเฉˆเจŸเจตเจฐเจ• เจชเฉˆเจŸเจฐเจจ เจฎเจพเจจเจคเจพ เจตเจฟเจงเฉ€เจ†เจ‚, เจตเจฟเจคเจ•เจฐเฉ‡ เจฆเฉ‡ เจตเจฟเจธเจผเจฒเฉ‡เจธเจผเจฃ, เจ•เจฒเฉฑเจธเจŸเจฐเจฟเฉฐเจ— เจตเจฟเจงเฉ€เจ†เจ‚ เจ…เจคเฉ‡ เจนเฉ‹เจฐ เจคเจฐเฉ€เจ•เจฟเจ†เจ‚ เจฆเจพ เจ‡เฉฑเจ• เจตเจฟเจธเจผเฉ‡เจธเจผ เจ•เฉ‡เจธ เจนเฉˆเฅค

เจ‰เจชเจ•เจฐเจฃ

เจชเจนเจฟเจฒเจพเจ‚, เจ†เจ“ เจธเจพเจœเจผ-เจธเจพเจฎเจพเจจ เจจเฉ‚เฉฐ เจตเฉ‡เจ–เฉ€เจ. เจธเจพเจจเฉ‚เฉฐ เจ‡เจธ 'เจคเฉ‡ เจธเจฅเจพเจชเจฟเจค เจฒเฉ€เจจเจ•เจธ เจ“เจชเจฐเฉ‡เจŸเจฟเฉฐเจ— เจธเจฟเจธเจŸเจฎ เจตเจพเจฒเจพ เจธเจฐเจตเจฐ เจšเจพเจนเฉ€เจฆเจพ เจนเฉˆเฅค เจฎเจธเจผเฉ€เจจ เจธเจฟเจ–เจฒเจพเจˆ เจชเฉเจฐเจฃเจพเจฒเฉ€เจ†เจ‚ เจจเฉ‚เฉฐ เจšเจฒเจพเจ‰เจฃ เจฒเจˆ เจฒเฉ‹เฉœเฉ€เจ‚เจฆเจพ เจ‰เจชเจ•เจฐเจฃ เจ•เจพเจซเจผเฉ€ เจธเจผเจ•เจคเฉ€เจธเจผเจพเจฒเฉ€ เจนเฉˆ เจ…เจคเฉ‡ เจจเจคเฉ€เจœเฉ‡ เจตเจœเฉ‹เจ‚, เจฎเจนเจฟเฉฐเจ—เจพ เจนเฉˆเฅค เจ‰เจนเจจเจพเจ‚ เจฒเจˆ เจœเจฟเจจเฉเจนเจพเจ‚ เจ•เฉ‹เจฒ เจนเฉฑเจฅ เจตเจฟเฉฑเจš เจšเฉฐเจ—เฉ€ เจฎเจธเจผเฉ€เจจ เจจเจนเฉ€เจ‚ เจนเฉˆ, เจฎเฉˆเจ‚ เจ•เจฒเจพเจ‰เจก เจชเฉเจฐเจฆเจพเจคเจพเจตเจพเจ‚ เจฆเฉ€เจ†เจ‚ เจชเฉ‡เจธเจผเจ•เจธเจผเจพเจ‚ เจตเฉฑเจฒ เจงเจฟเจ†เจจ เจฆเฉ‡เจฃ เจฆเฉ€ เจธเจฟเจซเจพเจฐเจธเจผ เจ•เจฐเจฆเจพ เจนเจพเจ‚. เจคเฉเจธเฉ€เจ‚ เจฒเฉ‹เฉœเฉ€เจ‚เจฆเฉ‡ เจธเจฐเจตเจฐ เจจเฉ‚เฉฐ เจœเจฒเจฆเฉ€ เจ•เจฟเจฐเจพเจ 'เจคเฉ‡ เจฒเฉˆ เจธเจ•เจฆเฉ‡ เจนเฉ‹ เจ…เจคเฉ‡ เจตเจฐเจคเฉ‹เจ‚ เจฆเฉ‡ เจธเจฎเฉ‡เจ‚ เจฒเจˆ เจนเฉ€ เจญเฉเจ—เจคเจพเจจ เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเฉ‹เฅค

เจ‰เจนเจจเจพเจ‚ เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸเจพเจ‚ เจตเจฟเฉฑเจš เจœเจฟเฉฑเจฅเฉ‡ เจจเจฟเจŠเจฐเจฒ เจจเฉˆเจŸเจตเจฐเจ• เจฌเจฃเจพเจ‰เจฃเจพ เจœเจผเจฐเฉ‚เจฐเฉ€ เจนเฉˆ, เจฎเฉˆเจ‚ เจฐเฉ‚เจธเฉ€ เจ•เจฒเจพเจ‰เจก เจชเฉเจฐเจฆเจพเจคเจพเจตเจพเจ‚ เจตเจฟเฉฑเจšเฉ‹เจ‚ เจ‡เฉฑเจ• เจฆเฉ‡ เจธเจฐเจตเจฐเจพเจ‚ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจฆเจพ เจนเจพเจ‚. เจ•เฉฐเจชเจจเฉ€ NVIDIA เจคเฉ‹เจ‚ เจธเจผเจ•เจคเฉ€เจธเจผเจพเจฒเฉ€ Tesla V100 เจ—เฉเจฐเจพเจซเจฟเจ•เจธ เจชเฉเจฐเฉ‹เจธเฉˆเจธเจฐเจพเจ‚ (GPU) เจจเจพเจฒ เจฎเจธเจผเฉ€เจจ เจธเจฟเจ–เจฒเจพเจˆ เจฒเจˆ เจตเจฟเจธเจผเฉ‡เจธเจผ เจคเฉŒเจฐ 'เจคเฉ‡ เจ•เจฟเจฐเจพเจ 'เจคเฉ‡ เจ•เจฒเจพเจ‰เจก เจธเจฐเจตเจฐ เจชเฉ‡เจธเจผ เจ•เจฐเจฆเฉ€ เจนเฉˆเฅค เจธเฉฐเจ–เฉ‡เจช เจตเจฟเฉฑเจš: เจ‡เฉฑเจ• GPU เจฆเฉ‡ เจจเจพเจฒ เจ‡เฉฑเจ• เจธเจฐเจตเจฐ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจจเจพ เจธเจฎเจพเจจ เจฒเจพเจ—เจค เจตเจพเจฒเฉ‡ เจธเจฐเจตเจฐ เจฆเฉ€ เจคเฉเจฒเจจเจพ เจตเจฟเฉฑเจš เจ•เจˆ เจ—เฉเจฃเจพ เจตเจงเฉ‡เจฐเฉ‡ เจ•เฉเจธเจผเจฒ (เจคเฉ‡เจœเจผ) เจนเฉ‹ เจธเจ•เจฆเจพ เจนเฉˆ เจœเฉ‹ เจ—เจฃเจจเจพ เจฒเจˆ เจ‡เฉฑเจ• CPU (เจฎเจธเจผเจนเฉ‚เจฐ เจ•เฉ‡เจ‚เจฆเจฐเฉ€ เจชเฉเจฐเฉ‹เจธเฉˆเจธเจฟเฉฐเจ— เจฏเฉ‚เจจเจฟเจŸ) เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจฆเจพ เจนเฉˆเฅค เจ‡เจน GPU เจ†เจฐเจ•เฉ€เจŸเฉˆเจ•เจšเจฐ เจฆเฉ€เจ†เจ‚ เจตเจฟเจธเจผเฉ‡เจธเจผเจคเจพเจตเจพเจ‚ เจฆเฉ‡ เจ•เจพเจฐเจจ เจชเฉเจฐเจพเจชเจค เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจนเฉˆ, เจœเฉ‹ เจ—เจฃเจจเจพเจตเจพเจ‚ เจฆเจพ เจคเฉ‡เจœเจผเฉ€ เจจเจพเจฒ เจฎเฉเจ•เจพเจฌเจฒเจพ เจ•เจฐเจฆเจพ เจนเฉˆ.

เจนเฉ‡เจ เจพเจ‚ เจฆเจฟเฉฑเจคเฉ€เจ†เจ‚ เจ‰เจฆเจพเจนเจฐเจฃเจพเจ‚ เจจเฉ‚เฉฐ เจฒเจพเจ—เฉ‚ เจ•เจฐเจจ เจฒเจˆ, เจ…เจธเฉ€เจ‚ เจ•เจˆ เจฆเจฟเจจเจพเจ‚ เจฒเจˆ เจนเฉ‡เจ เจพเจ‚ เจฆเจฟเฉฑเจคเฉ‡ เจธเจฐเจตเจฐ เจจเฉ‚เฉฐ เจ–เจฐเฉ€เจฆเจฟเจ† เจนเฉˆ:

  • SSD เจกเจฟเจธเจ• 150 GB
  • เจฐเฉˆเจฎ 32 เจœเฉ€.เจฌเฉ€
  • เจŸเฉ‡เจธเจฒเจพ V100 16 เจœเฉ€เจฌเฉ€ เจชเฉเจฐเฉ‹เจธเฉˆเจธเจฐ 4 เจ•เฉ‹เจฐ เจฆเฉ‡ เจจเจพเจฒ

เจ…เจธเฉ€เจ‚ เจ†เจชเจฃเฉ€ เจฎเจธเจผเฉ€เจจ 'เจคเฉ‡ เจ‰เจฌเฉฐเจŸเฉ‚ 18.04 เจธเจฅเจพเจชเจฟเจค เจ•เฉ€เจคเจพ เจนเฉˆเฅค

เจตเจพเจคเจพเจตเจฐเจฃ เจฆเฉ€ เจธเจฅเจพเจชเจจเจพ

เจ†เจ‰ เจนเฉเจฃ เจธเจฐเจตเจฐ เจคเฉ‡ เจ•เฉฐเจฎ เจฒเจˆ เจฒเฉ‹เฉœเฉ€เจ‚เจฆเฉ€ เจนเจฐ เจšเฉ€เจœเจผ เจจเฉ‚เฉฐ เจธเจฅเจพเจชเจฟเจค เจ•เจฐเฉ€เจ. เจ•เจฟเจ‰เจ‚เจ•เจฟ เจธเจพเจกเจพ เจฒเฉ‡เจ– เจฎเฉเฉฑเจ– เจคเฉŒเจฐ 'เจคเฉ‡ เจธเจผเฉเจฐเฉ‚เจ†เจค เจ•เจฐเจจ เจตเจพเจฒเจฟเจ†เจ‚ เจฒเจˆ เจนเฉˆ, เจฎเฉˆเจ‚ เจ•เฉเจ เจจเฉเจ•เจคเจฟเจ†เจ‚ เจฌเจพเจฐเฉ‡ เจ—เฉฑเจฒ เจ•เจฐเจพเจ‚เจ—เจพ เจœเฉ‹ เจ‰เจนเจจเจพเจ‚ เจฒเจˆ เจฒเจพเจญเจฆเจพเจ‡เจ• เจนเฉ‹เจฃเจ—เฉ‡.

เจตเจพเจคเจพเจตเจฐเจฃ เจธเจฅเจพเจชเจค เจ•เจฐเจจ เจตเฉ‡เจฒเฉ‡ เจฌเจนเฉเจค เจธเจพเจฐเจพ เจ•เฉฐเจฎ เจ•เจฎเจพเจ‚เจก เจฒเจพเจˆเจจ เจฆเฉเจ†เจฐเจพ เจ•เฉ€เจคเจพ เจœเจพเจ‚เจฆเจพ เจนเฉˆเฅค เจœเจผเจฟเจ†เจฆเจพเจคเจฐ เจ‰เจชเจญเฉ‹เจ—เจคเจพ เจตเจฟเฉฐเจกเฉ‹เจœเจผ เจจเฉ‚เฉฐ เจ†เจชเจฃเฉ‡ เจ•เฉฐเจฎ เจ•เจฐเจจ เจตเจพเจฒเฉ‡ เจ“เจเจธ เจตเจœเฉ‹เจ‚ เจตเจฐเจคเจฆเฉ‡ เจนเจจ. เจ‡เจธ OS เจตเจฟเฉฑเจš เจฎเจฟเจ†เจฐเฉ€ เจ•เฉฐเจธเฉ‹เจฒ เจฒเฉ‹เฉœเฉ€เจ‚เจฆเฉ‡ เจนเฉ‹เจฃ เจฒเจˆ เจฌเจนเฉเจค เจ•เฉเจ เจ›เฉฑเจกเจฆเจพ เจนเฉˆเฅค เจ‡เจธ เจฒเจˆ, เจ…เจธเฉ€เจ‚ เจ‡เฉฑเจ• เจธเฉเจตเจฟเจงเจพเจœเจจเจ• เจธเจพเจงเจจ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจพเจ‚เจ—เฉ‡ Cmder/. เจฎเจฟเฉฐเจจเฉ€ เจธเฉฐเจธเจ•เจฐเจฃ เจจเฉ‚เฉฐ เจกเจพเจŠเจจเจฒเฉ‹เจก เจ•เจฐเฉ‹ เจ…เจคเฉ‡ Cmder.exe เจšเจฒเจพเจ“เฅค เจ…เฉฑเจ—เฉ‡ เจคเฉเจนเจพเจจเฉ‚เฉฐ SSH เจฆเฉเจ†เจฐเจพ เจธเจฐเจตเจฐ เจจเจพเจฒ เจœเฉเฉœเจจ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉˆ:

ssh root@server-ip-or-hostname

เจธเจฐเจตเจฐ-เจ†เจˆเจชเฉ€-เจœเจพเจ‚-เจนเฉ‹เจธเจŸเจจเจพเจฎ เจฆเฉ€ เจฌเจœเจพเจ, เจ†เจชเจฃเฉ‡ เจธเจฐเจตเจฐ เจฆเจพ IP เจชเจคเจพ เจœเจพเจ‚ DNS เจจเจพเจฎ เจฆเจฟเจ“เฅค เจ…เฉฑเจ—เฉ‡, เจชเจพเจธเจตเจฐเจก เจฆเจฐเจœ เจ•เจฐเฉ‹ เจ…เจคเฉ‡ เจœเฉ‡เจ•เจฐ เจ•เฉเจจเฉˆเจ•เจธเจผเจจ เจธเจซเจฒ เจนเฉเฉฐเจฆเจพ เจนเฉˆ, เจคเจพเจ‚ เจธเจพเจจเฉ‚เฉฐ เจ‡เจธ เจตเจฐเจ—เจพ เจธเฉเจจเฉ‡เจนเจพ เจชเฉเจฐเจพเจชเจค เจ•เจฐเจจเจพ เจšเจพเจนเฉ€เจฆเจพ เจนเฉˆเฅค

Welcome to Ubuntu 18.04.3 LTS (GNU/Linux 4.15.0-74-generic x86_64)

ML เจฎเจพเจกเจฒเจพเจ‚ เจฆเฉ‡ เจตเจฟเจ•เจพเจธ เจฒเจˆ เจฎเฉเฉฑเจ– เจญเจพเจธเจผเจพ เจชเจพเจˆเจฅเจจ เจนเฉˆเฅค เจ…เจคเฉ‡ เจฒเฉ€เจจเจ•เจธ เจ‰เฉฑเจคเฉ‡ เจ‡เจธเจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจฒเจˆ เจธเจญ เจคเฉ‹เจ‚ เจชเฉเจฐเจธเจฟเฉฑเจง เจชเจฒเฉ‡เจŸเจซเจพเจฐเจฎ เจนเฉˆ เจเจจเจพเจ•เจพเจ‚เจกเจพ.

เจ†เจ“ เจ‡เจธเจจเฉ‚เฉฐ เจธเจพเจกเฉ‡ เจธเจฐเจตเจฐ 'เจคเฉ‡ เจธเจฅเจพเจชเจฟเจค เจ•เจฐเฉ€เจเฅค

เจ…เจธเฉ€เจ‚ เจธเจฅเจพเจจเจ• เจชเฉˆเจ•เฉ‡เจœ เจฎเฉˆเจจเฉ‡เจœเจฐ เจจเฉ‚เฉฐ เจ…เฉฑเจชเจกเฉ‡เจŸ เจ•เจฐเจ•เฉ‡ เจธเจผเฉเจฐเฉ‚ เจ•เจฐเจฆเฉ‡ เจนเจพเจ‚:

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!

ML เจฎเจพเจกเจฒเจพเจ‚ เจฆเฉ‡ เจตเจฟเจ•เจพเจธ เจฒเจˆ เจนเฉเจฃ เจฌเจนเฉเจค เจธเจพเจฐเฉ‡ เจซเจฐเฉ‡เจฎเจตเจฐเจ• เจฌเจฃเจพเจ เจ—เจ เจนเจจ, เจ…เจธเฉ€เจ‚ เจธเจญ เจคเฉ‹เจ‚ เจชเฉเจฐเจธเจฟเฉฑเจง เจฆเฉ‡ เจจเจพเจฒ เจ•เฉฐเจฎ เจ•เจฐเจฆเฉ‡ เจนเจพเจ‚: เจชเจพเจˆเจŸเฉ‹เจฐเจš ะธ เจŸเฉˆเจจเจธเจฐเจซเจฒเฉ‹.

เจซเจฐเฉ‡เจฎเจตเจฐเจ• เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจจ เจจเจพเจฒ เจคเฉเจธเฉ€เจ‚ เจตเจฟเจ•เจพเจธ เจฆเฉ€ เจ—เจคเฉ€ เจจเฉ‚เฉฐ เจตเจงเจพ เจธเจ•เจฆเฉ‡ เจนเฉ‹ เจ…เจคเฉ‡ เจฎเจฟเจ†เจฐเฉ€ เจ•เฉฐเจฎเจพเจ‚ เจฒเจˆ เจคเจฟเจ†เจฐ เจ•เฉ€เจคเฉ‡ เจŸเฉ‚เจฒเจธ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเฉ‹เฅค

เจ‡เจธ เจ‰เจฆเจพเจนเจฐเจจ เจตเจฟเฉฑเจš เจ…เจธเฉ€เจ‚ PyTorch เจจเจพเจฒ เจ•เฉฐเจฎ เจ•เจฐเจพเจ‚เจ—เฉ‡เฅค เจšเจฒเฉ‹ เจ‡เจธเจจเฉ‚เฉฐ เจธเจฅเจพเจชเจฟเจค เจ•เจฐเฉ€เจ:

conda install pytorch torchvision cudatoolkit=10.1 -c pytorch

เจนเฉเจฃ เจธเจพเจจเฉ‚เฉฐ Jupyter Notebook, ML เจฎเจพเจนเจฟเจฐเจพเจ‚ เจฒเจˆ เจ‡เฉฑเจ• เจชเฉเจฐเจธเจฟเฉฑเจง เจตเจฟเจ•เจพเจธ เจธเจพเจงเจจ เจฒเจพเจ‚เจš เจ•เจฐเจจ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉˆเฅค เจ‡เจน เจคเฉเจนเจพเจจเฉ‚เฉฐ เจ•เฉ‹เจก เจฒเจฟเจ–เจฃ เจ…เจคเฉ‡ เจ‡เจธ เจฆเฉ‡ เจเจ—เจœเจผเฉ€เจ•เจฟเจŠเจธเจผเจจ เจฆเฉ‡ เจจเจคเฉ€เจœเฉ‡ เจคเฉเจฐเฉฐเจค เจฆเฉ‡เจ–เจฃ เจฆเฉ€ เจ‡เจœเจพเจœเจผเจค เจฆเจฟเฉฐเจฆเจพ เจนเฉˆเฅค เจœเฉเจชเฉ€เจŸเจฐ เจจเฉ‹เจŸเจฌเฉเฉฑเจ• เจเจจเจพเจ•เจพเจ‚เจกเจพ เจฆเฉ‡ เจจเจพเจฒ เจธเจผเจพเจฎเจฒ เจนเฉˆ เจ…เจคเฉ‡ เจธเจพเจกเฉ‡ เจธเจฐเจตเจฐ 'เจคเฉ‡ เจชเจนเจฟเจฒเจพเจ‚ เจคเฉ‹เจ‚ เจนเฉ€ เจธเจฅเจพเจชเจฟเจค เจนเฉˆเฅค เจคเฉเจนเจพเจจเฉ‚เฉฐ เจธเจพเจกเฉ‡ เจกเฉˆเจธเจ•เจŸเจพเจช เจธเจฟเจธเจŸเจฎ เจคเฉ‹เจ‚ เจ‡เจธ เจจเจพเจฒ เจœเฉเฉœเจจ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉˆเฅค

เจ…เจœเจฟเจนเจพ เจ•เจฐเจจ เจฒเจˆ, เจ…เจธเฉ€เจ‚ เจชเจนเจฟเจฒเจพเจ‚ เจชเฉ‹เจฐเจŸ 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เฅค

เจ†เจ‰ เจ…เจธเฉ€เจ‚ เจธเจฅเจพเจชเจฟเจค เจ•เฉ€เจคเฉ‡ เจธเจพเจฐเฉ‡ เจญเจพเจ—เจพเจ‚ เจฆเฉ€ เจธเจนเฉ€ เจ•เจพเจฐเจตเจพเจˆ เจฆเฉ€ เจœเจพเจ‚เจš เจ•เจฐเฉ€เจเฅค เจšเจฒเฉ‹ เจœเฉเจชเฉ€เจŸเจฐ เจตเจฟเฉฑเจš เจ‰เจฆเจพเจนเจฐเจจ เจชเจพเจˆเจŸเฉ‹เจฐเจš เจ•เฉ‹เจก เจฆเจฐเจœ เจ•เจฐเฉ€เจ เจ…เจคเฉ‡ เจเจ—เจœเจผเฉ€เจ•เจฟเจŠเจธเจผเจจ (เจฐเจจ เจฌเจŸเจจ) เจจเฉ‚เฉฐ เจšเจฒเจพเจ“:

from __future__ import print_function
import torch
x = torch.rand(5, 3)
print(x)

เจจเจคเฉ€เจœเจพ เจ•เฉเจ เจ‡เจธ เจคเจฐเฉเจนเจพเจ‚ เจนเฉ‹เจฃเจพ เจšเจพเจนเฉ€เจฆเจพ เจนเฉˆ:

เจ—เฉเจฐเจพเจซเจฟเจ•เจธ เจชเฉเจฐเฉ‹เจธเฉˆเจธเจฟเฉฐเจ— เจฏเฉ‚เจจเจฟเจŸ (GPU) 'เจคเฉ‡ เจคเฉเจนเจพเจกเจพ เจชเจนเจฟเจฒเจพ เจจเจฟเจŠเจฐเจฒ เจจเฉˆเฉฑเจŸเจตเจฐเจ•เฅค เจธเจผเฉเจฐเฉ‚เจ†เจคเฉ€ เจ—เจพเจˆเจก

เจœเฉ‡เจ•เจฐ เจคเฉเจนเจพเจกเฉ‡ เจ•เฉ‹เจฒ เจ‡เฉฑเจ• เจธเจฎเจพเจจ เจจเจคเฉ€เจœเจพ เจนเฉˆ, เจคเจพเจ‚ เจ…เจธเฉ€เจ‚ เจธเจญ เจ•เฉเจ เจธเจนเฉ€ เจขเฉฐเจ— เจจเจพเจฒ เจ•เฉŒเจ‚เจซเจฟเจ—เจฐ เจ•เจฐ เจฒเจฟเจ† เจนเฉˆ เจ…เจคเฉ‡ เจ…เจธเฉ€เจ‚ เจ‡เฉฑเจ• เจจเจฟเจŠเจฐเจฒ เจจเฉˆเฉฑเจŸเจตเจฐเจ• เจตเจฟเจ•เจธเจฟเจค เจ•เจฐเจจเจพ เจธเจผเฉเจฐเฉ‚ เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเจพเจ‚!

เจ‡เฉฑเจ• เจจเจฟเจŠเจฐเจฒ เจจเฉˆเฉฑเจŸเจตเจฐเจ• เจฌเจฃเจพเจ‰เจฃเจพ

เจ…เจธเฉ€เจ‚ เจšเจฟเฉฑเจคเจฐ เจชเจ›เจพเจฃ เจฒเจˆ เจ‡เฉฑเจ• เจจเจฟเจŠเจฐเจฒ เจจเฉˆเฉฑเจŸเจตเจฐเจ• เจฌเจฃเจพเจตเจพเจ‚เจ—เฉ‡เฅค เจšเจฒเฉ‹ เจ‡เจธ เจจเฉ‚เฉฐ เจ‡เฉฑเจ• เจ…เจงเจพเจฐ เจตเจœเฉ‹เจ‚ เจฒเฉˆเจ‚เจฆเฉ‡ เจนเจพเจ‚ เจ…เจ—เจตเจพเจˆ.

เจ…เจธเฉ€เจ‚ เจจเฉˆเฉฑเจŸเจตเจฐเจ• เจจเฉ‚เฉฐ เจธเจฟเจ–เจฒเจพเจˆ เจฆเฉ‡เจฃ เจฒเจˆ เจœเจจเจคเจ• เจคเฉŒเจฐ 'เจคเฉ‡ เจ‰เจชเจฒเจฌเจง CIFAR10 เจกเฉ‡เจŸเจพเจธเฉˆเจŸ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจพเจ‚เจ—เฉ‡เฅค เจ‡เจธ เจฆเฉ€เจ†เจ‚ เจ•เจฒเจพเจธเจพเจ‚ เจนเจจ: โ€œเจนเจตเจพเจˆ เจœเจนเจพเจœเจผโ€, โ€œเจ•เจพเจฐโ€, โ€œเจชเฉฐเจ›เฉ€โ€, โ€œเจฌเจฟเฉฑเจฒเฉ€โ€, โ€œเจนเจฟเจฐเจจโ€, โ€œเจ•เฉเฉฑเจคเจพโ€, โ€œเจกเฉฑเจกเฉ‚โ€, โ€œเจ˜เฉ‹เฉœเจพโ€, โ€œเจœเจนเจพเจœเจผโ€, โ€œเจŸเจฐเฉฑเจ•โ€เฅค CIFAR10 เจตเจฟเฉฑเจš เจšเจฟเฉฑเจคเจฐ 3x32x32 เจนเจจ, เจฏเจพเจจเฉ€ 3x32 เจชเจฟเจ•เจธเจฒ เจฆเฉ‡ 32-เจšเฉˆเจจเจฒ เจฐเฉฐเจ— เจšเจฟเฉฑเจคเจฐเฅค

เจ—เฉเจฐเจพเจซเจฟเจ•เจธ เจชเฉเจฐเฉ‹เจธเฉˆเจธเจฟเฉฐเจ— เจฏเฉ‚เจจเจฟเจŸ (GPU) 'เจคเฉ‡ เจคเฉเจนเจพเจกเจพ เจชเจนเจฟเจฒเจพ เจจเจฟเจŠเจฐเจฒ เจจเฉˆเฉฑเจŸเจตเจฐเจ•เฅค เจธเจผเฉเจฐเฉ‚เจ†เจคเฉ€ เจ—เจพเจˆเจก
เจ•เฉฐเจฎ เจฒเจˆ, เจ…เจธเฉ€เจ‚ เจšเจฟเฉฑเจคเจฐเจพเจ‚ - torchvision เจจเจพเจฒ เจ•เฉฐเจฎ เจ•เจฐเจจ เจฒเจˆ PyTorch เจฆเฉเจ†เจฐเจพ เจฌเจฃเจพเจ เจชเฉˆเจ•เฉ‡เจœ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจพเจ‚เจ—เฉ‡เฅค

เจ…เจธเฉ€เจ‚ เจนเฉ‡เจ เจพเจ‚ เจฆเจฟเฉฑเจคเฉ‡ เจ•เจฆเจฎเจพเจ‚ เจจเฉ‚เฉฐ เจ•เฉเจฐเจฎ เจตเจฟเฉฑเจš เจ•เจฐเจพเจ‚เจ—เฉ‡:

  • เจธเจฟเจ–เจฒเจพเจˆ เจ…เจคเฉ‡ เจŸเฉˆเจธเจŸ เจกเฉ‡เจŸเจพ เจธเฉˆเฉฑเจŸเจพเจ‚ เจจเฉ‚เฉฐ เจฒเฉ‹เจก เจ•เจฐเจจเจพ เจ…เจคเฉ‡ เจธเจงเจพเจฐเจฃ เจ•เจฐเจจเจพ
  • เจจเจฟเจŠเจฐเจฒ เจจเฉˆเฉฑเจŸเจตเจฐเจ• เจชเจฐเจฟเจญเจพเจธเจผเจพ
  • เจธเจฟเจ–เจฒเจพเจˆ เจกเจพเจŸเจพ 'เจคเฉ‡ เจจเฉˆเฉฑเจŸเจตเจฐเจ• เจธเจฟเจ–เจฒเจพเจˆ
  • เจŸเฉˆเจธเจŸ เจกเจพเจŸเจพ 'เจคเฉ‡ เจจเฉˆเฉฑเจŸเจตเจฐเจ• เจŸเฉˆเจธเจŸเจฟเฉฐเจ—
  • เจšเจฒเฉ‹ 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) เจตเจฟเฉฑเจš เจŸเฉเจฐเจพเจ‚เจธเจซเจฐ เจ•เจฐเจจ เจฆเฉ€ เจ•เฉ‹เจธเจผเจฟเจธเจผ เจ•เจฐเจฆเฉ‡ เจนเจพเจ‚ เจ…เจคเฉ‡ เจฆเฉ‡เจ–เจฆเฉ‡ เจนเจพเจ‚ เจ•เจฟ เจ•เฉ€ เจฌเจฆเจฒเจพเจ… เจนเฉเฉฐเจฆเฉ‡ เจนเจจเฅค

GPU 'เจคเฉ‡ เจ‡เฉฑเจ• เจจเจฟเจŠเจฐเจฒ เจจเฉˆเฉฑเจŸเจตเจฐเจ• เจจเฉ‚เฉฐ เจธเจฟเจ–เจฒเจพเจˆ

เจชเจนเจฟเจฒเจพเจ‚, เจฎเฉˆเจ‚ เจธเฉฐเจ–เฉ‡เจช เจตเจฟเฉฑเจš เจฆเฉฑเจธเจพเจ‚เจ—เจพ เจ•เจฟ CUDA เจ•เฉ€ เจนเฉˆ. CUDA (เจ•เฉฐเจชเจฟเจŠเจŸ เจฏเฉ‚เจจเฉ€เจซเจพเจˆเจก เจกเจฟเจตเจพเจˆเจธ เจ†เจฐเจ•เฉ€เจŸเฉˆเจ•เจšเจฐ) เจ‡เฉฑเจ• เจธเจฎเจพเจจเจพเจ‚เจคเจฐ เจ•เฉฐเจชเจฟเจŠเจŸเจฟเฉฐเจ— เจชเจฒเฉ‡เจŸเจซเจพเจฐเจฎ เจนเฉˆ เจœเฉ‹ NVIDIA เจฆเฉเจ†เจฐเจพ เจ—เฉเจฐเจพเจซเจฟเจ•เจธ เจชเฉเจฐเฉ‹เจธเฉˆเจธเจฟเฉฐเจ— เจฏเฉ‚เจจเจฟเจŸเจพเจ‚ (GPUs) 'เจคเฉ‡ เจœเจจเจฐเจฒ เจ•เฉฐเจชเจฟเจŠเจŸเจฟเฉฐเจ— เจฒเจˆ เจตเจฟเจ•เจธเจค เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจนเฉˆเฅค CUDA เจจเจพเจฒ, เจกเจฟเจตเฉˆเจฒเจชเจฐ GPUs เจฆเฉ€ เจธเจผเจ•เจคเฉ€ เจฆเจพ เจฒเจพเจญ เจ‰เจ เจพ เจ•เฉ‡ เจ•เฉฐเจชเจฟเจŠเจŸเจฟเฉฐเจ— เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจเจพเจ‚ เจจเฉ‚เฉฐ เจจเจพเจŸเจ•เฉ€ เจขเฉฐเจ— เจจเจพเจฒ เจคเฉ‡เจœเจผ เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเจจเฅค เจ‡เจน เจชเจฒเฉ‡เจŸเจซเจพเจฐเจฎ เจธเจพเจกเฉ‡ เจธเจฐเจตเจฐ 'เจคเฉ‡ เจชเจนเจฟเจฒเจพเจ‚ เจนเฉ€ เจธเจฅเจพเจชเจฟเจค เจนเฉˆ เจœเฉ‹ เจ…เจธเฉ€เจ‚ เจ–เจฐเฉ€เจฆเจฟเจ† เจนเฉˆเฅค

เจšเจฒเฉ‹ เจชเจนเจฟเจฒเจพเจ‚ เจธเจพเจกเฉ‡ GPU เจจเฉ‚เฉฐ เจชเจนเจฟเจฒเฉ€ เจฆเจฟเจ–เจฃเจฏเฉ‹เจ— CUDA เจกเจฟเจตเจพเจˆเจธ เจฆเฉ‡ เจคเฉŒเจฐ 'เจคเฉ‡ เจชเจฐเจฟเจญเจพเจธเจผเจฟเจค เจ•เจฐเฉ€เจเฅค

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

เจ‡เฉฑเจ• เจŸเจฟเฉฑเจชเจฃเฉ€ เจœเฉ‹เฉœเฉ‹