Skip to content

jinh0park/cs231n-setup

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

5 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

Tutorial for cs231n Assignment Setup with GCP(Google Cloud Platform)

์›๋ž˜ cs231n assignments๋ฅผ ์œ„ํ•œ Tutorials๋Š” cs231n ๊ณต์‹ Github์— ์ž˜ ์ •๋ฆฌ๋˜์–ด ์žˆ๋‹ค. ํ•˜์ง€๋งŒ ์—ฌ๊ธฐ๋ฅผ ๊ทธ๋Œ€๋กœ ๋”ฐ๋ผํ•˜๋‹ค ๋ณด๋ฉด, ๋†’์€ ํ™•๋ฅ ๋กœ Create an image from our provided disk ํŒŒํŠธ์—์„œ ๋ง‰ํžˆ๊ณ  ๋ง ๊ฒƒ์ด๋‹ค. Disk Image Source์˜ Repo(Bucket) Path๋ฅผ ์ž…๋ ฅํ•˜๋ฉด '๊ฐœ์ฒด๊ฐ€ ์—†๊ฑฐ๋‚˜ ์•ก์„ธ์Šค ๊ถŒํ•œ์ด ์—†์œผ๋ฏ€๋กœ ๊ฐœ์ฒด๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๋Œ€์‹  ๊ฐœ์ฒด๋ฅผ ํƒ์ƒ‰ํ•ด๋ณด์„ธ์š”'๋ผ๋Š” ์—๋Ÿฌ ๋ฌธ๊ตฌ๊ฐ€ ์ถœ๋ ฅ๋˜๋ฉด์„œ ๋‹ค์Œ ๋‹จ๊ณ„๋กœ ๋„˜์–ด๊ฐˆ ์ˆ˜๊ฐ€ ์—†๋‹ค.

๊ฒ€์ƒ‰์„ ํ•ด๋ณด๋‹ˆ Stanford์—์„œ cs231n์˜ ํ•™๊ธฐ๊ฐ€ ๋๋‚˜๋ฉด ์ด Bucket์˜ ์ ‘๊ทผ ๊ถŒํ•œ์„ ๋ง‰์•„๋‘”๋‹ค๊ณ  ํ•œ๋‹ค. ์ด Disk Image์—๋Š” anaconda, torch, tensorflow, CUDA ๋“ฑ assignments์— ํ•„์š”ํ•œ ํŒจํ‚ค์ง€๋“ค์„ ์„ค์น˜ํ•ด๋†“์€ ๊ฒƒ ๊ฐ™์€๋ฐ, ์ด Image๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์œผ๋ฏ€๋กœ ๋”ฐ๋กœ ์„ธํŒ…์„ ํ•ด์•ผํ•œ๋‹ค(์ด ํŠœํ† ๋ฆฌ์–ผ์„ ๋งŒ๋“  ๊ฐ€์žฅ ํฐ ์ด์œ ์ด๊ธฐ๋„ ํ•˜๋‹ค).

ํด๋ผ์šฐ๋“œ ์ปดํ“จํŒ…, ๋ฆฌ๋ˆ…์Šค ๋“ฑ์— ์ต์ˆ™ํ•˜์ง€ ์•Š์€ ๋ณธ์ธ ๊ฐ™์€ ์ดˆ์‹ฌ์ž๊ฐ€ assignments๋ฅผ ํ•˜๋Š”๋ฐ ์–ด๋ ค์›€์ด ์—†๋„๋ก Tutorial๋“ค์„ ์ž‘์„ฑํ•˜์˜€์œผ๋ฉฐ, ๋ชฉ์ฐจ๋Š” ํฌ๊ฒŒ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

  1. GCP(Google Cloud Platform) Tutorial
    ๊ณผ์ œ๋ฅผ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•œ Compute Instance๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ๋‹ค๋ฃฌ๋‹ค.
  2. Instance Setup Tutorial
    Instance๋ฅผ ์ƒ์„ฑํ•œ ํ›„, cs231n์—์„œ ์ œ๊ณตํ•˜๋Š” Disk Image ์—†์ด ๊ณผ์ œ๋ฅผ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•œ ํ™˜๊ฒฝ์„ ์„ธํŒ…ํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ๋‹ค๋ฃฌ๋‹ค.
  3. Jupyter Notebook Tutorial
    ๊ณผ์ œ๋Š” ๋ณดํ†ต Jupyter Notebook ์ƒ์—์„œ ์ด๋ฃจ์–ด์ง„๋‹ค. ์ด๋ฅผ ์‰ฝ๊ฒŒ ์„ค์ •ํ•˜๊ณ  ๊ตฌ๋™ํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ๋‹ค๋ฃฌ๋‹ค.
  4. PyTorch + CUDA Setup Tutorial (for Assginment 2, 3)
    assignment 1๊นŒ์ง€๋Š” GPU๋ฅผ ๋‹ฌ ์ผ์ด ์—†์ง€๋งŒ, assignment 2, 3๋ฅผ ์ˆ˜์›”ํ•˜๊ฒŒ ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” GPU๋ฅผ Instance์— ๋‹ฌ๊ณ , CUDA์™€ Pytorch๋ฅผ ์„ค์น˜ํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ๋‹ค๋ฃฌ๋‹ค.

โ€ปํ•„๋…โ€ป

