Skip to main content
IBM Quantum Platform

Referência da API do QESEM da Qedma

  • Qiskit Functions

    Qiskit Functions — ferramentas pré-configuradas criadas por organizações parceiras — abstraem partes do fluxo de trabalho de desenvolvimento de software para simplificar e acelerar a descoberta de algoritmos e o desenvolvimento de aplicativos em escala de serviços públicos. Clique para ver o guia desta função do Qiskit.


Entradas

pubs

Tipo: EstimatorPubLike

Esta é a entrada principal. O Pub contém de 2 a 4 elementos: um circuito, uma ou mais grandezas observáveis, 0 ou um único conjunto de valores de parâmetros e uma precisão opcional. Se não for especificada uma precisão, será utilizada a default_precision do options .

A precisão PUB pode ser um valor float ou um dicionário. Um número de tipo float define a precisão alvo para os valores esperados retornados. Um dicionário mapeia fatores de escala de ruído para precisões-alvo e solicita resultados do Ajuste Quase-Probabilístico de Erro (QET) nas escalas especificadas.

O QESEM também retornará fatores de escala complementares próximos a 1.0; a precisão alvo é garantida apenas para os fatores de escala solicitados.

  • Necessário: sim
  • Exemplo:[(circuit, [obs1,obs2,obs3], parameter_values, 0.03)]
  • Exemplo de QET: [(circuit, [obs1, obs2], None, {0.5: 0.15, 1.3: 0.2})]

backend_name

Tipo: `str`

Valor Padrão: QESEM will get least busy device reported by IBM

Nome do backend a ser utilizado

  • Obrigatório: Não
  • Exemplo:"ibm_fez"

instance

Tipo: `str`

O nome do recurso na nuvem da instância a ser usado nesse formato

  • Obrigatório: Não
  • Exemplo:"CRN"

Opções

Tipo: `dict`

As opções de entrada para esta função são especificadas como um dicionário aninhado. Veja a lista completa de opções e seus valores padrão.

  • Obrigatório: Não
  • Exemplo:{ "default_precision": 0.03, "max_execution_time": 3600, "transpilation_level": "standard"}

Lista de opções

estimate_time_only

Valor Padrão: None

Este sinalizador permite que os usuários obtenham uma estimativa do tempo de QPU necessário para executar o circuito com o QESEM.

  • Quando definido como “Nenhum”, o circuito será executado com o QESEM.
  • Se definido como "analytical", é calculado um limite superior do tempo de QPU sem consumir nenhuma capacidade da QPU. Essa estimativa tem uma resolução de 30 minutos (por exemplo, 30 minutos, 60 minutos, 90 minutos e assim por diante). É tipicamente pessimista e só pode ser obtida para observáveis de Pauli isolados ou somas de observáveis de Pauli cujos conjuntos de apoio não se intersectam (por exemplo, Z0+Z1 ). É útil principalmente para comparar os níveis de complexidade de diferentes parâmetros fornecidos pelo usuário (circuito, precisão e assim por diante).
  • Para obter uma estimativa mais precisa do tempo de QPU, defina este sinalizador como "empirical". Embora essa opção exija a execução de um número reduzido de circuitos, ela oferece uma estimativa do tempo de QPU significativamente mais precisa. Essa estimativa tem uma resolução de 5 minutos (por exemplo, 20 minutos, 25 minutos, 30 minutos e assim por diante). O usuário pode optar por executar a estimativa empírica de tempo no modo em lote ou no modo de sessão. Para mais detalhes, consulte a execution_mode descrição. Por exemplo, no modo em lote, a estimativa empírica do tempo consumirá menos de 10 minutos de tempo de QPU.
  • Opções: "analytical" / "empirical" / Nenhuma
default_precision

Valor Padrão: 0.02

