Pular para o conteúdo principal
Este projeto está em fase beta. Encontrou um bug? Abra uma issue no GitHub. Tem uma pergunta ou ideia? Pergunte no Discussions — adoraríamos receber seu feedback!
Como está a qualidade da tradução nesta página?

Ver detalhes do backend

Package versions

O código nesta página foi desenvolvido usando os seguintes requisitos. Recomendamos usar essas versões ou mais recentes.

qiskit-ibm-runtime~=0.47.0

Esta página explica como encontrar informações sobre seus backends disponíveis.

Listar ou filtrar backends​

Listar os backends disponíveis para você​

Você pode usar o Qiskit ou o IBM Quantum Platform para visualizar uma lista de backends disponíveis ou buscar um backend específico.

Nomes de QPUs

QPUs hospedadas no IBM Cloud® têm nomes que começam com ibm_*. Todas as QPUs recebem o nome de uma cidade — por exemplo, ibm_kingston. Esse nome não indica onde a QPU real está hospedada.

Use o método QiskitRuntimeService.backends(), como mostrado no próximo bloco de código. Este método retorna uma lista de instâncias de IBMBackend.

Para executar o código a seguir, certifique-se de já ter se autenticado no serviço. Consulte Configure sua conta do IBM Cloud para mais detalhes.

Para procurar um backend específico, use o método QiskitRuntimeService.backend() (observe que é singular: backend), que recebe o nome do backend como parâmetro de entrada e retorna uma instância de IBMBackend representando esse backend específico:

# Added by doQumentation — installs the packages this notebook needs if they are missing
import importlib.util

_needed = {"qiskit_ibm_runtime": "qiskit-ibm-runtime"}
_missing = [pip for module, pip in _needed.items()
if importlib.util.find_spec(module) is None]
# One at a time, so a package that fails to install does not block the others
for _pip in _missing:
%pip install -q {_pip}
if not _missing:
print("\u2713 All required packages are installed")
# Initialize your account
from qiskit_ibm_runtime import QiskitRuntimeService

service = QiskitRuntimeService()

service.backends()
[<IBMBackend('ibm_pittsburgh')>,
<IBMBackend('ibm_boston')>,
<IBMBackend('ibm_fez')>,
<IBMBackend('ibm_miami')>,
<IBMBackend('ibm_marrakesh')>,
<IBMBackend('ibm_kingston')>]
service.backend("ibm_fez")
<IBMBackend('ibm_fez')>
# Optionally pass in an instance, region, or both, to
# further filter the backends.
service = QiskitRuntimeService()

service.backends(simulator=False, operational=True, min_num_qubits=100)
[<IBMBackend('ibm_pittsburgh')>,
<IBMBackend('ibm_boston')>,
<IBMBackend('ibm_fez')>,
<IBMBackend('ibm_miami')>,
<IBMBackend('ibm_marrakesh')>,
<IBMBackend('ibm_kingston')>]
nota

Se você estiver conectado a uma instância ou região específica, ou se tiver inicializado o serviço com uma instância ou região específica usando QiskitRuntimeService(), apenas os backends disponíveis para você nessa instância ou região serão retornados.

Filtrar backends​

Você pode filtrar os backends disponíveis pela sua configuração ou status. Para filtros mais gerais, defina o argumento filters como uma função que aceita um objeto de backend e retorna True se ele atender aos seus critérios. Consulte a documentação da API para mais detalhes.

O código a seguir retorna apenas os backends que atendem a estes critérios e estão disponíveis para você na sua instância atualmente selecionada:

  • São dispositivos quânticos reais (simulator=False)

  • Estão atualmente operacionais (operational=True)

  • Têm pelo menos cem qubits (min_num_qubits=100)

Um método similar é QiskitRuntimeService.least_busy(), que aceita os mesmos filtros que backends(), mas retorna o backend que corresponde aos filtros e tem o menor número de jobs pendentes na fila:

service.least_busy(operational=True, min_num_qubits=100)
<IBMBackend('ibm_fez')>

