Instruções com calibração especial
Por padrão, as portas quânticas e as operações de leitura nos computadores quânticos da IBM® são calibradas para um desempenho ideal em casos de uso gerais. No entanto, algumas cargas de trabalho se beneficiam de instruções cujos parâmetros são ajustados de outra forma. Por exemplo, MidCircuitMeasure (measure_2) é uma operação de leitura feita sob medida para medições no meio de um circuito, e portas cz mais lentas podem melhorar os resultados de alguns fluxos de trabalho de mitigação de erros.
As instruções com calibração especial vêm em duas formas, e você acessa cada uma de maneira diferente:
-
Instruções com assinaturas diferentes são calibradas junto com as instruções padrão na calibração padrão, então você as adiciona aos seus circuitos como qualquer outra instrução. Elas geralmente são identificadas por um sufixo, como
measure_2. -
Calibrações alternativas substituem partes da calibração padrão por parâmetros ajustados de outra forma. Você seleciona uma passando um
calibration_idao obter o backend.
Para saber como os computadores quânticos da IBM são calibrados, consulte Monitore, calibre e faça benchmark.
Instruções com assinaturas diferentes
Essas instruções são calibradas com o conjunto de instruções padrão, então você não precisa fazer nada de especial para obter um backend que as suporte. Para usar uma delas, adicione a instrução correspondente de qiskit-ibm-runtime ao seu circuito.
| Instrução | Descrição | Caso de uso típico | Uso no Qiskit | Família de processadores |
|---|---|---|---|---|
measure_2 | Pulso de medição mais curto | Medições no meio do circuito | MidCircuitMeasure (v0.43.0 ou posterior) | Heron, Nighthawk r2 |
reset_2 | Pulso de reset condicional mais curto que usa measure_2 | Reset de qubit no meio do circuito | MidCircuitReset (v0.49.0 ou posterior) | Heron |
measure_reset | Medição como measure que também faz o reset do qubit* | Medir e fazer o reset de um qubit | MeasureReset (v0.50.0 ou posterior) | Heron, Nighthawk r2 |
measure_reset_2 | Medição mais curta como measure_2 que também faz o reset do qubit* | Medir e fazer o reset de um qubit no meio do circuito | Inicialize MeasureReset com name="measure_reset_2" (v0.50.0 ou posterior) | Heron, Nighthawk r2 |
xslow | Porta de inversão de bit (X) com duração estendida | Pós-seleção e mitigação de erros. É o valor padrão da opção x_pulse_type nos passes de pós-seleção | Todas |
. | XSlowGate (v0.50.0 ou posterior) | Todas |
* Nos processadores Heron, o reset é condicional ao resultado da medição. Nos processadores Nighthawk r2, o reset é incondicional.
Como essas instruções não são suportadas em todos os backends, verifique as instruções suportadas pelo backend antes de usá-las:
from qiskit_ibm_runtime import QiskitRuntimeService
service = QiskitRuntimeService()
backend = service.backend("<backend_name>")
print(backend.supported_instructions)
Para encontrar todos os backends que suportam uma instrução, use:
service = QiskitRuntimeService()
backends = service.backends(filters=lambda b: "<instruction>" in b.supported_instructions)
Use instruction_signatures para ver as assinaturas dessas instruções com calibração especial:
print(backend.configuration().instruction_signatures)
Calibrações alternativas
As calibrações alternativas substituem partes da calibração padrão por parâmetros ajustados de outra forma. Cada calibração alternativa tem um ID de calibração, e sua disponibilidade depende da QPU.
Para usar uma calibração alternativa, passe o calibration_id dela ao obter o backend. O target do backend, e portanto o transpilador, usa as propriedades das instruções dessa calibração, e os jobs de primitivas que você executa no backend rodam com ela.
from qiskit_ibm_runtime import QiskitRuntimeService
service = QiskitRuntimeService()
backend = service.backend("<backend_name>", calibration_id="<calibration_id>")
print(backend.calibration_id)
As calibrações alternativas não estão disponíveis em todas as QPUs.
Calibrações de portas lentas
As calibrações de portas lentas ajustam a porta cz para ser mais lenta do que na calibração padrão. Portas cz mais lentas podem melhorar o desempenho em fluxos de trabalho de estimação de observáveis em larga escala com mitigação de erros, mas também aumentam a duração total do seu circuito, o que causa alguma decoerência adicional.
Nos processadores Heron, as calibrações de portas lentas também estão disponíveis com dois modos de controle de polarização de sistemas de dois níveis (TLS):
-
Polarização TLS DC é otimizada para o melhor desempenho instantâneo. A calibração padrão usa a polarização TLS DC.
-
Polarização TLS AC modula a polarização TLS para estabilizar os erros do dispositivo ao longo do tempo, o que mantém estável o modelo de ruído do dispositivo durante fluxos de trabalho longos. Consulte "Noise stabilization" em Observable Estimation in the Absence of Classical Verification para ver os detalhes.
Os processadores Nighthawk não usam polarização TLS, então têm uma única calibração de portas lentas.
| ID de calibração | Família de processadores | Polarização TLS | Recomendado para |
|---|---|---|---|
| Nenhum (calibração padrão) | Todas | DC (Heron) | Uso geral. Especialmente recomendada para cargas de trabalho cujas bitstrings podem ser destiladas classicamente, como circuitos com pico e fluxos de trabalho SQD ou SKQD, e para cargas de trabalho com detecção de erros. |
slow_gates_dc | Heron | DC | Fluxos de trabalho de estimação de observáveis em larga escala, especialmente os que usam mitigação de erros heurística, como a extrapolação para ruído zero (ZNE). |
slow_gates_ac | Heron | AC | Fluxos de trabalho que exigem taxas de erro estáveis em sessões longas. Fortemente recomendada para fluxos de trabalho que envolvem aprendizado de ruído, como a amplificação probabilística de erros (PEA) e o cancelamento probabilístico de erros (PEC). |
slow_gates | Nighthawk | Não se aplica | Fluxos de trabalho de estimação de observáveis que usam mitigação de erros, como ZNE, PEA e PEC. |
Por exemplo:
from qiskit_ibm_runtime import QiskitRuntimeService
service = QiskitRuntimeService()
# On a Heron QPU
backend = service.backend("ibm_kingston", calibration_id="slow_gates_ac")
# backend = service.backend("ibm_kingston", calibration_id="slow_gates_dc")
# On a Nighthawk QPU
backend = service.backend("ibm_phoenix", calibration_id="slow_gates")
Quando você usar slow_gates_ac, envie todos os jobs do fluxo de trabalho para uma única sessão, para que eles sejam executados enquanto o ruído do dispositivo permanece estável.
Verifique as durações das portas
Como as calibrações de portas lentas aumentam as durações da porta cz, compare as durações com a calibração padrão para entender o efeito no seu circuito. Use o target do backend para encontrar a duração, em segundos, da porta cz em um par específico de qubits:
default_backend = service.backend("<backend_name>")
slow_backend = service.backend(
"<backend_name>", calibration_id="slow_gates_ac"
) # Or slow_gates_dc, or slow_gates on Nighthawk
qubits = (0, 1) # Replace with a connected qubit pair on the backend
print(default_backend.target["cz"][qubits].duration)
print(slow_backend.target["cz"][qubits].duration)
Como o target reflete a calibração selecionada, transpile seus circuitos para o backend que usa o mesmo calibration_id em que você pretende executar.
Próximos passos
- Saiba como executar circuitos dinâmicos com medições no meio do circuito.
- Use a pós-seleção para filtrar resultados afetados por ruído correlacionado.
- Leia sobre como os computadores quânticos da IBM são monitorados, calibrados e avaliados com benchmarks.