Qiskit Paulice
qiskit-paulice é um pacote para incorporar verificações de Pauli com eficiência de hardware em circuitos de Clifford arbitrários, em conectividades arbitrárias de qubits, utilizando códigos estabilizadores de espaço-tempo. Essas verificações podem ser utilizadas para detectar erros lógicos durante a execução do circuito. A pós-seleção apenas das amostras nas quais não foram detectados erros pode melhorar a fidelidade dos estados amostrados com um processador quântico, ao custo de alguns qubits auxiliares e de um aumento na sobrecarga de amostragem. Esse método é particularmente adequado para hardware de curto prazo, uma vez que apresenta uma sobrecarga muito menor em qubits e portas em comparação com a computação quântica tolerante a falhas, ao mesmo tempo em que oferece uma sobrecarga de amostragem melhor do que métodos de mitigação de erros, como o ZNE ou o PEC [1].
Embora as verificações de Pauli no espaço-tempo possam ser utilizadas para implementar rotinas autônomas de detecção de erros, elas também são relevantes no contexto da mitigação e correção de erros. A detecção de erros pode complementar técnicas de mitigação de erros, como o cancelamento probabilístico de erros (PEC), ao capturar parte do ruído que afeta as portas lógicas e as medições, reduzindo o impacto da inversão do canal de ruído e, consequentemente, diminuindo a sobrecarga de amostragem. Eles também podem ser vistos como um primeiro passo em direção à tolerância prática a falhas, já que a implementação de códigos estabilizadores para proteger os qubits de dados contra erros lógicos é um conceito central da correção de erros tradicional. Como esse método permite o acesso ao estado quântico em uma única medição, ele pode ser utilizado tanto em fluxos de trabalho baseados em amostragem quanto naqueles baseados no valor esperado.
Introdução
Um guia simples para ajudá-lo a começar a usar rapidamente este pacote está disponível no guia de início rápido.
Exemplos de Caso de Uso
Essa técnica tem sido utilizada para melhorar a fidelidade de amostras de circuitos dominados por Clifford com até 50 qubits e 2.450 portas de entrelaçamento [1].
Discussão técnica
Encontrando bons conjuntos de verificações de Pauli no espaço-tempo
Um conjunto de verificações de Pauli no espaço-tempo é considerado “bom” se cada verificação for válida, de baixo peso e eficaz.
Uma verificação é composta por uma série de rotações de Pauli controladas, , aplicadas em alguns fios do circuito, : . Para uma determinada verificação, os controles são aplicados a um único qubit auxiliar, e as rotações ocorrem nos fios de um único qubit-alvo. Para circuitos de Clifford, uma verificação é válida se seu produto retropropagado for um estabilizador do estado preparado pelo circuito ideal: , onde é o retropropagador de , que vai de até o início do circuito, e é o conjunto de todos os estabilizadores do circuito.
Uma verificação é considerada de baixo peso se exigir poucas portas de entrelaçamento para ser implementada. O algoritmo de seleção de cheques dará prioridade aos cheques de baixo valor e que proporcionem a detecção de erros mais eficaz.
Uma verificação é eficaz se detectar muito mais erros do que aqueles que ela mesma gera. Uma verificação de Pauli é composta por várias portas de entrelaçamento e, portanto, introduz algum ruído adicional de porta no cálculo. É importante garantir que cada verificação adicional traga alguma capacidade adicional de detecção de erros. A eficácia de um conjunto de verificações pode ser estimada ao agrupar os erros de Pauli detectados pelas verificações em um canal de ruído pós-selecionado e calcular seu impacto. Minimizar a sobrecarga de amostragem na implementação do canal de ruído inverso não coberto é uma heurística sólida para selecionar boas verificações, pois dá uma indicação da magnitude do erro que as verificações não conseguem detectar. Uma abordagem mais lenta, mas mais realista, consiste em realizar uma amostragem de Monte Carlo a partir do estado ruidoso e calcular empiricamente a taxa de erro lógico da distribuição pós-selecionada. Ambas as abordagens estão disponíveis como funções de custo integradas na qiskit_paulice.add_pauli_checks função.
Seleção posterior de amostras com base em dados de síndromes
Neste pacote, é implementada uma verificação utilizando portas de entrelaçamento entre um qubit auxiliar e um qubit alvo. Cada ancilla inicia em um estado de ; portanto, a função estabiliza seu estado de entrada. A propagação para frente do operador de Pauli ( ) desde o início da ancilla por todo o circuito verificado resulta em um operador de Pauli na saída, o que pode ter maior peso e se estender até o circuito de carga útil. Os índices dos qubits nos quais esse operador de saída possui termos diferentes da identidade são chamados de “suporte da verificação”, e a verificação é aprovada se os bits, , no suporte da verificação tiverem paridade par: . Uma amostra é mantida se cada verificação produzir em sua verificação de paridade.
Recursos de software
- Criação automática de modelos de ruído a partir de dados de benchmark do backend
- Detecção de cheques acelerada pelo Rust
- Três algoritmos integrados para a detecção de cheques
- Avaliar a eficácia das verificações com base na sobrecarga de amostragem do canal de ruído inverso pós-selecionado ou na taxa de erros lógicos com base na amostragem de Monte Carlo do estado com ruído
- Funcionalidade auxiliar para localizar pares de qubits ancilla/alvo para um backend determinado
Problemas conhecidos
- O ruído em marcha lenta não é fornecido por meio de
NoiseModel.get_backende é ignorado durante a seleção de verificação - Embora muitas etapas estocásticas do algoritmo possam ser controladas por meio de uma semente aleatória, algumas características apresentam um elemento de aleatoriedade que não pode ser controlado por meio de uma semente. Especificamente, os seguintes valores de kwargs para
add_pauli_checksprovocarão uma seleção indeterminística de verificações:cost="LER",method="genetic", emethod="windowed_genetic". Para um comportamento determinístico, useadd_pauli_checks(..., cost="gamma", method="windowed"), que são os valores padrão.
Trabalhos futuros
- Suporte para o tratamento de sistemas não-Clifford
- Mais recursos para a análise do canal de ruído pós-selecionado
- Como lidar com o ruído do motor em marcha lenta durante a coleta de cheques
- Aleatoriedade controlável para a função de custo da taxa de erros lógicos e algoritmos de busca genética
contribuindo
O código-fonte está disponível em GitHub.
O guia do desenvolvedor está disponível em CONTRIBUTING.md, na raiz do repositório deste projeto. Ao participar, espera-se que você respeite o código de conduta do Qiskit.
Citando este pacote
Caso utilize este pacote em sua pesquisa, use o arquivo CITATION.bib no repositório deste projeto para citar a(s) referência(s) apropriada(s).
Licença
Política de descontinuação
Seguimos o sistema de versionamento semântico. Ocasionalmente, podemos realizar alterações significativas com o objetivo de melhorar a experiência do usuário. Sempre que possível, manteremos as interfaces antigas e as marcaremos como obsoletas, desde que possam coexistir com as novas. Cada melhoria significativa, alteração que implique incompatibilidade ou descontinuação será documentada nas notas de lançamento.
Referências
Simon Martiel, Ali Javadi-Abhari, “Detecção de erros com baixa sobrecarga usando códigos espaço-temporais”, arXiv:2504.15725 [quant-ph].