Informações estáticas do backend​

Algumas informações sobre um backend não mudam regularmente, como seu nome, versão, o número de qubits que ele possui, seu tipo de processador (o nome da família de pássaros, que indica a topologia e a contagem aproximada de qubits) e os tipos de recursos que ele suporta. Essas informações estão disponíveis como atributos do objeto backend. Para uma lista completa dos atributos, consulte a documentação da API IBMBackend. Encontre mais informações sobre versionamento na seção Versionamento de QPU abaixo.

A região de um backend (a localização do data center onde seus dados e experimentos serão hospedados e processados) está listada no cartão de informações detalhadas no Compute resources no IBM Quantum Platform.

backend = service.least_busy(operational=True, simulator=False)

print(
f"Name: {backend.name}\n"
f"Version: {backend.backend_version}\n"
f"No. of programmable qubits: {backend.num_qubits}\n"
f"Processor type: {backend.processor_type}\n"
)
Name: ibm_fez
Version: 1.3.37
No. of programmable qubits: 156
Processor type: {'family': 'Heron', 'revision': '2'}

Versionamento de QPU​

Cada QPU possui um número de versão no formato X.Y.Z (major.minor.revision). Um circuito compilado para um determinado número de versão tem execução garantida nessa QPU. Se o número de revisão mudar, o circuito continuará funcionando. Se o número major ou minor mudar, a execução do circuito não é garantida, embora possa ocorrer.

O número de versão de revisão será incrementado para correções que não quebrem o circuito compilado existente.

O exemplo de código apresentado anteriormente nesta seção demonstra como encontrar a versão de um backend. No IBM Quantum Platform, você pode ver a versão no cartão de informações detalhadas de uma QPU (clique no nome da QPU na tabela Recursos de computação para abrir o cartão).

As condições sob as quais um número de versão ou revisão pode mudar estão listadas na tabela a seguir.

Versão majorVersão minorVersão de revisão
Substituição de amostrasCiclos de aquecimento/resfriamentoAtualizações de software da QPU
Grandes mudanças na eletrônica de controleSubstituição de alguma eletrônica, caso o substituto afete apreciavelmente a operaçãoCalibrações manuais para melhorar as fidelidades
Mudança de localização da QPU, caso resulte em alterações significativas de comportamentoRemoção de uma porta por algum período de tempo devido a problemas de calibração, quando as correções não podem ser feitas facilmente em softwarePequenas mudanças na eletrônica que não afetam a operação
Mudança na direção de uma porta CNOT

Instruções suportadas​

Cada família de processador suporta nativamente um conjunto limitado de instruções. Esse conjunto inclui portas de um e dois qubits, bem como operações não unitárias como measure e reset. Toda porta no circuito deve ser traduzida (pelo transpilador) para os elementos do conjunto de instruções suportadas por uma QPU antes de poder ser executada nela.

Você pode visualizar os conjuntos de instruções suportadas por uma QPU com o Qiskit. A página Recursos de computação do IBM Quantum Platform lista apenas as portas unitárias suportadas (portas de base) de uma QPU.

Tabela de instruções suportadas​

Categoria de operaçãoNome
Portas de qubit únicoRZ, SX, X, XSlow, ID, delay
Portas de dois qubitsCZ, ECR
Portas fracionáriasRX (qubit único), RZZ (dois qubits)
Instruções não unitáriasmeasure, reset, measure_*, reset_*, measure_reset*, delay
Fluxo de controleif_else (feedforward clássico)
from qiskit_ibm_runtime import QiskitRuntimeService

service = QiskitRuntimeService()
backend = service.least_busy(operational=True, simulator=False)

print(f"Backend: {backend.name}")
print(f" Processor type: {backend.processor_type}")
print(f" Supported instructions: {backend.supported_instructions}")
Backend: ibm_kingston
Processor type: {'family': 'Heron', 'revision': '2'}
Supported instructions: ['cz', 'id', 'delay', 'measure', 'measure_2', 'reset', 'rz', 'sx', 'x', 'if_else', 'store']

