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
atorchtext.models
pro datové sady a zpracování v oblasti zpracování přirozeného jazykatorchvision.datasets
atorchvision.models
pro obrazové datové sady a předpřipravené modely pro úlohy počítačového viděnítorchaudio.datasets
atorchaudio.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í!