Z notebooku na server: Základní pravidla
Přechod od kódu na osobním počítači k výpočtům na výkonném serveru je kritickým krokem vývoje. Servery jsou výkonné, ale ladění chyb (debugging) je na nich obtížné, jejich hledání pomalé a je to plýtvání sdílenými zdroji což je nákladné. Abyste ušetřili čas a předešli problémům, dodržujte tento třístupňový pracovní postup.
1. Lokální vývoj a ověření správnosti
Cíl: Zajistit, že logika funguje a kód nepadá.
Než se vůbec přihlásíte na server, měl by být váš kód napsán a otestován na vašem lokálním počítači. Opravování chyb a kontrola proměnných je na vlastní stanici mnohem snazší.
- Použijte testovací data: Nesnažte se na notebooku zpracovat celý dataset. Vytvořte si malý "zkušební" dataset (např. jen 10 řádků dat nebo 5 obrázků), který strukturou odpovídá skutečným datům.
- Odladění logiky: Spusťte skript nad těmito zkušebními daty. Pokud kód selže zde, určitě selže i na serveru. Opravte všechny syntaktické a logické chyby nyní.
- Ověření výstupu: Zkontrolujte, zda jsou výsledky vygenerované z testovacích dat matematicky a logicky správné.
Připravte kód pro běh na serveru. Na výpočetním clusteru nemůžete svůj program spouštět kdy chcete. Musíte se zařadit do fronty úkolů na zpracování. Na toto je potřeba kód připravit.
- Výpis záznamu běhu programu (log): Pokud se přecejen něco v průběhu výpočtu pokazí váš program vás o tom musí informovat. Na význačná místa v běhu programu vypisujte zprávu že tam program dorazil. Vypisujte všechny chyby nebo nesrovnalosti. Toto vám pomůže při odhalení co se mohlo pokazit pokud se to pokazí.
- Argumenty z příkazové řádky: Připravte váš kód aby načítal parametry důležité pro váš problém z příkazové řádky. V Pythonu lze použít modul
argparsejak je popsáno v Zaklady prace s PyTorch.
2. Otestování malého příkladu na serveru
Cíl: Ověření prostředí a konfigurace.
Jakmile kód funguje perfektně na notebooku, nahrajte jej na server. Nespouštějte však ještě plný výpočet. Servery mají často jiný operační systém, cesty k souborům nebo verze knihoven než váš počítač.
- Zkušební běh: Spusťte kód na serveru s použitím stejných "zkušebních" dat jako v kroku 1.
- Kontrola závislostí: Tento krok potvrdí, že všechny potřebné knihovny (např. PyTorch nebo Pandas) jsou nainstalovány a správně se načítají.
- Kontrola cest: Ujistěte se, že kód dokáže číst vstupní soubory a zapisovat výstupy do správných adresářů na serveru.
3. Spuštění plného výpočtu (Produkce)
Cíl: Provedení náročného výpočtu.
Teprve poté, co kód projde lokálním testem (logika je správná) a pilotním testem na serveru (prostředí je správné), spusťte plný produkční běh.
- Plný dataset: Přepněte cestu vstupu z testovacích dat na plný dataset.
- Logování: Zajistěte, aby kód vypisoval průběh (např. "Zpracování dávky 10 z 1000"), abyste věděli, že program "nezamrzl".
- Ukládání: Pokud úloha trvá dny, naprogramujte kód tak, aby ukládal průběžné výsledky (checkpointy) každých pár hodin. V případě výpadku serveru tak nepřijdete o všechnu práci.