Será aplicado aos pubs que não tiverem precisão. A precisão representa o erro aceitável nos valores esperados das grandezas observáveis, expresso em valor absoluto. Mais especificamente, o tempo de execução da QPU para a mitigação será determinado de forma a fornecer valores de saída para todas as variáveis observáveis de interesse que se enquadrem em um intervalo de confiança de 1 σ\sigma e da precisão alvo. Se forem fornecidas várias variáveis observáveis, a mitigação será executada até que a precisão alvo seja alcançada para cada uma das variáveis observáveis de entrada.

  • Opções: 0 < float
max_execution_time

Valor Padrão: 3,600 (one hour)

Permite limitar o tempo de uso da QPU, especificado em segundos, para todo o processo do QESEM. O valor padrão é 3.600 segundos (uma hora). Como o tempo final de QPU necessário para atingir a precisão alvo é determinado dinamicamente durante o trabalho do QESEM, esse parâmetro permite limitar o custo do experimento. Se o tempo de QPU determinado dinamicamente for menor do que o tempo alocado pelo usuário, esse parâmetro não afetará o experimento. O max_execution_time parâmetro é particularmente útil nos casos em que a estimativa do tempo de análise fornecida pelo QESEM antes do início do trabalho é excessivamente conservadora e o usuário deseja, mesmo assim, iniciar um trabalho de mitigação. Após o término do prazo, o QESEM deixa de enviar novos circuitos. Os circuitos que já foram enviados continuam sendo executados (portanto, o tempo total pode ultrapassar o limite em até 30 minutos), e o usuário recebe os resultados processados dos circuitos executados até aquele momento. Caso deseje aplicar um limite de tempo do QPU inferior à estimativa de tempo analítico, consulte a Qedma para obter uma estimativa da precisão que pode ser alcançada dentro desse limite de tempo.

  • Opções: 0 ≤ número inteiro ≤ 28.800 (8 horas)
transpilation_level

Valor Padrão: standard

Depois que um circuito é enviado ao QESEM, ele prepara automaticamente várias transpilacões alternativas do circuito e escolhe aquela que minimiza o tempo de processamento da QPU. Por exemplo, implementações alternativas poderiam utilizar portas RZZ fracionárias otimizadas por Qedma para reduzir a profundidade do circuito. É claro que todas as transpilacões são equivalentes ao circuito de entrada, em termos de sua saída ideal. Para exercer maior controle sobre a transpilagem do circuito, defina o nível de transpilagem no arquivo options. Embora "transpilation_level": "standard" corresponda ao comportamento padrão descrito acima, "transpilation_level": "minimal_with_layout_opt" inclui apenas as modificações mínimas necessárias no circuito original; por exemplo, o mapeamento do circuito para o gráfico de conectividade do dispositivo. Observe que, em qualquer caso, é aplicado o mapeamento automático de hardware para qubits de alta fidelidade.

transpilation_level
Descrição
"padrão"Transpilagem padrão do QESEM. Prepara várias compilações alternativas e escolhe aquela que minimiza o tempo de processamento da CPU. As barreiras podem ser modificadas na etapa de estratificação.
"minimal_with_layout_opt"Transpilacão mínima: o circuito mitigado será estruturalmente muito semelhante ao circuito de entrada. Os circuitos fornecidos neste nível devem ser compatíveis com o conjunto de portas de base do dispositivo; portanto, você deve transpilá-los separadamente para o conjunto de portas de base do dispositivo. Por exemplo: CX, Rzz(α) e portas padrão de um único qubit (U, x, sx, rz e assim por diante). As barreiras serão respeitadas na etapa de estratificação.

Para trabalhos que contenham múltiplos PUBs de entrada ou múltiplas instâncias de circuitos vinculadas a parâmetros, use "minimal_with_layout_opt".

  • Opções: “minimal_with_layout_opt” / “standard”
execution_mode

Valor Padrão: batch

