Který rámec hlubokého učení použít?

Pokud se orientujete v oblasti hlubokého učení, jistě jste se již setkali s debatou mezi PyTorch a TensorFlow.

PyTorch a TensorFlow patří k nejpopulárnějším frameworkům pro hluboké učení. Tento průvodce poskytuje komplexní srovnání klíčových vlastností obou frameworků, aby vám pomohl vybrat ten nejvhodnější pro váš nadcházející projekt.

V tomto článku si nejprve představíme oba frameworky: PyTorch a TensorFlow a poté shrneme jejich nabízené funkce.

Začněme!

Co je PyTorch?

PyTorch je framework s otevřeným zdrojovým kódem určený pro vytváření modelů strojového učení a hlubokého učení pro různé aplikace, včetně zpracování přirozeného jazyka a počítačového vidění.

Jedná se o framework v Pythonu, vyvinutý společností Meta AI (dříve Facebook AI) v roce 2016. Jeho základem je Torch, knihovna napsaná v Lua.

Nedávno společnost Meta AI uvedla na trh PyTorch 2.0. Nová verze přináší vylepšenou podporu pro distribuované trénování, kompilaci modelů a grafové neuronové sítě (GNN).

Co je TensorFlow?

TensorFlow, představený v roce 2014, je komplexní systém strojového učení s otevřeným zdrojovým kódem od společnosti Google. Zahrnuje funkce pro přípravu dat, nasazení modelů a MLOps.

S TensorFlow získáte podporu pro vývoj napříč platformami a přímou podporu pro všechny fáze životního cyklu strojového učení.

PyTorch vs. TensorFlow

PyTorch i TensorFlow jsou velmi oblíbené frameworky v komunitě hlubokého učení. Pro většinu aplikací, na kterých chcete pracovat, oba tyto frameworky poskytují komplexní podporu.

Zdroj obrázku: star-history.com

Následující shrnutí klíčových funkcí PyTorch a TensorFlow vám pomůže určit, ve kterých situacích byste měli preferovat jeden framework před druhým.

#1. Knihovna datových sad a předtrénovaných modelů

Dobře navržený framework pro hluboké učení by měl být dobře vybaven. Často není nutné kódovat model od nuly. Místo toho můžete využít existující předtrénované modely a doladit je pro vaše specifické potřeby.

Stejně tak je výhodné mít snadný přístup k běžně používaným datovým sadám. To urychluje sestavování experimentálních modelů, bez nutnosti zdlouhavého nastavování sběru dat nebo importování a čištění dat z různých zdrojů.

Z tohoto důvodu je žádoucí, aby tyto frameworky nabízely datové sady a předtrénované modely, což umožňuje rychleji vytvořit základní model.

Datové sady a modely PyTorch

PyTorch nabízí knihovny jako torchtext, torchaudio a torchvision pro úlohy zpracování NLP, zvuku a obrazu. Při práci s PyTorch můžete tedy využít datové sady a modely poskytované těmito knihovnami, včetně:

  • torchtext.datasets a torchtext.models pro datové sady a zpracování v oblasti zpracování přirozeného jazyka
  • torchvision.datasets a torchvision.models pro obrazové datové sady a předpřipravené modely pro úlohy počítačového vidění
  • torchaudio.datasets a torchaudio.models pro datové sady, předpřipravené modely a nástroje pro strojové učení zvuku

Datové sady a modely TensorFlow

Kromě toho můžete pro modely PyTorch i TensorFlow prozkoumat HuggingFace Model Hub.

#2. Podpora pro nasazení

V diskusi o PyTorch vs. TensorFlow je podpora nasazení často klíčovým bodem.

Model strojového učení, který funguje skvěle v lokálním vývojovém prostředí, je dobrý začátek. Pro získání hodnoty z modelů strojového učení je však zásadní nasadit je do produkčního prostředí a průběžně je monitorovat.

V této části se podíváme na funkce, které PyTorch i TensorFlow nabízejí pro nasazení modelů strojového učení do produkce.

TensorFlow Extended (TFX)

TensorFlow Extended, zkráceně tfx, je framework pro nasazení postavený na TensorFlow. Poskytuje nástroje pro organizaci a správu kanálů strojového učení, včetně ověřování dat a jejich transformace.

S TensorFlow Serving můžete nasadit modely strojového učení v produkčních prostředích.

TorchServe

Běžně se uvádí, že PyTorch je populární ve výzkumné komunitě, zatímco TensorFlow je oblíbenější v průmyslu. V současnosti však oba frameworky našly široké uplatnění.

Podobně jako TensorFlow Serving nabízí PyTorch TorchServe, framework pro snadné nasazení modelů PyTorch v produkci. Navíc můžete použít TensorFlow Lite pro nasazení modelů na mobilních a dalších okrajových zařízeních.

Přestože oba frameworky poskytují podporu pro nasazení, TensorFlow nabízí nativní podporu pro nasazení modelů. Z tohoto důvodu bývá preferovanou volbou v produkčním prostředí.

#3. Funkce pro interpretovatelnost modelu

Modely hlubokého učení jsou používány v oblastech jako zdravotnictví a finance. Pokud jsou tyto modely však „černou skříňkou“ bez možnosti interpretace předpovědí, vzniká problém s jejich důvěryhodností.

To vedlo ke vzniku interpretovatelného strojového učení (nebo vysvětlitelného ML), které se snaží objasnit, jak fungují neuronové sítě a další modely strojového učení.

Interpretovatelnost je proto klíčová pro hluboké učení a pro lepší pochopení vnitřního fungování neuronových sítí. Podívejme se, jaké funkce pro interpretaci modelů nabízejí PyTorch a TensorFlow.

