Skip to content

Estrategias para disponibilizar grandes datasets para a comunidade

Victor Moura edited this page Nov 11, 2019 · 1 revision

Ao trabalhar com aprendizado de máquina, é inevitável a utilização de grandes quantidades de dados. Neste documento serão apresentadas as estratégias estudadas e a adotada para disponibilizar para a comunidade os dados utilizados durante as pesquisas realizadas neste repositório.

O Salic é o sistema de acompanhamento de projetos culturais do Ministério da Cultura. Atualmente, tal sistema conta com mais de 1.5TB de dados. Muitos desses dados são vídeos e imagens e não serão utilizados nas pesquisas do salic-ml. A expectativa é a utilização de algumas dezenas de GB de dados, retirados do banco de dados do Salic. Para encontrar a melhor estratégia para armazenar tais dados, foram estudadas as seguintes estratégias:

  • Utilização do Git-LFS
  • Repositório Git para dados como submódulo do salic-ml
  • Repositório Git-LFS para dados como submódulo do salic-ml
  • Google Drive, Dropbox e similares
  • Servidor FTP local com acesso externo

A estratégia adotada foi a utilização de um servidor FTP na infraestrutura local com acesso externo, devido a sua maior capacidade de armazenamento e facilidade de download dos dados. Abaixo são detalhadas as estratégias utilizadas.

Utilização do Git-LFS

O Git-LFS (Large Files Storage) é uma extensão do Git para versionamento de grandes arquivos de dados em um repositório. Além de facilitar o versionamento de grandes arquivos, o Git-LFS permite o download de tais arquivos individualmente e separados do git clone. Contudo, o GitHub permite o armazenamento de, no máximo, 1GB por repositório [link], o que não é suficiente para armazenar os dados utilizados. A primeira conclusão é que é preciso armazenar os dados fora do GitHub.

Repositório Git para dados como submódulo do salic-ml

Estudou-se a possibilidade de criação de um repositório Git para armazenamento dos dados em uma outra plataforma e utilização de tal repositório como um submódulo do salic-ml. A primeira plataforma estudada foi o GitLab, contudo, ele permite o armazenamento de, no máximo, 10GB por repositório [link], o que também não é suficiente para armazenar os dados utilizados. Uma alternativa foi a utilização de uma instância do Gitea na infraestrutura local e com acesso externo. Desta forma, seria possível armazenar todos os dados necessários sem restrição de espaço e ainda utilizar o repositório como submódulo do salic-ml. Uma desvantagem desta abordagem é a impossibilidade de baixar arquivos individuais do repositório: o comando git clone baixa todo o repositório em uma única vez.

Repositório Git-LFS para dados como submódulo do salic-ml

Para contornar a impossibilidade de baixar arquivos individuais do repositório de dados, estudou-se a possibilidade de utilização do repositório em uma instância local do Gitea com a extensão Git-LFS, desta forma, não haveria limitação de capacidade de armazenamento de dados e seria possível baixar arquivos individuais do repositório. A desvantagem desta abordagem é a complexidade de sua utilização, não seria prático ter que utilizar os comandos específicos do git-submodules e do git-lfs sempre que fosse necessário baixar um arquivo de dados.

Google Drive, Dropbox e similares

Para simplificar a utilização dos arquivos de dados, foram estudadas plataformas de armazenamento em nuvem, como Google Drive, Dropbox e OneDrive, contudo, todas as ferramentas têm limitações de capacidade de armazenamento de dados e, assim, não são viáveis.

Servidor FTP

Por fim, foi estudada e adotada a utilização de um servidor FTP na infraestrutura local com acesso externo. O servidor FTP conta com acesso de leitura para usuários anônimos e escrita para um usuário administrador. É possível baixar todos os dados ou arquivos individuais, além de não ter limitação para armazenamento. Para baixar todos os dados ou apenas dados específicos, basta acessar o servidor FTP, uma maneira para baixar os dados facilmente é utilizando o comando wget, conforme mostrado no README deste repositório. Os arquivos devem ser salvos na pasta data do repositório local, pasta ignorada pelo Git.

Clone this wiki locally