10 kommandolinjeopskrifter til dyb læring på Amazon Web Services

10 kommandolinjeopskrifter til dyb læring på Amazon Web Services

At køre store deep learning-processer på Amazon Web Services EC2 er en billig og effektiv måde at lære og udvikle modeller på.

For kun et par dollars kan du få adgang til snesevis af gigabyte RAM, snesevis af CPU-kerner og flere GPU'er. Jeg kan varmt anbefale det.

Hvis du er ny med EC2 eller Linux-kommandolinjen, er der en række kommandoer, som du finder uvurderlige, når du kører dine dybe læringsskripter i skyen.

I denne vejledning opdager du min private liste over de 10 kommandoer, jeg bruger hver gang jeg bruger EC2 til at passe til store dyb læringsmodeller.

Efter at have læst dette indlæg vil du vide:

  • Sådan kopieres dine data til og fra dine EC2-forekomster.
  • Sådan opsættes dine scripts til at køre i dage, uger eller måneder sikkert.
  • Sådan overvåges processer, systemet og GPU-ydelsen.

Start dit projekt med min nye bog Deep Learning With Python, inklusive trin-for-trin tutorials og Python kildekode filer til alle eksempler.

Lad os komme igang.

Bemærk: Alle kommandoer, der udføres fra din arbejdsstation, antager, at du kører et Linux-miljø (f.eks. Linux, OS X eller cygwin).

Har du andre tip, tricks eller foretrukne kommandoer til at køre modeller på EC2?
Lad mig vide i kommentarerne nedenfor.

10 kommandolinjeopskrifter til dyb læring på Amazon Web Services

10 kommandolinjeopskrifter til dyb læring på Amazon Web Services
Foto af chascar, nogle rettigheder forbeholdes.

Oversigt

Kommandoerne, der præsenteres i dette indlæg, antager, at din AWS EC2-forekomst allerede kører.

For konsistens er der et par andre antagelser:

  • Din server-IP-adresse er 54.218.86.47; skift dette til IP-adressen på din serverinstans.
  • Dit brugernavn er ec2-bruger; skift dette til dit brugernavn på din forekomst.
  • Din SSH-nøgle er placeret i ~ / .ssh / og har filnavnet aws-keypair.pem; skift dette til din SSH-nøgleplacering og filnavn.
  • Du arbejder med Python-scripts.

Hvis du har brug for hjælp til opsætning og kørsel af en GPU-baseret AWS EC2-instans til dyb læring, se vejledningen:

1. Log ind fra din arbejdsstation til serveren

Du skal logge ind på serveren, før du kan gøre noget nyttigt.

Du kan nemt logge på ved hjælp af SSH-sikker shell.

Jeg anbefaler at gemme din SSH-nøgle i din ~ / .ssh / bibliotek med et nyttigt navn. Jeg bruger navnet aws-keypair.pem. Husk: filen skal have tilladelser 600.

Den følgende kommando logger dig på din serverinstans. Husk at ændre brugernavnet og IP-adressen til dit relevante brugernavn og IP-adresse for serverinstans.

2. Kopier filer fra din arbejdsstation til serveren

Du kopierer filer fra din arbejdsstation til din serverinstans ved hjælp af sikker kopi (scp).

Eksemplet nedenfor, der køres på din arbejdsstation, kopierer script.py Python-script i det lokale bibliotek på din arbejdsstation til din serverinstans.

3. Kør script som baggrundsproces på serveren

Du kan køre dit Python-script som en baggrundsproces.

Desuden kan du køre det på en sådan måde, at det ignorerer signaler fra andre processer, ignorerer enhver standardindgang (stdin) og videresender al output og fejl til en logfil.

Efter min erfaring er alt dette påkrævet for langvarige scripts til montering af store deep learning-modeller.

Dette forudsætter, at du kører script.py Python-script placeret i / hjem / ec2-bruger / katalog, og at du vil have output fra dette script videresendt til filen script.py.log placeret i samme bibliotek.

Stil efter dine behov.

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

Hvis dette er din første oplevelse med omdirigering af standardinput (stdin), standardoutput (stout) og standardfejl (sterr), kan du lære mere her:

4. Kør script på en bestemt GPU på serveren

Jeg anbefaler at køre flere scripts på samme tid, hvis din AWS EC2-instans kan håndtere det for dit problem.

For eksempel kan din valgte EC2-forekomst have 4 GPU'er, og du kan vælge at køre et script på hver.

Med CUDA kan du angive, hvilken GPU-enhed der skal bruges med miljøvariablen CUDA_VISIBLE_DEVICES.

Vi kan bruge den samme kommando ovenfor til at køre scriptet og specificere den specifikke GPU-enhed, der skal bruges som følger:

Hvis du har 4 GPU-enheder på din forekomst, kan du angive CUDA_VISIBLE_DEVICES = 0 til CUDA_VISIBLE_DEVICES = 3.

Jeg forventer, at dette ville fungere for Theano-backend, men jeg har kun testet det med TensorFlow-backend til Keras.

Du kan lære mere om CUDA_VISIBLE_DEVICES i stillingen:

5. Overvåg scriptoutput på serveren

Du kan overvåge output af dit script, mens det kører.

Dette kan være nyttigt, hvis du sender en score hver periode eller efter hver algoritmekørsel.

