-
Notifications
You must be signed in to change notification settings - Fork 0
Estrategias para disponibilizar grandes datasets para a comunidade
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.
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.
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.
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.
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.
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.
Reuniões
- 2018.04.04: Entendendo o Salic
- 2018.04.11: Entendendo o Salic
- 2018.04.16: Andamento salic-ml
- 2018.04.24: Ciclo de trabalho da Sefic
- 2018.04.27: Possíveis melhorias para o Salic
- 2018.05.04: Itens de pesquisa salic-ml
- 2018.05.07: Planejamento salic-ml
- 2018.07.17: Iniciação Fase 2
- 2018.07.18: Brainstorming de features
- 2018.07.18: Planejamento Arquitetura
- 2018.11.22: Validação das métricas de complexidade financeira
Estudos
- Processo Salic
- Integração do Salic ML ao Salic
- Acesso ao DB do Salic via VPN
- Obtenção de dados do Salic
- Estratégias para disponibilizar grandes datasets para a comunidade
- Dados sobre finanças dos projetos no Salic
- Referências de Aprendizagem de Máquina
- Arquitetura ML
- Arquitetura SALIC-ML Produto
Documentação
Outros
- Estimação de métricas de Complexidade Financeira
- Estratégias para disponibilizar grandes datasets para a comunidade
- Implementando algoritmos de ML em prod
- Itens para o relatório 4 - Frente ML Pesquisa
- Itens para o relatório 5 - Frente ML Pesquisa
- Medium SalicML - Similaridade entre projetos culturais
- Medium - O sistema de a
- Obtendo datasets
- Planning arquitetura - 18.07.18
- Plano de comunicação
- Protocolo antigo de comunicação entre API e frontend
- Relatório de entrega - Jan a Mar 2019
- Um algoritmo de detecção de similaridade de projetos - Roadmap
- Roadmap do SalicML
- Sobre a metodologia
- Validação de dados utilizados em aplicações do SalicML