ํด๋ผ์šฐ๋“œ ์ปดํ“จํŒ… ์„œ๋น„์Šค๋ฅผ ์ด์šฉํ•˜๋ฉด์„œ ๊ฐ€์žฅ ์‹ ๊ฒฝ์จ์•ผํ•  ๋ถ€๋ถ„์€ ์š”๊ธˆ์ด๋‹ค. ์ธ์Šคํ„ด์Šค ํ•˜๋‚˜๋งˆ๋‹ค ์‹œ๊ฐ„๋‹น ์ ๊ฒŒ๋Š” 0.2๋‹ฌ๋Ÿฌ ์ •๋„์—์„œ GPU๋ฅผ ๋‹ฌ๋ฉด ์‹œ๊ฐ„๋‹น 0.4๋‹ฌ๋Ÿฌ ์ด์ƒ๊นŒ์ง€ ์˜ฌ๋ผ๊ฐ„๋‹ค. ๋งŒ์•ฝ ์ธ์Šคํ„ด์Šค๋ฅผ ํ•œ๋‹ฌ ๋‚ด๋‚ด ์ผœ๋†“๊ณ  ์žˆ์œผ๋ฉด, ์ˆ˜๋ฐฑ๋‹ฌ๋Ÿฌ๊ฐ€ ๋„˜๋Š” ๋น„์šฉ ์ด ์›”๋ง์— ์ฒญ๊ตฌ๋  ์ˆ˜ ์žˆ๋‹ค.

๋”ฐ๋ผ์„œ, ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ์ธ์Šคํ„ด์Šค๋Š” ๋ฐ˜๋“œ์‹œ ์ค‘์ง€๋ฅผ ํ•ด์•ผํ•œ๋‹ค. ๋ณธ์ธ์€ AWS(Amazon Web Service)๋ฅผ ์“ฐ๋‹ค๊ฐ€ GCP๋กœ ๋„˜์–ด์™”๋Š”๋ฐ, GCP๋Š” ์ค‘์ง€ํ•œ ์ธ์Šคํ„ด์Šค์— ๋Œ€ํ•ด์„œ ์š”๊ธˆ์„ ๋ถ€๊ณผํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์ด ์ข‹๋‹ค๊ณ  ๋А๊ปด์กŒ์—ˆ๋‹ค. AWS๋Š” ์ค‘์ง€๋ฅผ ํ•ด๋„ ์ธ์Šคํ„ด์Šค๊ฐ€ ๋‚จ์•„์žˆ์œผ๋ฉด ๊ทธ๊ฒƒ์— ๋Œ€ํ•ด ๊ณ„์† ์š”๊ธˆ์„ ๋ถ€๊ณผํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๊ด€๋ฆฌ๊ฐ€ ๊นŒ๋‹ค๋กœ์› ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. (์ตœ๊ทผ์— ์ค‘์ง€์ค‘์—๋„ ์š”๊ธˆ์„ ๋ถ€๊ณผํ•˜์ง€ ์•Š๊ฒŒ ํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ๋‚˜์™”๋‹ค๊ณ ๋Š” ํ•œ๋‹ค) ์•„๋ฌดํŠผ, ์ธ์Šคํ„ด์Šค๋ฅผ ์“ฐ์ง€ ์•Š์„ ๋•Œ์—๋Š” ์ค‘์ง€์‹œํ‚ค๋Š” ์Šต๊ด€์„ ๋“ค์ด์ž!


GCP(Google Cloud Platform) Tutorial

์ธ์Šคํ„ด์Šค ์ƒ์„ฑํ•˜๊ธฐ

cs231n ๊ณต์‹ GCP Tutorial์—์„œ Create and Configure Your Account ํŒŒํŠธ๊นŒ์ง€ ๊ทธ๋Œ€๋กœ ๋”ฐ๋ผํ•œ๋‹ค. ๋‹ฌ๋ฆฌ ์–ด๋ ค์šด ์ž‘์—…์€ ์—†๊ณ , ๊ณ„์ •์„ ๋งŒ๋“ค๊ณ  ์นด๋“œ๋ฅผ ๋“ฑ๋กํ•˜๋Š” ๊ฐ„๋‹จํ•œ ๊ณผ์ •์ด๋‹ค.

๊ณผ์ •์„ ๋”ฐ๋ผ์„œ ๊ณ„์ •์„ ๋“ฑ๋กํ–ˆ์œผ๋ฉด, Compute Engine ๋ฉ”๋‰ด์— ๋“ค์–ด๊ฐ„๋‹ค. ์ƒ์„ฑํ•ด๋†“์€ ์ธ์Šคํ„ด์Šค๊ฐ€ ์—†๋‹ค๋ฉด ์•„๋ž˜์™€ ๊ฐ™์€ ํ™”๋ฉด์ด ๋‚˜์˜ฌ ๊ฒƒ์ด๋‹ค.

๋งŒ๋“ค๊ธฐ ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๊ณ  ์ธ์Šคํ„ด์Šค๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.

์ธ์Šคํ„ด์Šค ์ด๋ฆ„๊ณผ ์ŠคํŽ™์„ ์„ค์ •ํ•œ๋‹ค. ๋งž์ถค์„ค์ •์„ ํ•˜์ง€ ์•Š๊ณ  ์™ผ์ชฝ์˜ ๋“œ๋กญ๋‹ค์šด์—์„œ vCPU 8๊ฐœ๋ฅผ ์„ ํƒํ•˜๋ฉด ๊ทธ์— ์•Œ๋งž๋Š” ๋ฉ”๋ชจ๋ฆฌ ์šฉ๋Ÿ‰์„ ๊ฐ™์ด ํ• ๋‹นํ•ด์ค€๋‹ค.

