Caro Comunidade de Machine Learning / AI,
Sou apenas um aprendiz de máquina iniciante e aspirante que trabalhou em conjuntos de dados on-line abertos e em alguns POCs construídos localmente para o meu projeto. Eu construí alguns modelos e converti-os em objetos pickle para evitar o treinamento.
E essa pergunta sempre me intriga. Como um sistema de produção real funciona com algoritmos de ML?
Digamos, eu treinei meu algoritmo de ML com alguns milhões de dados e quero movê-lo para o sistema de produção ou hospedá-lo em um servidor. No mundo real, eles se convertem em objetos de picles? Se assim for, seria enorme arquivo em conserva, não é. Os que eu treinei localmente e converti para os próprios dados de 50000 linhas ocuparam espaço de 300 Mb no disco para esse objeto em conserva. Eu não acho que essa seja a abordagem correta.
Então, como ele funciona para evitar que meu algoritmo de ML seja treinado novamente e comece a prever os dados recebidos? E como realmente criamos o algoritmo ML como um aprendiz on-line contínuo. Por exemplo, construí um classificador de imagens e começo a prever as imagens recebidas. Mas quero treinar novamente o algoritmo adicionando as imagens online recebidas aos meus conjuntos de dados treinados anteriormente. Pode não ser para todos os dados, mas diariamente, uma vez que eu quero combinar todos os dados recebidos para esse dia e treinar novamente com 100 imagens que meu classificador previamente treinado previu com valor real. E essa abordagem não deve afetar meu algoritmo treinado anteriormente para parar de prever os dados recebidos, pois esse treinamento pode levar tempo com base em recursos e dados computacionais.
Eu pesquisei no Google e li muitos artigos, mas não consegui encontrar ou entender a minha pergunta acima. E isso está me intrigando todos os dias. A intervenção manual também é necessária para os sistemas de produção? ou alguma abordagem automatizada existe para isso?
Qualquer sugestão ou resposta às perguntas acima seria muito útil e apreciada. Informe-me se minhas perguntas não fizerem sentido ou não forem compreensíveis.
Este não é um projeto centrado que estou procurando. Apenas um caso genérico de exemplo de sistemas ML de produção no mundo real.
Agradeço antecipadamente!
fonte
Sim, é típico ter alguma representação persistente do modelo carregado e, sim, geralmente é muito grande como um arquivo / arquivos. Usar
pickle
é uma maneira de fazer isso, comumente usado comscikit-learn
, por exemplo. As estruturas de aprendizado profundo geralmente têm seus próprios formatos, mas nada impede você de usápickle
-las também, exceto que é mais complicado e menos eficiente como abordagem.Não sei se entendi a segunda parte da pergunta, mas se você deseja modificar seu modelo on-line, nada o impede de criar um novo pickle. É recomendável executar um novo treinamento como um processo em lote separado em segundo plano, para evitar o bloqueio do site ou serviço da web, especialmente se o servidor de aplicativos da web for de thread único. Além disso, você precisa ter cuidado com a utilização dos recursos do servidor, portanto, é melhor executar atualizações em lote como essa em períodos de baixo tráfego. Isso pode ocorrer no fim de semana ou se sua base de usuários for predominantemente regional, à noite ou em feriados.
fonte