Qiskit

Origem: Wikipédia, a enciclopédia livre.

Qiskit é um software development kit (SDK) para trabalhar com computadores quânticos no nível de circuitos, pulsos e algoritmos. Ele fornece ferramentas para criar e manipular programas quânticos e executá-los em dispositivos quânticos protótipos na IBM Quantum Platform ou em simuladores em um computador local. Ele segue o modelo de circuito para computação quântica universal, e pode ser usado para qualquer hardware quântico (atualmente suporta qubits supercondutores e íons aprisionados)[1] que segue este modelo.[2][3][4]

Qiskit foi fundado pela IBM para permitir o desenvolvimento de software para seu serviço de computação quântica em nuvem, IBM Quantum Experience.[5][6] Contribuições também são feitas por apoiadores externos, geralmente de instituições acadêmicas.[7][8]

A versão principal do Qiskit utiliza a linguagem de programação Python. Versões para Swift[9] e JavaScript[10] foram inicialmente exploradas, embora o desenvolvimento para essas versões tenha sido interrompido. Em vez disso, uma reimplementação mínima de recursos básicos está disponível como MicroQiskit,[11] que foi projetada para ser fácil de portar para plataformas alternativas.

Uma variedade de notebooks Jupyter são fornecidos com exemplos de computação quântica sendo usados.[12] Exemplos incluem o código-fonte por trás de estudos científicos que utilizam o Qiskit,[13] bem como um conjunto de exercícios para ajudar as pessoas a aprenderem o básico da programação quântica. Um livro didático de código aberto baseado no Qiskit está disponível como suplemento para cursos universitários de algoritmos quânticos ou computação quântica.[14]

Componentes[editar | editar código-fonte]

Qiskit é composto por elementos que trabalham juntos para possibilitar a computação quântica. O objetivo central do Qiskit é construir uma pilha de software que torne mais fácil para qualquer pessoa usar computadores quânticos, independentemente do seu nível de habilidade ou área de interesse; o Qiskit permite que os usuários projetem experimentos e aplicativos e os executem em computadores quânticos reais e/ou simuladores clássicos. O Qiskit fornece a capacidade de desenvolver software quântico tanto no nível de código de máquina do OpenQASM, quanto em níveis abstratos adequados para usuários finais sem experiência em computação quântica. Essa funcionalidade é fornecida pelos seguintes componentes.[15]

Qiskit Terra[editar | editar código-fonte]

O elemento Terra é a base sobre a qual o resto do Qiskit é construído. Qiskit Terra fornece ferramentas para criar circuito quânticos no nível do código de máquina quântico ou próximo a ele.[16] Permite que os processos que são executados em hardware quântico sejam explicitamente construídos em termos de portas quânticas. Ele também fornece ferramentas para permitir que os circuitos quânticos sejam otimizados para um dispositivo, além de gerenciar lotes de trabalhos e executá-los em dispositivos quânticos de acesso remoto e simuladores.

A seguir, mostra um exemplo simples de Qiskit Terra. Nele, um circuito quântico é criado para dois qubits, que consiste nas portas quânticas necessárias para criar um Estado de Bell. O circuito quântico então termina com medidas quânticas, que extraem um bit de cada qubit.

from qiskit import QuantumCircuit

qc = QuantumCircuit(2, 2)

qc.h(0)
qc.cx(0, 1)
qc.measure([0,1], [0,1])

Qiskit Aer[editar | editar código-fonte]

O elemento Aer fornece simuladores de computação quântica de alto desempenho com modelos realistas de ruído. No curto prazo, o desenvolvimento de software quântico dependerá em grande parte da simulação de dispositivos quânticos pequenos. Para o Qiskit, isso é fornecido pelo componente Aer. Isso fornece simuladores hospedados localmente no dispositivo do usuário, bem como recursos de HPC disponíveis através da nuvem.[17] Os simuladores também podem simular os efeitos do ruído para modelos de ruído simples e sofisticados.[18]

