Singularity
Contents
Singularity
O Singularity é uma ferramenta para a criação de "máquina container" (uma espécie de "máquina virtual") que trás algumas vantagens, quando for rodar experimentos nas máquinas de processamento do Verlab/J:
- Não precisa ser usuário com privilégios root para criar sua máquina container e pode instalar suas dependências de experimento no container sem alterar a máquina host. Isso evita mudanças e instalação de pacotes que atrapalham experimentos de outros usuários.
- Depois de criar sua máquina container com todas suas dependências, pode-se usá-la para rodar experimento em diferentes máquinas host que tenham GPU. Isso trás flexibilidade para rodar experimento em outra máquina, sem precisar instalar todas dependências novamente na máquina host.
- A massa de arquivos de dataset (que geralmente ocupam espaço >=500GB) ficam localmente armazenados na máquina host, assim evita tráfego desnecessário na rede. Geralmente na pasta /homeLocal/nome_do_usuario.
- O usuário deixa na sua pasta home da rede apenas sua máquina container (que em geral ocupa ~4GB) assim basta logar numa máquina com GPU para rodar seu experimento.
Instalação
Toda máquina com GPU deve rodar experimentos sem modificar os pacotes da máquina host (máquina de processamento).
A equipe de rede é responsável por:
- Instalar o Singularity em toda máquina host com GPU (máquina de processamento)
- Configurar de modo que todo usuário possa rodar apenas o comando
$sudo singularitynuma pasta local da máquina host, sem necessitar de senha root.
Assim as pastas indicadas para "compilar" a máquina container é fora do home do usuário, tais como:
-
/tmpou -
/homeLocal/usuario.
Regras de bom uso dos recursos
- Usuários não devem deixar o dataset (massa de arquivos grande, em geral 1TB, que vão ser acessados durante o experimento) dentro da sua pasta home da rede (por exemplo, para o login "fulano"
/home/fulano/datasetna rede, pois isso aumenta o tráfego na rede desnecessário. Os datasets devem ser armazenados numa pasta local do computador com o nome do usuário. Por exemplo/homeLocal/fulano/dataset
- Cada usuário deve baixar os arquivos e os pacotes necessários para máquina container dentro da pasta local (por exemplo,
/homeLocal/fulano/sigularity, e "compilar" na mesma. O arquivo container pronto, pode ser armazenado na pasta home da rede, pois será automaticamente carregada quando entrar em outra máquina, permitindo rodar o experimento.
Aprender Singularity e Criar sua Máquina Container
Links recomendados para aprender a utilizar o Singularity:
https://singularity.lbl.gov/docs-docker
- Criar uma máquina container: https://singularity.lbl.gov/docs-build-container
Alguns comandos básicos
- Criar uma imagem a partir de um repositório Docker Hub
singularity build lolcow.simg docker://godlovedc/lolcow
sudo singularity build --sandbox docker://index.docker.io/library/ubuntu:latest
- Criar um container com estrutura de diretórios usando uma imagem Ubuntu 16.04 do Docker Hub
sudo singularity build --sandbox my_container/ docker://index.docker.io/library/ubuntu:16.04
- Abrir o container no shell, salvando as modificações da sessão ao sair do container.
sudo singularity shell --writable my_container/
run, exec, and shell.