Se você chegou até este blog da Data Science Academy, já sabe que Machine Learning e Inteligência Artificial estão transformando drasticamente o mundo. Devido a quão promissoras são essas tecnologias e a quantidade de benefícios que elas já oferecem, muitas empresas estão dispostas a usá-las para a transformação de seus negócios.

Embora Machine Learning e Inteligência Artificial estejam relacionadas, essas áreas não são a mesma coisa, e vale a pena entender as diferenças. Inteligência Artificial (IA) é o conceito de sistemas computacionais que são capazes de realizar tarefas que normalmente só humanos podiam fazer, como tomada de decisão, percepção visual, reconhecimento de fala e assim por diante. O Aprendizado de Máquina (Machine Learning), por sua vez, é um campo da ciência computacional que incorpora inúmeras tecnologias.

Machine Learning é uma sub-área da Inteligência Artificial e ao processar grandes quantidades de dados os algoritmos de Machine Learning revelam conexões entre diversas variáveis, construindo assim modelos analíticos e preditivos. Data Science, por sua vez, é a aplicação de Ciência para análise de dados. Podemos dizer, portanto, que Machine Learning e IA fazem parte da Ciência de Dados.

Com o crescimento cada vez maior das áreas de Data Science, Machine Learning e Inteligência Artificial, uma dúvida tem sido comum principalmente entre aqueles que pretendem oferecer consultoria nessas áreas: Como Precificar Um Projeto de Data Science, Machine Learning ou IA?

O Cientista de Dados Daniel Shapiro, da Startup Lemay.ai no Canadá, listou os detalhes de precificação de um projeto de IA, o qual trazemos agora para você, incluindo ainda alguns detalhes bem interessantes. O projeto foi nos EUA e os valores estão em dólar americano.

Ao longo do artigo damos algumas dicas de como você pode fazer o mesmo! Boa leitura!

 

Como Precificar Um Projeto de Data Science, Machine Learning ou IA? 

Normalmente os clientes pedem estimativas de preço fixo para grandes projetos de Aprendizado de Máquina (Machine Learning). Isso é muito complicado. Os requisitos geralmente mudam no meio de um projeto como resultado da análise exploratória, descobertas durante o desenvolvimento, eventuais dificuldades de integração, aceitação do usuário e muitos outros fatores. Eu aconselho clientes a não lutarem com mudanças de requisitos em seu primeiro projeto de Machine Learning, que é exatamente o oposto dos princípios tradicionais de desenvolvimento de software. O aprendizado de máquina não é programação regular. É basicamente programação aplicada à Ciência de Dados e é implementada de maneira muito diferente em uma organização que já possui uma infraestrutura de aprendizado não relacionado à máquina, em comparação a uma empresa iniciante nesse tipo de projeto.

 

Machine Learning é um serviço Premium, de alto nível e deve ser cobrado de acordo. Poucos profissionais estão habilitados a realizar este tipo de projeto.

 

Quanto maior o “desconhecido”, ou o que eu gosto de chamar de risco de requisitos, mais eu me inclino para o preço por hora em vez de preço fixo, nesse tipo de projeto. Onde os requisitos são muito rígidos, ou o que eu gosto de chamar de uma especificação executável, mais eu me inclino para preço fixo. Portanto, a escolha do tipo de cobrança, por hora ou preço fixo, depende claramente do tipo de projeto.

Vejamos então, passo a passo, um exemplo de como um projeto de Inteligência Artificial pode ser precificado (lembrando que Machine Learning é uma sub-área da Inteligência Artificial).

Um representante do governo com quem trabalhamos gosta de chamar essas conversas francas de abordagem de “quimono aberto”. Honestidade brutal. Vamos ser realistas quanto ao custo inicial e taxas por hora. Nossa tarifa padrão em Agosto é de US $ 250 / hora (USD), mais viagens e diárias, se for necessário presença nas dependências do cliente. Dado o esforço para iniciar um contrato, incluindo um NDA (Non-Disclosure Agreement), declaração de trabalho (Statement of Work) e discussões iniciais, a empresa está visando projetos que tenham pelo menos 5K (20 horas) de tamanho. O cliente também tem preocupações orçamentárias e precisa dar conta dos recursos internos.

