terça-feira, 24 de fevereiro de 2015

Contribua: projetos em ciência cidadã e computação por humanos

Como temos divulgado aqui no blog, o LSD possui diversos projetos em ciência cidadã e computação por humanos. No final de 2014, conduzimos um esforço para integrar nossos projetos em uma só plataforma e também oferecer ferramentas e know-how para outros pesquisadores que estejam atuando nessas áreas. O resultado desse esforço foi a criação da organização Contribua, cuja principal face é a plataforma Contribua (contribua.org).

A plataforma está em seus primeiros passos, mas já temos três projetos abertos à participação popular:

  • "ÁguaNossa", em que voluntários participam reportando falta de água em Campina Grande;
  • "Como é Campina?", em que voluntários participam avaliando características de segurança e agradabilidade em regiões de Campina Grande;
  • "Memória Brasil", no qual voluntários ajudam a transcrever tabelas existentes em livros antigos da Biblioteca do Ministério da Fazenda.  
Convidamos você a visitar esses projetos e dar a sua contribuição. Se você quer ficar informado sobre novos projetos que forem lançados no Contribua, basta seguir o Contribua no Twitter https://twitter.com/contribua. Se você quer nos dar algum feedback, envie-nos um e-mail contribua@lsd.ufcg.edu.br

sexta-feira, 3 de outubro de 2014

Qual a relação entre computação por humanos e sistemas distribuídos?

Computação por humanos (Human Computation) é uma área interdisciplinar. Maior parte da produção científica nessa área tem sido apresentada em veículos ligados a fatores humanos e inteligência artificial, como as conferências CHI, CSCW, KDD e AAAI. Apenas recentemente têm surgido veículos que se dedicam exclusivamente a computação por humanos, como a conferência HCOMP, que teve a primeira edição no ano passado, e o periódico Human Computation, que lançará o primeiro issue esta semana.

Em razão da pouca atividade nessa área na comunidade de sistemas distribuídos, nós encontramos diversos desafios quando começamos a desenvolver pesquisas em sistemas de computação por humanos no LSD em meados de 2012. Os dois desafios principais foram: 1) como modelar um sistema de computação por humanos como um tipo de sistema distribuído em que os processadores são seres humanos ao invés de máquinas? e 2) como colocar em perspectiva os aspectos que são inerentes desse novo tipo de sistema distribuído?.

Entendíamos que, ao tratar esses dois desafios, deixaríamos mais claro o espaço que existe para nós (e toda a comunidade de sistemas distribuídos) fazermos pesquisa nessa nova área. Isso resultou em um grande esforço no LSD para construir um arcabouço conceitual que nos permitisse olhar a área na perspectiva de sistemas distribuídos e ao mesmo tempo organizar a literatura sobre computação por humanos nessa perspectiva. Os resultados desse esforço estão apresentados no artigo "Considering human aspects on strategies for designing and managing distributed human computation" publicado recentemente no Journal of Internet Services and Applications.



Além dos pesquisadores que usam ou desenvolvem pesquisas em computação por humanos, a leitura desse artigo é fortemente recomendada para pesquisadores que estudam aplicações distribuídas e que têm interesse em fatores humanos em sistemas computacionais.

quarta-feira, 26 de fevereiro de 2014

Pense no negócio!

Essa semana eu participei de um evento chamado Cloudscape. Entre outras coisas, participar desse evento fez aumentar a minha crença ainda mais em duas coisas:

1. um bom evento é feito com bons palestrantes;
2. computação na nuvem é apenas um (velho) modelo de negócio que transforma TI em uma utility.

Vou tentar usar mais e mais o ponto 1 na hora de escolher quais eventos assistir (sempre que possível).

Vou tentar usar mais e mais o ponto 2 para nortear as atividades de P&D em cloud das quais participo. Por exemplo, tenho pensado bastante no modelo de negócios do fogbow, novo projeto que até ontem eu achava que era melhor descrito como uma forma de juntar minha cloud privada em uma federação de clouds privadas, mas que começo a ver mais como uma forma de armazenar ciclos ociosos de minha cloud privada, de forma que eu possa usar todos eles ao mesmo tempo no futuro ... ou dito de outra forma, como conseguir uma overdose de CPU de forma mais barata. Mas, isso será tema de um outro blog.

Exemplos de 1+2 podem ser vistos aqui e aqui.

Algumas coisas para ficar de olho: Cloud Foundry, e Software Defined Enterprise.

O que vi de melhor no Citizen Cyberscience Summit em Londres

