Horovod

Horovod zjednodušuje distribuovaný deep learning a umožňuje efektivní škálování napříč GPU nebo stroji s minimálními změnami kódu a širokou podporou frameworků.

Horovod je navržen tak, aby optimalizoval rychlost, škálovatelnost a alokaci zdrojů při trénování modelů strojového učení. Jeho hlavní mechanismus—algoritmus Ring-AllReduce—efektivně zvládá datovou komunikaci a minimalizuje potřebné změny kódu při přechodu z prostředí s jedním uzlem na více uzlů.

Historický kontext

Horovod byl představen společností Uber v roce 2017 jako součást interní ML-as-a-service platformy Michelangelo. Nástroj vznikl kvůli neefektivnímu škálování standardního distribuovaného TensorFlow řešení, které nestačilo na rozsáhlé potřeby Uberu. Architektura Horovodu byla navržena s cílem dramaticky zkrátit dobu trénování a umožnit bezproblémové distribuované učení.

Horovod je nyní spravován pod AI Foundation Linux Foundation, což odráží jeho široké přijetí a trvalý vývoj v komunitě open-source.

Hlavní vlastnosti

  1. Nezávislost na frameworku
    Integruje se s více deep learning frameworky, což umožňuje vývojářům používat jednotný přístup k distribuovanému trénování napříč různými nástroji. To snižuje nutnost učit se nové postupy pro jiné prostředí.

  2. Algoritmus Ring-AllReduce
    Klíčová část efektivity Horovodu—tento algoritmus provádí průměrování gradientů napříč uzly s minimální potřebou šířky pásma a snižuje komunikační režii při rozsáhlém trénování.

  3. Snadné použití
    Usnadňuje přechod z trénování na jednom GPU na více GPU s minimálními změnami kódu. Obaluje stávající optimalizátory a pro komunikaci mezi procesy používá Message Passing Interface (MPI).

  4. Podpora GPU
    Využívá knihovnu NVIDIA NCCL pro optimalizaci komunikace mezi GPU, což zajišťuje rychlé přenosy dat a efektivní správu paměti—klíčové pro rozsáhlé a vysoce dimenzionální datasety.

Instalace a nastavení

Pro instalaci Horovodu:

  • Požadavky:

    • GNU Linux nebo macOS
    • Python 3.6+
    • CMake 3.13+
  • Instalační příkaz:

    pip install horovod[tensorflow,keras,pytorch,mxnet]
    
  • Framework-specifické proměnné prostředí:
    Nastavte proměnné prostředí jako HOROVOD_WITH_TENSORFLOW=1 pro kontrolu podpory frameworku během instalace.

Případy užití

Horovod se široce využívá tam, kde je potřeba rychlá iterace a trénování modelů:

  • AI automatizace a chatboti:
    V AI aplikacích jako chatboti umožňuje rychlejší trénování NLP modelů a zrychluje vývojové cykly produktů.

  • Samořiditelná auta:
    V Uberu je Horovod využíván při vývoji ML modelů pro autonomní vozidla, kde rozsáhlé datasety a složité modely vyžadují distribuované trénování.

  • Detekce podvodů a predikce:
    Efektivita Horovodu s velkými datasety jej činí ideálním pro finanční služby a e-commerce platformy, kde je potřeba rychlé trénování modelů pro transakční data, detekci podvodů a predikci trendů.

Příklady a ukázky kódu

Příklad: Integrace Horovodu do TensorFlow trénovacího skriptu:

import tensorflow as tf
import horovod.tensorflow as hvd

# Inicializace Horovodu
hvd.init()

# Připnutí GPU podle lokálního ranku procesu
config = tf.ConfigProto()
config.gpu_options.visible_device_list = str(hvd.local_rank())

# Sestavení modelu
model = ...  # Definujte svůj model zde
optimizer = tf.train.AdagradOptimizer(0.01)

# Přidání Horovod Distributed Optimizer
optimizer = hvd.DistributedOptimizer(optimizer)

# Broadcast počátečních stavů proměnných z ranku 0 na ostatní procesy
hvd.broadcast_global_variables(0)

# Trénovací smyčka
for epoch in range(num_epochs):
    # Trénovací kód zde
    ...

Pokročilé vlastnosti

  • Horovod Timeline:
    Profiluje distribuované trénovací úlohy pro identifikaci výkonnostních úzkých míst. Pozn.: Aktivace této funkce může snížit propustnost—používejte rozumně.

  • Elastické trénování:
    Podporuje dynamické přizpůsobení prostředků během trénování—zvláště užitečné v cloudových prostředích, kde se dostupné zdroje mohou měnit.

