10 opdrachtregelrecepten voor diepgaand leren op Amazon Web Services

10 opdrachtregelrecepten voor diepgaand leren op Amazon Web Services

Het uitvoeren van grote deep learning-processen op Amazon Web Services EC2 is een goedkope en effectieve manier om modellen te leren en te ontwikkelen.

Voor slechts een paar dollar krijg je toegang tot tientallen gigabytes RAM, tientallen CPU-kernen en meerdere GPU's. Ik raad het ten sterkste aan.

Als u nieuw bent bij EC2 of de Linux-opdrachtregel, is er een reeks opdrachten die u van onschatbare waarde zult vinden bij het uitvoeren van uw deep learning-scripts in de cloud.

In deze tutorial ontdek je mijn privélijst met de 10 commando's die ik gebruik elke keer dat ik EC2 gebruik voor grote deep learning-modellen.

Na het lezen van dit bericht weet je:

  • Hoe u uw gegevens van en naar uw EC2-instanties kopieert.
  • Hoe u uw scripts instelt om dagen, weken of maanden veilig te werken.
  • Hoe u processen, het systeem en de GPU-prestaties bewaakt.

Geef uw project een kickstart met mijn nieuwe boek Deep Learning With Python, inclusief stapsgewijze tutorials en de Python-broncode bestanden voor alle voorbeelden.

Laten we beginnen.

Notitie: Alle opdrachten die vanaf uw werkstation worden uitgevoerd, gaan ervan uit dat u een Linux-achtige omgeving gebruikt (bijv. Linux, OS X of cygwin).

Heb je nog andere tips, trucs of favoriete commando's om modellen op EC2 te laten draaien?
Laat het me weten in de reacties hieronder.

10 opdrachtregelrecepten voor diepgaand leren op Amazon Web Services

10 opdrachtregelrecepten voor diepgaand leren op Amazon Web Services
Foto door chascar, enkele rechten voorbehouden.

Overzicht

De opdrachten die in dit bericht worden gepresenteerd, gaan ervan uit dat uw AWS EC2-instantie al actief is.

Voor de consistentie worden een paar andere aannames gedaan:

  • Het IP-adres van uw server is 54.218.86.47​ wijzig dit naar het IP-adres van uw serverinstantie.
  • jouw gebruikersnaam is ec2-gebruiker​ verander dit in uw gebruikersnaam op uw instantie.
  • Je SSH-sleutel bevindt zich in ~ / .ssh / en heeft de bestandsnaam aws-keypair.pem​ verander dit in je SSH-sleutellocatie en bestandsnaam.
  • U werkt met Python-scripts.

Als je hulp nodig hebt bij het opzetten en uitvoeren van een GPU-gebaseerde AWS EC2-instantie voor diep leren, bekijk dan de tutorial:

1. Meld u vanaf uw werkstation aan bij de server

U moet inloggen op de server voordat u iets nuttigs kunt doen.

U kunt eenvoudig inloggen met de SSH secure shell.

Ik raad aan om je SSH-sleutel op te slaan in je ~ / .ssh / directory met een bruikbare naam. Ik gebruik de naam aws-keypair.pem​ Onthoud: het bestand moet de machtigingen 600 hebben.

Met de volgende opdracht wordt u aangemeld bij uw serverinstantie. Vergeet niet om de gebruikersnaam en het IP-adres te wijzigen in uw relevante gebruikersnaam en het IP-adres van de serverinstantie.

2. Kopieer bestanden van uw werkstation naar de server

U kopieert bestanden van uw werkstation naar uw serverinstantie met behulp van beveiligde kopie (scp).

In het onderstaande voorbeeld, dat op uw werkstation wordt uitgevoerd, wordt het script.py Python-script in de lokale map op uw werkstation naar uw serverinstantie.

3. Voer het script uit als achtergrondproces op de server

U kunt uw Python-script als achtergrondproces uitvoeren.