Semana passada participei da terceira edição do Citizen Cyberscience Summit, realizado em Londres. O evento ampliou bastante o meu entendimento sobre Ciência Cidadã, que era muito restrito aos sistemas de computação voluntária (aqueles que usam BOINC, por exemplo) e, mais recentemente, computação por humanos voluntária (volunteer thinking), como os projetos do Zooniverse e da Citizen Science Alliance. Na realidade, a maior parte da atividade na área de ciência cidadã está concentrada em projetos bem antigos onde os cidadãos estão mais envolvidos com a coleta de dados em campo, normalmente associada a projetos com fins ambientalistas. Veja por exemplo o projeto eBird. Outros projetos podem ser "achados" nesse site. Além desses projetos, duas outras coisas estão na moda. Uma é a tendência de ampliar a participação do cidadão em projetos de ciência cidadã - como as pessoas adoram cunhar termos novos, isso está sendo chamado de Extreme Citizen Science. A outra são os sistemas de sensoriamento participativo, que são muito importantes no contexto das cidades inteligentes. Assisti algumas apresentações de resultados do projeto EveryAware. A lição mais importante dessas apresentações é a atenção que é preciso ter sobre a calibragem dos sensores. Por exemplo, os projetos que usam o microfone do smartphone para medir poluição sonora precisam ser calibrados individualmente!

A apresentação que eu fiz sobre o trabalho que Lesandro está desenvolvendo sob minha orientação foi muito bem recebida. Algumas pessoas me procuraram depois da apresentação oferecendo dados de seus projetos para que a gente pudesse analisá-los. Uma dessas pessoas foi Amy Robinson do projeto EyeWire.

A palestra final do evento, proferida por Jeff Howe, autor do livro Crowdsoursing, foi muito interessante. A turma de sistemas colaborativos teria adorado, mas é muito provável que eles já tenham assistido isso aqui, que foi mais ou menos o mesmo que ele falou lá.

Acho que com a criação do Laboratório para Cidades Inteligentes temos uma boa oportunidade para juntar coisas de ciência cidadã mais "extrema" com sensoriamento participativo e crowdsourcing. Na minha opinião, isso passa por envolver de forma abrangente as escolas do município para que esse tipo de atitude possa ser despertada bem cedo em toda uma geração. De certa forma, envolver as pessoas no processo científico/criativo pode ser uma boa maneira de formar uma geração de pessoas com um senso crítico mais aguçado, mais questionadoras.

segunda-feira, 3 de fevereiro de 2014

Abrindo as conversas LSD de 2014

As conversas LSD de 2014 iniciaram no último dia 20/01, com uma palestra de André Martin, doutorando da TU-Dresden, em visita ao nosso laboratório. Seguem mais informações sobre seu trabalho, intitulado "Minimizing Overhead for Fault Tolerance in Event Stream Processing Systems" (enviado pelo palestrante; os slides aqui).

"Event Stream Processing (ESP) is a well-established approach for low-latency data processing enabling users to quickly react to relevant situations in soft real-time. In order to cope with the huge amount of data being generated each day and to cope with fluctuating workloads
from data sources such as twitter and facebook, such systems must be highly scalable and elastic. Hence, ESP systems are typically long running applications deployed on several hundreds of nodes in either dedicated data centers or cloud environments such as Amazon EC2. In such
environments, nodes are likely to fail due to software aging, process or hardware errors whereas the unbounded stream of data asks for continues processing.

Active replication and rollback recovery based on checkpoints and in-memory logging (upstream backup) are two commonly used approaches in order to cope with such failures in ESP systems. However, these approaches suffer either from a high resources footprint, low throughput
or unresponsiveness due to long recovery times.

In this status talk, I will present related work in the area of ESP systems with the focus on fault tolerance and discuss the advantages and disadvantages of these works. I will also present my research contributions made so far, in particular, the new ways to reduce the run-time and resource overhead of the aforementioned approaches as well as hybrid approaches for guaranteeing low latency and high throughput. I will conclude the talk with a sketch of the road map for the remainder
of my doctoral thesis."

Contato do palestrante: andre.martin AT se.inf.tu-dresden.de

quinta-feira, 30 de janeiro de 2014

Contribuição de voluntários em projetos científicos que utilizam computação por humanos


Sistemas de computação por humanos permitem que pessoas executem tarefas que os computadores de silício  ainda não são capazes de executar de forma satisfatória, mas que seres humanos são capazes de executar com eficiência e corretude. Muitas destas tarefas são ligadas à criatividade, processamento de linguagem natural, extração de informação em imagens, vídeo e áudio. Exemplos de sistemas de computação por humanos são Amazon Mechanical Turk, que permite que seres humanos executem tarefas que não estão relacionadas a um tema ou propósito específico, e a plataforma Zooniverse, que se dedica às tarefas relacionadas a projetos científicos.

Exemplo de tarefa de classificação de galáxias no projeto Galaxy Zoo
hospedado na plataforma Zooniverse
Tarefas de computação por humanos são frequentes em pesquisas científicas que envolvem o processamento de grande bases de dados de imagens, por exemplo: pesquisas biológicas que trabalham com grande base de imagens coletadas do monitoramento de um dado ecossistema e pesquisas em astronomia que utilizam grande quantidade de imagens coletadas por telescópios. Em sistemas de computação por humanos com propósito científico, geralmente os seres humanos executam tarefas como um trabalho voluntário. Esse é o caso, por exemplo, dos projetos hospedados na plataforma Zooniverse.

Naturalmente, a participação dos voluntários executando tarefas nesses sistemas é fundamental para que os cientistas obtenham as informações que eles necessitam para conduzir suas pesquisas. Diversos estudos têm mostrado que os voluntários que contribuem executando tarefas nesses sistemas possuem diferente motivações, que vai desde curiosidade  em computação humana de forma geral até um interesse específico em algum tópico científico, como astronomia, biologia, arqueologia. A motivação mais reportada pelos voluntários é o desejo de contribuir para ciência. Dessa forma, a motivação é um fator fundamental para levar o voluntário ao sistema e/ou mantê-lo contribuindo. Entretanto, os sistemas de computação por humanos precisam ser projetados de modo a permitir que essa motivação se converta em contribuição efetiva, por exemplo, permitindo que o voluntário tenha fácil acesso às tarefas e implementando recursos que façam com que a execução das tarefas seja uma atividade prazerosa e não entediante. 

Diversas pesquisas têm sido desenvolvidas no LSD com o objetivo de entender como os voluntários realizam suas contribuições em sistemas de computação por humanos e como esses sistemas podem ser projetados de modo a serem satisfatórios tanto para os cientistas como para os voluntários.  Um resultado recente dessas pesquisas é o artigo “Volunteers' Engagement in Human Computation Astronomy Projects”. Este artigo foi aceito para publicação na revista Computing in Science and Engineering do IEEE Computer Society. A pesquisa foi conduzida no LSD por Lesandro Ponciano e Francisco Brasileiro em cooperação com Robert Simpson que é membro da equipe que desenvolve e mantém o sistema Zooniverse na Oxford University, na Inglaterra, e Arfon Smith que é membro da equipe que desenvolve e mantém o sistema Zooniverse no Adler Planetarium, nos Estados Unidos.

A pesquisa é baseada em dados de aproximadamente 10 milhões de tarefas executadas por mais de 100 mil voluntários ao longo de dois anos em dois projetos de astronomia hospedados no Zooniverse: Galaxy Zoo e The Milky Way Project. A pesquisa se concentrou em analisar quatro características da contribuição dos voluntários: (i) frequência, que é o número de dias que o voluntário visitou o sistema para executar tarefas; (ii) produtividade diária, que é o número de tarefas que o voluntário executou nos dias em que ele esteve ativo no sistema; (iii) tamanho típico da sessão de contribuição, que é o tempo contínuo que o voluntário permaneceu executando tarefas em cada dia que esteve ativo; e (iv) tempo dedicado, que é o tempo total que o voluntário ficou executando tarefas no sistema, somados todos os dias em que ele visitou o sistema.

Além de definir essas características de engajamento, a pesquisa também focou em identificar distribuições de probabilidade que descrevem o comportamento dos voluntários no sistema em cada uma dessas características e as correlações entre as características. As distribuições de probabilidade e correlações foram obtidas com um claro propósito de servir como informação para que novos estudos possam ser conduzidos. Por exemplo, as distribuições podem ser usadas para gerar dados a serem utilizados em simulações que focam no estudo mais específico de algum comportamento dos voluntários.