Continuando com o exemplo anterior: Uma vez que o circuito quântico tenha sido criado, ele pode ser executado em um backend (seja hardware quântico ou um simulador). No exemplo a seguir, um simulador local é usado.

from qiskit import Aer, execute

backend = Aer.get_backend("qasm_simulator")
job = execute(qc, backend)
result = job.result()
print(result.get_counts(qc))

A instrução de impressão final aqui mostrará os resultados retornados pelo backend. Este é um dicionário Python que descreve as strings de bits obtidas a partir de múltiplas execuções do circuito quântico. No circuito quântico usado neste exemplo, as strings de bits '00' e '11' devem ser os únicos resultados possíveis, e devem ocorrer com igual probabilidade. Os resultados completos, portanto, normalmente terão as amostras divididas aproximadamente igualmente entre os dois, como {'00':519, '11':505} .

Experimentos feitos em hardware quântico usando o Qiskit foram usados em muitos artigos de pesquisa,[19] tais como em testes de correção de erros quânticos,[20][21] geração de emaranhamento[22] e simulação de dinâmicas longe do equilíbrio.[23]

Qiskit Ignis[editar | editar código-fonte]

A partir da versão 0.7.0, lançada em 6 de dezembro de 2021, o Qiskit Ignis foi descontinuado e substituído pelo projeto Qiskit Experiments.[24]

O elemento Ignis fornece ferramentas para verificação de hardware quântico, caracterização de ruído e correção de erros. Ignis é um componente que contém ferramentas para caracterizar o ruído em dispositivos de curto prazo, além de permitir que cálculos sejam realizados na presença de ruído. Isso inclui ferramentas para avaliar dispositivos de curto prazo, mitigação de erros e correção de erros.[25]

Ignis é destinado àqueles que desejam projetar códigos de correção de erros quânticos, ou que desejam estudar maneiras de caracterizar erros por meio de métodos como tomografia, ou até mesmo encontrar uma maneira melhor de usar portas explorando o desacoplamento dinâmico e o controle ótimo.

Qiskit Aqua[editar | editar código-fonte]

A partir da versão 0.9.0, lançada em 2 de abril de 2021, o Qiskit Aqua foi descontinuado com seu suporte encerrado e seu arquivamento eventual ocorrerá no mínimo 3 meses após essa data.

O elemento Aqua fornecia uma biblioteca de algoritmos interdisciplinares sobre os quais aplicações específicas de domínio podem ser construídas. No entanto, o lançamento do Qiskit 0.25.0 incluiu uma reestruturação das aplicações e algoritmos. O que anteriormente era chamado de Qiskit Aqua, o módulo de aplicações e algoritmos único do Qiskit, agora está dividido em módulos de aplicação dedicados para Otimização, Finanças, Aprendizado de Máquina e Natureza (incluindo Física e Química). Os algoritmos principais e a funcionalidade do operador opflow foram movidos para o Qiskit Terra.

Além da reestruturação, todos os algoritmos seguem um paradigma unificado: os algoritmos são classificados de acordo com os problemas que resolvem, e dentro de uma classe de aplicação, os algoritmos podem ser usados de forma intercambiável para resolver o mesmo problema. Isso significa que, ao contrário do que acontecia antes, as instâncias de algoritmos estão desacopladas do problema que resolvem.[26]

Qiskit Optimization[editar | editar código-fonte]

Qiskit Optimization é um framework de código aberto que abrange toda a gama desde a modelagem em alto nível de problemas de otimização, com conversão automática de problemas para diferentes representações necessárias, até uma suíte de algoritmos de otimização quântica fáceis de usar que estão prontos para serem executados em simuladores clássicos, bem como em dispositivos quânticos reais via Qiskit. O módulo de Otimização permite a modelagem fácil e eficiente de problemas de otimização usando docplex.[27]

Qiskit Finance[editar | editar código-fonte]

Qiskit Finance é um framework de código aberto que contém componentes de incerteza para problemas de ações/títulos, tradutores Ising para otimizações de portfólio e provedores de dados para fornecer dados reais ou aleatórios para experimentos financeiros.[28]

Qiskit Machine Learning[editar | editar código-fonte]

O pacote de Aprendizado de Máquina (até 2021) contém conjuntos de dados de exemplo atualmente. Ele possui alguns algoritmos de classificação como QSVM e VQC (Classificador Variacional Quântico), onde esses dados podem ser usados para experimentos, e também há o algoritmo QGAN (Rede Adversária Generativa Quântica).[29]

Qiskit Nature[editar | editar código-fonte]

Qiskit Nature é uma estrutura de código aberto que suporta problemas, incluindo cálculos de energia do estado fundamental, estados excitados e momentos de dipolo de moléculas, tanto de concha aberta quanto fechada. O código inclui drivers de química, que quando fornecidos com uma configuração molecular, retornarão integrais de um e dois corpos, bem como outros dados que são eficientemente computados de forma clássica. Esses dados de saída de um driver podem então ser usados como entrada no Qiskit Nature, que contém lógica capaz de traduzir isso para uma forma adequada para algoritmos quânticos.[30]

Ver também[editar | editar código-fonte]

Referências

  1. «Qiskit - Write once, target multiple architectures». IBM Research Blog (em inglês). 5 de novembro de 2019. Consultado em 20 de dezembro de 2019. Cópia arquivada em 26 de novembro de 2020 
  2. License
  3. «Releases – Qiskit». GitHub. Consultado em 20 de dezembro de 2019. Cópia arquivada em 16 de dezembro de 2021 
  4. License
  5. Magee, Tamlim (Agosto 24, 2018). «What is Qiskit, IBM's open source quantum computing framework». Computerworld UK. Consultado em 11 Dezembro 2018. Cópia arquivada em 6 Março 2019 
  6. Hemsoth, Nicole (Agosto 7, 2018). «QISKit Developments Key to IBM Quantum Engagement». The Next Platform. Consultado em 11 Dezembro 2018. Cópia arquivada em 6 Março 2019 
  7. «Qiskit Github page». GitHub. Consultado em 5 de novembro de 2018. Cópia arquivada em 4 de fevereiro de 2021 
  8. Wille, R.; Meter, R. Van; Naveh, Y. (Março 25, 2019). «IBM's Qiskit Tool Chain: Working with and Developing for Real Quantum Computers». 2019 Design, Automation & Test in Europe Conference & Exhibition (DATE). [S.l.: s.n.] pp. 1234–1240. ISBN 978-3-9819263-2-3. doi:10.23919/DATE.2019.8715261. Consultado em 30 de dezembro de 2023. Cópia arquivada em 17 de outubro de 2022 
  9. «Qiskit in swift». GitHub. Consultado em Setembro 24, 2019. Cópia arquivada em Dezembro 16, 2021 
  10. «Qiskit (Quantum Information Science Kit) for JavaScript». GitHub. Consultado em Setembro 24, 2019. Cópia arquivada em Agosto 14, 2018 
  11. «MicroQiskit». GitHub. Consultado em Fevereiro 10, 2021. Cópia arquivada em Fevereiro 12, 2022 
  12. «A collection of Jupyter notebooks showing how to use Qiskit that is synced with the IBM Quantum Experience». GitHub. Consultado em Setembro 24, 2019. Cópia arquivada em Julho 7, 2018 
  13. «Celebrating the IBM Q Experience community, and their research». IBM. IBM Research Editorial Staff. Março 8, 2018. Consultado em Setembro 24, 2019. Cópia arquivada em Outubro 10, 2019 
  14. «Learn Quantum Computing using Qiskit». Consultado em 20 Dezembro 2019. Cópia arquivada em 20 Dezembro 2019 
  15. Javadi-Abhari, Ali; Gambetta, Jay M. (Julho 13, 2018). «Qiskit and its Fundamental Elements». Medium. Consultado em 10 Janeiro 2019. Cópia arquivada em 8 Janeiro 2019 
  16. «Qiskit Terra». Qiskit. Consultado em Setembro 24, 2019. Cópia arquivada em Outubro 10, 2019 
  17. «An Open High-Performance Simulator for Quantum Circuits». IBM. IBM Research Editorial Staff. Maio 1, 2018. Consultado em Setembro 24, 2019. Cópia arquivada em Junho 14, 2019 
  18. Wood, Christopher J. (Dezembro 19, 2018). «Introducing Qiskit Aer: A high performance simulator framework for quantum circuits». Medium. Consultado em Setembro 24, 2019. Cópia arquivada em Novembro 1, 2019 
  19. «IBM Q Experience community publishes research». IBM Research Blog (em inglês). 8 de março de 2018. Consultado em 14 de julho de 2021. Cópia arquivada em 10 de outubro de 2019 
  20. Wootton, James R.; Loss, Daniel (2018). «Repetition code of 15 qubits». Physical Review A. 97 (5): 052313. Bibcode:2018PhRvA..97e2313W. ISSN 2469-9926. arXiv:1709.00990Acessível livremente. doi:10.1103/PhysRevA.97.052313 
  21. Roffe, Joschka; Headley, David; Chancellor, Nicholas; Horsman, Dominic; Kendon, Viv (2018). «Protecting quantum memories using coherent parity check codes». Quantum Science and Technology. 3 (3). 035010 páginas. Bibcode:2018QS&T....3c5010R. ISSN 2058-9565. arXiv:1709.01866Acessível livremente. doi:10.1088/2058-9565/aac64e 
  22. Wang, Yuanhao; Li, Ying; Yin, Zhang-qi; Zeng, Bei (2018). «16-qubit IBM universal quantum computer can be fully entangled». npj Quantum Information. 4 (1): 46. Bibcode:2018npjQI...4...46W. ISSN 2056-6387. arXiv:1801.03782Acessível livremente. doi:10.1038/s41534-018-0095-xAcessível livremente 
  23. Zhukov, A. A.; Remizov, S. V.; Pogosov, W. V.; Lozovik, Yu. E. (2018). «Algorithmic simulation of far-from-equilibrium dynamics using quantum computer». Quantum Information Processing. 17 (9): 223. Bibcode:2018QuIP...17..223Z. ISSN 1570-0755. arXiv:1807.10149Acessível livremente. doi:10.1007/s11128-018-2002-y 
  24. Qiskit/qiskit-ignis, Qiskit, consultado em 21 de dezembro de 2021, cópia arquivada em 21 de dezembro de 2021 .
  25. «Ignis provides tools for quantum hardware verification, noise characterization, and error correction.». GitHub. Consultado em Setembro 24, 2019. Cópia arquivada em Março 25, 2019 
  26. «Qiskit Algorithms Migration Guide – Qiskit 0.28.0 documentation». qiskit.org. Consultado em 14 de julho de 2021. Cópia arquivada em 14 de julho de 2021 
  27. Qiskit/qiskit-optimization, Qiskit, 13 de julho de 2021, consultado em 14 de julho de 2021, cópia arquivada em 21 de janeiro de 2022 .
  28. Qiskit/qiskit-finance, Qiskit, 13 de julho de 2021, consultado em 14 de julho de 2021, cópia arquivada em 18 de dezembro de 2021 .
  29. Qiskit/qiskit-machine-learning, Qiskit, 13 de julho de 2021, consultado em 14 de julho de 2021, cópia arquivada em 22 de julho de 2021 .
  30. Qiskit/qiskit-nature, Qiskit, 13 de julho de 2021, consultado em 14 de julho de 2021, cópia arquivada em 16 de agosto de 2021 .

Leitura adicional[editar | editar código-fonte]