Verder kunt u het zo uitvoeren dat het signalen van andere processen negeert, elke standaardinvoer (stdin) negeert en alle uitvoer en fouten doorstuurt naar een logbestand.

In mijn ervaring is dit alles vereist voor langlopende scripts voor het passen van grote deep learning-modellen.

Dit veronderstelt dat u het script.py Python-script in het / home / ec2-gebruiker / directory en dat u de uitvoer van dit script naar het bestand wilt doorsturen script.py.log bevindt zich in dezelfde map.

Stem af op uw behoeften.

Als dit je eerste ervaring met nohup is, kun je hier meer informatie vinden:

Als dit uw eerste ervaring is met het omleiden van standaardinvoer (stdin), standaarduitvoer (stout) en standaardfout (sterr), kunt u hier meer informatie vinden:

4. Voer een script uit op een specifieke GPU op de server

Ik raad aan om meerdere scripts tegelijkertijd uit te voeren, als uw AWS EC2-instantie het voor uw probleem aankan.

De door u gekozen EC2-instantie kan bijvoorbeeld 4 GPU's hebben en u kunt ervoor kiezen om op elke GPU één script uit te voeren.

Met CUDA kunt u specificeren welk GPU-apparaat moet worden gebruikt met de omgevingsvariabele CUDA_VISIBLE_DEVICES

We kunnen dezelfde opdracht hierboven gebruiken om het script uit te voeren en het specifieke GPU-apparaat als volgt specificeren:

Als u 4 GPU-apparaten in uw instantie heeft, kunt u specificeren CUDA_VISIBLE_DEVICES = 0 naar CUDA_VISIBLE_DEVICES = 3.

Ik verwacht dat dit zou werken voor de Theano-backend, maar ik heb het alleen getest met de TensorFlow-backend voor Keras.

U kunt er meer over te weten komen CUDA_VISIBLE_DEVICES bij de post:

5. Monitor scriptuitvoer op de server

U kunt de uitvoer van uw script volgen terwijl het wordt uitgevoerd.

Dit kan handig zijn als u elke epoch of na elke algoritme-run een score uitvoert.

In dit voorbeeld worden de laatste paar regels van uw scriptlogbestand weergegeven en wordt de uitvoer bijgewerkt wanneer er nieuwe regels aan het script worden toegevoegd.

Amazon kan uw terminal agressief sluiten als het scherm een ​​tijdje geen nieuwe uitvoer krijgt.

Een alternatief is om het watch-commando te gebruiken. Ik heb ontdekt dat Amazon deze terminal open houdt:

Ik heb ontdekt dat standard out (stout) van python-scripts niet vaak wordt bijgewerkt.

Ik weet niet of dit een EC2-ding is of een Python-ding. Dit betekent dat u de uitvoer in het logboek mogelijk niet vaak bijgewerkt ziet. Het lijkt te worden gebufferd en uitgevoerd wanneer de buffer een vaste grootte bereikt of aan het einde van een run.

Weet u hier meer over?
Laat het me weten in de reacties hieronder.

6. Bewaak de systeem- en procesprestaties op de server

Het is een goed idee om de prestaties van het EC2-systeem te controleren. Vooral de hoeveelheid RAM die je gebruikt en nog over hebt.

U kunt dit doen met het bovenste commando dat om de paar seconden wordt bijgewerkt.

U kunt ook het systeem en alleen uw proces volgen, als u de proces-ID (PID) kent.

7. Monitor GPU-prestaties op de server

Het is een goed idee om uw GPU-prestaties in de gaten te houden.

Nogmaals, houd het GPU-gebruik in de gaten, waarop GPU's worden uitgevoerd, als u van plan bent om meerdere scripts parallel en in GPU RAM-gebruik uit te voeren.

U kunt de nvidia-smi commando om het GPU-gebruik in de gaten te houden. Ik gebruik graag de kijk maar commando dat de terminal open houdt en het scherm leegmaakt voor elk nieuw resultaat.

8. Controleer welke scripts nog op de server worden uitgevoerd

Het is ook belangrijk om in de gaten te houden welke scripts nog draaien.

