Zephyrnet-logo

Aan de slag met gedistribueerde machine learning met PyTorch en Ray

Datum:

Aan de slag met gedistribueerde machine learning met PyTorch en Ray

Ray is een populair framework voor gedistribueerde Python dat kan worden gekoppeld aan PyTorch om snel machine learning-applicaties te schalen.


By Michaël Galarnyk, Richard Liaw en Robert Nishihara


Afbeelding voor bericht

Machine learning vandaag vereist gedistribueerd computergebruik. Of je trainingsnetwerkenhet afstemmen van hyperparametersserveren modellenof gegevensverwerkingis machine learning rekenintensief en kan het onbetaalbaar traag zijn zonder toegang tot een cluster. straal is een populair framework voor gedistribueerde Python dat kan worden gecombineerd met PyTorch om machine learning-applicaties snel te schalen.

Dit bericht behandelt verschillende elementen van het Ray-ecosysteem en hoe het kan worden gebruikt met PyTorch!


Wat is Ray

Afbeelding voor bericht

Ray is een open source-bibliotheek voor parallelle en gedistribueerde Python. Het bovenstaande diagram laat zien dat het Ray-ecosysteem op hoog niveau uit drie delen bestaat: het kernsysteem van Ray, schaalbare bibliotheken voor machine learning (zowel native als van derden) en tools voor clusters lanceren op elk cluster of cloudprovider.


Het Core Ray-systeem

straal kan worden gebruikt schaal Python-toepassingen over meerdere kernen of machines. Het heeft een aantal grote voordelen, waaronder:

  • Eenvoud: u kunt uw Python-applicaties schalen zonder ze te herschrijven, en dezelfde code kan op één machine of op meerdere machines worden uitgevoerd.
  • Robuustheid: applicaties gaan gracieus om met machinestoringen en voorrang.
  • Performance: taken worden uitgevoerd met een latentie van milliseconden, schaalbaar tot tienduizenden cores en verwerken numerieke gegevens met minimale overhead voor serialisatie.


Bibliotheek ecosysteem

Omdat Ray een raamwerk voor algemene doeleinden is, heeft de gemeenschap er veel bibliotheken en raamwerken bovenop gebouwd om verschillende taken uit te voeren. De overgrote meerderheid hiervan ondersteunt PyTorch, vereist minimale aanpassingen aan uw code en integreren naadloos met elkaar. Hieronder staan ​​slechts enkele van de veel bibliotheken in het ecosysteem.

RaySGD


Afbeelding voor bericht
Vergelijking van PyTorch's DataParallel versus Ray (die PyTorch's Distributed DataParallel onder de motorkap gebruikt) op p3dn.24xlarge-instanties. Beeldbron.

RaySGD is een bibliotheek die gedistribueerde trainingswrappers biedt voor parallelle training van gegevens. Bijvoorbeeld de RaySGD TorchTrainer is een wikkel rond torch.distributed.launch. Het biedt een Python-API om eenvoudig gedistribueerde training op te nemen in een grotere Python-applicatie, in plaats van je trainingscode in bash-scripts te moeten verpakken.

Enkele andere voordelen van de bibliotheek zijn:

  • Gebruiksgemak: u kunt PyTorch's native DistributedDataParallel schalen zonder dat u individuele knooppunten hoeft te bewaken.
  • Schaalbaarheid: u kunt omhoog en omlaag schalen. Begin op een enkele CPU. Schaal op naar clusters met meerdere knooppunten, meerdere CPU's of meerdere GPU's door 2 regels code te wijzigen.
  • Versnelde training: er is ingebouwde ondersteuning voor gemengde precisietraining met NVIDIA Apex.
  • Fouttolerantie: er is ondersteuning voor automatisch herstel wanneer cloudmachines worden onderdrukt.
  • Compatibiliteit: er is naadloze integratie met andere bibliotheken zoals Ray Tune en Ray Serveer.

U kunt aan de slag met TorchTrainer door Ray te installeren (pip install -U ray torch) en de onderstaande code uit te voeren:


Het script zal CIFAR10 downloaden en een ResNet18-model gebruiken om beeldclassificatie uit te voeren. Met een enkele parameterwijziging (num_workers = N), kunt u meerdere GPU's gebruiken.

Als u meer wilt weten over RaySGD en hoe u PyTorch-training over een cluster kunt schalen, moet u dit eens bekijken blogpost.

Ray Tune


Afbeelding voor bericht
Ray Tune's implementatie van optimalisatie-algoritmen zoals Population Based Training (hierboven weergegeven) kan worden gebruikt met PyTorch voor meer performante modellen. Afbeelding van Deepmind.