PyTorch Captum

PyTorch Captum je knihovna pro interpretovatelnost modelů, která nabízí několik funkcí pro interpretaci modelů.

Mezi tyto funkce patří metody atribuce, jako jsou:

  • Integrované gradienty
  • LIME, SHAP
  • DeepLIFT
  • GradCAM a varianty
  • Metody atribuce vrstev

TensorFlow Explain (tf-explain)

TensorFlow Explain (tf-explain) je knihovna poskytující funkce pro interpretovatelnost neuronových sítí, včetně:

  • Integrované gradienty
  • GradCAM
  • SmoothGrad
  • Vanilla gradienty a další

Nyní, když jsme se podívali na funkce pro interpretovatelnost, přejděme k dalšímu důležitému aspektu, kterým je soukromí.

#4. Podpora pro strojové učení se zachováním soukromí

Užitečnost modelů strojového učení závisí na přístupu k datům z reálného světa. To však přináší riziko ohrožení soukromí dat. V poslední době došlo k významnému pokroku v technikách strojového učení, které chrání soukromí, jako je diferenciální soukromí a federované učení.

PyTorch Opacus

Diferenciálně privátní trénink modelů zajišťuje, že se model naučí užitečné informace z datové sady jako celku, aniž by ohrozil soukromí jednotlivých záznamů.

PyTorch Opacus vám umožní trénovat modely s diferenciálním soukromím. Chcete-li se dozvědět více o tom, jak implementovat diferenciálně soukromý trénink modelu, podívejte se na úvod do Opacus.

TensorFlow Federated

Federované učení eliminuje potřebu centralizované entity pro sběr a zpracování dat. Data nikdy neopustí vlastníka nebo prostředí. Proto federované učení usnadňuje lepší správu dat.

TensorFlow Federated poskytuje funkce pro trénování modelů strojového učení na decentralizovaných datech.

#5. Snadnost učení

PyTorch je pythonic framework pro hluboké učení. Pohodlné kódování v PyTorch vyžaduje pokročilejší znalosti jazyka Python, včetně dobrého pochopení konceptů objektově orientovaného programování, jako je dědičnost.

Na druhou stranu s TensorFlow můžete používat Keras API. Toto API na vyšší úrovni abstrahuje některé detaily implementace na nižší úrovni. Výsledkem je, že pokud s budováním modelů hlubokého učení teprve začínáte, může se vám zdát snazší použití Kerasu.

PyTorch vs. TensorFlow: Přehled

Probrali jsme funkce PyTorch a TensorFlow. Zde je komplexní srovnání:

Funkce PyTorch TensorFlow
Datové sady a předtrénované modely Knihovny torchtext, torchaudio a torchvision Rozsáhlá knihovna datových sad a předtrénovaných modelů
Nasazení TorchServe pro obsluhu modelů TensorFlow Serving a TensorFlow Lite pro obsluhu modelů
Interpretovatelnost PyTorch Captum TensorFlow Explain (tf-explain)
Strojové učení se zachováním soukromí PyTorch Opacus TensorFlow Federated
Snadnost učení Vyžaduje pokročilejší znalosti Pythonu Relativně jednodušší se naučit a používat

Výukové zdroje

Na závěr si projdeme několik užitečných zdrojů pro učení se PyTorch a TensorFlow. Nejedná se o vyčerpávající seznam, ale spíše o výběr zdrojů, které vám pomohou rychle se zorientovat v obou frameworcích.

#1. Hluboké učení s PyTorchem: 60minutový bleskový útok

60minutový bleskový tutoriál na oficiálních stránkách PyTorch je skvělý zdroj pro začátečníky, jak se naučit PyTorch.

Tento tutoriál vám pomůže naučit se základy PyTorch, jako jsou tenzory a autograd, a vytvořit základní neuronovou síť pro klasifikaci obrázků pomocí PyTorch.

#2. Hluboké učení s PyTorch: Zero to GANs

Deep Learning with PyTorch: Zero to GANs od Jovian.ai je dalším komplexním zdrojem pro výuku hlubokého učení s PyTorch. Během přibližně šesti týdnů se můžete naučit:

  • Základy PyTorch: tenzory a gradienty
  • Lineární regresi v PyTorch
  • Vytváření hlubokých neuronových sítí, ConvNetů a ResNetů v PyTorch
  • Vytváření generativních adversariálních sítí (GAN)

#3. Kompletní kurz TensorFlow 2.0

Pokud se chcete naučit TensorFlow, kompletní kurz TensorFlow 2.0 na komunitním kanálu freeCodeCamp vám s tím pomůže.

#4. TensorFlow – Python Deep Learning Neural Network API od DeepLizard

Dalším skvělým kurzem TensorFlow pro začátečníky je kurz od DeepLizard. V tomto kurzu TensorFlow pro začátečníky se naučíte základy hlubokého učení, včetně:

  • Načítání a předzpracování datových sad
  • Vytváření jednoduchých neuronových sítí
  • Vytváření konvolučních neuronových sítí (CNN)

Závěr

Tento článek vám poskytl přehled o PyTorch a TensorFlow na vysoké úrovni. Volba optimálního frameworku bude záviset na projektu, na kterém pracujete. Dále je třeba vzít v úvahu podporu pro nasazení, vysvětlitelnost a další faktory.

Jste programátor v Pythonu a chcete se naučit tyto frameworky? Pokud ano, zvažte prozkoumání některého z výše uvedených zdrojů.

A pokud vás zajímá NLP, podívejte se na tento seznam kurzů zpracování přirozeného jazyka. Přejeme vám úspěšné učení!