Horovod

Distributed Training Deep Learning Machine Learning Multi-GPU

Horovod er konstrueret til at optimere hastighed, skalerbarhed og ressourceallokering under træning af maskinlæringsmodeller. Dets kerne – Ring-AllReduce-algoritmen – håndterer effektivt datakommunikation og minimerer de kodeændringer, der kræves for at skalere fra enkelt-node til multi-node-miljøer.

Historisk kontekst

Horovod blev introduceret af Uber i 2017 som en del af deres interne ML-as-a-service-platform, Michelangelo. Værktøjet blev skabt for at løse skaleringsproblemer med standardopsætningen for distribueret TensorFlow, som ikke var tilstrækkelig til Ubers omfattende behov. Horovods arkitektur blev designet til at reducere træningstider dramatisk og muliggøre problemfri distribueret træning.

Horovod vedligeholdes nu under Linux Foundation’s AI Foundation, hvilket afspejler dets brede accept og fortsatte udvikling i open source-miljøet.

Nøglefunktioner

  1. Rammeuafhængig
    Integrerer med flere deep learning-rammer, så udviklere kan bruge en ensartet tilgang til distribueret træning på tværs af forskellige værktøjer. Dette reducerer læringskurven for udviklere, der kender én ramme, men har brug for at arbejde i forskellige miljøer.

  2. Ring-AllReduce-algoritme
    Kernen i Horovods effektivitet – denne algoritme udfører gradientgennemsnit på tværs af noder med minimalt båndbreddeforbrug og reducerer kommunikationsomkostninger ved storskala træning.

  3. Brugervenlighed
    Forenkler overgangen fra enkelt-GPU til multi-GPU træning med minimale kodeændringer. Omslutter eksisterende optimeringsværktøjer og bruger Message Passing Interface (MPI) til kommunikation på tværs af processer.

  4. GPU-bevidsthed
    Udnytter NVIDIA’s NCCL-bibliotek til at optimere kommunikation mellem GPU’er for højhastighedsdataoverførsler og effektiv hukommelsesstyring – afgørende for store, høj-dimensionelle datasæt.

Installation og opsætning

For at installere Horovod:

  • Krav:

    • GNU Linux eller macOS
    • Python 3.6+
    • CMake 3.13+
  • Installationskommando:

    pip install horovod[tensorflow,keras,pytorch,mxnet]
    
  • Rammespecifikke miljøvariabler:
    Angiv miljøvariabler som HOROVOD_WITH_TENSORFLOW=1 for at styre rammeunderstøttelse under installationen.

Anvendelsestilfælde

Horovod bruges bredt i scenarier, hvor der kræves hurtig modeliteration og træning:

  • AI-automatisering og chatbots:
    I AI-baserede applikationer som chatbots betyder hurtigere NLP-modeltræning hurtigere produktudrulning.

  • Selvkørende biler:
    Hos Uber bruges Horovod til at udvikle ML-modeller til autonome køretøjer, hvor store datasæt og komplekse modeller nødvendiggør distribueret træning.

  • Bedrageridetektion og prognoser:
    Horovods effektivitet med store datasæt gør den ideel til finansielle tjenester og e-handelsplatforme, der har brug for hurtig modeltræning til transaktionsdata, bedrageridetektion og trendprognoser.

Eksempler og kodeudsnit

Eksempel: Integration af Horovod i et TensorFlow-træningsscript:

import tensorflow as tf
import horovod.tensorflow as hvd

# Initialiser Horovod
hvd.init()

# Fastlås GPU til at blive brugt til at behandle lokal rang
config = tf.ConfigProto()
config.gpu_options.visible_device_list = str(hvd.local_rank())

# Byg model
model = ...  # Definer din model her
optimizer = tf.train.AdagradOptimizer(0.01)

# Tilføj Horovod Distributed Optimizer
optimizer = hvd.DistributedOptimizer(optimizer)

# Udsend initiale variabeltilstande fra rang 0 til alle andre processer
hvd.broadcast_global_variables(0)

# Træningsloop
for epoch in range(num_epochs):
    # Træningskode her
    ...