Ray Tune is een Python-bibliotheek voor het uitvoeren van experimenten en het afstemmen van hyperparameters op elke schaal. Enkele voordelen van de bibliotheek zijn:

U kunt aan de slag met Ray Tune door Ray te installeren (pip install ray torch torchvision) en de onderstaande code uit te voeren.

Als u wilt weten hoe u Ray Tune in uw PyTorch-workflow kunt integreren, moet u dit eens bekijken blogpost.

Ray Serveer


Afbeelding voor bericht
Ray Serve kan niet alleen worden gebruikt om modellen alleen te bedienen, maar ook om schaal andere presentatietools zoals FastAPI.

Ray Serveer is een bibliotheek voor eenvoudig te gebruiken schaalbare modelweergave. Enkele voordelen van de bibliotheek zijn:

  • De mogelijkheid om een ​​enkele toolkit te gebruiken voor alles, van deep learning-modellen (PyTorch, TensorFlow, enz.) Tot scikit-learn-modellen, tot willekeurige Python-bedrijfslogica.
  • Schaal op naar vele machines, zowel in uw datacenter als in de cloud.
  • Compatibiliteit met veel andere bibliotheken zoals Ray Tune en FastAPI.

Als je wilt leren hoe je Ray Serve en Ray Tune samen in je PyTorch-workflow kunt integreren, bekijk dan de documentatie voor een volledig codevoorbeeld.

RLlib


Afbeelding voor bericht
RLlib biedt manieren om bijna alle aspecten van training aan te passen, inclusief neurale netwerkmodellen, actieverdelingen, beleidsdefinities, omgevingen en het monsterverzamelingsproces.

RLlib is een bibliotheek voor reinforcement learning die zowel een hoge schaalbaarheid als een uniforme API biedt voor een verscheidenheid aan toepassingen. Enkele voordelen zijn:

  • Native ondersteuning voor PyTorch, TensorFlow Eager en TensorFlow (1.x en 2.x).
  • Ondersteuning voor modelvrije, modelgebaseerde, evolutionaire, planningsalgoritmen en algoritmen voor meerdere agenten
  • Ondersteuning voor complexe modeltypes, zoals aandachtsnetten en LSTM-stapels via eenvoudige configuratievlaggen en auto-wrappers
  • Compatibiliteit met andere bibliotheken zoals Ray Tune.

Clusterstarter


Afbeelding voor bericht
De Ray Cluster Launcher vereenvoudigt het proces van lancering en schaalvergroting binnen elk cluster of cloudprovider.

Als je eenmaal een applicatie op je laptop hebt ontwikkeld en deze wilt opschalen naar de cloud (misschien met meer data of meer GPU's), zijn de vervolgstappen niet altijd duidelijk. Het proces is om het door een infrastructuurteam te laten opzetten of om de volgende stappen te doorlopen.

1. Kies een cloudprovider (AWS, GCP of Azure).

2. Navigeer door de beheerconsole om instantietypen, beveiligingsgroepen, spotprijzen, instantielimieten en meer in te stellen.

3. Zoek uit hoe u uw Python-script over een cluster kunt distribueren.

Een eenvoudigere benadering is om de Ray Cluster Launcher om machines te lanceren en te schalen binnen elke cluster of cloudprovider​ Met Cluster Launcher kunt u automatisch schalen, bestanden synchroniseren, scripts indienen, doorsturen en meer. Dit betekent dat u uw Ray-clusters op Kubernetes, AWS, GCP, Azure of een privécluster kunt uitvoeren zonder dat u de details op laag niveau van clusterbeheer hoeft te begrijpen.


Conclusie


Afbeelding voor bericht
Ray biedt een gedistribueerde computerbasis voor De Fusion Engine van Ant Group.

Dit artikel bevatte enkele van de voordelen van Ray in het PyTorch-ecosysteem. straal wordt gebruikt voor een breed scala aan toepassingen van Ant Group gebruikt Ray om zijn financiële zaken te ondersteunen, te LinkedIn met Ray op Yarn, te Pathmind gebruikt Ray om versterking van leren te koppelen aan simulatiesoftware, en meer. Als je vragen of gedachten hebt over Ray of er meer over wilt weten parallelle en gedistribueerde Python, word alsjeblieft lid van onze community via Redevoering or Slack.

 
ORIGINELE. Met toestemming opnieuw gepost.

Zie ook:

Afrekenen PrimeXBT
Handel met de officiële CFD-partners van AC Milan
De eenvoudigste manier om crypto te verhandelen.
Bron: https://www.kdnuggets.com/2021/03/getting-started-distributed-machine-learning-pytorch-ray.html

spot_img

Laatste intelligentie

spot_img