Os últimos 50 anos da programação linear inteira: avanços práticos recentes — exibição da página de proteção do Anubis
(inria.hal.science)- Em vez do texto do artigo, é exibida a página de verificação de bot do Anubis, então não é possível ver imediatamente o conteúdo real do artigo nesse URL
- A página de proteção informa que o web scraping agressivo por empresas de IA pode levar a indisponibilidade do servidor e bloqueio de acesso a recursos
- O Anubis exige uma prova de trabalho semelhante ao Hashcash, projetada para ter pouco custo para usuários individuais, mas um custo acumulado alto para scraping em massa
- Essa abordagem é uma solução temporária e, no longo prazo, o foco é identificar navegadores headless por pistas como renderização de fontes
- Como são necessários recursos modernos de JavaScript, se plugins como o JShelter estiverem ativados, será preciso desativá-los nesse domínio para conseguir acesso
A página de proteção do Anubis é exibida
- O título da página é “Making sure you're not a bot!”, e a tela mostra o estado calculando
- Dificuldade:
4 - Velocidade:
0kH/s
- Dificuldade:
- O administrador do servidor configurou o Anubis para proteger o servidor contra scraping agressivo por empresas de IA, e por isso essa página é exibida
- O scraping em massa pode causar indisponibilidade do site e, como resultado, todos os usuários podem ficar sem acesso aos recursos
Método de prova de trabalho e restrições de acesso
- O Anubis usa um método de prova de trabalho da família do Hashcash
- A carga adicional para usuários individuais é praticamente desprezível
- Para scrapers em massa, o custo acumulado aumenta, elevando o custo do scraping
- O método atual está mais próximo de uma solução temporária
- O objetivo é ganhar tempo para identificar navegadores headless por pistas como a forma de renderização de fontes
- A direção é deixar de exibir a página de prova de trabalho quando houver alta probabilidade de se tratar de um usuário legítimo
- O Anubis exige recursos modernos de JavaScript
- Plugins como o JShelter podem desativar os recursos necessários
- Neste domínio, é preciso desativar o JShelter ou plugins semelhantes
1 comentários
Comentários do Hacker News
Gostaria de entender, em linhas gerais, por que solvers comerciais de programação linear inteira (ILP), como o Gurobi, são tão melhores que os gratuitos/open source
Fico me perguntando se ILP é um problema intrinsecamente tão difícil que os melhores solvers são, na prática, grandes coleções de heurísticas para subproblemas específicos, e se ainda não há boas estratégias gerais no domínio público
Em programação linear inteira mista (MILP), são importantes heurísticas para encontrar bons pontos de partida para branch-and-bound e podar a árvore de forma eficaz, além de planos de corte sob medida que eliminam soluções fracionárias e melhoram o valor da função objetivo e a integralidade
Quando pesquisadores de pesquisa operacional pegam um problema específico, eles muitas vezes escrevem seus próprios planos de corte e heurísticas e conseguem superar com bastante facilidade um solver genérico como o Gurobi. As empresas de solvers contratam equipes de doutores e pesquisadores para fazer isso continuamente, e acompanham melhorias e regressões usando conjuntos de problemas de clientes
Solvers open source parecem ser travados por uma combinação de fatores. A barreira de entrada para desenvolvimento moderno em otimização é muito alta, então há poucos pesquisadores/desenvolvedores capazes de contribuir de forma significativa tanto em matemática quanto em programação; quando alguém tem essa capacidade, os caminhos que dão dinheiro tendem a afastá-lo de contribuições open source; e, pela natureza de projetos open source, é menos provável que “clientes” devolvam exemplos, dados de desempenho e profiling necessários para melhorar o solver
Há exceções, mas estar fora do desenvolvimento tradicional de solvers comerciais não significa necessariamente ser open source. Por exemplo, o SNOPT, desenvolvido em Stanford, ainda tem licença comercial. Trabalhos acadêmicos em solvers muitas vezes ocorrem em contextos de aplicação específicos, como o Clarabel, o que tende a restringir a família de problemas
Em outras áreas, grandes empresas de tecnologia às vezes superaram gargalos comprando projetos comerciais existentes ou financiando projetos open source para conter concorrentes. Em solvers há exemplos mais estreitos, como o Ceres, mas é provável que o investimento para desenvolver do zero toda uma pilha de solvers de propósito geral tenha sido considerado grande demais
Se você conhece a estrutura do problema, também pode explorá-la para superar o desempenho de um solver comercial. Mas, para um problema arbitrário, isso é muito improvável
Tenho uma lembrança vaga de ter criado uma ferramenta de alocação de recursos usando a biblioteca programação linear inteira mista “ILOG”, da IBM. Percebemos que, se tivéssemos criado 20 anos antes o mesmo problema que resolvíamos em 5 minutos, ele ainda estaria rodando
Lembro que o poder computacional bruto havia aumentado cerca de 1000 vezes, e os algoritmos tinham melhorado em grau parecido, resultando em uma melhora total de cerca de um milhão de vezes
É algo a se considerar ao prever o futuro. A propósito, esses “recursos” eram diamantes
Fico curioso sobre como isso é usado na prática. Quando se implementa otimização numérica, imagino que ela falhe com frequência por problemas comuns em abordagens orientadas a dados, como confiança e dados ruins, e que, no fim, alguém importante decida no feeling o que fazer
Os preços spot de eletricidade da UE são definidos diariamente por uma única execução gigantesca de solver. Procure por Euphemia; há textos sobre como ele funciona
A maioria das áreas com um objetivo claro a otimizar e dinheiro real em jogo está cheia de solvers
A parte de estoque não é totalmente automatizada porque a previsão de demanda é difícil
Estudos de caso da Gurobi: https://www.gurobi.com/case_studies/
Alguns estudos de caso do CPLEX: https://www.ibm.com/products/ilog-cplex-optimization-studio/...
Estudos de caso da Hexaly, antiga LocalSolver: https://www.hexaly.com/customers
Ouvi dizer que o Gurobi é bem caro. Gostaria de saber se alguém pode compartilhar informações de preço
Há pelo menos dois bons solvers MIP que são open source ou gratuitos para uso não comercial
https://highs.dev/
https://www.scipopt.org/
Eu acrescentaria que, para muita gente no setor, ele vale bem esse preço
Lembro de ter implementado alguma versão do hiperplano de corte de Gomory no Maple nos anos 1990, para fins de aprendizado. Não era para uso real. Parece que a área avançou bastante
“Se, no início dos anos 1990, resolver um LP exigia dois meses de tempo de execução, hoje não leva nem 1 segundo. Recentemente, Bixby comparou o desempenho independente de máquina de dois solvers MILP, CPLEX e Gurobi, de 1990 a 2020, e relatou uma aceleração de quase 4×10^6 vezes”
Tenho a impressão de que abordagens baseadas em aprendizado de máquina/inteligência artificial ainda são bem insuficientes para esse tipo de problema. Já vi muitos artigos com aprendizado por reforço/redes neurais de grafos tentando resolver problemas pequenos, mas muitas vezes parece que o melhor mesmo é comprar uma licença do Gurobi e rodar
Tenho trabalhado recentemente com otimização de escalonamento próxima de job-shop scheduling; há exemplos usando aprendizado por reforço, mas eles não parecem suficientes. Acabei dependendo de algoritmos evolutivos para obter soluções plausíveis em problemas grandes
Talvez, se for possível formular bem o problema, uma abordagem de pesquisa operacional seja sempre mais eficiente
Você poderia criar um algoritmo genético, mas não há garantia de que ele dará uma resposta que não esteja presa em um mínimo local. Também é preciso assumir que será possível fazê-lo rodar rapidamente. Redes neurais também ficariam abaixo do ótimo
“De 1988 a 2004, o hardware ficou 1600 vezes mais rápido, e os solvers LP ficaram 3300 vezes mais rápidos, resultando em um fator acumulado de aceleração superior a 5 × 10^6. E isso já foi há 20 anos!”
“Os autores observaram uma aceleração de 1000 vezes em solvers MILP comerciais entre 2001 e 2020. Dessas, 50 vezes vieram de algoritmos, e 20 vezes de computadores mais rápidos”
Fico curioso se seria possível reunir esses fatores de aceleração por subárea da computação e decompô-los nas contribuições de melhorias algorítmicas e de computadores mais rápidos
Em compiladores existe a “Lei de Proebsting”: a evolução dos compiladores dobra o desempenho computacional a cada 18 anos
Seria bom acrescentar [pdf] [2024] ao título