10 kommandolinjeoppskrifter for dyp læring på Amazon Web Services

10 kommandolinjeoppskrifter for dyp læring på Amazon Web Services

Å kjøre store dype læringsprosesser på Amazon Web Services EC2 er en billig og effektiv måte å lære og utvikle modeller på.

For bare noen få dollar kan du få tilgang til titalls gigabyte RAM, titalls CPU-kjerner og flere GPUer. Jeg anbefaler det på det sterkeste.

Hvis du er ny på EC2 eller Linux-kommandolinjen, er det en rekke kommandoer som du vil finne uvurderlig når du kjører dine dype læringsskripter i skyen.

I denne veiledningen vil du oppdage min private liste over de 10 kommandoene jeg bruker hver gang jeg bruker EC2 for å passe til store dyplæringsmodeller.

Etter å ha lest dette innlegget, vil du vite:

  • Hvordan kopiere dataene dine til og fra EC2-forekomster.
  • Hvordan sette opp skriptene dine til å kjøre i flere dager, uker eller måneder trygt.
  • Hvordan overvåke prosesser, systemet og GPU-ytelsen.

Start prosjektet ditt med min nye bok Deep Learning With Python, inkludert trinnvise veiledninger og Python kildekode filer for alle eksemplene.

La oss komme i gang.

Merk: Alle kommandoer utført fra arbeidsstasjonen din antar at du kjører et Linux-type miljø (f.eks. Linux, OS X eller cygwin).

Har du noen andre tips, triks eller favorittkommandoer for å kjøre modeller på EC2?
Gi meg beskjed i kommentarene nedenfor.

10 kommandolinjeoppskrifter for dyp læring på Amazon Web Services

10 kommandolinjeoppskrifter for dyp læring på Amazon Web Services
Foto av chascar, noen rettigheter reservert.

Oversikt

Kommandoene som presenteres i dette innlegget antar at AWS EC2-forekomsten allerede kjører.

For konsistens blir det gjort noen andre forutsetninger:

  • Serverens IP-adresse er 54.218.86.47; endre dette til IP-adressen til serverforekomsten.
  • Brukernavnet ditt er ec2-bruker; endre dette til brukernavnet ditt på din forekomst.
  • SSH-nøkkelen din ligger i ~ / .ssh / og har filnavnet aws-keypair.pem; endre dette til SSH-nøkkelens plassering og filnavn.
  • Du jobber med Python-skript.

Hvis du trenger hjelp til å konfigurere og kjøre en GPU-basert AWS EC2-forekomst for dyp læring, se veiledningen:

1. Logg deg på fra arbeidsstasjonen din til serveren

Du må logge deg på serveren før du kan gjøre noe nyttig.

Du kan enkelt logge på med SSH-sikker skall.

Jeg anbefaler at du lagrer SSH-nøkkelen i ~ / .ssh / katalog med et nyttig navn. Jeg bruker navnet aws-keypair.pem. Husk: filen må ha tillatelser 600.

Følgende kommando vil logge deg på serverforekomsten. Husk å endre brukernavn og IP-adresse til ditt aktuelle brukernavn og IP-adresse for serverforekomsten.

2. Kopier filer fra arbeidsstasjonen din til serveren

Du kopierer filer fra arbeidsstasjonen til serverforekomsten din ved hjelp av sikker kopi (scp).

Eksemplet nedenfor, som kjøres på arbeidsstasjonen, kopierer script.py Python-skript i den lokale katalogen på arbeidsstasjonen din til serverinstansen.

3. Kjør skript som bakgrunnsprosess på serveren

Du kan kjøre Python-skriptet som en bakgrunnsprosess.

Videre kan du kjøre den på en slik måte at den vil ignorere signaler fra andre prosesser, ignorere standardinngang (stdin) og videresende all utdata og feil til en loggfil.

Etter min erfaring er alt dette nødvendig for langvarige skript for montering av store dyplæringsmodeller.

Dette forutsetter at du kjører script.py Python-skript som ligger i / hjem / ec2-bruker / katalogen og at du vil at utdataene fra dette skriptet skal videresendes til filen script.py.log ligger i samme katalog.

Still inn dine behov.

Hvis dette er din første opplevelse med nohup, kan du lære mer her:

Hvis dette er din første erfaring med å omdirigere standardinngang (stdin), standardutgang (stout) og standardfeil (sterr), kan du lære mer her:

4. Kjør skript på en bestemt GPU på serveren

Jeg anbefaler å kjøre flere skript samtidig, hvis din AWS EC2-forekomst kan håndtere det for ditt problem.

For eksempel kan den valgte EC2-forekomsten ha fire GPUer, og du kan velge å kjøre ett skript på hver.

Med CUDA kan du spesifisere hvilken GPU-enhet du vil bruke med miljøvariabelen CUDA_VISIBLE_DEVICES.

Vi kan bruke den samme kommandoen ovenfor for å kjøre skriptet og spesifisere den spesifikke GPU-enheten som skal brukes som følger:

Hvis du har 4 GPU-enheter på forekomsten din, kan du spesifisere CUDA_VISIBLE_DEVICES = 0 til CUDA_VISIBLE_DEVICES = 3.

Jeg forventer at dette vil fungere for Theano-backend, men jeg har bare testet den med TensorFlow-backend for Keras.

Du kan lære mer om CUDA_VISIBLE_DEVICES i posten:

5. Overvåke skriptutdata på serveren

Du kan overvåke utdataene fra skriptet mens det kjører.

Dette kan være nyttig hvis du skriver ut en score hver epoke eller etter hver algoritmekjøring.