Gostamos de delegar o máximo possível de trabalho de baixo custo à equipe do cliente para reduzir as horas necessárias para concluir o projeto. Mas no final do dia, o cliente ainda está pagando seus funcionários para trabalhar neste projeto e precisa levar isso em conta. O objetivo do cliente é limitar o custo e o tempo do projeto de Machine Learning. Nosso objetivo quanto consultores é tentar atingir nossa taxa horária, mesmo em projetos de preço fixo, e gravitar para grandes projetos sempre que possível.

O objetivo deste artigo é ajudá-lo a precificar o seu projeto em alto nível com uma visão geral. Vamos precificar um pequeno projeto de exemplo.

 

Requisitos do Cliente

Crítico para qualquer projeto em Machine Learning, precisamos definir expectativas sobre acurácia, precisão, recall, pontuação F, etc… (todos esses conceitos são estudados em detalhes na Formação Cientista de Dados). Suponhamos que o cliente queira resultados “bons” em vez de um benchmark quantitativo. Isso facilita o preço do projeto, pois há menos iterações. Em geral, a qualidade da solução final aumenta com o tamanho do conjunto de dados.

Outra dimensão a considerar é a qualidade dos requisitos. Muitos clientes aparecem com requisitos mal definidos e é por isso que eles precisam de nosso aconselhamento especializado não apenas para o trabalho, mas também para a definição do projeto e a arquitetura da solução. É crítico, no primeiro estágio de discussão, identificar quaisquer prováveis impossibilidades de alcançar requisitos ou requisitos que exijam nova ciência.

Sem brincadeiras. Recebi pedidos para projetos de pesquisa de preço fixo, quando a definição de pesquisa é que você não sabe a resposta previamente (e exatamente por isso quer executar a pesquisa). Nossa solução é simples. Para fixar preços em projetos de pesquisa, fornecemos blocos de horas a um preço fixo. Os resultados não são garantidos, mas pelo menos o valor-hora é controlado . Nesses projetos, pretendemos fornecer os resultados o mais cedo possível, para motivar o desenvolvimento.

O projeto que vamos avaliar neste artigo é um sistema de classificação de documentos que dá aos analistas em uma instituição financeira a capacidade de despejar documentos (PDF, Word, etc.) e classificá-los por similaridade semântica e sintática de muitas maneiras diferentes. O cliente está interessado na semelhança entre os documentos e também na similaridade entre cada documento e no conteúdo da palavra-chave de uma caixa de pesquisa, além da similaridade entre os documentos e um parágrafo de texto colado pelo usuário. Esta é uma tarefa genérica comum para analistas, e uma atividade comum em Machine Learning, que nos dá algo que podemos precificar facilmente (os alunos estudam estes conceitos nos cursos de Machine Learning e Processamento de Linguagem Natural, aqui na DSA).

Vamos definir que o cliente não possui servidor de Machine Learning. Os dados a serem classificados não são dados internos confidenciais e, portanto, podem ser enviados com segurança para a nuvem AWS para que o sistema de Machine Learning seja digerido e apresentado. Algumas empresas têm dificuldade em usar a nuvem pública em seus dados por vários motivos e isso precisa ser considerado, mas em geral o uso de Cloud Computing reduz o custo total.

Vamos planejar esse projeto e estimar um preço.

 

Planejamento

O preço de um projeto de Inteligência Artificial depende, em primeiro lugar, do trabalho que está sendo feito para desenvolver um produto. O trabalho de desenvolvimento é geralmente dividido em várias fases. Ter uma ideia geral das fases do projeto pode ajudá-lo a fazer uma estimativa aproximada do custo. 

 

Etapa 1: Estabelecer as bases

Agora sabemos que o projeto vai viver na nuvem AWS e usará uma ou mais instâncias p2 criadas a partir de uma AMI existente (caso não saiba o que é AWS ou muito menos uma AMI, clique aqui). Assumindo que, em conversas com o cliente, os recursos personalizados do Elasticsearch não serão utilizados por esses analistas e os recursos de pesquisa regulares também são necessários, mas não suficientes, decidimos criar um modelo híbrido de Machine Learning e ferramentas de pesquisa de documentos existentes. O sistema precisará do Tensorflow, Word2vec, Doc2vec, Keras, Elasticsearch e Flask (tudo isso é estudado na Formação Inteligência Artificial aqui na DSA) para expor esse conjunto de recursos como um serviço RESTful JSON como o Elasticsearch.

Nós precisaremos de um servidor PHP para uma GUI AngularJS (talvez até na mesma instância se for um projeto de pequena escala). Nós decidimos não usar o NLTK, porque Elasticsearch cobre todas as coisas que usaríamos daquele pacote. O Jupyter Notebook é uma excelente ideia, de modo que os desenvolvedores que vão trabalhar neste projeto poderão executar com facilidade e segurança códigos nos servidores. Também precisamos saber que os requisitos do cliente são mapeados para ferramentas como estas:

