Pular para o conteúdo principal

Ver detalhes do backend

Package versions

The code on this page was developed using the following requirements. We recommend using these versions or newer.

qiskit-ibm-runtime~=0.46.1

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 the QiskitRuntimeService.backends() method, as shown in the next code block. This method returns a list of IBMBackend instances.

To run the following code, be sure you have already authenticated to the service. See Set up your IBM Cloud account for more details.

To search for a specific backend, use the QiskitRuntimeService.backend() method (note that this is singular: backend), which takes the name of the backend as the input parameter and returns an IBMBackend instance representing that particular backend:

# Added by doQumentation — required packages for this notebook
!pip install -q qiskit-ibm-runtime
# Initialize your account
from qiskit_ibm_runtime import QiskitRuntimeService

service = QiskitRuntimeService()

service.backends()
[<IBMBackend('ibm_boston')>,
<IBMBackend('ibm_pittsburgh')>,
<IBMBackend('ibm_fez')>,
<IBMBackend('ibm_marrakesh')>,
<IBMBackend('ibm_kingston')>,
<IBMBackend('ibm_miami')>]
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_boston')>,
<IBMBackend('ibm_pittsburgh')>,
<IBMBackend('ibm_fez')>,
<IBMBackend('ibm_marrakesh')>,
<IBMBackend('ibm_kingston')>,
<IBMBackend('ibm_miami')>]
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 com frequência, como seu nome, versão, o número de qubits que 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 suporta. Essas informações estão disponíveis como atributos do objeto backend. Para uma lista completa de 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.backend("ibm_fez")

print(
f"Name: {backend.name}\n"
f"Version: {backend.backend_version}\n"
f"No. of qubits: {backend.num_qubits}\n"
f"Processor type: {backend.processor_type}\n"
)
Name: ibm_fez
Version: 1.3.37
No. of 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, ID, delay
Portas de dois qubitsCZ, ECR
Portas fracionáriasRX (qubit único), RZZ (dois qubits)
Instruções não unitáriasmeasure, reset, measure_*, delay
Fluxo de controleif_else (feedforward clássico)
from qiskit_ibm_runtime import QiskitRuntimeService

service = QiskitRuntimeService()
backend = service.backend("ibm_kingston")

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).

View with Qiskitbackend.properties().t1(<qubit>)
View on IBM Quantum PlatformCalibration data section, Qubit dropdown menu; find the T1T_1 median value in the Details section
T2 (Dephasing time)

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.backend("ibm_fez")

backend.qubit_properties(1)
QubitProperties(t1=0.00018243651954462543, t2=0.00020405172321184844, frequency=None)
# Retrieve qubit properties
qubit_index = 126 # 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")
Qubit 126 Properties:
T1: 0.0001248478211384773 seconds
T2: 7.96150033446492e-05 seconds
Readout Error: 0.0244140625
P(0 | 1): 0.029052734375
P(1 | 0): 0.019775390625
Readout Length: 1.56e-06 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 os qubits 1 e 0.

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 quando ele deveria ter sido preparado no estado 1|1\rangle, denotado como P(01)P(0 | 1). Ele reflete erros na preparação de estado e medição (SPAM), particularmente erros de medição em qubits supercondutores.

View with Qiskitbackend.properties().qubit_property(<qubit>, 'prob_meas0_prep1')
View on IBM Quantum PlatformCalibration data section, Qubit dropdown menu
prob-meas1-prep0

Da mesma forma, este parâmetro representa a probabilidade de medir um qubit no estado 1 quando ele deveria ter sido preparado no estado 0|0\rangle, denotado como P(10)P(1 | 0). Como prob_meas0_prep1, ele reflete erros SPAM, sendo os erros de medição o contribuidor predominante em qubits supercondutores.

View with Qiskitbackend.properties().qubit_property(<qubit>, 'prob_meas0_prep0')
View on IBM Quantum PlatformCalibration data section, Qubit dropdown menu
2Q error (Heron and 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.

View with Qiskitbackend.target['<instruction>'][<qubit 1>, <qubit 2>]
View on IBM Quantum PlatformCalibration section: hover over the qubit connection in Map view, or find the value in Table view under the CZ error (Heron and Nighthawk) or ECR error (Eagle) column; find the value for 2Q error (best) in the Details section
Median 2Q error (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.

Calculate with QiskitFollow the example in this Qiskit Community GitHub notebook
View on IBM Quantum PlatformDetails section; also find per-edge data in the Calibration data section
2Q error (layered)

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.

No IBM Quantum Platform, o cartão de informações detalhadas de cada QPU possui uma seção chamada Two-qubit gate error (layered), que fornece a visão expandida do menor erro de porta de dois qubits (em camadas) 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 Detalhes. Na prática, seis cadeias de 100 qubits (pré-selecionadas com base no desempenho ótimo esperado) são medidas, e o valor reportado para o número de qubits N é o menor erro encontrado em uma sub-cadeia de comprimento N buscando entre as seis cadeias de 100 qubits.

Calculate with QiskitFollow the example in this Qiskit Community GitHub notebook
View on IBM Quantum PlatformDetails section, and an expanded view in the Two-qubit gate error (layered) section
RZZ error (Heron)

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

View with QiskitImportant: Be sure you have set use_fractional_gates=True when you load the backend, then you can use backend.target['rzz'][<qubit 1>, <qubit 2>]
View on IBM Quantum PlatformCalibration section: Select RZZ in the Connection dropdown menu and hover over the qubit connection in Map view. You can also select RZZ error in the Graph output dropdown menu in Graph view, or find the value in Table view under the RZZ error column
ID error / √x (sx) error / Pauli-X error / RX error

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.

View on IBM Quantum PlatformDetails section
Z-axis rotation (RZ) error

Erro na porta RZ virtual. Reportado como 0 em todos os casos, pois essas operações são realizadas em software.

View with Qiskit backend.target['<instruction>'][<qubit 1>, ]
View on IBM Quantum PlatformCalibration section: Connection dropdown menu
Readout error

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.

View with Qiskitbackend.properties().readout_error(<qubit>)
View on IBM Quantum PlatformCalibration data section, Qubit dropdown menu
Readout error (median)

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

View on IBM Quantum PlatformCalibration data section, Details section
Single-qubit gate length

Duração de uma operação de porta de qubit único. Note que os valores exibidos no IBM Quantum Platform estão em nanossegundos. Os valores retornados pelo Qiskit estão em segundos.

View with Qiskitbackend.target['<instruction>'][<qubit 1>, ].duration
View on IBM Quantum PlatformCalibration section: Qubit dropdown menu
Gate length (2Q gates)

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

View with Qiskitbackend.target['<instruction>'][<qubit 1>, <qubit 2> ].duration
View on IBM Quantum PlatformCalibration section: Qubit dropdown menu
Readout length

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.

View with Qiskit
  • For measure: backend.properties().readout_length(<qubit>)
  • For measure_2: backend.target['measure_2'][<qubit 1>, ].duration
View on IBM Quantum PlatformCalibration data section, Qubit dropdown menu
backend.target["cz"][(1, 0)]
InstructionProperties(duration=6.8e-08, error=0.010202155482934266)
backend.target["measure"][(0,)]
InstructionProperties(duration=1.56e-06, error=0.025634765625)

Propriedades adicionais

CLOPS (or 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.

View with Qiskitprint(backend.status().status_msg), print(backend.status().pending_jobs)
View on IBM Quantum PlatformDetails section
Topology diagram or coupling map

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