O usuário pode optar por executar o trabalho do QESEM em uma sessão dedicada do IBM ou em vários lotes do IBM :

  • Modo de sessão : As sessões são mais caras, mas proporcionam resultados mais rápidos. Assim que a sessão começa, a QPU fica reservada exclusivamente para o trabalho do QESEM. O cálculo do tempo de execução inclui tanto o tempo gasto na execução do QPU quanto os cálculos clássicos associados (realizados pelo QESEM e pelo IBM ). A função QESEM Qiskit se encarrega de criar e encerrar a sessão automaticamente. Para usuários com acesso ilimitado a QPUs (por exemplo, em instalações locais), recomenda-se usar o modo de sessão para uma execução mais rápida do QESEM.

  • Modo em lote : No modo em lote, a QPU fica livre durante os cálculos clássicos, o que resulta em menor utilização da QPU. Como os trabalhos em lote geralmente se estendem por um período mais longo, há um risco maior de desvios de hardware; o QESEM incorpora medidas para detectar e compensar esses desvios, mantendo a confiabilidade durante execuções prolongadas.

  • Opções: "session" / "batch"

parallel_execution

Valor Padrão: True

Esse sinalizador permite que o usuário execute o circuito de entrada em paralelo na QPU. O QESEM verifica se outros patches na QPU apresentam fidelidade suficiente. Se esses patches reduzirem o tempo de processamento da QPU, o QESEM executa o circuito de entrada nesses patches em paralelo. Os resultados dos patches são combinados por meio da ponderação pela variância inversa.

  • Exemplo: Um usuário deseja executar um circuito de 8 qubits em ibm_marrakesh, um dispositivo de 156 qubits, com parallel_execution=True. O QESEM cria nove cópias do circuito transpilado, cada uma mapeada para um patch distinto de 8 qubits no gráfico de conectividade do Marrakesh. Após a execução, o usuário recebe um único valor esperado e uma barra de erro para cada observável de entrada.

  • Opções: "False" / "True"

description

Valor Padrão: None

Descrição opcional a ser anexada ao trabalho no QESEM.

Caution

A estimativa de tempo da QPU varia de um backend para outro. Portanto, ao executar a função QESEM, certifique-se de executá-la no mesmo backend que foi selecionado ao obter a estimativa de tempo da QPU.

Note

O QESEM encerrará sua execução quando atingir a precisão desejada ou quando atingir max_execution_time, o que ocorrer primeiro.

Note

As operações de barreira são normalmente utilizadas para especificar as camadas das portas de dois qubits em circuitos quânticos. "minimal_with_layout_opt"Com o QESEM, as camadas especificadas pelas barreiras são preservadas. Com "standard", as camadas especificadas pelas barreiras são consideradas como uma alternativa de transpilação ao minimizar o tempo de execução na QPU.


Saídas

A saída da função QESEM é um PrimitiveResult, que contém um PubResult por entrada PUB, além de metadados no nível do trabalho.

Cada um deles PubResult pode ser acessado por meio da PrimitiveResult indexação e contém um campo data e um metadata campo.

  • O data campo contém, no mínimo, uma matriz de valores esperados (PubResult.data.evs) e uma matriz de erros-padrão (PubResult.data.stds). Ele também pode conter mais dados, dependendo das opções utilizadas.

  • O metadata campo contém metadados do nível PUB (PubResult.metadata), incluindo os resultados detalhados do QESEM e as métricas de execução.

Os campos comuns PubResult.metadata incluem:

Campo
Descrição
resultsResultados do QESEM por circuito e por observável.
noisy_resultsValores esperados não corrigidos e barras de erro, quando disponíveis.
transpiled_circsInformações sobre o circuito transpilado, incluindo mapeamentos de qubits e o número de bases de medição.
total_qpu_timeTempo de CPU utilizado pelo trabalho.
gate_fidelitiesFidelidades de porta medidas durante o experimento.
total_shotsNúmero total de fotos utilizadas pelo trabalho.
mitigation_shotsNúmero de disparos utilizados para mitigação.
resource_usageDiscriminação do uso de recursos para o trabalho.

Os detalhes do QESEM por observável são armazenados em metadata["results"]. Os resultados são agrupados primeiro por instância do circuito e, em seguida, por observável. Cada entrada observável pode incluir o resultado do QESEM (qesem), o resultado não mitigado (unmitigated), os resultados de escalonamento de ruído (noise_scaling) e os resultados heurísticos do QESEM (qesem_heuristic).

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