๋งž์ถค์„ค์ •์„ ๋ˆ„๋ฅด๋ฉด GPU๋ฅผ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ, assignment1๊ณผ assignment2 ์ดˆ๋ฐ˜์—๋Š” GPU๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ๊ตณ์ด ์ถ”๊ฐ€ํ•˜์ง€ ์•Š์•„๋„ ๋œ๋‹ค. GPU๋ฅผ ๋‹ฌ๋ฉด ๊ทธ๋งŒํผ ๋น„์šฉ์ด ๋งŽ์ด ๋ฐœ์ƒํ•˜๊ธฐ ๋•Œ๋ฌธ์—(GPU๊ฐ€ ํŠนํžˆ ๋น„์‹ธ๋‹ค), GPU๊ฐ€ ํ•„์š”ํ•œ ๋ถ€๋ถ„์—์„œ๋งŒ ์ธ์Šคํ„ด์Šค๋ฅผ ์ˆ˜์ •ํ•˜์—ฌ GPU๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์ด ๊ฒฝ์ œ์ ์ด๋‹ค.

์ธ์Šคํ„ด์Šค์˜ ๋ถ€ํŒ… ๋””์Šคํฌ๋ฅผ ์„ค์ •ํ•œ๋‹ค. ์—ฌ๊ธฐ์„œ ๋ณ€๊ฒฝ ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๊ณ  Ubuntu 16.04 LTS๋ฅผ ์„ ํƒํ•œ๋‹ค. ๋””์Šคํฌ์˜ ํฌ๊ธฐ๋Š” ์ ๋‹นํžˆ 40GB ์ •๋„๋กœ ํ•œ๋‹ค. ์–ด์ฐจํ”ผ ์š”๊ธˆ ์–ผ๋งˆ ์•ˆ๋‚˜์˜จ๋‹ค.

๊ทธ ์™ธ ์˜ต์…˜๋“ค์„ ์„ค์ •ํ•œ๋‹ค. Jupyter Notebook์œผ๋กœ ์ ‘๊ทผํ•ด์•ผํ•˜๋ฏ€๋กœ HTTP, HTTPS ํŠธ๋ž˜ํ”ฝ์„ ๋ชจ๋‘ ํ—ˆ์šฉํ•˜๊ณ , ์ธ์Šคํ„ด์Šค ์‚ญ์ œ ์‹œ ๋ถ€ํŒ… ๋””์Šคํฌ ์‚ญ์ œ ์ฒดํฌ๋ฐ•์Šค๋ฅผ ํ•ด์ œํ•œ๋‹ค.

์—ฌ๊ธฐ๊นŒ์ง€ ๋”ฐ๋ผ ์™”๋‹ค๋ฉด ๋งŒ๋“ค๊ธฐ ๋ฒ„ํŠผ์„ ๋ˆŒ๋Ÿฌ ์ธ์Šคํ„ด์Šค๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.

์„ฑ๊ณต์ ์œผ๋กœ ์ธ์Šคํ„ด์Šค๋ฅผ ์ƒ์„ฑํ–ˆ๋‹ค๋ฉด, ์‹คํ–‰ ์ค‘์ธ ์ธ์Šคํ„ด์Šค์˜ ๋ชจ์Šต์ด ๋ณด์ผ ๊ฒƒ์ด๋‹ค.

๊ณ ์ • IP ์ฃผ์†Œ ํ• ๋‹นํ•˜๊ธฐ

ํƒ์ƒ‰ ๋ฉ”๋‰ด -> VPC ๋„คํŠธ์›Œํฌ -> ์™ธ๋ถ€ IP ์ฃผ์†Œ ๋กœ ๋“ค์–ด๊ฐ€์„œ ๊ณ ์ • ์ฃผ์†Œ ์˜ˆ์•ฝ ์„ ํด๋ฆญํ•œ๋‹ค.

์œ„ ๊ทธ๋ฆผ๊ณผ ๊ฐ™์€ ์„ค์ •์œผ๋กœ ๊ณ ์ • ์ฃผ์†Œ๋ฅผ ์˜ˆ์•ฝํ•œ๋‹ค. ์—ฐ๊ฒฐ ๋Œ€์ƒ ์—๋Š” ์šฐ๋ฆฌ๊ฐ€ ์œ„์—์„œ ๋ฐฉ๊ธˆ ๋งŒ๋“  ์ธ์Šคํ„ด์Šค๋ฅผ ์„ ํƒํ•˜๋ฉด ๋œ๋‹ค.

์กฐ๊ธˆ ๊ธฐ๋‹ค๋ฆฐ ํ›„ Compute Engine ํƒญ์— ๋‹ค์‹œ ๋“ค์–ด์˜ค๋ฉด, ์ธ์Šคํ„ด์Šค์— ๊ณ ์ • IP ์ฃผ์†Œ๊ฐ€ ํ• ๋‹น๋œ ๋ชจ์Šต์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

๋ฐฉํ™”๋ฒฝ ๊ทœ์น™ ์„ค์ •ํ•˜๊ธฐ

์šฐ๋ฆฌ๋Š” Jupyter Notebook์œผ๋กœ ์ž‘์—…์„ ํ•  ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์— ๋ฐฉํ™”๋ฒฝ ์„ค์ •์—์„œ ํฌํŠธ๋ฅผ ํ•˜๋‚˜ ์—ด์–ด์ฃผ์–ด์•ผํ•œ๋‹ค. ํƒ์ƒ‰ ๋ฉ”๋‰ด -> VPC ๋„คํŠธ์›Œํฌ -> ๋ฐฉํ™”๋ฒฝ ๊ทœ์น™ ์œผ๋กœ ๋“ค์–ด๊ฐ„๋‹ค.

๋ฐฉํ™”๋ฒฝ ๊ทœ์น™ ๋งŒ๋“ค๊ธฐ ๋ฅผ ํด๋ฆญํ•ด ์ƒˆ๋กœ์šด ๊ทœ์น™์„ ํ•˜๋‚˜ ๋งŒ๋“ ๋‹ค.

๋‹ค๋ฅธ ์„ค์ •๋“ค์€ ๊ฑด๋“œ๋ฆฌ์ง€ ์•Š๊ณ , ๋Œ€์ƒ: ๋„คํŠธ์›Œํฌ์˜ ๋ชจ๋“  ์ธ์Šคํ„ด์Šค, ์†Œ์Šค IP ๋ฒ”์œ„: 0.0.0.0/0, ํ”„๋กœํ† ์ฝœ ๋ฐ ํฌํŠธ: tcp:8888 ๋กœ ํ•˜๊ณ  ๋งŒ๋“ค๊ธฐ ๋ฅผ ํ•œ๋‹ค. ๊ทœ์น™ ์ด๋ฆ„์€ ์•„๋ฌด๊ฑฐ๋‚˜ ์ƒ๊ด€ ์—†๋‹ค. ๋ณธ์ธ์€ cs231n-firewall๋ผ๋Š” ์ด๋ฆ„์œผ๋กœ ๊ทœ์น™์„ ์ƒ์„ฑํ–ˆ๋‹ค.

์„ฑ๊ณต์ ์œผ๋กœ ๋ฐฉํ™”๋ฒฝ ๊ทœ์น™์ด ์ƒ์„ฑ๋˜์—ˆ๋‹ค!


Instance Setup Tutorial

cs231n Github์˜ Setup Tutorial์—์„œ Working locally ๋ถ€๋ถ„์„ ๋”ฐ๋ผํ•˜๋ฉด ๋œ๋‹ค. Anaconda์™€ python virtualenv๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ๋Š”๋ฐ, Anaconda๋ฅผ ์ด์šฉํ•œ ๋ฐฉ๋ฒ•์ด ์ข€ ๋” ๊ฐ„๋‹จํ•˜๋ฏ€๋กœ ๊ทธ๊ฒƒ์„ ์„ ํƒํ–ˆ๋‹ค.

ํ•œ ๊ฐ€์ง€ ์ฃผ์˜์‚ฌํ•ญ ์ด ์žˆ๋Š”๋ฐ, ๊ฐ assignment ํด๋”์— ์žˆ๋Š” requirements.txt python virtualenv๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ๋งŒ ์„ค์น˜ํ•ด์ฃผ์–ด์•ผํ•œ๋‹ค. conda ๊ฐ€์ƒํ™˜๊ฒฝ ๋‚ด์—์„œ ํ•ด๋‹น ํŒจํ‚ค์ง€๋“ค์„ ์„ค์น˜ํ•˜๋ฉด ์ด๋ฏธ ์„ค์น˜๋œ ํŒจํ‚ค์ง€๋“ค๊ณผ ์ถฉ๋Œ์„ ์ผ์œผํ‚ค๋ฉด์„œ ๋‚œ๋ฆฌ๊ฐ€ ๋‚˜๋ฏ€๋กœ... ํ•ด๋‹น ํŒŒ์ผ๋“ค์€ ๊น”๋”ํ•˜๊ฒŒ ๋ฌด์‹œํ•ด์ฃผ์ž.

anaconda3 ์„ค์น˜ํ•˜๊ธฐ

sudo apt update
wget https://repo.continuum.io/archive/Anaconda3-2018.12-Linux-x86_64.sh
bash Anaconda3-2018.12-Linux-x86_64.sh

yes, yes๋ฅผ ํ•˜๋ฉด์„œ ์ง„ํ–‰ํ•˜๋‹ค ๋ณด๋ฉด ์„ค์น˜๊ฐ€ ์™„๋ฃŒ๋œ๋‹ค. ๋‹ค๋งŒ anaconda3๊ฐ€ ์„ค์น˜๋œ ํ›„ Do you wish to proceed with the installation of Microsoft VSCode? [yes|no]๋ผ๋ฉด์„œ VSCode์˜ ์„ค์น˜๋ฅผ ๊ถŒ์œ ํ•˜๋Š”๋ฐ, ์—ฌ๊ธฐ์„œ ๊ตณ์ด VSCode๋ฅผ ๊น” ์ด์œ ๋Š” ์—†์œผ๋‹ˆ no๋ฅผ ์ž…๋ ฅํ•œ๋‹ค.

conda ๊ฐ€์ƒํ™˜๊ฒฝ ์ƒ์„ฑํ•˜๊ธฐ

์šฐ์„  conda ์ปค๋งจ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” PATH ๋“ฑ๋ก์„ ํ•ด์ฃผ์–ด์•ผ ํ•œ๋‹ค. ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์ž…๋ ฅํ•œ๋‹ค(<user_directory>์€ ubuntu user name์œผ๋กœ ๋ฐ”๊พธ์–ด ์ฃผ์–ด์•ผ ํ•œ๋‹ค. SSH shell(์•„๋ž˜ ๊ทธ๋ฆผ)์—์„œ ๋นจ๊ฐ„ ๋™๊ทธ๋ผ๋ฏธ๋ฅผ ์นœ ๋ถ€๋ถ„์ด username์— ํ•ด๋‹นํ•œ๋‹ค).