Similaridade de Documentos + Semelhança de Parágrafos = Word2vec e Doc2vec, e também alguns modelos com o Keras + Word2vec. Este é apenas um dos muitos exemplos que podemos começar a usar e moldar às nossas necessidades.

Busca de palavras-chave em documentos e outros recursos de pesquisa = Elasticsearch

A reutilização de modelos economiza tempo e dinheiro. É provável que usemos o modelo Word2vec pré-treinado do Google News, ou talvez um modelo GloVe (tudo isso é estudado no curso Processamento de Linguagem Natural aqui na DSA). Basicamente, o plano é usar algum código que tenhamos na prateleira.

O Word2vec não transfere o aprendizado em modelos salvos e, portanto, os modelos pré-treinados talvez não sejam uma boa representação do desempenho de um modelo personalizado. Aconselhamos o cliente e eles concordam com o plano.

O Elasticsearch tem muitas APIs interessantes que o cliente não conhece e, por isso, agendamos alguns treinamentos para a equipe do cliente, além do trabalho de desenvolvimento.

Como eu disse, é um projeto de alto nível.

 

Etapa 2: Priorize os resultados iniciais

Então, queremos precificar este projeto. Vamos decidir qual é a prioridade mais urgente para a empresa e precificar a primeira fase do desenvolvimento. Por que decidir sobre os termos do nosso casamento antes de termos um primeiro encontro? Minha filosofia aqui é dar preços realistas desde o primeiro dia e manter a fase inicial curta para que o cliente possa ver e sentir os resultados rapidamente. O projeto é sobre semelhança semântica de sentenças, parágrafos e documentos inteiros. Vamos levantar o sistema e mostrar ao cliente os recursos o quanto antes. O cliente concorda com a alocação de 2 instâncias AWS. Um servidor que chamamos de “WEB1” é o servidor Web RESTful LEMP que conterá nosso código Angular, o armazenamento de arquivos (a partir do upload feito pelos analistas quando forem usar a aplicação) e, posteriormente, também hospedará o código Elasticsearch. Não há GPU nesta instância, mas ela terá um anexo grande de armazenamento em bloco para armazenar todos os arquivos (podemos usar aqui o Amazon S3 pagando poucos centavos por GB de armazenamento).

O outro servidor chamamos de “ML1”, que irá conter o sistema de Machine Learning. O servidor de Machine Learning aceitará tarefas do servidor web e armazenará as respostas que serão despejadas em lotes de volta ao servidor web. ML1 será uma instância p2 com bastante memória RAM e GPU, pois será martelada com muitas tarefas que serão executadas na GPU, mas também com alta demanda de memória. Isso ocorre porque os modelos de word embedding, como aqueles que teremos em Word2vec / GloVe, consomem mais memória do que o uso intensivo de computação.

Nós não capturamos modelagem de tópicos nesta primeira fase, e nem o módulo de Elasticsearch e o treinamento dos analistas. Em conversas com o cliente, também pressionamos sobre a implementação de regressão de relevância dos documentos. Todos esses itens podem entrar na fase 2. Agora o cliente quer ver a mágica acontecer. Vamos entregar o que ele quer e deixá-lo feliz, para que ele possa contratar a fase 2. 

Em seguida, lançamos os tickets do projeto no JIRA.

Com foco na classificação do documento, estimamos 10 horas para o provisionamento de instâncias do AWS e outras 5 horas para instalações de certificado (PKKs, SSL, OTP, etc.). Essas 15 horas incluem as instalações da ferramenta. Adicionamos 3 horas de transferência de conhecimento à cotação para garantir que o cliente saiba como o sistema funciona. Agora temos um sistema de 2 instâncias em funcionamento. Vamos configurar o servidor de Machine Learning e a GUI. Não há necessidade de balanceadores de carga, distribuição geográfica, etc. Mantemos isso simples, pelo menos por enquanto.

Estimamos 10 horas para o desenvolvimento da GUI, incluindo o upload de arquivos e a apresentação dos resultados. Decidimos usar o tensorboard para mostrar o clustering de documentos e uma tabela angular para classificar os resultados em uma GUI separada. A autenticação é feita pela senha do HTACCESS para esta fase. Na fase 2, podemos fazer o logon do Oauth 2.0 para que o analista possa efetuar login no sistema com sua conta de trabalho.