Dette eksemplet viser de siste linjene i skriptloggfilen din og oppdaterer utdataene når nye linjer legges til skriptet.

Amazon kan lukke terminalen aggressivt hvis skjermen ikke får ny utgang på en stund.

Et alternativ er å bruke urkommandoen. Jeg har funnet ut at Amazon vil holde denne terminalen åpen:

Jeg har funnet ut at standard ut (stout) fra python-skript ikke ser ut til å bli oppdatert ofte.

Jeg vet ikke om dette er en EC2-ting eller en Python-ting. Dette betyr at du kanskje ikke ser utdataene i loggen oppdatert ofte. Det ser ut til å være bufret og sendes ut når bufferen treffer faste størrelser eller på slutten av løpeturen.

Vet du mer om dette?
Gi meg beskjed i kommentarene nedenfor.

6. Overvåke system- og prosessytelse på serveren

Det er lurt å overvåke ytelsen til EC2-systemet. Spesielt mengden RAM du bruker og har igjen.

Du kan gjøre dette ved hjelp av den øverste kommandoen som oppdateres med få sekunders mellomrom.

Du kan også overvåke systemet og bare prosessen din, hvis du vet prosessidentifikatoren (PID).

7. Overvåk GPU-ytelse på serveren

Det er lurt å holde øye med GPU-ytelsen.

Igjen, hold øye med GPU-bruken, hvilke GPUer som kjører, hvis du planlegger å kjøre flere skript parallelt og i GPU RAM-bruk.

Du kan bruke nvidia-smi kommando for å holde øye med GPU-bruk. Jeg liker å bruke se kommando som holder terminalen åpen og tømmer skjermen for hvert nye resultat.

8. Sjekk hvilke skript som fremdeles kjører på serveren

Det er også viktig å holde øye med hvilke skript som fremdeles kjører.

Du kan gjøre dette med ps kommando.

Igjen, jeg liker å bruke klokkekommandoen for å holde terminalen åpen.

9. Rediger en fil på serveren

Jeg anbefaler ikke å redigere filer på serveren med mindre du virkelig må.

Ikke desto mindre kan du redigere en fil på plass ved hjelp av vi redaktør.

Eksemplet nedenfor åpner skriptet ditt i vi.

Selvfølgelig kan du bruke din favoritt kommandolinjeditor, som emacs; dette notatet er virkelig for deg hvis du er ny på Unix-kommandolinjen.

Hvis dette er din første eksponering for vi, kan du lære mer her:

10. Last ned filer fra serveren fra arbeidsstasjonen

Jeg anbefaler at du lagrer modellen din og eventuelle resultater og grafer eksplisitt til nye og separate filer som en del av skriptet.

Du kan laste ned disse filene fra serverforekomsten til arbeidsstasjonen din ved hjelp av sikker kopi (scp).

Eksemplet nedenfor kjøres fra arbeidsstasjonen din og vil kopiere alle PNG-filer fra hjemmekatalogen til arbeidsstasjonen.

Flere tips og triks

Denne delen viser noen flere tips når du jobber tungt med AWS EC2.

  • Kjør flere skript om gangen. Jeg anbefaler å velge maskinvare som har flere GPUer og kjøre flere skript om gangen for å utnytte plattformen fullt ut.
  • Skriv og rediger bare skript på arbeidsstasjonen din. Behandle EC2 som et pseudoproduksjonsmiljø og bare kopier skript og data der for å kjøre. Gjør all utvikling på arbeidsstasjonen din og skriv små tester av koden din for å sikre at den fungerer som forventet.
  • Lagre skriptutdata eksplisitt i en fil. Lagre resultater, grafer og modeller i filer som kan lastes ned senere til arbeidsstasjonen din for analyse og anvendelse.
  • Bruk klokkekommandoen. Amazon dreper aggressivt terminalsessioner som ikke har aktivitet. Du kan holde øye med ting ved hjelp av watch-kommandoen som sender data ofte nok til å holde terminalen åpen.
  • Kjør kommandoer fra arbeidsstasjonen din. En hvilken som helst av kommandoene som er oppført ovenfor, og som skal kjøres på serveren, kan også kjøres fra arbeidsstasjonen din ved å føre kommandoen med "ssh -Jeg ~ / .ssh /aws-kjøppem [email protected]”Og siterer kommandoen du vil kjøre. Dette kan være nyttig å sjekke inn på prosesser gjennom dagen.

Sammendrag

I denne veiledningen oppdaget du de 10 kommandoene jeg bruker hver gang jeg trener store dype læringsmodeller på AWS EC2-forekomster med GPUer.

Spesielt lærte du:

  • Hvordan kopiere dataene dine til og fra EC2-forekomster.
  • Hvordan sette opp skriptene dine til å kjøre i flere dager, uker eller måneder trygt.
  • Hvordan overvåke prosesser, systemet og GPU-ytelsen.

Har du noen spørsmål?
Still spørsmålene dine i kommentarene nedenfor, og jeg vil gjøre mitt beste for å svare.

Utvikle Deep Learning-prosjekter med Python!

Dyp læring med Python

Hva om du kunne utvikle et nettverk på få minutter

... med bare noen få linjer Python

Oppdag hvordan i min nye eBok:
Dyp læring med Python

Det dekker end-to-end-prosjekter om emner som:
Multilayer Perceptrons, Convolutionsnett og Tilbakevendende nevrale nett, og mer...

Endelig ta dyp læring til
Dine egne prosjekter

Hopp over akademikerne. Bare resultater.

Se hva som er inne

Вас также может заинтересовать