export PATH=/home/<user_directory>/anaconda3/bin:$PATH

conda ๊ฐ€์ƒํ™˜๊ฒฝ์„ ์ƒ์„ฑํ•ด์ค€๋‹ค. -n cs231n์€ ๊ฐ€์ƒํ™˜๊ฒฝ์˜ ์ด๋ฆ„์„ cs231n์œผ๋กœ ์ง€์ •ํ•œ ๊ฒƒ์ด๊ณ , ๊ทธ ๋’ค๋Š” python์˜ ๋ฒ„์ „์˜ ๋ช…์‹œ(python 3.6์ด ๊ฐ€์žฅ stableํ•œ ๊ฒƒ ๊ฐ™๋‹ค)์™€, anaconda์˜ ํŒจํ‚ค์ง€๋“ค์„ ์ƒ์†ํ•˜๊ฒ ๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค.

conda create -n cs231n python=3.6 anaconda

๋‹ค์†Œ ๊ธด ์‹œ๊ฐ„์„ ๊ธฐ๋‹ค๋ ค์„œ ๊ฐ€์ƒํ™˜๊ฒฝ ์ƒ์„ฑ์ด ์™„๋ฃŒ๋˜๋ฉด, ๊ฐ€์ƒํ™˜๊ฒฝ์„ activate / deactivateํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด์„œ ์•Œ๋ ค์ฃผ๋Š” ๋ฌธ๊ตฌ๊ฐ€ ์ถœ๋ ฅ๋œ๋‹ค. ์ œ๋Œ€๋กœ ์ƒ์„ฑ์ด ๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด ๋‹ค์Œ ๋ช…๋ น์–ด๋กœ ๊ฐ€์ƒํ™˜๊ฒฝ์„ activate ํ•ด๋ณธ๋‹ค.

source activate cs231n

์ž…๋ ฅ์ฐฝ ์™ผ์ชฝ์— (cs231n)์ด๋ผ๊ณ  ๊ฐ€์ƒํ™˜๊ฒฝ์ด activate ๋˜์—ˆ์Œ์„ ๋‚˜ํƒ€๋‚ด๋Š” ๊ด„ํ˜ธ ํ‘œ์‹œ๊ฐ€ ๋œจ๋ฉด ์„ฑ๊ณต์ด๋‹ค. ํ™•์ธ์„ ํ–ˆ์œผ๋ฏ€๋กœ deactivate ๋ช…๋ น์œผ๋กœ ๊ฐ€์ƒํ™˜๊ฒฝ์„ deactivate ํ•œ๋‹ค.

assignment code ๋‹ค์šด๋กœ๋“œ

assignment code ํŒŒ์ผ๋“ค์€ ๋ชจ๋‘ cs231n ๊ณต์‹ github์— ์žˆ์ง€๋งŒ, ํŽธ์˜๋ฅผ ์œ„ํ•ด ๋ณธ์ธ์˜ github repo์—๋„ ์˜ฌ๋ ค๋†“์•˜๋‹ค. ๋‹ค์Œ ๋ช…๋ น์–ด๋กœ assignment code๋“ค์„ ๋‹ค์šด๋ฐ›๋Š”๋‹ค.

git clone https://github.com/jinh0park/cs231n-setup.git

๊ทธ ํ›„, ๊ฐ Assginment์— ํ•„์š”ํ•œ dataset๋“ค๋„ ๋ฏธ๋ฆฌ ๋‹ค์šด๋ฐ›์•„์ฃผ์ž.

cd cs231n-setup
bash assignment1/cs231n/datasets/get_datasets.sh
bash assignment2/cs231n/datasets/get_datasets.sh
bash assignment3/cs231n/datasets/get_datasets.sh

Jupyter Notebook Tutorial

Python์„ ์–ด๋А ์ •๋„ ๊ณต๋ถ€ํ•ด๋ณธ ์‚ฌ๋žŒ์ด๋ผ๋ฉด Jupyter Notebook์„ ์จ๋ณธ ๊ฒฝํ—˜์ด ์žˆ์„ ๊ฒƒ์ด๋‹ค. Local ํ™˜๊ฒฝ์—์„œ ๊ตฌ๋™ํ•  ๋•Œ๋Š” ์ฃผ๋กœ jupyter notebook ๋ช…๋ น์–ด๋กœ localhost:8888์— Notebook์„ ๋„์›Œ์„œ ์‹คํ–‰ํ•˜๋Š”๋ฐ, ํด๋ผ์šฐ๋“œ์—์„œ ์ด๋ฅผ ์ด์šฉํ•  ๋•Œ๋Š” ๋ช‡ ๊ฐ€์ง€ ์„ค์ •์ด ๋” ํ•„์š”ํ•˜๋‹ค. ๊ฐ€์žฅ ์ค‘์š”ํ•œ ์„ค์ •์€ password๋ผ๊ณ  ์ƒ๊ฐํ•˜๋Š”๋ฐ, local์—์„œ ์ž‘์—…ํ•  ๋•Œ๋Š” ๋‹ค๋ฅธ ๋ˆ„๊ตฐ๊ฐ€๊ฐ€ ๋‚ด Notebook์— ๋“ค์–ด์˜ฌ ์—ผ๋ ค๊ฐ€ ์—†์ง€๋งŒ, ํด๋ผ์šฐ๋“œ์—์„œ ์ž‘์—…์„ ํ•  ๋•Œ๋Š” ๊ณ ์ • IP๋ฅผ ์ฃผ์†Œ์ฐฝ์— ์ž…๋ ฅํ•˜๋ฉด ๋ˆ„๊ตฌ๋“  ๋‚ด Notebook์— ๋“ค์–ด์˜ฌ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— password๋ฅผ ์„ค์ •ํ•˜๋Š” ์ž‘์—…์ด ํ•„์š”ํ•˜๋‹ค. (์ด๋Š” IP์ฃผ์†Œ๋ฅผ ์ œํ•œํ•œ๋‹ค๋˜์ง€, ๊ธฐํƒ€ ์—ฌ๋Ÿฌ ๋ฐฉ๋ฒ•์ด ์žˆ์ง€๋งŒ GCP๋Š” ์ด๊ฒŒ ๊ฐ€์žฅ ํŽธํ•œ ๊ฒƒ ๊ฐ™๋‹ค)