O estudo também permite entender os padrões de contribuição dos voluntários e propor intervenções na forma como os sistemas são projetados de modo a torná-los mais efetivos. Por exemplo, o estudo mostra que de uma forma geral os voluntários exibem dois comportamentos: transiente e regular. Os voluntários transientes são aqueles que executam tarefas nos projetos um único dia e não retornam para executar mais tarefas. A maioria dos voluntários exibe esse comportamento. Os voluntários regulares são mais engajados em termos da frequência no projeto e da contribuição agregada (número de tarefas e tempo dedicado). Entretanto, a minoria dos voluntários exibe esse perfil. Embora significativamente diferente dos transientes, os grupo de voluntários regulares é bastante heterogêneo. Essa heterogeneidade também é analisada no artigo. Naturalmente, a contribuição de todos os voluntários (regulares e transientes) é importante para os projetos. Entretanto, o sistema pode ser ainda mais eficaz se projetado de forma que os voluntários se sintam mais dispostos a exibir um comportamento regular do que um comportamento transiente. Nesse sentido, os autores discutem como estratégias de recrutamento de voluntários, encorajamento de contribuição e design de tarefas podem ser desenvolvidas de modo a contribuir para que esse objetivo seja atingido.

Os trabalhos desenvolvidos no LSD na área de computação por humanos são apresentados nas Conversas LSD que ocorrem ao longo do ano. O conteúdo do artigo discutido neste post e outros trabalhos sobre engajamento e eficiência de voluntários em projetos científicos serão apresentados ainda no primeiro trimestre deste ano. A data e horário serão posteriormente definidos e divulgados aqui no blog.

segunda-feira, 17 de junho de 2013

Uma nuvem privada oportunista para execução de aplicações Bag-of-Tasks


Este trabalho é o resultado de pesquisa e desenvolvimento realizado no LSD por Abmar Barros, Patrícia Alanis, Francisco Brasileiro e Marcos Nóbrega. Foi publicado no XXXI Simpósio Brasileiro de Redes de Computadores e Sistemas Distribuídos (SBRC 2013).

Atualmente a Computação na Nuvem (Cloud Computing) é um dos principais paradigmas da computação, no qual recursos computacionais são oferecidos como serviços. Considerando o modelo de Infraestrutura como Serviço (IaaS), motivações distintas levam o usuário a utilizar nuvens públicas, onde solicita máquinas, redes e armazenamento sob demanda de provedores, ou implantar uma nuvem privada, que requer um investimento em infraestrutura para a aquisição de datacenters próprios e faz sentido para aplicações corporativas que necessitam de uma alta garantia do serviço. Existem classes de aplicações que se beneficiariam de uma infraestrutura não dedicada de nuvem, que é o caso de aplicações BoT (Bag-of-Tasks), que são aplicações paralelas que as tarefas são independentes entre si.

O paradigma de nuvens públicas, que oferece baixa QoS, não encontra uma analogia no cenário típico de implantação de nuvem privada. Além disso, os usuários finais, de uma forma geral, não estão acostumados com a interface da nuvem, que, a priori, se resume a uma coleção de instâncias com acesso SSH.

Este trabalho apresenta uma abordagem baseada em uma nuvem privada utilizando o software Eucalyptus, porém de uma forma oportunista, que permite descobrir e utilizar recursos ociosos que pertencem a uma infraestrutura física local, para isso reimplementamos o Node Controller (NC), um componente responsável por executar ações sobre os recursos físicos, que em sua implementação original limita o uso para os hipervisores XEN e KVM, e impõe uma série de requisitos de sistema para sua implantação que em um ambiente heterogêneo se torna inviável. O componente foi reimplementado em Java, uma vez que este dependeria apenas de uma JVM, e utiiliza o VirtualBox como hipervisor, já que seus executáveis estão disponíveis para uma série de sistema operacionais (Linux, Windows e MacOS) e não têm requisitos de hardware. A figura a seguir apresenta a arquitetura do NC oportunista apresentado neste trabalho.




O segundo problema citado refere-se a dificuldade de adaptação de usuários finais com a interface de nuvem, e para viabilizar a utilização da nuvem oportunista por pesquisadores de diferentes áreas, este trabalho apresenta um broker de nuvem, capaz de executar aplicações BoT na nuvem de forma transparente. A arquitetura do broker é constituída por dois componentes: o broker deamon, uma aplicação REST que executa em segundo plano e é responsável por escalonar tarefas, requisitar instâncias, transferir arquivos e executar comandos, e o broker client, uma interface onde o usuário pode submeter tarefas e recuperar informações de estados. A figura a seguir mostra um exemplo de aplicação BoT que pode ser submetida ao broker.



Para mais detalhes sobre a arquitetura da solução, e sobre o funcionamento do broker de nuvem veja o nosso artigo Uma nuvem privada oportunista para execução de aplicações Bag-of-Tasks.