Avancerede funktioner

  • Horovod Timeline:
    Profilerer distribuerede træningsjobs for at identificere flaskehalse i ydeevnen. Bemærk: aktivering kan reducere throughput – brug det med omtanke.

  • Elastisk træning:
    Understøtter dynamisk justering af ressourcer under træning – særligt nyttigt i cloud-miljøer, hvor ressourcer kan variere.

Fællesskab og bidrag

Horovod hostes på GitHub med et stærkt fællesskab af bidragsydere og brugere. Som en del af Linux Foundation AI opfordres udviklere til at bidrage til den løbende udvikling. Med over 14.000 stjerner og adskillige forgreninger understreger Horovods fællesskabsengagement dens centrale rolle i distribueret træning.

Horovod: Forbedrer distribueret deep learning

Horovod strømliner distribueret deep learning og adresserer to store skaleringsudfordringer: kommunikationsomkostninger og kodeændringer.

  • Effektiv kommunikation mellem GPU’er:
    Udviklet af Alexander Sergeev og Mike Del Balso benytter Horovod ring-reduktion til kommunikation mellem GPU’er, hvilket markant reducerer de kodeændringer, der kræves til distribueret træning.

  • Tilgængelighed:
    Muliggør hurtigere og mere tilgængelig distribueret træning i TensorFlow og andre rammer, så forskere lettere kan komme ud over enkelt-GPU-træning.

  • Læs mere:
    For dybere indsigt, se artiklen “Horovod: fast and easy distributed deep learning in TensorFlow.”

Forskning: Horovod til storskala træning

  • NLP-modeltræning:
    Artiklen “Modern Distributed Data-Parallel Large-Scale Pre-training Strategies For NLP models” af Hao Bai udforsker dataparallel træning med PyTorch og Horovod. Studiet fremhæver Horovods robusthed, især i kombination med Apex mixed-precision-strategi, hvilket gør den effektiv til store modeller som GPT-2 med 100M parametre.

  • Dynamisk planlægning:
    Artiklen “Dynamic Scheduling of MPI-based Distributed Deep Learning Training Jobs” af Tim Capes m.fl. undersøger dynamisk planlægning af deep learning-jobs ved brug af Horovods ring-arkitektur og viser, at det muliggør effektiv stop og genstart af jobs, reducerer samlet gennemførselstid og demonstrerer tilpasningsevne til komplekse deep learning-opgaver.

Ofte stillede spørgsmål

Hvad er Horovod?

Horovod er en open source-ramme til distribueret deep learning, udviklet af Uber for at forenkle multi-GPU- og multi-maskine-træning, med understøttelse af TensorFlow, Keras, PyTorch og MXNet.

Hvordan optimerer Horovod distribueret træning?

Horovod bruger Ring-AllReduce-algoritmen til effektivt at gennemsnitliggøre gradienter på tværs af noder og minimere kommunikationsomkostninger og kodeændringer for skalerbar træning.

Hvad er typiske anvendelsestilfælde for Horovod?

Horovod bruges i AI-automatisering, chatbots, selvkørende biler, bedrageridetektion og alle scenarier, hvor der kræves hurtig, storskala modeltræning.

Hvem vedligeholder Horovod nu?

Horovod vedligeholdes under Linux Foundation AI, med et stærkt open source-fællesskab, der bidrager til udviklingen.

Hvad kræves for at installere Horovod?

Horovod kræver GNU Linux eller macOS, Python 3.6 eller nyere og CMake 3.13+. Det kan installeres via pip med flag for rammeunderstøttelse.

Klar til at bygge din egen AI?

Begynd at bygge dine egne AI-løsninger med FlowHunts kraftfulde værktøjer og problemfri integrationer.

Lær mere

Caffe
Caffe

Caffe

Caffe er et open source deep learning-rammeværk fra BVLC, optimeret til hastighed og modularitet ved opbygning af convolutional neural networks (CNNs). Caffe an...

5 min læsning
Caffe Deep Learning +4
Chainer
Chainer

Chainer

Chainer er et open source deep learning-rammeværk, der tilbyder en fleksibel, intuitiv og højtydende platform til neurale netværk med dynamiske define-by-run gr...

3 min læsning
Deep Learning AI +4