Os primeiros dispositivos precisam resolver os problemas do mundo real, pressiona Will Zeng.
O mundo está prestes a ter seus primeiros computadores quânticos. A complexidade e o poder do hardware quântico, tal como as armadilhas de íons e os qubits supercondutores, estão aumentando. O investimento está brotando: de governos, por meio do emblemático programa de bilhões de dólares de tecnologia quântica “European Quantum Technology Flagship Program”, por exemplo; de empresas, incluindo Google, IBM, Intel e Microsoft; e de empresas de capital de risco, que financiaram start-ups. Um desses é nosso, a Rigetti Computing, que em junho abriu a primeira instalação dedicada à fabricação de circuitos integrados quânticos: Fab-1 em Fremont, Califórnia. A visão é que os serviços comerciais de computação quântica resolverão um dia problemas que costumavam ser incrivelmente difíceis, em áreas de design molecular e aprendizado de máquinas até a segurança cibernética e logística.
O problema é qual a melhor maneira de programar esses dispositivos. As apostas são altas — faça isso errado e teremos experimentos que ninguém pode usar ao invés de tecnologia que poderá mudar o mundo.
Descrevemos três desenvolvimentos que são necessários nos próximos cinco anos para garantir que os primeiros computadores quânticos possam ser programados para executar tarefas úteis. Primeiro, os desenvolvedores precisam pensar em abordagens “híbridas” que combinam processadores clássicos e quânticos. Por exemplo, na Rigetti, desenvolvemos uma interface chamada Quil, que inclui um conjunto de instruções básicas para gerenciar portas quânticas e processadores clássicos e para ler e escrever na e a partir da memória compartilhada. Em segundo lugar, pesquisadores e engenheiros precisam construir e usar software de código aberto para aplicações em computação quântica. Em terceiro lugar, os cientistas precisam estabelecer uma comunidade de programação quântica para criar um ecossistema de software. Essa comunidade deve ser interdisciplinar, inclusiva e focada nas aplicações.
Sistemas híbridos
A programação quântica de hoje difere de muitos trabalhos teóricos anteriores sobre algoritmos; ela está se tornando cada vez mais prática.
Teóricos da Ciência da Computação têm desenvolvido algoritmos potenciais para computadores quânticos esperados desde a década de 1990. O famoso código do matemático Peter Shor para quebrar criptografia foi um dos primeiros; muitos outros estão listados no Quantum Algorithm Zoo do US National Institute of Standards and Technology (veja em: go.nature.com/2inmtco). Esses algoritmos geralmente são projetados para computadores quânticos grandes e sem ruídos, que são diferentes dos dispositivos que estarão disponíveis nos próximos cinco anos. Esses terão dezenas a milhares, não milhões, de qubits, com pouca redundância para corrigir erros internos. Eles calcularão uma variedade limitada de coisas de maneira ruidosa. Por exemplo, eles não serão capazes de usar o algoritmo de Shor para encontrar os principais números primos de grandes números. Portanto, seu uso deve ser direcionado: eles nem sempre irão ganhar dos computadores convencionais.
Essas limitações podem ser superadas através da construção de processadores quânticos como “aceleradores” para impulsionar o desempenho de computadores convencionais. Um computador clássico pode, por exemplo, otimizar operações para compensar o ruído no processador quântico, ou agregar respostas de sequências de programas quânticos curtos. Essa programação híbrida foi demonstrada na química quântica e na melhoria de desempenho. Algoritmos que funcionam em pequenos processadores quânticos supercondutores realizaram etapas no cálculo dos estados fundamentais dos materiais e dos sistemas moleculares, por exemplo. Outro algoritmo resolveu problemas de otimização restrita, que são comuns em áreas como aprendizado de máquina, logística e programação.
Descobrimos, no entanto, que pode ser difícil prever o desempenho de algoritmos híbridos. Por exemplo, a qualidade da sub-rotina quântica em algoritmos híbridos para química pode variar muito de acordo com o sistema que está sendo simulado e os truques matemáticos utilizados. Portanto, os algoritmos híbridos de computação quântica precisam ser estudados de forma empírica, como eles são para aprendizado de máquina. A maneira de descobrir como funciona um sistema é construindo-o, vendo o que faz e posteriormente corroborar as regras gerais com matemática. Esse trabalho começará com seriedade tão logo os primeiros computadores quânticos estiverem disponíveis, e acelerará rapidamente.
Para alcançar esse estágio, os pesquisadores devem mudar suas mentalidades, e isso pode ser difícil. Vamos descobrir que algum trabalho passado tem pouca utilidade. Todos nós ouvimos conversas sobre algoritmos quânticos cujas complexidades estão, aqui e ali, elevadas a grandes expoentes, o que significa que eles poderiam levar milhões de anos para serem executados. Para os próximos dispositivos, tais códigos são tão impraticáveis quanto inúteis.
Os programadores quânticos precisam se preocupar com detalhes práticos, como modelos de ruído e contagens exatas das portas lógicas. Eles terão que decidir quais qubits usar no computador e como lidar com os intervalos de fidelidades operacionais e com precisões de baixo nível que são estranhas aos programadores mais modernos. Mas o ganho valerá a pena.
Por sua vez, os projetistas de hardware precisam estar atentos às escolhas e preferências dos programadores quânticos, para que sua tecnologia se torne mais útil.
Software aberto
Diferentes computadores clássicos se comportam de forma semelhante para possibilitar que o software escrito em um possa ser executado em outros. Os primeiros computadores quânticos terão suas próprias nuances, e o software para eles precisará ser feito sob medida. Uma vez que cada operação e instrução são importantes, as soluções generalizadas precisam ser otimizadas e software e hardware projetados simultaneamente. Algoritmos devem ser descobertos numericamente em vez de algebricamente, e desenvolvidos usando simuladores e software, em vez de canetas e papel.
Ferramentas digitais inovadoras são necessárias para desenvolver e testar algoritmos, escrever software e programar os dispositivos. Os programadores quânticos devem manter um olho na física subjacente, de modo que estejam conscientes de diferentes tipos de ruído em sequências de pulsos, por exemplo. Os benchmarks de desempenho, tais como um conjunto de moléculas padrão para ser simulado, também são necessários.
As diferenças entre a programação quântica e clássica começam no nível de instrução. Os computadores clássicos usam a lógica booleana — com operações básicas como AND, NOT, OR. As operações em cálculos quânticos, como a multiplicação de tensores e matrizes, são muito mais complexas e resultam em comportamentos incomuns. Por exemplo, a informação quântica não pode ser clonada exatamente entre os registros do processador; e ler o estado de um registro quântico altera a informação armazenada nele. O software híbrido precisa lidar com todos esses comportamentos somente o suficiente para que os programadores possam codificar facilmente. O resultado será um novo paradigma de programação, como já foram a programação orientada a objetos, probabilística e distribuída.
Os programadores quânticos devem decidir quais aspectos do sistema são essenciais a serem considerados e quais, na prática, eles podem passar por cima. Por exemplo, a execução de um programa em processadores quânticos supercondutores exige as instruções sejam traduzidas muitas vezes. As instruções de controle e leitura são convertidas de digital para analógico, de analógico para quântico, de quântico para analógico e de analógico para digital à medida que passam do hardware de controle para os qubits e voltam. Os programadores não querem ter que lidar com toda a engenharia e física de micro-ondas e, mas precisam estar cientes de como esses processos afetam o ruído ou o tempo necessário para executar o código. Eles precisam de ferramentas para trabalhar diretamente com os dispositivos, para que eles possam entender e explorar esses trade-offs.
Interfaces de programação fáceis são cruciais para tornar os computadores quânticos amplamente utilizáveis; os exemplos incluem Quil e OpenQASM da IBM. Opções mais sofisticadas ainda precisam ser adicionadas, tal como otimizações para tipos específicos de processadores. Também é necessário desenvolver linguagens de alto nível para escrever e compilar programas quânticos.
É importante que todas essas ferramentas sejam de código aberto. Esse modelo não estava disponível no início da computação digital, mas seu poder para acelerar a inovação, como no Linux nos primeiros dias da web, é essencial para que a comunidade de programação quântica cresça rapidamente. Começamos com nosso kit de ferramentas de programação quântica, Forest, que está escrito em Python, é código aberto e acessível a qualquer um. Ele se junta a um ecossistema inicial animador — grande parte de código aberto — desenvolvido por diferentes grupos de pesquisa acadêmica e industrial. Outros exemplos são LIQUi |> (incorporado em F #), Scaffold (C ++), Quipper (Haskell), QGL (Python), ProjectQ (Python), QCL, QuIDDPro e Chisel-Q (Scala). Os pesquisadores devem resistir à pressão para padronizar prematuramente as ferramentas ou tornar proprietário as partes de alto nível, exploratórias da pilha de programação.
Construa uma comunidade
Uma nova geração de programadores quânticos é necessária para estudar e implementar o software quântico — com habilidade entre as de um teórico da informação quântica e um engenheiro de software. Esses programadores entenderão como os dispositivos quânticos operam o suficiente para instruí-los e minimizar os problemas. Eles serão capazes de construir softwares utilizáveis e terão um profundo conhecimento da matemática dos algoritmos quânticos e da computação. Os especialistas dos campos em que o software será aplicado devem estar intimamente envolvidos para que o código seja realmente útil. Por exemplo, químicos como Alán Aspuru-Guzik na Universidade de Harvard em Cambridge, Massachusetts, mostraram interesse em usar algoritmos híbridos em cálculos de química quântica. Pesquisadores em outros campos, especialmente em aprendizagem de máquina e otimização, também devem participar.
“Vamos descobrir que algum trabalho passado tem pouca utilidade.”
São necessários tipos avançados de educação para treinar esta nova geração. Vários centros estão bem posicionados para reunir as habilidades e ferramentas interdisciplinares necessárias para oferecer diplomas em engenharia de computação quântica: o Institute for Quantum Computing na Universidade de Waterloo no Canadá, o Institute for Quantum Information and Matter no Instituto de Tecnologia da Califórnia em Pasadena, os centros de formação de doutorado em engenharia quântica no Reino Unido e QuSoft, o centro de pesquisa holandês para software quântico em Amsterdã. Na Rigetti, iniciamos o programa Junior Quantum Engineer para estudantes de bacharelado, que inclui treinamento em programação quântica. Nós nos associamos com o acelerador Quantum Machine Learning no Creative Destruction Lab (um centro de transferência de tecnologia que promove start-ups) na Universidade de Toronto, no Canadá, para fornecer acesso e suporte para Forest e outras ferramentas de programação.
Os programadores quânticos recém iniciados na carreira têm enormes oportunidades para se tornar líderes de um campo transformacional. Mas eles precisam de apoio. Seus supervisores devem reconhecer que o trabalho em um projeto de software de código aberto pode atrasar seu próximo artigo de pesquisa pura. Eles precisam de estágios industriais para obter uma perspectiva prática mais ampla. E eles precisam de apoio institucional para trabalhar entre os campos de engenharia de software e física quântica.
Próximos passos
É crucial que a pesquisa em algoritmos de computação quântica esteja mais próxima à pesquisa sobre o software que é usado para implementá-los.
Primeiro, os financiadores devem insistir que o trabalho teórico seja implementado em software e, na medida do possível, testado em hardware. Em segundo lugar, os pesquisadores de algoritmos devem ser explícitos sobre a arquitetura que eles estão visando. Eles devem mostrar evidências de como os algoritmos serão, sob um aspecto prático, implementados em diferentes sistemas ruidosos. Em terceiro lugar, os financiadores e editores de periódicos devem estabelecer formas padrão de avaliar o desempenho do algoritmo e os requisitos de recursos. Isso permitirá que o hardware e o software melhorem juntos, e sejam examinados minuciosamente os algoritmos mais viáveis mais rapidamente. As ferramentas de código aberto devem ser usadas sempre que possível, e as publicações devem encorajar a publicação do código ao lado dos resultados.
Finalmente, a comunidade de computação quântica deve priorizar o envolvimento de especialistas em áreas como simulação e aprendizado de máquina. Os programadores quânticos e clássicos devem colaborar mais. Convocamos todos os atuais e aspirantes pesquisadores de algoritmo quântico a apresentar seu trabalho em uma conferência clássica pelo menos uma vez no próximo ano. Cabe-nos expandir a comunidade que realizará o incrível potencial da computação quântica.
Fonte:
- ZENG, Will et al., “First quantum computers need smart software”. Nature 549, 149–151 (14 September 2017) doi:10.1038/549149a. Disponível em <http://www.nature.com/news/first-quantum-computers-need-smart-software-1.22590?sf11377>. Acesso em 16 de setembro de 2017.