์ด์ œ, ์ธ์Šคํ„ด์Šค๋ฅผ ์ผœ๊ณ  ipython ๋ช…๋ น์–ด๋ฅผ ์นœ๋‹ค. ipython ์ฝ˜์†”์ด ์ผœ์ง€๋ฉด ์ˆœ์„œ๋Œ€๋กœ from IPython.lib import, passwd()๋ฅผ ์ž…๋ ฅํ•ด ๋น„๋ฐ€๋ฒˆํ˜ธ์— ๋Œ€ํ•œ sha1 ํ•ด์‹œ๊ฐ’์„ ๋ฐ›๋Š”๋‹ค. (์•„๋ž˜ ์ฐธ๊ณ ) ipython ๋ช…๋ น์–ด๋ฅผ ์ฐพ์ง€ ๋ชปํ•œ๋‹ค๊ณ  ํ•˜๋ฉด . ์œ„์—์„œ ํ•œ ๋ฒˆ ์ผ๋˜ export PATH=/home/<user_directory>/anaconda3/bin:$PATH๋ฅผ ๋‹ค์‹œ ์ž…๋ ฅํ•ด Path์— ์ถ”๊ฐ€ํ•ด์ค€๋‹ค.

ubuntu@cs231n:~$ ipython
Python 3.7.1 (default, Dec 14 2018, 19:28:38)
Type 'copyright', 'credits' or 'license' for more information
IPython 7.2.0 -- An enhanced Interactive Python. Type '?' for help.

In [1]: from IPython.lib import passwd                                                                             

In [2]: passwd()                                                                                                   
Enter password:
Verify password:
Out[2]: 'sha1:90b7ff928564:e704593562aa65899ad09940fd9ed4145799cdde'

๋งˆ์ง€๋ง‰์— ์ถœ๋ ฅ๋œ sha1:~~~๋ฅผ ๋ณต์‚ฌํ•˜์—ฌ ๋ฉ”๋ชจ์žฅ ๊ฐ™์€ ๊ณณ์— ์ ์–ด๋‘”๋‹ค.

Ctrl+Z๋ฅผ ๋ˆŒ๋Ÿฌ ipython์„ ์ข…๋ฃŒํ•œ ํ›„, ๋‹ค์Œ ๋ช…๋ น์œผ๋กœ config ํŒŒ์ผ์„ ์ƒ์„ฑํ•œ๋‹ค.

jupyter notebook --generate-config

https ์—ฐ๊ฒฐ์„ ์œ„ํ•œ certificates๋ฅผ ๋งŒ๋“ ๋‹ค.

mkdir certs

cd certs

sudo openssl req -x509 -nodes -days 365 -newkey rsa:1024 -keyout mycert.pem -out mycert.pem

๋ชจ๋‘ Enterํ‚ค๋ฅผ ์น˜๊ณ  ๋„˜์–ด๊ฐ€๋„ ๋œ๋‹ค.

๊ทธ ํ›„ ์ „์— ์ƒ์„ฑํ•œ Jupyter Notebook config file์„ ์ˆ˜์ •ํ•œ๋‹ค.

cd ~/.jupyter/

vi jupyter_notebook_config.py

์ฃผ์„์œผ๋กœ ๊ฐ€๋“ํ•œ ํŒŒ์ผ์ด ๋‚˜์˜ค๋Š”๋ฐ, ์•„๋ฌด๋ฐ๋‚˜ ํŽธํ•œ๋Œ€๋กœ(๋งจ ์œ—์ค„๋„ ๊ดœ์ฐฎ๋‹ค) ๋‹ค์Œ ์ฝ”๋“œ๋“ค์„ ๋ถ™์—ฌ๋„ฃ๋Š”๋‹ค. ์ฃผ์˜ํ•  ์ ์€, ์•„๋ž˜ ์ฝ”๋“œ์—์„œ c.NotebookApp.certfile์˜ ์œ„์น˜์™€ c.NotebookApp.password์˜ ํ•ด์‹œ๊ฐ’(๋ฉ”๋ชจ์žฅ์— ์ ์–ด๋‘” ๊ทธ ๊ฐ’)์„ ๊ฐ์ž ์•Œ๋งž๋Š” ๊ฐ’์œผ๋กœ ์ˆ˜์ •ํ•ด์ฃผ์–ด์•ผ ํ•œ๋‹ค.

