nncp - neural networks compressor com tranformer model |
Porém, no dia 08 de Maio de 2019 Fabrice Bellard iniciou o desenvolvimento de um novo tipo de compressor de arquivos chamado nncp. Talvez você não esteja familiarizado com esse nome, mas Fabrice Bellard é o autor do ffmpeg, do Qemu e do compilador TCC que é nove vezes mais rápido que o GCC:
nncp (abreviação de Neural Networks ComPressor) é um novo algoritmo experimental de compressão sem perda de dados baseado no modelos de redes neurais pura, dicionário de pré-processamento e também baseado no modelo Transformer.
Há dois arquivos pdf disponíveis no site do projeto ( nncp_v2.1.pdf de 2021 e nncp.pdf o de 2019) que demonstram os resultados comparando os resultados do nncp com do gzip (com a opção -9), do xz (idem) e do CMIX (que é outro compactador que eu pretendo falar com vocês em um próximo artigo). Os arquivos também entregam toda a explicação sobre os compactador, algorítimo utilizado e muito mais.
Resulto com enwik8 |
Resulto com enwik9 |
Em Novembro de 2020 eu resolvi testar o nncp porém, eu acabei não achando os resultados muito interessantes, pelo menos não ainda. Talvez eu não compilei o compactador com as opções corretas ou talvez não eu utilizei as próprias opções do compactador ideais para a situação; mesmo assim a experiencia não foi boa; o compactador fez uso excessivo de hardware e levou muito tempo para tentar compactar 114MB. Ressalva, tentar compactar pois após mais de sies minutos esperando, eu cansei e interrompi processo. No final, o nncp só havia compactado um megabyte do pacote alvo.
O resultado final após interromper seis minutos de compactação foi apenas 1MB compactado. |
Tentei utilizar o algoritmo de otimização SGD também disponível no nncp porém, mesmo assim, não resultou em muita coisa. É até aceitável uma vez que ainda se trata de um compactador ainda em fase experimental.
Esse ano eu resolvi testar novamente já que esta nova versão traz novidades muito interessantes como utilizar o modelo Transformer (Transformer model ou machine_learning_model) e substituir o Pytorch pelo uso da biblioteca LibNC por incluir suporte a CUDA* e obter melhor desempenho.
A partir da terceira versão do nncp podemos utilizar as seguintes opçoes em sua sintaxe:
./nncp --cuda --profile enwik9 --preprocess 16384,512 c enwik9 out.bin ./nncp --cuda --profile enwik9 --preprocess 16384,512 c enwik9 out.bin
ou
./nncp --cuda --profile enwik8 --preprocess 4096,512 c enwik8 out.bin ./nncp --cuda --profile enwik8 --preprocess 4096,512 c enwik8 out.bin
Eu tentei compilar a terceira versão e não foi muito bem sucedido. Apesar de os testes não terem sido bem sucedidos, ainda é aceitável já que o compactador ainda está em fase experimental. Vou aguardar para ver se quando sair uma atualização, eu consigo utilizar com a opção CUDA.
O nncp está disponível para Linux e Windows sob licença MIT porém a biblioteca LibNC é disponibilizada somente de forma binária.
*O suporte a CUDA está disponível somente para Linux. Pode ser que venha ter em uma versão futura.
https://bellard.org/nncp/
Observação: Não confunda o compactador nncp com o NNCP (Node to Node copy). São ferramentas com o mesmo porém com propósitos diferentes.
QUER APRENDER A UTILIZAR LINUX DE VERDADE, ENTÃO VENHA APRENDER COMIGO ;) |
Nenhum comentário:
Postar um comentário
Viu algum erro e quer compartilhar seu conhecimento? então comente aí.
Observação: somente um membro deste blog pode postar um comentário.