Komunita a příspěvky

Horovod je hostován na GitHubu a má silnou komunitu přispěvatelů i uživatelů. Jako součást Linux Foundation AI jsou vývojáři vítáni k přispívání na jeho dalším rozvoji. S více než 14 000 hvězdičkami a mnoha forky komunita Horovodu podtrhuje jeho významnou roli v oblasti distribuovaného trénování.

Horovod: Zlepšení distribuovaného deep learningu

Horovod zjednodušuje distribuovaný deep learning a řeší dvě hlavní výzvy škálování: komunikační režii a úpravy kódu.

  • Efektivní komunikace mezi GPU:
    Vyvinutý Alexandrem Sergejevem a Mikem Del Balso, Horovod využívá ring redukci pro komunikaci mezi GPU, což významně snižuje nutné změny v kódu při přechodu na distribuované trénování.

  • Dostupnost:
    Umožňuje rychlejší a dostupnější distribuované trénování v TensorFlow i dalších frameworcích, takže výzkumníci mohou snadněji přejít od trénování na jednom GPU.

  • Zjistěte více:
    Pro hlubší vhled viz článek “Horovod: fast and easy distributed deep learning in TensorFlow.”

Výzkum: Horovod při rozsáhlém trénování

  • Trénování NLP modelů:
    Studie “Modern Distributed Data-Parallel Large-Scale Pre-training Strategies For NLP models” od Hao Bai zkoumá data-paralelní trénování s využitím PyTorch a Horovodu. Studie vyzdvihuje robustnost Horovodu, zvláště v kombinaci se strategií Apex mixed-precision, což jej činí efektivním pro velké modely jako GPT-2 se 100 miliony parametrů.

  • Dynamické plánování:
    Studie “Dynamic Scheduling of MPI-based Distributed Deep Learning Training Jobs” od Tima Capese a kol. se zabývá dynamickým plánováním deep learning úloh s využitím ring architektury Horovodu. Výsledky ukazují, že umožňuje efektivní zastavování a restartování úloh, zkracuje celkový čas dokončení a prokazuje flexibilitu pro složité deep learning úkoly.

Často kladené otázky

Co je Horovod?

Horovod je open-source framework pro distribuovaný deep learning vyvinutý společností Uber pro zjednodušení trénování na více GPU a více strojích. Podporuje TensorFlow, Keras, PyTorch a MXNet.

Jak Horovod optimalizuje distribuované trénování?

Horovod používá algoritmus Ring-AllReduce k efektivnímu průměrování gradientů napříč uzly a minimalizuje komunikační režii i potřebné úpravy kódu pro škálovatelné trénování.

Jaké jsou typické případy užití Horovodu?

Horovod se využívá v automatizaci pomocí AI, chatbotech, samořiditelných autech, detekci podvodů a všude tam, kde je potřeba rychlé a rozsáhlé trénování modelů.

Kdo nyní Horovod spravuje?

Horovod je nyní spravován pod Linux Foundation AI a na jeho vývoji se podílí silná komunita open-source vývojářů.

Co je potřeba k instalaci Horovodu?

Horovod vyžaduje GNU Linux nebo macOS, Python 3.6 nebo novější a CMake 3.13+. Instalovat jej lze přes pip s volbami pro podporované frameworky.

Připraveni stavět vlastní AI?

Začněte vytvářet vlastní AI řešení s výkonnými nástroji a hladkými integracemi FlowHunt.

Zjistit více

Caffe

Caffe

Caffe je open-source framework pro hluboké učení od BVLC, optimalizovaný pro rychlost a modularitu při tvorbě konvolučních neuronových sítí (CNN). Široce využív...

5 min čtení
Caffe Deep Learning +4
Chainer

Chainer

Chainer je open-source framework pro hluboké učení, který nabízí flexibilní, intuitivní a vysoce výkonnou platformu pro neuronové sítě, s dynamickými grafy defi...

4 min čtení
Deep Learning AI +4
PyTorch

PyTorch

PyTorch je open-source framework strojového učení vyvinutý týmem Meta AI, známý svou flexibilitou, dynamickými výpočetními grafy, akcelerací na GPU a bezproblém...

8 min čtení
PyTorch Deep Learning +4