Informações dinâmicas do backend​

Os backends também possuem propriedades que mudam sempre que o backend é calibrado, como o tempo de vida dos qubits e as taxas de erro das operações. As propriedades do backend são atualizadas após a conclusão da sequência de calibração. Essas propriedades podem ser usadas na otimização de circuitos quânticos ou para construir modelos de ruído para um simulador clássico. Consulte o guia Jobs de calibração para mais informações.

No IBM Quantum Platform, você pode baixar os dados de calibração como um arquivo CSV. Clique em uma QPU na página Recursos de computação para ver seu cartão de informações detalhadas e clique no ícone de download no canto superior direito da seção Dados de calibração.

Recuperar dados históricos

Você pode recuperar dados históricos das propriedades do backend no Qiskit com o seguinte código:

backend.properties(datetime=<datetime>)

Propriedades dos qubits​

Ir para a lista de propriedades dos qubits

backend.properties().qubit_property() retorna informações sobre os atributos físicos dos qubits. Ele contém um dicionário de várias propriedades do qubit, cada uma associada ao seu valor e ao timestamp da última calibração.

Os exemplos de código a seguir demonstram como listar todas as propriedades ou recuperar propriedades específicas de um qubit em particular.

Ver propriedades dos qubits​

T1 (Relaxation time)

O tempo T1T_1 representa a duração média em que um qubit permanece em seu estado excitado ∣1⟩|1\rangle antes de decair para seu estado fundamental ∣0⟩|0\rangle devido ao relaxamento de energia. Esse parâmetro é usado para caracterizar o comportamento de relaxamento de energia do qubit e é expresso em unidades de segundos (s).

Visualizar com o Qiskitbackend.properties().t1(<qubit>)
Visualizar na IBM Quantum PlatformSeção de dados de calibração: menu suspenso de Qubit; encontre o valor de mediana de T1T_1 na seção Details
T2 (Tempo de defasagem)

O tempo T2T_2 denota a escala de tempo sobre a qual um qubit mantém a coerência de fase de uma superposição entre os estados ∣0⟩|0\rangle e ∣1⟩|1\rangle. Ele leva em conta tanto o relaxamento de energia quanto os processos de defasagem pura, fornecendo insights sobre as propriedades de coerência do qubit. T2T_2 é reportado a partir de uma sequência de eco de Hahn.

View with Qiskitbackend.properties().t2(<qubit>)
View on IBM Quantum PlatformCalibration data section, qubit dropdown menu; find the T2T_2 median value in the Details section
# fundamental physical properties of qubit 1

backend = service.least_busy(operational=True, simulator=False)

backend.qubit_properties(1)
QubitProperties(t1=0.00022010760855770256, t2=0.0002363339150114578, frequency=None)
# Retrieve qubit properties
qubit_index = backend.num_qubits - 1 # Replace with your qubit index
qubit_props = backend.properties().qubit_property(qubit_index)

# Access specific properties
t1 = qubit_props.get("T1", (None,))[0]
t2 = qubit_props.get("T2", (None,))[0]
readout_error = qubit_props.get("readout_error", (None,))[0]
prob_meas0_prep1 = qubit_props.get("prob_meas0_prep1", (None,))[0]
prob_meas1_prep0 = qubit_props.get("prob_meas1_prep0", (None,))[0]
readout_length = qubit_props.get("readout_length", (None,))[0]

print(f"Qubit {qubit_index} Properties:")
print(f" T1: {t1} seconds")
print(f" T2: {t2} seconds")
print(f" Readout Error: {readout_error}")
print(f" P(0 | 1): {prob_meas0_prep1}")
print(f" P(1 | 0): {prob_meas1_prep0}")
print(f" Readout Length: {readout_length} seconds")

Propriedades das instruções​

Ir para a lista de propriedades das instruções