Dette eksempel viser de sidste par linjer i din scriptlogfil og opdaterer output, når nye linjer føjes til scriptet.

Amazon kan aggressivt lukke din terminal, hvis skærmen ikke får nyt output om et stykke tid.

Et alternativ er at bruge urkommandoen. Jeg har fundet Amazon vil holde denne terminal åben:

Jeg har fundet ud af, at standard out (stout) fra python-scripts ikke ser ud til at blive opdateret hyppigt.

Jeg ved ikke, om dette er en EC2-ting eller en Python-ting. Dette betyder, at du muligvis ikke kan se output i loggen opdateret ofte. Det ser ud til at være bufret og output, når bufferen rammer faste størrelser eller i slutningen af ​​en kørsel.

Ved du mere om dette?
Lad mig vide i kommentarerne nedenfor.

6. Overvåg system- og procesydelse på serveren

Det er en god ide at overvåge EC2-systemets ydeevne. Især mængden af ​​RAM, du bruger og har tilbage.

Du kan gøre dette ved hjælp af den øverste kommando, der opdateres hvert par sekunder.

Du kan også overvåge systemet og bare din proces, hvis du kender dets procesidentifikator (PID).

7. Overvåg GPU-ydelse på serveren

Det er en god ide at holde øje med din GPU-ydeevne.

Igen skal du holde øje med GPU-udnyttelsen, hvilke GPU'er der kører, hvis du planlægger at køre flere scripts parallelt og i GPU-RAM-brug.

Du kan bruge nvidia-smi kommando for at holde øje med GPU-brugen. Jeg kan godt lide at bruge holde øje kommando, der holder terminalen åben og rydder skærmen for hvert nye resultat.

8. Kontroller, hvilke scripts der stadig kører på serveren

Det er også vigtigt at holde øje med, hvilke scripts der stadig kører.

Du kan gøre dette med ps kommando.

Igen kan jeg godt lide at bruge urkommandoen til at holde terminalen åben.

9. Rediger en fil på serveren

Jeg anbefaler ikke at redigere filer på serveren, medmindre du virkelig skal.

Ikke desto mindre kan du redigere en fil på plads ved hjælp af vi redaktør.

Eksemplet nedenfor åbner dit script i vi.

Selvfølgelig kan du bruge din foretrukne kommandolinjeditor, som emacs; denne note er virkelig noget for dig, hvis du er ny på Unix-kommandolinjen.

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

10. Fra din arbejdsstation Download filer fra serveren

Jeg anbefaler, at du gemmer din model og eventuelle resultater og grafer eksplicit til nye og separate filer som en del af dit script.

Du kan downloade disse filer fra din serverforekomst til din arbejdsstation ved hjælp af sikker kopi (scp).

Eksemplet nedenfor køres fra din arbejdsstation og kopierer alle PNG-filer fra dit hjemmekatalog til din arbejdsstation.

Yderligere tip og tricks

Dette afsnit viser nogle yderligere tip, når du arbejder hårdt med AWS EC2.

  • Kør flere scripts ad gangen. Jeg anbefaler at vælge hardware, der har flere GPU'er og køre flere scripter ad gangen for at udnytte platformen fuldt ud.
  • Skriv og rediger kun scripts på din arbejdsstation. Behandl EC2 som et pseudoproduktionsmiljø og kopier kun nogensinde scripts og data der for at køre. Udfør al udvikling på din arbejdsstation, og skriv små test af din kode for at sikre, at den fungerer som forventet.
  • Gem scriptudgange eksplicit til en fil. Gem resultater, grafer og modeller i filer, der senere kan downloades til din arbejdsstation til analyse og anvendelse.
  • Brug urkommandoen. Amazon dræber aggressivt terminalsessioner, der ikke har nogen aktivitet. Du kan holde øje med ting ved hjælp af urkommandoen, der sender data ofte nok til at holde terminalen åben.
  • Kør kommandoer fra din arbejdsstation. Enhver af de ovennævnte kommandoer, der er beregnet til at blive kørt på serveren, kan også køres fra din arbejdsstation ved at forud for kommandoen med “ssh -jeg ~ / .ssh /aws-kopier.pem [email protected]”Og citerer den kommando, du vil køre. Dette kan være nyttigt at tjekke ind på processer hele dagen.

Resumé

I denne vejledning opdagede du de 10 kommandoer, som jeg bruger hver gang jeg træner store deep learning-modeller på AWS EC2-forekomster med GPU'er.

Specifikt lærte du:

  • Sådan kopieres dine data til og fra dine EC2-forekomster.
  • Sådan opsættes dine scripts til at køre i dage, uger eller måneder sikkert.
  • Sådan overvåges processer, systemet og GPU-ydelsen.

Har du nogen spørgsmål?
Stil dine spørgsmål i kommentarerne nedenfor, og jeg vil gøre mit bedste for at svare.

Udvikl Deep Learning-projekter med Python!

Dyb læring med Python

Hvad hvis du kunne udvikle et netværk på få minutter

... med bare et par linjer Python

Opdag hvordan i min nye e-bog:
Dyb læring med Python

Det dækker ende-til-ende projekter om emner som:
Multilayer Perceptrons, Konvolutionsnet og Tilbagevendende neurale net, og mere...

Endelig bringe Deep Learning til
Dine egne projekter

Spring over akademikerne. Bare resultater.

Se hvad der er indeni

Du kan også være interesseret i