Difference between revisions of "Singularity"
Mauferrari (talk | contribs) (→Alguns Comandos Básicos) |
Mauferrari (talk | contribs) (→Alguns Comandos Básicos) |
||
| Line 42: | Line 42: | ||
* <code>[http://singularity.lbl.gov/docs-build '''build''']</code>: Cria uma imagem para a máquina container | * <code>[http://singularity.lbl.gov/docs-build '''build''']</code>: Cria uma imagem para a máquina container | ||
* <code>[http://singularity.lbl.gov/docs-shell '''shell''']</code>: Executa a máquina container no prompt do shell | * <code>[http://singularity.lbl.gov/docs-shell '''shell''']</code>: Executa a máquina container no prompt do shell | ||
| − | * <code>[http://singularity.lbl.gov/docs-pull '''pull''']</code>: ??? | + | * <code>[http://singularity.lbl.gov/docs-pull '''pull''']</code>: ??? |
| − | * <code>[http://singularity.lbl.gov/docs-run '''run''']</code>: ??? | + | * <code>[http://singularity.lbl.gov/docs-run '''run''']</code>: ??? |
* <code>[http://singularity.lbl.gov/docs-exec '''exec''']</code>: Executa um comando dentro do shell da máquina container, em segundo plano, e apresenta o resultado no shell da máquina host | * <code>[http://singularity.lbl.gov/docs-exec '''exec''']</code>: Executa um comando dentro do shell da máquina container, em segundo plano, e apresenta o resultado no shell da máquina host | ||
Revision as of 11:30, 15 June 2018
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
-
build: Cria uma imagem para a máquina container -
shell: Executa a máquina container no prompt do shell -
pull: ??? -
run: ??? -
exec: Executa um comando dentro do shell da máquina container, em segundo plano, e apresenta o resultado no shell da máquina host
Criar uma imagem para máquina container
- A partir de um repositório Docker Hub.
singularity build lolcow.simg docker://godlovedc/lolcow
sudo singularity build my_container/ docker://index.docker.io/library/ubuntu:latest
- Criar uma imagem container com estrutura de diretórios usando uma imagem Ubuntu 16.04 do Docker Hub. (Dicas sobre a opção
--sandbox)
sudo singularity build --sandbox my_container/ docker://index.docker.io/library/ubuntu:latest
sudo singularity build --sandbox my_container/ docker://index.docker.io/library/ubuntu:16.04
- Criar uma imagem container fechada para experimentos (formato squashfs), a partir de uma pasta sandbox. (Dicas sobre conversão de formatos das máquinas container
sudo singularity build ubuntu.simg ubuntu/
Executar a máquina container no shell:
You can make changes to the container (assuming you have the proper permissions to do so) but those changes will disappear as soon as you exit. To make your changes persistent across sessions, use the --writable option. It’s also a good practice to shell into your container as root to ensure you have permissions to write where you like.
- Executar a máquina container no shell, sem salvar modificações feitas na sessão:
sudo singularity shell my_container/
Executar a máquina container no shell, salvando as modificações da sessão ao sair do container. usar opção --writable (Dicas sobre a opção --writable)
sudo singularity shell --writable my_container/
Executar a máquina container em segundo plano: run
Converter um container para uma imagem para execução sem editar
singularity build production2 development/