Conda¶
Conda je nástroj s otvoreným zdrojovým kódom na správu balíkov a prostredí, ktorý zjednodušuje inštaláciu softvérových balíkov a vytváranie izolovaných softvérových prostredí. Hoci bol pôvodne navrhnutý pre Python, dokáže spravovať balíky pre mnohé programovacie jazyky.
Používanie Conda umožňuje používateľom udržiavať samostatné prostredia s rôznymi verziami softvéru, čo je obzvlášť užitočné pri práci na viacerých projektoch alebo v prípade, že sa závislosti jednotlivých projektov navzájom rozchádzajú.
Architektúrne špecifické prostredia
Perun ponúka x86_64 CPU uzly aj ARM64 (AArch64) GPU uzly založené na procesoroch NVIDIA Grace Hopper.
Conda prostredia sú architektúrne špecifické. Prostredie vytvorené na prihlasovacích uzloch (x86_64) sa zvyčajne nedá použiť na GPU uzloch (AArch64) a naopak.
Ak máte v úmysle spúšťať softvér na GPU uzloch, vytvorte Conda prostredie priamo na GPU uzle:
srun --partition=gpu --gres=gpu:1 --pty bash
conda create --name myenv python=3.12
Rovnako prostredia vytvorené na GPU uzloch by sa mali používať iba na GPU uzloch.
YAML súbory prostredí je možné zdieľať medzi architektúrami, samotné prostredie však musí byť vytvorené samostatne pre každú architektúru.
Distribúcie Conda¶
Správca balíkov Conda je dostupný v dvoch hlavných distribúciách.
Miniconda
- minimálna inštalácia Conda,
- obsahuje iba základ systému Conda,
- používateľ si manuálne inštaluje ďalšie balíky.
Anaconda
- kompletná vedecká distribúcia Pythonu,
- obsahuje stovky bežne používaných balíkov,
- má väčšiu inštalačnú stopu.

Pre HPC prostredia sa zvyčajne odporúča Miniconda, pretože udržiava inštaláciu malú a umožňuje používateľom nainštalovať iba balíky, ktoré potrebujú.
Inštalácia Miniconda3¶
Inštalátor Miniconda je možné stiahnuť z oficiálneho repozitára.
mkdir -p ~/miniconda3
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh \
-O ~/miniconda3/miniconda.sh
bash ~/miniconda3/miniconda.sh -b -u -p ~/miniconda3
Po inštalácii inicializujte Conda:
~/miniconda3/bin/conda init bash
Reštartujte terminál alebo sa znova pripojte ku clusteru, aby sa zmeny aplikovali.
Note
Inštalátory Miniconda sú architektúrne špecifické. Použite inštalátor zodpovedajúci architektúre, na ktorej sa bude Conda používať:
- prihlasovacie a CPU uzly:
Linux-x86_64, - Grace Hopper GPU uzly:
Linux-aarch64.
Conda kanály¶
Conda balíky sa distribuujú prostredníctvom kanálov, ktoré predstavujú repozitáre balíkov.
V predvolenom nastavení Conda používa kanál defaults, ale mnohé vedecké
balíky sú dostupné prostredníctvom conda-forge, veľkého komunitného
repozitára.
Príklad inštalácie balíka z conda-forge:
conda install <package> --channel conda-forge
Kanál je možné pridať natrvalo:
conda config --add channels conda-forge
Vytváranie a správa prostredí¶
Conda prostredia umožňujú vytvárať izolované inštalácie softvéru.
Vytvorenie nového prostredia:
conda create --name myenv
Aktivácia a deaktivácia prostredia:
conda activate myenv
conda deactivate
Zoznam dostupných prostredí:
conda info --envs
Odstránenie prostredia:
conda remove --name myenv --all
Overenie odstránenia:
conda info --envs
Vytváranie prostredí z YAML súborov¶
Conda prostredia je možné definovať v YAML špecifikačnom súbore. To je užitočné na zdieľanie prostredí alebo reprodukciu softvérových nastavení.
Vytvorenie prostredia z YAML súboru:
conda env create -f my-env.yml
Typický YAML súbor obsahuje názov prostredia, jeho závislosti a kanály použité na inštaláciu.
Zdieľanie Conda prostredí¶
Existujúce prostredie je možné exportovať do YAML súboru:
conda env export > my-env.yml
Vygenerovaný súbor obsahuje nainštalované balíky a ich verzie.
Strojovo špecifické riadky v exporte
Exportovaný súbor môže obsahovať aj strojovo špecifickú cestu prefix:
a riadok platform:. Odstráňte tieto riadky, aby ostatní používatelia
mohli prostredie znova vytvoriť.
Alternatívne môžete exportovať iba explicitne nainštalované balíky pomocou:
conda env export --from-history > my-env.yml
Iný používateľ môže prostredie vytvoriť pomocou:
conda env create -f my-env.yml
Ak prostredie vyžaduje ďalšie kanály, je možné ich pridať pomocou:
conda config --add channels <channel-name>
Inštalácia balíkov¶
Balíky je možné inštalovať do prostredia buď po jeho aktivácii, alebo explicitným určením prostredia.
Základné prostredie
Vyhnite sa inštalácii veľkého množstva balíkov do predvoleného base prostredia. Postupom času môže dochádzať ku konfliktom závislostí.
Odporúčaný pracovný postup:
- Udržiavajte base prostredie minimálne.
- Vytvárajte samostatné prostredia pre jednotlivé projekty.
- Exportujte prostredia do YAML súborov na zabezpečenie reprodukovateľnosti.
- Pravidelne čistite cache balíkov pomocou
conda clean --all.
Používanie izolovaných prostredí pomáha predchádzať konfliktom závislostí a uľahčuje reprodukciu softvérových nastavení na rôznych systémoch.
Aktivácia prostredia:
conda activate myenv
conda install matplotlib
Inštalácia balíka do konkrétneho prostredia:
conda install --name myenv matplotlib
Zoznam nainštalovaných balíkov:
conda list
Zoznam balíkov v konkrétnom prostredí:
conda list -n myenv
Vyhľadávanie konkrétneho balíka:
conda search <package>
Čistenie cache Conda¶
Conda ukladá stiahnuté balíky lokálne. Postupom času môže táto cache zabrať významné množstvo miesta v domovskom adresári.
Na odstránenie nepoužívaných balíkov a cache použite:
conda clean --all
Tento príkaz odstráni nepoužívané súbory balíkov, cache a dočasné dáta.
Použitie Conda v skriptoch na odosielanie úloh¶
Keďže všetky výpočtovo náročné operácie musia byť vykonávané na výpočtových uzloch, Conda prostredia je možné používať aj v úlohách odosielaných prostredníctvom plánovača SLURM:
Conda skript
#!/bin/bash
#SBATCH -J "sample_job"
#SBATCH --account=<project>
#SBATCH --partition=short
#SBATCH --nodes=1
#SBATCH --ntasks=1
#SBATCH --cpus-per-task=1
#SBATCH --time=1:00:00
#SBATCH -o stdout.%J.out
#SBATCH -e stderr.%J.out
echo "Launched at $(date)"
echo "Job ID: ${SLURM_JOBID}"
echo "Node list: ${SLURM_NODELIST}"
echo "Submit dir.: ${SLURM_SUBMIT_DIR}"
echo "Numb. of cores: ${SLURM_CPUS_PER_TASK}"
conda init
eval "$(conda shell.bash hook)"
conda activate myenv
# Pokračujte kódom aplikácie ...
# Príklad
export SRUN_CPUS_PER_TASK="${SLURM_CPUS_PER_TASK}"
export OMP_NUM_THREADS=1
srun ...