O atributo backend.target é um objeto qiskit.transpiler.Target: um objeto que contém todas as informações necessárias para transpilar um circuito para aquele backend. Isso inclui erros e durações das instruções. Por exemplo, a célula a seguir obtém as propriedades de uma porta cz agindo entre um par conectado de qubits.

A célula a seguir mostra as propriedades de uma operação de medição (incluindo o erro de leitura) no qubit 0.

Ver propriedades das instruções​

prob-meas0-prep1

Este parâmetro indica a probabilidade de medir um qubit no estado ∣0⟩|0\rangle quando se pretendia prepará-lo no estado ∣1⟩|1\rangle, denotado como P(0∣1)P(0 | 1). Ele reflete erros na preparação e medição de estado (SPAM), particularmente erros de medição em qubits supercondutores.

Ver com Qiskitbackend.properties().qubit_property(<qubit>, 'prob_meas0_prep1')
Ver na IBM Quantum PlatformSeção de dados de calibração: menu suspenso Qubit
prob-meas1-prep0

Da mesma forma, este parâmetro representa a probabilidade de medir um qubit no estado ∣1⟩|1\rangle quando se pretendia prepará-lo no estado ∣0⟩|0\rangle, denotado como P(1∣0)P(1 | 0). Assim como prob_meas0_prep1, ele reflete erros de SPAM, sendo os erros de medição o principal contribuinte em qubits supercondutores.

Ver com o Qiskitbackend.properties().qubit_property(<qubit>, 'prob_meas0_prep0')
Ver no IBM Quantum PlatformSeção de dados de calibração: menu suspenso Qubit
Erro de 2Q (Heron e Nighthawk: CZ, Eagle: ECR)

O erro de dois qubits por aresta, obtido a partir do mesmo conjunto de medições usado para calcular o erro mediano 2Q. 2Q error (best) refere-se ao menor erro de dois qubits em qualquer aresta do dispositivo, também obtido a partir desse conjunto de medições.

Visualizar com o Qiskitbackend.target['<instruction>'][<qubit 1>, <qubit 2>]
Visualizar na IBM Quantum PlatformSeção de calibração: passe o mouse sobre a conexão de qubit na visualização de mapa, ou encontre o valor na visualização de tabela na coluna de erro CZ (Heron e Nighthawk) ou erro ECR (Eagle); encontre o valor de erro 2Q (melhor) na seção Details
Erro 2Q mediano (Heron: CZ, Eagle: ECR)

Fidelidade média de porta da operação de dois qubits a partir do benchmarking randomizado. Medida em "isolamento": lotes com separação mínima de dois qubits entre arestas. Esse benchmarking randomizado usa camadas alternadas de Cliffords de qubit único e portas de dois qubits, portanto o valor final do erro 2Q inclui o erro da camada de Cliffords de qubit único.

Calcular com o QiskitSiga o exemplo neste notebook do GitHub da Qiskit Community
Visualizar na IBM Quantum PlatformSeção Details; também encontre dados por aresta na seção de dados de calibração
Erro 2Q (em camadas)

Erro médio por porta em camadas (EPLG) em uma cadeia de 100 qubits. O EPLG médio mede o erro médio de porta em uma cadeia em camadas de NN qubits (NN=100 aqui). É derivado de uma quantidade similar conhecida como fidelidade de camada (LF), onde EPLG100_{100} = 4/5(1-LF199^{\frac{1}{99}}) e a fidelidade de camada é a fidelidade de processo da cadeia em camadas de NN qubits. Para detalhes, veja o artigo Benchmarking quantum processor performance at scale. Note que no artigo o EPLG é definido para erro de processo, mas por consistência com os erros de porta reportados individualmente aqui, ele é citado para erro médio de porta, daí o fator de 4/5.

Na IBM Quantum Platform, o cartão de informações detalhadas de cada QPU tem uma seção chamada Two-qubit gate error (layered), que fornece a visão expandida do menor two-qubit gate error (layered) medido em função do número de qubits na cadeia. O valor final, no comprimento de cadeia 100, é o valor apresentado na seção Details. Na prática, seis cadeias de 100 qubits (pré-selecionadas com base no desempenho ideal esperado) são medidas, e o valor relatado para o número de qubits N é o menor erro encontrado em uma cadeia de subconjunto de comprimento N pesquisando nas seis cadeias de 100 qubits.

