====== Pipeline (Potrubí) ====== **Pipeline** je sekvence prvků pro zpracování dat, uspořádaná tak, aby výstup každého prvku byl vstupem dalšího. Hlavním cílem je **automatizace, efektivita a paralelizace** úkolů. V moderním IT se s tímto pojmem setkáváme ve třech hlavních oblastech: ===== 1. Shell Pipeline (Linux/Unix) ===== V příkazové řádce se pro pipeline používá znak svislítka **|**. Umožňuje propojit malé, jednoúčelové nástroje do komplexních řetězců. * **Příklad:** ''cat log.txt | grep "ERROR" | wc -l'' 1. ''cat'' načte soubor. 2. ''grep'' vyfiltruje řádky s chybou. 3. ''wc -l'' spočítá jejich počet. ===== 2. CI/CD Pipeline (Software Engineering) ===== V rámci DevOps je pipeline automatizovaný proces, který kód programátora "protlačí" přes několik fází až k uživateli: * **Build:** Kompilace kódu. * **Test:** Automatické spuštění unit a integračních testů. * **Deploy:** Nasazení do testovacího nebo produkčního prostředí. Nástroje jako **Jenkins, GitLab CI, GitHub Actions** nebo **Azure DevOps** umožňují tyto kroky definovat jako kód (Pipeline as Code). ===== 3. Data & ML Pipeline (Data Science) ===== V oblasti [[it_encyklopedie:machine_learning|strojového učení]] pipeline zajišťuje, že data protékají systémem bezpečně a reprodukovatelně: * **Ingest:** Sběr dat z různých zdrojů do [[it_encyklopedie:data_lake|datového jezera]]. * **Preprocessing:** Čištění, normalizace a transformace dat. * **Training:** Výpočet parametrů modelu na [[it_encyklopedie:gpu|GPU]] nebo [[it_encyklopedie:tpu|TPU]]. * **Evaluation:** Ověření přesnosti modelu. Díky pipeline (např. v **Kubeflow** nebo **Apache Airflow**) lze celý proces trénování AI zopakovat stisknutím jednoho tlačítka. ===== 4. Hardware Pipeline (CPU) ===== Na úrovni procesoru znamená pipelining techniku, kdy procesor začne zpracovávat novou instrukci dříve, než dokončí tu předchozí (podobně jako na montážní lince v továrně). To výrazně zvyšuje propustnost procesoru. ===== 5. Hlavní výhody ===== * **Modularita:** Každý krok pipeline lze vyvíjet a testovat samostatně. * **Rychlost:** Kroky mohou běžet paralelně (zatímco se jedna část dat čistí, druhá už se trénuje). * **Snížení chybovosti:** Automatizace eliminuje lidský faktor při opakujících se úkonech (např. ruční kopírování souborů na server). > **Zajímavost:** Koncept pipeline zpopularizoval Douglas McIlroy pro systém Unix. Jeho filosofie byla: "Pište programy tak, aby dělaly jednu věc a dělaly ji dobře. Pište programy tak, aby spolupracovaly. Pište programy tak, aby zpracovávaly textové proudy, protože to je univerzální rozhraní." [[it_encyklopedie:it_architektura_rozcestnik|Zpět na Rozcestník]]