c = get_config()
# Kernel config
c.IPKernelApp.pylab = 'inline'  # if you want plotting support always in your notebook
# Notebook config
c.NotebookApp.certfile = u'/home/<user_directory>/certs/mycert.pem' #location of your certificate file
c.NotebookApp.ip = '0.0.0.0'
c.NotebookApp.open_browser = False  #so that the ipython notebook does not opens up a browser by default
c.NotebookApp.password = u'sha1:b962c2993b85:3e45a67aa4adf59909c8deb322e6e016bdf8d671'  #the encrypted password we generated above
# Set the port to 8888, the port we set up in the AWS EC2 set-up
c.NotebookApp.port = 8888

์ˆ˜์ •์„ ํ–ˆ์œผ๋ฉด, assignments๋“ค์ด ๋ชจ์—ฌ์žˆ๋Š” ํด๋”๋กœ ์ด๋™ํ•ด์„œ ์•ž์„œ ์ƒ์„ฑํ•œ conda enviroment๋ฅผ ํ™œ์„ฑํ™”ํ•œ ํ›„ Jupyter Notebook์„ ์‹คํ–‰ํ•œ๋‹ค.

cd ~/cs231n-setup
source activate cs231n
jupyter Notebook

Jupyter Notebook์„ ์‹คํ–‰ํ–ˆ์œผ๋‹ˆ ์ด์ œ ์›น๋ธŒ๋ผ์šฐ์ €์—์„œ ์ ‘์†ํ•ด๋ณด์ž. ์œ„์—์„œ ํ• ๋‹นํ–ˆ๋˜ ip์ฃผ์†Œ + ํฌํŠธ๋ฒˆํ˜ธ(8888)์„ ์›น๋ธŒ๋ผ์šฐ์ €์— ์ž…๋ ฅํ•˜๋ฉด Jupyer Notebook์— ์ ‘์†ํ•  ์ˆ˜ ์žˆ๋‹ค. ๋‹จ, ํฌ๋กฌ์˜ ๊ฒฝ์šฐ ์•„๋ž˜์™€ ๊ฐ™์€ ๊ฒฝ๊ณ  ์ฐฝ์ด ๋œจ๋Š”๋ฐ, ์šฐ๋ฆฌ๊ฐ€ ๋งŒ๋“  certificates๊ฐ€ ๊ณต์ธ๋˜์ง€ ์•Š์•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฐœ์ƒํ•˜๋Š” ๋‹น์—ฐํ•œ ๊ฒฐ๊ณผ์ด๋‹ค. ๊ฒฝ๊ณ ๋ฅผ ๋ฌด์‹œํ•˜๊ณ  ๊ณ ๊ธ‰ ์„ ๋ˆŒ๋Ÿฌ ~~~(์•ˆ์ „ํ•˜์ง€ ์•Š์Œ)์œผ๋กœ ์ด๋™ ์„ ๋ˆŒ๋Ÿฌ์ค€๋‹ค.

๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์ž…๋ ฅํ•˜๋ฉด, Local์—์„œ ์ž‘์—…ํ• ๋•Œ์™€ ๊ฐ™์€ Jupyter Notebook์˜ ํ™”๋ฉด์ด ์„ฑ๊ณต์ ์œผ๋กœ ๋‚˜์˜จ ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

PyTorch + CUDA Setup Tutorial (for Assginment 2, 3)

Pytorch ์„ค์น˜

source activate cs231n
pip install torch

GPU ์ถ”๊ฐ€

assignment2์˜ ํ›„๋ฐ˜๋ถ€๋ถ€ํ„ฐ GPU๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š”(pytorch/tensorflow๋ฅผ ์“ธ ๋•Œ) ๊ณผ์ œ๊ฐ€ ๋‚˜์˜จ๋‹ค. GCP๋ฅผ ์ฒ˜์Œ ์‚ฌ์šฉํ•˜๋ฉด GPU์˜ ํ•œ๋„๊ฐ€ 0์œผ๋กœ ๋˜์–ด์žˆ์–ด GPU๋ฅผ ์ธ์Šคํ„ด์Šค์— ์ถ”๊ฐ€ํ•  ์ˆ˜ ์—†๋‹ค. ๊ทธ๋Ÿด๋•Œ๋Š” ํ• ๋‹น๋Ÿ‰์„ ์ง์ ‘ ๋Š˜๋ ค์•ผํ•˜๋Š”๋ฐ, ์ด ๊ณผ์ •์ด ํ•˜๋ฃจ์ •๋„ ์†Œ์š”๋  ์ˆ˜ ์žˆ์œผ๋‹ˆ ๋ฏธ๋ฆฌ ํ•œ๋„๋ฅผ ๋Š˜๋ ค๋†“๊ธฐ๋ฅผ ๊ถŒ์žฅํ•œ๋‹ค.

