Skip to content

Instantly share code, notes, and snippets.

@jaukia
Created May 28, 2016 09:14
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save jaukia/ef63e3172f95fe2fed3b1d5e5fa092a1 to your computer and use it in GitHub Desktop.
Save jaukia/ef63e3172f95fe2fed3b1d5e5fa092a1 to your computer and use it in GitHub Desktop.
Neural stylen ajaminen Amazonin AWS:ssä

Neural stylen ajaminen Amazonin AWS:ssä

CPU:lla onnistunee myös noiden laskeminen, mutta on ainakin paljon hitaampaa, en ole kokeillut. Tyypillisesti 1000 iteraatiota GPU:lla kesti noin 10 minuuttia AWS:ssä.

AWS:n setuppaaminen onnistuu aika helposti jos on yhtään komentorivi-mitään tehnyt koneella. Toki esim joku ssh-yhteys julkisella avaimella tms voi olla ongelmallista, jos ei ole sitä tehnyt aiemmin.

Mä tein näin suurin piirtein:

  1. Amazon AWS-tunnukset
  2. Amazonin AWS-konsolista EC2, sieltä "Spot Requests" , "Request Spot Instances", "Community AMIs" ja hakukenttään "neural style". jos oikeasta ylänurkasta valittuna "N. California", niin tuolta pitäis löytyä kaksi valmista imagea:

Käytin tota "neural-style Ubuntu 14.04 CUDA 7.0 cuDNN 3"-imagea, valitsin ihan randomilla.

Siitä "Select", valitsee konetyypiksi "GPU instances g2.2xlarge", maximum price kenttään hinta joka on vähän kalliimpi kuin tän hetkinen markkinahinta

Ja security group -täpän sourceen voi rajoittaa pääsyn omaan ip:hen

Sit pitää tehdä uus "public key pair" kun kysyy sitä, ja tallentaa se (pem-tiedosto) Somalle koneelle esim kotihakemiston ".ssh" -hakemistoon.

Ai niin, jos valittaa pem-tiedoston liian väljistä oikkareista, niin sitten kannattaa ajaa komentoriviltä "chmod 400 mykey.pem" tms

Kun spotti-instanssi on valmis, se tulee näkyviin instances-täppään

Sitten kun instanssi on valmis, sen osoite näkyy "public dns"-kohdassa.

Tolla osoitteella siihen voi ottaa ssh-yhteyden komentoriviltä. ja jotenkin läntätä mukaan se oma public-key (salasanan korvike). ja cyberduck-softalla voi maciltä siirtää sinne faileja käyttämällä sftp-protokollaa. itse olen lisännyt vielä lyhyen nimen "~/.ssh/config"-tiedostoon palvelimelle tähän tyyliin: Host deepspot HostName ec2-54-183-177-36.us-west-1.compute.amazonaws.com User ubuntu ForwardAgent yes IdentityFile ~/.ssh/mykey.pem kun toi on paikalla (ja osoittaa sun public key pem-tiedostoon) niin palvelimeen voi ottaa yhteyden kirjoittamalla komentoriville vaan "ssh deepspot"

Ja cyberduckistakin riittää että kirjoittaa serveriksi "deepspot", protokollaksi "sftp" ja klikkaa connect

Sit vaan ssh:ssa komentoriviltä "cd neural-style" ja sieltä ajaa komennon, esim "th neural_style.lua -gpu 0 -backend cudnn -style_image ./examples/inputs/starry_night.jpg -content_image ./examples/inputs/brad_pitt.jpg" cyberduckilla saa tonne uusia kuvia siirrettyä ja generoituja kuvia otettua omalle koneelle talteen (tallentuvat out_100.png" jne nimisiksi)

Spot-instanssi pitää muistaa lopettaa kun haluaa lopettaa maksamisen, maksaa tosiaan sen $0.25 tunti tms. ja silloin kaikki failit tms katoavat myös. joskus spot-instanssit voivat sammua kesken niiden käyttämisen myös, mutta käytännössä nyt testaillessa mulla on käynyt niin vaan kerran.

Tuossa imagessa on vähän vanha neural-style, jolle ei voi antaa "cudnn_autotune" -komentoa. sillä ei ole varmaan käytännössä juuri mitään väliä.

Jos haluaa päivittää neural-stylen, niin voi hakea uuden zipin täällä ja laittaa sielä neural_style.lua:n vaikka cyberduckilla tonne amazon-palvelimelle: https://github.com/jcjohnson/neural-style sit pitää ajaa vielä aws:ssä komentoriviltä nää päivitykset:

  • luarocks install loadcaffe
  • luarocks install image
  • luarocks install sys
  • luarocks install torch
  • luarocks install cutorch
  • luarocks install nn
  • luarocks install cunn

Tämä voi kuulostaa monimutkaisemmalta kuin onkaan. toi ssh ja instanssin pystyyn laittaminen aiheuttaa omat kommervenkkinsä, mut toisaalta omalle koneelle kaikkien skriptien asentaminen macillä saattaisi myös olla kinkkistä — en ole kokeillut.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment