Qiskit Paulice
qiskit-paulice é um pacote para incorporar verificações de Pauli eficientes em hardware em circuitos Clifford arbitrários, com conectividades de qubits arbitrárias, usando códigos estabilizadores espaço-temporais. Essas verificações podem ser usadas para detectar erros lógicos durante a execução do circuito. Pós-selecionar apenas amostras sem erros detectados pode melhorar a fidelidade dos estados amostrados com um processador quântico, ao custo de alguns qubits ancilla e de um aumento no overhead de amostragem. Este método é particularmente adequado ao hardware de curto prazo, pois tem um overhead de qubits e portas muito mais brando em comparação com a computação quântica tolerante a falhas, ao mesmo tempo em que tem um overhead de amostragem melhor do que métodos de mitigação de erros como ZNE ou PEC [1].
Embora as verificações de Pauli espaço-temporais possam ser usadas para implementar rotinas independentes de detecção de erros, elas também são relevantes no contexto de 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), capturando parte do ruído que afeta portas e medições, reduzindo o impacto do canal de ruído que está sendo invertido e, assim, reduzindo o overhead de amostragem. Elas também podem ser vistas como um passo inicial rumo à tolerância a falhas prática, já que implementar códigos estabilizadores para proteger qubits de dados contra erros lógicos é um conceito central da correção de erros tradicional. Como este método fornece acesso de shot único ao estado quântico, ele pode ser usado tanto em fluxos de trabalho baseados em amostragem quanto em valores esperados.
Primeiros passos
Um guia simples para ajudar você a começar rapidamente com este pacote está disponível no guia de início rápido.
Exemplos de casos de uso
Esta técnica foi usada para melhorar a fidelidade de amostras de circuitos dominados por Clifford, usando 97 qubits físicos para codificar 2415 portas emaranhadoras lógicas em 70 qubits lógicos [2].
Discussão técnica
Encontrando bons conjuntos de verificações de Pauli espaço-temporais
Um conjunto de verificações de Pauli espaço-temporais é “bom” se cada verificação for válida, de baixo peso e eficaz.
Uma verificação é composta por várias rotações de Pauli controladas, , colocadas em alguns fios do circuito, : . Para uma dada verificação, os controles ficam em um único qubit ancilla e as rotações ocorrem nos fios de um único qubit alvo. Para circuitos Clifford, uma verificação é válida se seu produto retropropagado for um estabilizador do estado preparado pelo circuito ideal: , onde é o retropropagador de de até o início do circuito, e é o conjunto de todos os estabilizadores do circuito.
Uma verificação tem baixo peso se requer poucas portas emaranhadoras para ser implementada. O algoritmo de escolha de verificações dará preferência a verificações de baixo peso que forneçam a detecção de erros mais eficaz.
Uma verificação é eficaz se captura muito mais erro do que introduz. Uma verificação de Pauli é composta por várias portas emaranhadoras e, portanto, introduz algum ruído de porta adicional no cálculo. É importante garantir que cada verificação adicional traga alguma capacidade extra de detecção de erros. A eficácia de um conjunto de verificações pode ser aproximada compondo os erros de Pauli descobertos pelas verificações em um canal de ruído pós-selecionado e calculando seu impacto. Minimizar o overhead de amostragem para implementar o canal de ruído inverso não detectado é uma heurística sólida para selecionar boas verificações, pois indica quanto erro as verificações não conseguem detectar. Uma abordagem mais lenta, porém mais realista, é realizar uma amostragem 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 função qiskit_paulice.add_pauli_checks.
Pós-selecionando amostras com base nos dados de síndrome
Neste pacote, uma verificação é implementada usando portas emaranhadoras entre um qubit ancilla e um qubit alvo. Cada ancilla começa em , de modo que estabiliza seu estado de entrada. Propagar para frente, do início do ancilla por todo o circuito verificado, produz um operador de Pauli na saída, que pode ter peso maior e se estender até o circuito de carga útil. Os índices de qubits nos quais esse operador de saída tem termos diferentes da identidade são chamados de suporte da verificação, e a verificação passa 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 do software
-
Criação automática de modelo de ruído a partir de dados de benchmark do backend
-
Busca de verificações acelerada com Rust
-
3 algoritmos integrados para busca de verificações
-
Suporte para dopagem de portas RZ
-
Suporte para combinar detecção de erros com mitigação de erros
Problemas conhecidos
-
O ruído de ociosidade não é fornecido via
NoiseModel.get_backende é ignorado durante a escolha das verificações -
Embora muitas etapas estocásticas do algoritmo possam ser controladas com uma semente aleatória, alguns recursos têm aleatoriedade que não pode ser controlada por semente. Especificamente, os seguintes valores de kwargs para
add_pauli_checkscausarão uma escolha de verificações não determinística: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
-
Tratamento do ruído de ociosidade ao escolher verificações
-
Aleatoriedade controlável para a função de custo de taxa de erro lógico e para os algoritmos de busca genética
Contribuindo
O código-fonte está disponível no GitHub.
O guia do desenvolvedor está em CONTRIBUTING.md, na raiz do repositório deste projeto. Ao participar, espera-se que você siga o código de conduta do Qiskit.
Citando este pacote
Se você usar este pacote em sua pesquisa, use o arquivo CITATION.bib no repositório deste projeto para citar as referências apropriadas.
Licença
Política de descontinuação
Seguimos o versionamento semântico. Ocasionalmente, podemos fazer alterações incompatíveis para melhorar a experiência do usuário. Quando possível, manteremos as interfaces antigas e as marcaremos como descontinuadas, desde que possam coexistir com as novas. Cada melhoria substancial, alteração incompatível ou descontinuação será documentada nas notas de versão.
Referências
-
Simon Martiel, Ali Javadi-Abhari, Low-overhead error detection with spacetime codes, arXiv:2504.15725 [quant-ph].
-
Simon Martiel, et al., Sampling hard circuits with verifiably high fidelity, arXiv:2607.25941 [quant-ph].