Od marca 2024 r. korzystanie z Anacondy i Minicondy jest udostępniane na odpłatnej licenjcji. Oznacza to, że nie można samodzielnie instalować i używać tych narzędzi.
Mamba to reimplementacja menedżera pakietów Conda, napisana w języku C++. Jej główną zaletą jest znacznie szybsze rozwiązywanie zależności w złożonych środowiskach.
Została opracowana jako wydajniejsza alternatywa dla Condy i w większości przypadków może ją zastępować.
Uwaga: Nie można używać
Mamba
w środowisku wirtualnym utworzonym wcześniej przy użyciuConda
. Takie środowiska należy odtworzyć od nowa.
Wymagania:
Jeśli nie spełniasz powyższych wymagań kliknij tutaj.
Aby użyć Mamby musisz zlecić zadanie i załadować odpowiedni moduł.
Mamba
a Conda
– porównanie CLIAby korzystać z Mamby, należy najpierw załadować odpowiedni moduł. Dostępne wersje można wyświetlić poleceniem:
module av mamba
Przykładowy wynik:
------------------------------------------- /usr/local/easybuild/modules/all
Mamba/4.14.0-0 Mamba/23.11.0-0
Aby załadować konkretną wersję modułu:
module load Mamba/4.14.0-0
Aby utworzyć nowe środowisko o nazwie myenv
z określoną wersją Pythona, np. 3.10
, użyj polecenia:
mamba create -n myenv python=3.10
Wskazówka: Zaleca się instalowanie wszystkich potrzebnych pakietów już na etapie tworzenia środowiska — Mamba skuteczniej wtedy rozwiązuje zależności.
Jeśli korzystasz z Mamby po raz pierwszy na Superkomputerze, konieczne będzie jej zainicjowanie:
mamba init
Po uruchomieniu pojawi się komunikat:
==> For changes to take effect, close and re-open your current shell. <==
Added mamba to /home/$USER/.bashrc
Aby zastosować zmiany bez potrzeby wylogowywania się, wykonaj:
source ~/.bashrc
Aby aktywować utworzone środowisko:
mamba activate myenv
lub alternatywnie:
source activate myenv
Aby doinstalować pakiety w istniejącym środowisku (np. numpy
i scipy
):
mamba install numpy scipy
Aby wyjść z aktywnego środowiska:
mamba deactivate
Aby wyświetlić listę wszystkich środowisk utworzonych na danej partycji i z określoną wersją Mamby:
mamba list env
Poniżej przykład zadania wsadowego, wykorzystującego środowisko myenv
, utworzone wcześniej w trybie interaktywnym (na partycji lem-cpu
):
#!/bin/bash
#SBATCH --job-name=my_job
#SBATCH --partition=lem-cpu
#SBATCH --output=output.txt
#SBATCH --ntasks=1
#SBATCH --time=01:00:00
#SBATCH --mem=4G
module load mamba
source activate myenv
python my_script.py
Aby wysłać zadanie do kolejki:
sbatch my_job.slurm
Mamba obsługuje niemal identyczne polecenia co Conda, ale działa znacznie szybciej. W prostych przypadkach można stosować je zamiennie. W rzeczywistości, nowsze wersje Condy wewnętrznie wykorzystują resolver Mamby.
Aby wyświetlić dostępne polecenia:
mamba --help
Wybrane komendy:
shell – generuje skrypty inicjujące powłokę
create – tworzy nowe środowisko
install – instaluje pakiety w aktywnym środowisku
update – aktualizuje pakiety w aktywnym środowisku
remove – usuwa pakiety z aktywnego środowiska
list – lista pakietów w środowisku
repoquery – analizuje zależności pakietów
env – zarządzanie środowiskami
activate – aktywuje środowisko
run – uruchamia program w środowisku
search – wyszukuje pakiety
Nie można używać
Mamba
ze środowiskami utworzonymi wcześniej za pomocąConda
. Takie środowiska należy odtworzyć.
Mamba zawiera funkcje na bazie standardu conda. Aby efektywnie przeszukiwać repozytoria i przeszukiwać zależności pakietów, możesz użyć mamba repoquery
Oto kilka przykładów:
# will show you all available xtensor packages.
mamba repoquery search xtensor
# you can also specify more constraints on this search query
mamba repoquery search "xtensor>=0.18"
# will show you a list of the direct dependencies of xtensor.
mamba repoquery depends xtensor
# will show you a list of the dependencies (including dependencies of dependencies).
mamba repoquery depends xtensor --recursive
Flaga --recursive
pokazuje również rekurencyjne (tj. przechodnie) zależności pakietów zależnych zamiast tylko bezpośrednich zależności. Za pomocą -t,--tree
flagi możesz uzyskać te same informacje o zapytaniu rekurencyjnym w drzewie.
mamba repoquery depends xtensor -c conda-forge --tree
często wymagane będzie podanie -c --channel
Executing the query xtensor
conda-forge/linux-64 Using cache
conda-forge/noarch Using cache
xtensor[0.26.0]
├─ __glibc >>> NOT FOUND <<<
├─ libgcc[15.1.0]
│ ├─ __glibc >>> NOT FOUND <<< already visited
│ └─ _openmp_mutex[4.5]
│ └─ llvm-openmp[20.1.7]
│ └─ __glibc >>> NOT FOUND <<< already visited
├─ libstdcxx[15.1.0]
│ ├─ __glibc >>> NOT FOUND <<< already visited
│ └─ libgcc already visited
└─ xtl[0.8.0]
├─ __glibc >>> NOT FOUND <<< already visited
├─ libgcc already visited
└─ libstdcxx already visited
I możesz zapytać o odwrotność, tzn. które pakiety zależą od jakiegoś innego pakietu (np. ipython), używając whoneeds
.
mamba repoquery whoneeds ipython
Name Version Build Depends Channel
-------------------------------------------------------------------
jupyter_console 6.4.3 pyhd3eb1b0_0 ipython pkgs/main
ipykernel 6.9.1 py39haa95532_0 ipython >=7.23.1 pkgs/main
ipywidgets 7.6.5 pyhd3eb1b0_1 ipython >=4.0.0 pkgs/main
Za pomocą -t,--tree
flagi możesz uzyskać te same informacje w drzewie.
mamba repoquery whoneeds -t ipython
ipython[8.2.0]
├─ jupyter_console[6.4.3]
│ └─ jupyter[1.0.0]
├─ ipykernel[6.9.1]
│ ├─ notebook[6.4.8]
│ │ ├─ widgetsnbextension[3.5.2]
│ │ │ └─ ipywidgets[7.6.5]
│ │ │ └─ jupyter already visited
│ │ └─ jupyter already visited
│ ├─ jupyter_console already visited
│ ├─ ipywidgets already visited
│ ├─ jupyter already visited
│ └─ qtconsole[5.3.0]
│ └─ jupyter already visited
└─ ipywidgets already visited
depends
i whoneeds
polecenia wymagają, aby określony pakiet był zainstalowany w Twoim środowisku lub aby kanał był określony za pomocą -c,--channel
flagi. Gdy search
polecenie jest używane bez wyraźnego określenia kanału (za pomocą flagi wspomnianej wcześniej), wyszukiwanie zostanie wykonane z uwzględnieniem kanałów ustawionych podczas konfiguracji.
Pełna wersja dokumentacji użytkownika WCSS znajduje się tutaj.
Jeśli nie znajdziesz rozwiązania w powyżej dokumentacji, prosimy o kontakt z kdm@wcss.pl