Calcular com o QiskitSiga o exemplo neste notebook do GitHub da Qiskit Community
Visualizar na IBM Quantum PlatformSeção Detalhes, e uma visualização expandida na seção de erro de porta de dois qubits (em camadas)
Erro RZZ (Heron)

Erro na porta RZZ calculado como média sobre os ângulos RZZ usando uma variante de benchmarking randomizado para unitários arbitrários.

Visualizar com o QiskitImportante: certifique-se de ter definido use_fractional_gates=True ao carregar o backend, e então você pode usar backend.target['rzz'][<qubit 1>, <qubit 2>]
Visualizar na IBM Quantum PlatformSeção de calibração: selecione RZZ no menu suspenso Connection e passe o mouse sobre a conexão de qubit na visualização de mapa. Você também pode selecionar RZZ error no menu suspenso Graph output na visualização Graph, ou encontrar o valor na visualização de tabela na coluna de erro RZZ
Erro de ID / erro √x (sx) / erro Pauli-X / erro RX

Erro nas portas discretas de duração finita de um qubit, medido a partir do benchmarking randomizado. A sequência de benchmarking randomizado inclui as portas SX, ID e X, e presume-se que seus erros sejam iguais. A porta ID é um atraso de duração igual à duração das portas √X e X. A porta RX também possui a mesma duração das portas √X e X com amplitude variável, e por isso é reportada como tendo o mesmo erro que essas portas.

View with Qiskitbackend.target['<instruction>'][<qubit 1>, ]
View on IBM Quantum PlatformCalibration section: Qubit dropdown menu
SX error (median)

Fidelidade média de porta da porta √X (SX) a partir do benchmarking randomizado, medida simultaneamente em todos os qubits. A sequência de benchmarking randomizado inclui as portas SX, ID e X, e presume-se que seus erros sejam iguais.

Visualizar na IBM Quantum PlatformSeção Detalhes
Erro de rotação no eixo Z (RZ)

Erro na porta RZ virtual. É sempre reportado como 0, já que essas portas são executadas em software.

Visualizar com o Qiskit backend.target['<instruction>'][<qubit 1>, ]
Visualizar na IBM Quantum PlatformSeção de calibração: menu suspenso Connection
Erro de leitura

O erro de leitura quantifica a probabilidade média de medir incorretamente o estado de um qubit. É comumente calculado como a média de prob_meas0_prep1 e prob_meas1_prep0, fornecendo uma única métrica para a fidelidade de medição.

Visualizar com o Qiskitbackend.properties().readout_error(<qubit>)
Visualizar na IBM Quantum PlatformSeção de dados de calibração: menu suspenso de Qubit
Erro de leitura (mediana)

Fidelidade da operação de leitura. O erro de leitura é medido preparando o qubit no estado ∣0⟩|0\rangle (∣1⟩|1\rangle) e medindo a probabilidade de uma saída no estado ∣1⟩|1\rangle (∣0⟩|0\rangle). O valor reportado é a média desses dois erros. A mediana é calculada sobre todos os qubits.

Visualizar na IBM Quantum PlatformSeção de dados de calibração: seção Details
Duração do gate de um único qubit

Duração de uma operação de porta de um único qubit. Observe que os valores mostrados na IBM Quantum Platform estão em nanossegundos. Os valores retornados no Qiskit estão em segundos.

Visualizar com o Qiskitbackend.target['<instruction>'][<qubit 1>, ].duration
Visualizar na IBM Quantum PlatformSeção de calibração: menu suspenso de Qubit
Duração da porta (portas 2Q)

Duração da operação de porta de dois qubits. Observe que os valores mostrados na IBM Quantum Platform estão em nanossegundos. Os valores retornados no Qiskit estão em segundos.