Não perca as contas. Já estamos com 25 horas. Vamos continuar.

O núcleo do servidor de Machine Learning não levará mais de 10 horas para configurar e implantar. O requisito é muito bem combinado com as capacidades existentes das ferramentas de Machine Learning. Este total de horas inclui uma demonstração de uma hora para mostrar ao cliente como o sistema inteiro funciona.

 

Etapa 3: Fecha a Conta e Passa a Régua

A regra prática é estimar um fator de π ao tentar aproximar um preço ou duração do projeto. Vamos truncar pi para 3. Assim, o Slippage (termo que refere-se à diferença entre o preço esperado de uma transação e o preço pelo qual a negociação é realmente executada) pode ser de até 35 * 3 * (2/3) = 35 * 2 = 70 horas.

 

Agora Sim, o Preço

  • – Configuração do servidor: 15 horas
  • – Configuração da interface: 10 horas
  • – Desenvolvimento ML: 10 horas
  • – Slippage: até 70 horas

 

Portanto, estimamos um esforço na fase 1 de 35 a 105 horas, ou US $ 8.750 a US $ 26.250 (dólares americanos). Para manter os custos contidos, eu revisaria as etapas que o cliente pode assumir (como configurar as instâncias AWS se tiver profissionais qualificados) para evitar o Slippage, incluindo o planejamento antecipado do acesso à rede (firewalls, portas, certificados, etc.). Este é o tipo de projeto que eu ofereceria para fixar o preço em 10K (10 mil dólares), porque o risco de Slippage é baixo.

Se especificarmos uma segunda e terceira fases, espero que cada uma delas chegue a cerca de 10K (10 mil dólares) cada uma, para um custo total do projeto de 30K (30 mil dólares). As fases seriam liberadas aproximadamente a cada 3 ou 4 semanas. Talvez mais rápido, pois este projeto é significativamente mais simples que a média. É somente nesse ponto em que o projeto é especificado como uma declaração de trabalho (Statement of Work) e que o cliente realmente assina o contrato.

Ao encerrarmos o projeto, tentamos vender mais soluções de Machine Learning para o cliente, o que pode agregar valor para o cliente além do projeto inicial. Isso nos mantém no jogo para a fase 4 e além.

 

Conclusão

Este foi um exemplo bem simples. Um projeto de detecção de fraudes por exemplo, pode custar entre 100k e 300k (de 100 a 300 mil dólares), dependendo do escopo do projeto, da complexidade e dos requerimentos de sistema.

Espero que esse exemplo simples tenha sido um mergulho na mente de um consultor de IA quando se trata de precificar projetos. Se você gostou deste artigo, por favor, recomende, compartilhe ou deixe seu comentário.

 

E você, o que está esperando para entrar neste incrível universo? A falta de profissionais qualificados em Data Science, Machine Learning e IA é cada vez maior, o que abre muitos espaços para quem deseja trabalhar como consultor. Você pode trabalhar em 4, 5 ou 6 projetos como esse no período de 1 ano, fazendo seu trabalho remoto e visitando o cliente apenas quando necessário. Pense nisso. Data Science, Machine Learning e IA oferecem excelentes oportunidades para empreender, em um mercado tão escasso de profissionais qualificados.

 

E se quiser iniciar sua capacitação em Data Science, Machine Learning e IA, a Data Science Academy oferece programas completos de capacitação 100% online e 100% em português, preparados por consultores que vivem na prática o que foi descrito neste artigo. Clique nos links abaixo e comece sua capacitação hoje mesmo:

 

Formação Cientista de Dados

Formação Inteligência Artificial

Formação Engenheiro de Dados

Formação Java Para Data Science e IA

Formação Análise Estatística Para Cientistas de Dados

Formação Engenheiro Blockchain

Formação Desenvolvedor Microsoft Para Data Science e IA

Formação Analista de Inteligência de Mercado

Formação Desenvolvedor RPA

Formação IA Para Medicina

Obrigado!

Equipe DSA

 

Referências:

17 Casos de Uso de Machine Learning

Three Keys To A Successful Machine Learning Project

Definição de preço da AWS

How to Price an AI Project

Lemay.ai

Formação Cientista de Dados

Formação Inteligência Artificial

Formação Engenheiro de Dados

Formação Java Para Data Science e IA

Formação Análise Estatística Para Cientistas de Dados

Arquiteto de Soluções AWS