U kunt dit doen met de ps opdracht.

Nogmaals, ik gebruik graag het watch-commando om de terminal open te houden.

9. Bewerk een bestand op de server

Ik raad aan om geen bestanden op de server te bewerken, tenzij het echt nodig is.

Desalniettemin kunt u een bestand op zijn plaats bewerken met de vi editor.

In het onderstaande voorbeeld wordt uw script geopend in vi.

U kunt natuurlijk uw favoriete opdrachtregeleditor gebruiken, zoals emacs; deze opmerking is echt iets voor jou als je nieuw bent op de Unix-opdrachtregel.

Als dit uw eerste blootstelling aan vi is, kunt u hier meer informatie vinden:

10. Download vanaf uw werkstation bestanden van de server

Ik raad aan om uw model en eventuele resultaten en grafieken expliciet op te slaan in nieuwe en afzonderlijke bestanden als onderdeel van uw script.

U kunt deze bestanden van uw serverinstantie naar uw werkstation downloaden met behulp van beveiligde kopie (scp).

Het onderstaande voorbeeld wordt vanaf uw werkstation uitgevoerd en zal alle PNG-bestanden van uw homedirectory naar uw werkstation kopiëren.

Aanvullende tips en trucs

In dit gedeelte vindt u enkele aanvullende tips als u zwaar aan AWS EC2 werkt.

  • Voer meerdere scripts tegelijk uit​ Ik raad aan om hardware met meerdere GPU's te selecteren en meerdere scripts tegelijk uit te voeren om volledig gebruik te maken van het platform.
  • Schrijf en bewerk scripts alleen op uw werkstation​ Behandel EC2 als een pseudo-productieomgeving en kopieer daar alleen scripts en gegevens om uit te voeren. Doe alle ontwikkeling op uw werkstation en schrijf kleine tests van uw code om ervoor te zorgen dat deze werkt zoals verwacht.
  • Sla scriptuitvoer expliciet op in een bestand​ Sla resultaten, grafieken en modellen op in bestanden die later naar uw werkstation kunnen worden gedownload voor analyse en toepassing.
  • Gebruik het horloge-commando​ Amazon doodt agressief terminale sessies die geen activiteit hebben. U kunt dingen in de gaten houden met behulp van de watch-opdracht die gegevens vaak genoeg verzendt om de terminal open te houden.
  • Voer opdrachten uit vanaf uw werkstation​ Elk van de bovenstaande opdrachten die bedoeld zijn om op de server te worden uitgevoerd, kan ook vanaf uw werkstation worden uitgevoerd door de opdracht vooraf te laten gaan met “ssh -ik ~ / .ssh /aws-keypair.pem [email protected]”En onder vermelding van de opdracht die u wilt uitvoeren. Dit kan handig zijn om de processen gedurende de dag in te checken.

Overzicht

In deze tutorial ontdekte je de 10 commando's die ik gebruik elke keer dat ik grote deep learning-modellen train op AWS EC2-instanties met GPU's.

Concreet heb je geleerd:

  • Hoe u uw gegevens van en naar uw EC2-instanties kopieert.
  • Hoe u uw scripts instelt om dagen, weken of maanden veilig te werken.
  • Hoe u processen, het systeem en de GPU-prestaties bewaakt.

Heb je nog vragen?
Stel je vragen in de comments hieronder en ik zal mijn best doen om deze te beantwoorden.

Ontwikkel diepgaande leerprojecten met Python!

Diep leren met Python

Wat als u binnen enkele minuten een netwerk zou kunnen ontwikkelen

... met slechts een paar regels Python

Ontdek hoe in mijn nieuwe e-boek:
Diep leren met Python

Het bedekt end-to-end projecten over onderwerpen als:
Meerlagige perceptronsConvolutionele netten en Terugkerende neurale netten, en meer...

Breng eindelijk diep leren
Uw eigen projecten

Sla de academici over. Alleen resultaten.

Zie wat erin zit

Du kan også være interessert