์ธ์Šคํ„ด์Šค ์„ธ๋ถ€์‚ฌํ•ญ-์ˆ˜์ •์— ๋“ค์–ด๊ฐ€์„œ GPU๋ฅผ ์œ„์™€ ๊ฐ™์ด ์ถ”๊ฐ€ํ•˜๋ฉด ๋ฌธ์ œ ์—†์ด ์ธ์Šคํ„ด์Šค๊ฐ€ ์ž˜ ์ˆ˜์ •์ด ๋œ๋‹ค. ํ•˜์ง€๋งŒ ์ˆ˜์ •์„ ํ•œ ํ›„ ์ธ์Šคํ„ด์Šค๋ฅผ ์‹œ์ž‘ํ•˜๋ฉด, ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์˜ค๋ฅ˜ ๋ฌธ๊ตฌ๊ฐ€ ๋œจ๋ฉด์„œ ์ธ์Šคํ„ด์Šค๊ฐ€ ์‹œ์ž‘ํ•˜์ง€ ์•Š๋Š”๋‹ค.

์œ„์—์„œ ๋งํ•œ ํ• ๋‹น๋Ÿ‰ ๋ฌธ์ œ์ธ๋ฐ, ์ด๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ํƒ์ƒ‰ ๋ฉ”๋‰ด -> IAM ๋ฐ ๊ด€๋ฆฌ์ž -> ํ• ๋‹น๋Ÿ‰ ํƒญ์œผ๋กœ ๋“ค์–ด๊ฐ„๋‹ค.

์ธก์ •ํ•ญ๋ชฉ ์—์„œ GPUs ๋ฅผ ๊ณ ๋ฅด๋ฉด, ํ• ๋‹น๋Ÿ‰์ด 0์œผ๋กœ ๋˜์–ด์žˆ๋Š”๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค. ํ• ๋‹น๋Ÿ‰ ์ˆ˜์ €์„ ๋ˆŒ๋Ÿฌ ์ด๋ฅผ ์›ํ•˜๋Š” ์ˆ˜์น˜๋กœ ์ž…๋ ฅ ํ›„ ์ œ์ถœ์„ ๋ˆ„๋ฅด๋ฉด GCP ์ธก์— ์š”์ฒญ์ด ์ „๋‹ฌ๋˜๋ฉฐ, ๊ด€๋ จ๋œ ๋ฉ”์ผ๋“ค์ด ์˜ค๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค. ํ•˜๋ฃจ ์ •๋„ ๊ธฐ๋‹ค๋ฆฌ๋ฉด ํ•œ๋„๊ฐ€ ์ •์ƒ์ ์œผ๋กœ ๋Š˜๋ ค์กŒ๋‹ค๋Š” ๋ฉ”์ผ๊ณผ ํ•จ๊ป˜ GPU๋ฅผ ๋‹ฌ์€ ์ธ์Šคํ„ด์Šค๋ฅผ ์ •์ƒ์ ์œผ๋กœ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค.

CUDA ์„ค์น˜

GPU๋ฅผ ๋‹ฌ์•˜์ง€๋งŒ, pytorch์—์„œ GPU ์—ฐ์‚ฐ์„ ์ด์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” CUDA๊ฐ€ ์„ค์น˜๋˜์–ด ์žˆ์–ด์•ผํ•œ๋‹ค.

์šฐ์„ , ๋‹ค์Œ ๋ช…๋ น์œผ๋กœ nvidia driver๋ฅผ ์„ค์น˜ํ•œ๋‹ค.

sudo apt update
sudo apt upgrade
sudo apt install nvidia-smi

๋‹ค์Œ์œผ๋กœ๋Š” CUDA๋ฅผ ์„ค์น˜ํ•˜๊ธฐ ์œ„ํ•ด shell script๋ฅผ ํ•˜๋‚˜ ๋งŒ๋“ค์–ด์ค€๋‹ค.

vi setup_cuda.sh

ํ•ด๋‹น ํŒŒ์ผ์— ์•„๋ž˜ ๋‚ด์šฉ์„ copy&pasteํ•œ๋‹ค.

#!/bin/bash
echo "Checking for CUDA and installing."
# Check for CUDA and try to install.
if ! dpkg-query -W cuda-10-0; then
  # The 16.04 installer works with 16.10.
  curl -O http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1604/x86_64/cuda-repo-ubuntu1604_10.0.130-1_amd64.deb
  dpkg -i ./cuda-repo-ubuntu1604_10.0.130-1_amd64.deb
  apt-key adv --fetch-keys http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1604/x86_64/7fa2af80.pub
  apt-get update
  apt-get install cuda-10-0 -y
fi
# Enable persistence mode
nvidia-smi -pm 1

์ž‘์„ฑํ•œ ์Šคํฌ๋ฆฝํŠธ๋ฅผ sudo๋กœ ์‹คํ–‰ํ•ด์ฃผ๋ฉด, CUDA ์„ค์น˜๊ฐ€ ์ง„ํ–‰๋œ๋‹ค.

sudo bash setup_cuda.sh

์„ค์น˜๋ฅผ ์™„๋ฃŒํ–ˆ์œผ๋ฉด conda ํ™˜๊ฒฝ์—์„œ python์„ ์‹คํ–‰ํ•œ ํ›„ ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด CUDA๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

from torch.cuda import is_available
is_available()

์„ค์น˜๊ฐ€ ์ž˜ ๋˜์—ˆ๋‹ค๋ฉด True๋ฅผ ์•„๋‹ˆ๋ผ๋ฉด False๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.


References

  1. http://cs231n.github.io/
  2. https://cloud.google.com/compute/docs/gpus/add-gpus#install-gpu-driver
  3. https://askubuntu.com/questions/685017/how-to-install-nvidia-smi
  4. https://medium.com/@kn.maragatham09/installing-jupyter-notebook-on-google-cloud-11979e40cd10

About

Setup tutorial for cs231n assignments

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors