Skip to main content
IBM Quantum Platform

Ver detalhes do backend

  • O código nesta página foi desenvolvido utilizando 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 back-ends disponíveis.


Listar ou filtrar backends

Lista de back-ends disponíveis para você

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

Nomes de QPU

As QPUs hospedadas em IBM Cloud® têm nomes que começam com ibm_*. Todas as QPUs recebem o nome de uma cidade - por exemplo, ibm_kingston. Este nome não indica onde o QPU real está hospedado.

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

Para executar o código a seguir, certifique-se de que você já tenha se autenticado no serviço. Consulte Configurar sua conta do IBM Cloud para obter mais detalhes.

# Initialize your account
from qiskit_ibm_runtime import QiskitRuntimeService

service = QiskitRuntimeService()

service.backends()

Output:

[<IBMBackend('ibm_pittsburgh')>,
 <IBMBackend('ibm_boston')>,
 <IBMBackend('ibm_fez')>,
 <IBMBackend('ibm_miami')>,
 <IBMBackend('ibm_marrakesh')>,
 <IBMBackend('ibm_kingston')>]

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

service.backend("ibm_fez")

Output:

<IBMBackend('ibm_fez')>
Note

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 back-ends disponíveis para você nessa instância ou região serão retornados.

Back-ends de filtro

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

O código a seguir retorna apenas back-ends que atendem a esses critérios e estão disponíveis para você na instância selecionada atualmente :

  • São dispositivos quânticos reais (simulator=False)
  • Estão atualmente em funcionamento (operational=True)
  • Tenha pelo menos cem qubits (min_num_qubits=100)
# 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)

Output:

[<IBMBackend('ibm_pittsburgh')>,
 <IBMBackend('ibm_boston')>,
 <IBMBackend('ibm_fez')>,
 <IBMBackend('ibm_miami')>,
 <IBMBackend('ibm_marrakesh')>,
 <IBMBackend('ibm_kingston')>]

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

service.least_busy(operational=True, min_num_qubits=100)

Output:

<IBMBackend('ibm_marrakesh')>

Informações estáticas do backend

Algumas informações sobre um backend não mudam regularmente, como seu nome, versão, número de qubits, 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 obter uma lista completa de atributos, consulte a IBMBackend documentação da API. Encontre mais informações sobre controle de versão na seção Controle de versão do QPU abaixo.

A região de um backend (a localização do centro de dados onde seus dados e experimentos serão hospedados e processados) está listada em seu cartão de informações detalhadas na página Recursos de computação em IBM Quantum Platform.

backend = service.backend("ibm_fez")

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

Output:

Name: ibm_fez
Version: 1.3.37
No. of programmable qubits: 156
Processor type: {'family': 'Heron', 'revision': '2'}

Versões da 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 garantia de execução nessa QPU. Se o número da revisão mudar, o circuito continuará a funcionar. Se o número principal ou secundário mudar, não há garantia de que o circuito funcione, embora possa funcionar.

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

O exemplo de código apresentado anteriormente nesta seção demonstra como encontrar a versão de um backend. Em IBM Quantum Platform, você pode visualizar 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 ser alterado estão listadas na tabela a seguir.

Versão principal
Versão secundária
Versão revisada
Alterações na amostraCiclos de aquecimento/desaquecimentoAtualizações de software da QPU
Grandes mudanças na eletrônica de controleTrocar alguns componentes eletrônicos, se a substituição afetar significativamente o funcionamentoCalibrações manuais para melhorar a fidelidade
Mudança da QPU para um novo local, se houver mudanças significativas no comportamentoDesativar um portão por algum tempo devido a problemas de calibração, e as correções não podem ser feitas facilmente no softwarePequenas alterações eletrônicas que não afetam o funcionamento
Alterando a direção de uma porta CNOT

Instruções suportadas

Cada família de processadores suporta nativamente um conjunto limitado de instruções. Este conjunto inclui portas de um e dois qubits, bem como operações não unitárias, tais como medição e reinicialização. Cada porta do circuito deve ser traduzida (pelo transpiler) para os elementos do conjunto de instruções suportadas por uma QPU antes de poder ser executada na QPU.

Você pode visualizar os conjuntos de instruções suportados para uma QPU com o Qiskit. A página Recursos de computação do IBM Quantum Platform lista apenas os portões unitários (portões básicos) suportados por uma QPU.

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}")

Output:

Backend: ibm_kingston
    Processor type: {'family': 'Heron', 'revision': '2'}
    Supported instructions: ['cz', 'id', 'delay', 'measure', 'measure_2', 'reset', 'rz', 'sx', 'x', 'if_else', 'store']

Tabela de instruções suportadas

Categoria de operação
Nome
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 (alimentação direta clássica)

Informações dinâmicas do backend

Os backends também possuem propriedades que mudam sempre que o backend é calibrado, como a vida útil do qubit e as taxas de erro de operação. 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 na construção de modelos de ruído para um simulador clássico. Consulte o guia de tarefas de calibração para obter mais informações.

Em 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 visualizar seu cartão de informações detalhadas e, em seguida, 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 de propriedades de backend no Qiskit com o seguinte código:

backend.properties(datetime=<datetime>)

Propriedades do qubit

Ir para a lista de propriedades do qubit

backend.properties().qubit_property() retorna informações sobre os atributos físicos dos qubits. Ele contém um dicionário com várias propriedades do qubit, cada uma emparelhada com seu valor e o carimbo de data/hora 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 específico.

# fundamental physical properties of qubit 1

backend = service.backend("ibm_fez")

backend.qubit_properties(1)

Output:

QubitProperties(t1=0.00023525336833619243, t2=0.0002320821005698974, 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")

Output:

Qubit 126 Properties:
  T1: 9.634806748588717e-05 seconds
  T2: 8.579257084098977e-05 seconds
  Readout Error: 0.050048828125
  P(0 | 1): 0.0751953125
  P(1 | 0): 0.02490234375
  Readout Length: 1.7e-06 seconds

Ver propriedades do qubit

  • O tempo de decaimento ( T1T_1 ) representa a duração média 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. Este parâmetro é usado para caracterizar o comportamento de relaxamento energético do qubit e é expresso em unidades de segundos (s).

    Visualizar com Qiskit
    backend.properties().t1(<qubit>)
    Ver em IBM Quantum Platform
    Seção de dados de calibração, menu suspenso Qubit; encontre o valor mediano de T1T_1 na seção Detalhes
  • O tempo de coesão ( T2T_2 ) denota a escala de tempo durante 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 consideração tanto o relaxamento energético quanto os processos de desfasamento puro, fornecendo informações sobre as propriedades de coerência do qubit. A análise de espectro de fase ( T2T_2 ) é relatada a partir de uma sequência de eco de Hahn.

    Visualizar com Qiskit
    backend.properties().t2(<qubit>)
    Ver em IBM Quantum Platform
    Seção de dados de calibração, menu suspenso Qubit; encontre o valor mediano de T2T_2 na seção Detalhes

Propriedades da instrução

Ir para a lista de propriedades de instrução

O backend.target atributo é um qiskit.transpiler.Target objeto: um objeto que contém todas as informações necessárias para transpilá-lo para esse backend. Isso inclui erros de instrução e durações. Por exemplo, a célula a seguir obtém as propriedades para um cz portão atuando entre os qubits 1 e 0.

backend.target["cz"][(1, 0)]

Output:

InstructionProperties(duration=6.8e-08, error=0.008303008840692683)

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

backend.target["measure"][(0,)]

Output:

InstructionProperties(duration=1.7e-06, error=0.0302734375)

Exibir propriedades da instrução

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

    Visualizar com Qiskit
    backend.properties().qubit_property(<qubit>, 'prob_meas0_prep1')
    Ver em IBM Quantum Platform
    Seção de dados de calibração, menu suspenso Qubit
  • Da mesma forma, este parâmetro representa a probabilidade de medir um qubit no estado 1 quando se pretendia prepará-lo no estado 0|0\rangle, denotado como P(10)P(1 | 0). Tal como prob_meas0_prep1, reflete erros SPAM, sendo os erros de medição o principal contribuinte nos qubits supercondutores.

    Visualizar com Qiskit
    backend.properties().qubit_property(<qubit>, 'prob_meas0_prep0')
    Ver em IBM Quantum Platform
    Seção de dados de calibração, menu suspenso Qubit
  • O erro de dois qubits por borda do mesmo lote de medições usado para calcular o erro mediano 2Q. 2Q erro (melhor) refere-se ao menor erro de dois qubits em qualquer borda do dispositivo, também a partir deste lote de medições.

    Visualizar com Qiskit
    backend.target['<instruction>'][<qubit 1>, <qubit 2>]
    Ver em IBM Quantum Platform
    Seção de calibração: passe o mouse sobre a conexão do qubit na visualização do mapa ou encontre o valor na visualização da tabela na coluna CZ error (Heron e Nighthawk) ou ECR error (Eagle); encontre o valor para o erro de 2Q (melhor) na seção Detalhes
  • Fidelidade média da porta da operação de dois qubits a partir de benchmarking aleatório. Medido em “isolamento”: lotes com uma separação mínima de dois qubits entre as bordas. Esta comparação aleatória utiliza camadas alternadas de Cliffords de qubit único e portas de dois qubits e, portanto, o valor final do erro de 2Q inclui o erro da camada de Cliffords de qubit único.

    Calcule com o Qiskit
    Siga o exemplo neste notebook da Comunidade Qiskit GitHub
    Ver em IBM Quantum Platform
    Seção Detalhes; também encontre dados por borda na seção Dados de calibração
  • Erro médio por porta em camadas (EPLG) em uma cadeia de 100 qubits. A EPLG média mede o erro médio de porta em uma cadeia em camadas de qubits de NN ( NN =100 aqui). É derivado de uma quantidade semelhante conhecida como fidelidade de camada (LF), em que EPLG 100_{100} = 4/5(1-LF 199^{\frac{1}{99}} ) e a fidelidade de camada é a fidelidade do processo da cadeia em camadas de qubits NN. Para obter detalhes, consulte o artigo Benchmarking quantum processor performance at scale (Avaliação comparativa do desempenho do processador quântico em escala). Observe que, no artigo, o EPLG é definido para erros de processo, mas, para manter a consistência com os erros de porta relatados individualmente, aqui ele é citado para o erro médio de porta, daí o fator de 4/5.

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

    Calcule com o Qiskit
    Siga o exemplo neste notebook da Comunidade Qiskit GitHub
    Ver em IBM Quantum Platform
    Seção Detalhes e uma visualização ampliada na seção Erro de porta de dois qubits (em camadas)
  • Erro no portão RZZ calculado com base na média dos ângulos RZZ utilizando uma variante de benchmarking aleatório para unitários arbitrários.

    Visualizar com Qiskit
    Importante: Certifique-se de ter definido use_fractional_gates=True ao carregar o backend, então você poderá usar backend.target['rzz'][<qubit 1>, <qubit 2>]
    Ver em IBM Quantum Platform
    Seção de calibração: Selecione RZZ no menu suspenso Conexão e passe o mouse sobre a conexão do qubit na visualização Mapa. Você também pode selecionar o erro RZZ no menu suspenso Saída do gráfico na visualização Gráfico ou encontrar o valor na visualização Tabela, na coluna Erro RZZ
  • Erro nas portas discretas de um qubit de duração finita, medido a partir de benchmarking aleatório. A sequência de benchmarking aleatória inclui portas SX, ID e X, e presume-se que seus erros sejam os mesmos. O portão ID é um atraso de duração igual à duração dos portões √X e X. O portão RX também tem a mesma duração que os portões √X e X com amplitude variável e, portanto, é relatado como tendo o mesmo erro que esses portões.

    Visualizar com Qiskit
    backend.target['<instruction>'][<qubit 1>,]
    Ver em IBM Quantum Platform
    Seção de calibração: menu suspenso Qubit
  • Fidelidade média do portão √X (SX) a partir de benchmarking aleatório, medida simultaneamente em todos os qubits. A sequência de benchmarking aleatória inclui portas SX, ID e X, e presume-se que seus erros sejam os mesmos.

    Ver em IBM Quantum Platform
    Seção de detalhes
  • Erro no portão virtual RZ. Relatado como todo 0, uma vez que são executados no software.

    Visualizar com Qiskit
    backend.target['<instruction>'][<qubit 1>,]
    Ver em IBM Quantum Platform
    Seção de calibração: Menu suspenso de conexão
  • 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 da medição.

    Visualizar com Qiskit
    backend.properties().readout_error(<qubit>)
    Ver em IBM Quantum Platform
    Seção de dados de calibração, menu suspenso Qubit
  • Precisão 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 relatado é a média desses dois erros. A mediana é calculada para todos os qubits.

    Ver em IBM Quantum Platform
    Seção de dados de calibração, seção Detalhes
  • Duração de uma operação de porta de qubit único. Observe que os valores apresentados em IBM Quantum Platform estão em nanossegundos. Os valores retornados no Qiskit são em segundos.

    Visualizar com Qiskit
    backend.target['<instruction>'][<qubit 1>,].duration
    Ver em IBM Quantum Platform
    Seção de calibração: menu suspenso Qubit
  • Duração da operação da porta de dois qubits. Observe que os valores apresentados em IBM Quantum Platform estão em nanossegundos. Os valores retornados no Qiskit são em segundos.

    Visualizar com Qiskit
    backend.target['<instruction>'][<qubit 1>, <qubit 2>].duration
    Ver em IBM Quantum Platform
    Seção de calibração: menu suspenso Qubit
  • O comprimento da leitura especifica a duração da operação de leitura para 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 fica pronto para a próxima operação. Compreender esse parâmetro é fundamental para otimizar a execução do circuito, especialmente ao incorporar medições no meio do circuito.

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

Propriedades adicionais

  • O número máximo de circuitos por segundo (MCPS) inclui a medição, o reset e a reinicialização de um circuito com uma porta de Hadamard e uma única medição.

    Visualizar com Qiskit
    mcps = backend.configuration().mcps
    Ver em IBM Quantum Platform
    Seção de detalhes
  • Operações de camada de circuito por segundo (CLOPS) é uma medida de quantas camadas de um circuito 100x100 (circuito com reconhecimento de hardware) uma QPU pode executar por unidade de tempo.

    Calcule com o Qiskit
    Encontre o código CLOPS na Comunidade Qiskit GitHub
    Ver em IBM Quantum Platform
    Seção de detalhes
  • Com BackendStatus, você pode encontrar o status da QPU (por exemplo, Active, Paused, Offline) bem como o número de tarefas pendentes.

    Visualizar com Qiskit
    print(backend.status().status_msg), print(backend.status().pending_jobs)
    Ver em IBM Quantum Platform
    Seção de detalhes
  • Um diagrama que indica os pares de qubits que suportam operações de porta de dois qubits entre eles. Isso 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.

    Visualizar com Qiskit
    from qiskit.visualization import plot_gate_map então plot_gate_map(backend)
    Ver em IBM Quantum Platform
    Seção de dados de calibração; clique em Expandir para ampliar a imagem
O que isso `error = 1` significa?

Se a avaliação comparativa de um qubit ou borda não for bem-sucedida ao longo de vários dias, seja devido à baixa qualidade dos dados ou a outros fatores internos, o valor de erro relatado é considerado obsoleto e será relatado como 1. Isso não significa necessariamente que o qubit ou a borda não estejam funcionando ou que o erro seja 1; em vez disso, o erro é considerado indefinido e você deve proceder com cautela ao operar esse qubit ou porta.


Próximas etapas

Recomendações
Esta página foi útil?
Relate um bug, erro de digitação ou solicite conteúdo no GitHub.