Os Elementos Qiskit¶

Terra¶
Terra, o elemento ‘terra’, é a base sobre a qual reside o resto do Qiskit. Terra fornece um alicerce para compor programas quânticos no nível de circuitos e pulsos, para otimizá-los para as restrições de um dispositivo, em particular, e para gerenciar a execução de grupos de experimentos em dispositivos de acesso remoto. Terra define as interfaces para uma experiência de usuário final desejável, bem como, a manipulação eficiente de camadas de otimização, planejamento de pulso e comunicação de backend.
O Qiskit Terra é organizado em seis módulos principais:
qiskit.circuit
Um circuito quântico é um modelo para computação quântica em que um cálculo é feito realizando uma sequência de operações quânticas (geralmente portões) em um registro de qubits. Um circuito quântico geralmente começa com os qubits em um estado \(|0,…,0>\) e esses portões alteram os qubits para estados que não podem ser representados, eficientemente, em um computador clássico. Para extrair informações sobre o estado, um circuito quântico deve ter uma medição que mapeie os resultados (possível aleatório, devido à natureza fundamental dos sistemas quânticos) aos registros clássicos, que assim podem ser eficientemente representados.qiskit.pulse
Um cronograma de pulso é um conjunto de pulsos que são enviados para um experimento quântico e que são aplicados em um canal (linha de entrada experimental). Este é um nível inferior ao de circuitos e requer que cada portão no circuito seja representado como um conjunto de pulsos. Neste nível, os experimentos podem ser projetados para reduzir erros (dissociação dinâmica, mitigação de erros e formas de pulso ideais).qiskit.transpiler
Uma grande parte da pesquisa sobre computação quântica está trabalhando em como executar um circuito quântico em dispositivos reais. Nestes dispositivos, erros experimentais e de coerência introduzem erros, durante o processamento. Assim, para obter uma implementação robusta, é essencial reduzir o número de portões e o tempo de execução geral do circuito quântico. O transpilador introduz o conceito de um gerenciador de passarelas para permitir que os usuários explorem a otimização e encontrem os melhores circuitos quânticos para dado algoritmo. Chamamos de transpilador já que o resultado final ainda é um circuito.qiskit.providers
Uma vez que o usuário fez os circuitos para rodar no backend, eles precisam ter uma maneira conveniente de trabalhar com ele. No Terra fazemos isso usando quatro partes:Um
Provider
é uma entidade que implementa a classe base abstrataBaseProvider
e fornece acesso a um grupo de diferentes backends (por exemplo, backends disponíveis através do IBM Quantum). Ele interage com esses backends para, por exemplo, descobrir quais estão disponíveis ou recuperar uma instância de um determinado backend.Um
Backend
é uma entidade que implementa uma classe base abstrataBaseBackend
, que representam um simulador ou um computador quântico real, e são responsáveis por executar circuitos quânticos e retornar os resultados. Eles tem um método de execução que utiliza um objeto qobj como entrada e retorna um objeto BaseJob. Este objeto permite execução assíncrona das tarefas para recuperar os resultados do backend quando a tarefa estiver completa.Instâncias
Job
são implementações da classe de base abstrataBaseJob
e podem ser pensadas como o “ticket” para um trabalho enviado. Eles identificam o estado da execução em um determinado ponto no tempo (por exemplo, se o trabalho foi enfileirado, está executando ou tiver falhado) e também permitem o controle sobre o processo.Result
Uma vez que o job tenha terminado, o Terra permite que os resultados sejam obtidos, a partir dos backends remotos utilizandoresult = job.result()
. Este objeto de resultado contém os dados quânticos e a forma mais comum de interagir com ele é utilizandoresult.get_counts(circuito)
. Este método permite que o usuário consiga as contagens brutas do circuito quântico e use-as para mais análises com ferramentas de informação quânticas fornecidas pelo Terra.
qiskit.quantum_info
Para executar algoritmos mais avançados e análise dos circuitos executados no computador quântico, é importante ter ferramentas para implementar tarefas simples de informação quântica. Estas incluem métodos para estimar métricas e gerar estados quânticos, operações e canais.qiskit.visualization
Em Terra temos muitas ferramentas para visualizar um circuito quântico. Isto permite uma inspeção rápida do circuito quântico, para ter certeza, de que é o que o usuário queria implementar. Há uma versão em texto, python e látex. Uma vez que o circuito tenha sido executado, é importante ser capaz de visualizar a saída. Há uma função simples (plot_histogram()
) para plotar os resultados de um circuito quântico, incluindo uma versão interativa. Há também uma funçãoplot_state()
eplot_bloch_vetor()
que permite a plotagem de um estado quântico.
Aer¶
Aer, o elemento ‘ar’, permeia todos os elementos Qiskit. Para realmente acelerar o desenvolvimento de computadores quânticos, precisamos de melhores simuladores, emuladores e depuradores. Aer nos ajuda a entender os limites dos processadores clássicos, demonstrando até que ponto eles podem mimetizar a computação quântica. Além disso, podemos usar o Aer para verificar se os computadores quânticos atuais e, os do futuro próximo, funcionam corretamente. Isso pode ser feito esticando os limites da simulação e simulando os efeitos de ruído realista sobre a computação.
O Aer fornece uma estrutura de simulador de alto desempenho para circuitos quânticos usando a pilha de software Qiskit. Ele contém backends de simulador em C++ otimizados para execução de circuitos compilados no Terra. O Aer também fornece ferramentas para a construção de modelos de ruído, altamente configuráveis, para a realização de simulações ruidosas realistas dos erros, que ocorrem, durante a execução em dispositivos reais.
O Qiskit Aer inclui três backends de simulador de alto desempenho:
QasmSimulator
Permite a execução de multi-shots ideais e com ruído de circuitos qiskit e retorna contagens ou memória. Existem vários métodos que podem ser usados que simulam diferentes circuitos de forma mais eficiente. Estes incluem:statevector - Usa uma simulação de estado densa.
stabilizer - Usa um simulador de estado de estabilização Clifford, que é válido apenas para circuitos Clifford e modelos com ruído.
extended_stabilizer - Usa um simulador próximo, que decompõe circuitos em termos de estado de estabilização, cujo número cresce com o número de portões que não usam Clifford.
matrix_product_state - Usa um simulador de Matriz de Estado do Produto (MPS).
StatevectorSimulator
Permite a execução de single-shot ideal de circuitos qiskit e retorna o statevector final do simulador após a aplicação.UnitarySimulator
Permite a execução de tiro único ideal de circuitos qiskit e retorna a matriz unitária final do próprio circuito. Observe que o circuito não pode conter medição ou operações de redefinição para este backend.
Ignis¶
Ignis, o elemento ‘fogo’, é dedicado ao combate do ruído e dos erros e ao estabelecimento de um novo caminho. Isso inclui melhor caracterização de erros, melhora nas portas e computação na presença de ruído. Ignis é destinado àqueles que desejam projetar códigos de correção de erros quânticos ou que querem estudar maneiras de caracterizar erros, através de métodos, como a tomografia, ou, até mesmo, encontrar maneiras melhores de utilizar as portas, explorando o desacoplamento dinâmico e o controle ótimo.
O Ignis fornece código para os usuários gerarem, facilmente, circuitos para experimentos específicos, dado um conjunto mínimos de parâmetros de entrada do usuário. O código do Ignis contém três componentes fundamentais:
- Circuitos:
O módulo de circuitos fornece o código para gerar a lista de circuitos para um determinado experimento do Ignis, com base em um conjunto mínimo de parâmetros do usuário. Estes são, então, executados no Terra ou no Aer.
- Fitters:
Os resultados de um experimento de Ignis são passados para o módulo Fitters onde são analisados e encaixados, de acordo com o modelo físico que descreve o experimento. Os Fitters podem traçar os dados mais ajustados e retornar uma lista de parâmetros.
- Filtros:
Para certos experimentos de Ignis, os fitters podem retornar um objeto Filtro. Filtros podem ser utilizados para mitigar erros em outras experiências, utilizando os resultados de calibração de um experimento Ignis.
O Qiskit Ignis é organizado em três tipos de experimentos, que podem ser realizados:
qiskit.ignis.characterization
Experimentos de caracterização são projetados para medir parâmetros em um sistema do tipo de parâmetros de ruído (T1, T2-star, T2), parâmetros Hamiltonianos, como a taxa de interação ZZ, e erros de controle nos portões.qiskit.ignis.verification
Os experimentos de verificação são projetados para verificar o portão e o desempenho inferior do circuito. A verificação inclui estado e processo tomográfico, volume quântico e aferição aleatória (RB). Esses experimentos fornecem informações para determinar métricas de desempenho como a fidelidade do portão.qiskit.ignis.mitigation
Os experimentos de Mitigation executam circuitos de calibração, que são analisados para gerar rotinas de mitigação, que podem ser aplicadas a conjuntos arbitrários de resultados executados no mesmo backend. O código do ignis gerará uma lista de circuitos, que executam medições de calibração. Os resultados dessas medições serão processados por um Fitter e produzirão um Filter, que pode ser usado para aplicar mitigação a outros resultados.
Aqua¶
Aqua, o elemento ‘água’, é o elemento da vida. Para fazer a computação quântica corresponder às suas expectativas, precisamos encontrar aplicações do mundo real. Aqua é onde os algoritmos para computadores quânticos são construídos. Esses algoritmos podem ser usados para construir aplicativos para computação quântica. Aqua é acessível a especialistas de domínio em química, otimização, finanças e IA, que querem explorar os benefícios do uso de computadores quânticos como aceleradores para tarefas computacionais específicas.
Problemas que podem se beneficiar do poder da computação quântica foram identificados em inúmeros domínios, como Química, Inteligência Artificial (IA), Otimização e Finanças. A computação quântica, no entanto, requer habilidades muito especializadas. Para atender às necessidades da vasta população de profissionais que desejam utilizar e contribuir para a computação quântica em vários níveis da pilha de software, criamos o Qiskit Aqua.