Ver com Qiskitbackend.target['<instruction>'][<qubit 1>, <qubit 2> ].duration
Ver na IBM Quantum PlatformSeção de calibração: menu suspenso Qubit
Comprimento de leitura

O comprimento de leitura especifica a duração da operação de leitura de um qubit. Ele mede o tempo desde o início do pulso de medição até a conclusão da digitalização do sinal, após o qual o sistema está pronto para a próxima operação. Compreender esse parâmetro é fundamental para otimizar a execução de circuitos, especialmente ao incorporar medições em meio ao circuito.

Visualizar com o Qiskit
  • Para measure: backend.properties().readout_length(<qubit>)
  • Para measure_2: backend.target['measure_2'][<qubit 1>, ].duration
Visualizar na IBM Quantum PlatformSeção de dados de calibração: menu suspenso de Qubit
Erro de inicialização

O erro de inicialização quantifica a porcentagem da população no estado ∣1⟩|1\rangle após o rep-delay padrão e o procedimento de inicialização de qubit quando o experimento anterior preparou o qubit no estado ∣1⟩|1\rangle. Observe que isso é sutilmente diferente da quantidade prob_meas1_prep0, que mede a porcentagem das medições atribuídas ao estado ∣1⟩|1\rangle. Esta última é uma medida tanto do erro de inicialização quanto do procedimento de discriminação entre os estados ∣0⟩|0\rangle e ∣1⟩|1\rangle. No limite de medição perfeita, as duas quantidades são iguais.

Visualizar com o Qiskitbackend.properties().qubit_property(<qubit>, 'init_error')
Visualizar na IBM Quantum PlatformSeção de dados de calibração: menu suspenso de Qubit
# Get the cz gate properties for a connected pair of qubits
# (the first edge in this backend's coupling map)
edge = next(iter(backend.target["cz"]))
backend.target["cz"][edge]
backend.target["measure"][(0,)]
InstructionProperties(duration=1.66e-06, error=0.0126953125)

Propriedades adicionais​

Máximo de circuitos por segundo (MCPS)

Máximo de circuitos por segundo (MCPS) inclui medição, reset e reinicialização de um circuito com uma porta Hadamard e uma única medição.

Ver com Qiskitmcps = backend.configuration().mcps
Ver na IBM Quantum PlatformSeção Details
CLOPS (ou CLOPS_h)

Operações de camada de circuito por segundo (CLOPS) é uma medida de quantas camadas de um circuito 100x100 (circuito ciente do hardware) uma QPU pode executar por unidade de tempo.

Calculate with QiskitFind the CLOPS code in the Qiskit Community GitHub
View on IBM Quantum PlatformDetails section
Status

Com BackendStatus, você pode encontrar o status da QPU (por exemplo, Active, Paused, Offline) e o número de jobs pendentes.

Visualizar com o Qiskitprint(backend.status().status_msg), print(backend.status().pending_jobs)
Visualizar na IBM Quantum PlatformSeção Details
Diagrama de topologia ou mapa de acoplamento

Um diagrama que indica os pares de qubits que suportam operações de porta de dois qubits entre eles. Também é chamado de mapa de acoplamento ou conectividade. Os qubits são representados como círculos e as operações de porta de dois qubits suportadas são exibidas como linhas conectando os qubits.

View with Qiskitfrom qiskit.visualization import plot_gate_map then plot_gate_map(backend)
View on IBM Quantum PlatformCalibration data section; Click on Expand for a larger view
O que significa `error = 1`?

Se o benchmarking de um qubit ou aresta não for bem-sucedido ao longo de vários dias, seja por baixa qualidade de dados ou outros fatores internos, o valor de erro reportado é considerado desatualizado e será reportado como 1. Isso não indica que o qubit ou a aresta está necessariamente com defeito ou que o erro é 1; na verdade, o erro é considerado indefinido e você deve proceder com cautela ao operar esse qubit ou porta.

Próximos passos​

Recomendações