Skip to main content
IBM Quantum Platform

Referência da API do Quantum Elements Orbit

  • Qiskit Functions

    Qiskit Functions — ferramentas pré-desenvolvidas 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 visualizar o guia desta função do Qiskit.

O Quantum Elements Orbit é uma função do Qiskit que prepara circuitos quânticos para um backend selecionado do IBM Quantum®, insere o desacoplamento dinâmico (DD) em janelas de inatividade programadas e executa a carga de trabalho resultante por meio de uma primitiva do Qiskit Runtime. O Orbit aceita PUBs do Sampler e do Estimator e retorna um padrão PrimitiveResult com metadados específicos do Orbit anexados ao resultado de nível superior e a cada resultado do PUB (PUB).

Comportamento padrão

Se backend_name for omitido, o Orbit seleciona um backend do IBM Quantum elegível e menos ocupado disponível para o serviço Qiskit Runtime. Se options for omitido ou None, o Orbit utiliza seus padrões integrados: transpilar e agendar circuitos, inserir a estratégia DD padrão, enviar ao serviço e anexar os metadados de inserção de DD ao resultado.


Entradas

A chamada típica envia PUBs, seleciona uma primitiva, seleciona opcionalmente um backend e, opcionalmente, passa opções específicas do Orbit:

job = orbit.run(
    primitive="sampler",
    pubs=[pub, pub, pub],
    backend_name="ibm_boston",
    options={
        "pub_options": [
            {"mode": "raw"},
            {"mode": "orbit"},
            {
                "mode": "custom",
                "dd_strategy": [[{"dd_sequence": "CPMG", "pulse_density": 1.00, "dd_reps": 1}]],
                "transpilation_mode": "optimize",
                "mem": True,
            },
        ]
    },
)
result = job.result()

pubs fornece os circuitos e as entradas primitivas necessárias para a execução. primitive seleciona o contrato primitivo “ Qiskit Runtime ”. backend_name seleciona o backend IBM Quantum ou pode ser omitido para permitir que o Orbit escolha o backend menos ocupado. options controla a inserção de DD do Orbit, as opções d Qiskit Runtime, o comportamento da visualização prévia/simulador e os recursos de metadados. Veja abaixo todos os detalhes sobre cada entrada.

pubs

Tipo: Iterable[SamplerPubLike] or Iterable[EstimatorPubLike]

Um ou mais PUBs que correspondem à primitiva selecionada.

  • Necessário: sim
  • Tipos de entrada válidos: iterável de objetos do tipo Sampler PUB ou iterável de objetos do tipo Estimator PUB

Cada PUB deve corresponder ao contrato de entrada da primitiva selecionada.

  • Para primitive="sampler" Cada PUB segue o formato PUB Sampler, como por exemplo: (circuit, parameter_values, shots).
  • Para primitive="estimator" Cada PUB segue o formato do Estimator PUB, como por exemplo: (circuit, observables, parameter_values, precision).
  • Os circuitos não precisam ser circuitos ISA no caminho padrão options.transpilation_mode="optimize" ; o Orbit os transpila e os agenda internamente.

primitive

Tipo: str

Seleciona qual primitiva Qiskit Runtime o Orbit utiliza para execução.

  • Necessário: sim
  • Tipos de entrada válidos: str

A primitiva determina o que cada PUB de deve conter e quais dados de resultado cada uma PubResult retorna.

  • Opções: "sampler" / "estimator"
  • Use "sampler" para dados em forma de cadeia de bits amostrados.
  • Use "estimator" para valores esperados e erros-padrão.

backend_name

Tipo: str or None

Valor Padrão: None

Nome do backend do IBM Quantum no qual será executado.

  • Obrigatório: Não

  • Valor padrão: None

  • Tipos de entrada válidos: str ou None

  • Quando omitido ou None, o Orbit determina um backend operacional elegível que não seja um simulador com least_busy().

  • Exemplo:"ibm_boston"

options

Tipo: dict or None

Valor Padrão: None

Opções específicas de função que controlam o comportamento de execução do Orbit.

  • Obrigatório: Não
  • Valor padrão: None
  • Tipos de entrada válidos: dict ou None

As opções controlam a transpilagem, a inserção de DD, as opções de “ Qiskit Runtime ”, o modo de visualização, o modo simulador, a exportação de informações do backend e a mitigação de erros de medição.

  • Chaves de opção desconhecidas são rejeitadas.
  • Insira None, {}, ou não insira nada options para usar todos os valores padrão.
  • Exemplo:
{
    "pub_options": [
        {"mode": "raw"},
        {"mode": "orbit"},
        {
            "mode": "custom",
            "dd_strategy": [[{"dd_sequence": "CPMG", "pulse_density": 1.00, "dd_reps": 1}]],
            "transpilation_mode": "optimize",
            "mem": True
        }
    ]
}

Lista de opções

preview

Tipo: bool

Valor Padrão: False

Se o Orbit retorna um relatório de inserção de DD sem enviar um trabalho de “ Qiskit Runtime ”.

  • Obrigatório: Não

  • Valor padrão: False

  • Tipos de entrada válidos: bool

  • TrueNesse caso, não é utilizado tempo da QPU; o orbit simplesmente faz o pré-processamento dos circuitos em pubs e fornece um relatório de inserção.

  • Quando False (valor padrão), uma tarefa do tipo “ Qiskit Runtime ” com circuitos modificados pelo Orbit é enviada e processada.

  • Se tanto preview quanto simulator forem True, o modo de visualização tem prioridade e a execução do simulador é ignorada.

debug_return_circuits

Tipo: bool

Valor Padrão: False

Se o modo de visualização inclui o circuito pós-Orbit preparado para cada PUB nos metadados.

  • Obrigatório: Não

  • Valor padrão: False

  • Tipos de entrada válidos: bool

  • Usado apenas quando preview=True.

  • TrueQuando isso ocorre, cada relatório do PUB inclui debugCircuit.circuit, debugCircuit.usedQubits, e as contagens de operações. Isso também inclui o princípio do “melhor esforço” debugCircuit.qasm quando o Qiskit consegue exportar o circuito.

  • Deixe essa opção desativada para execuções normais, pois as cargas úteis do circuito podem ser grandes.

transpilation_mode

Tipo: string

Valor Padrão: optimize

Como a Orbit prepara os circuitos d PUB e antes da inserção do DD.

  • Obrigatório: Não

  • Valor padrão: "optimize"

  • Valores válidos para a entrada: "optimize", "prepare", ou "validate"

  • "optimize" executa repetidamente a transpilação do Qiskit optimization_level=2 e mantém o candidato com a menor profundidade de dois qubits para circuitos estáticos e dinâmicos.

  • "prepare" executa a preparação do Qiskit optimization_level=0 e o agendamento do ALAP. Se physical_layout for fornecido, o Orbit primeiro materializa o circuito nesses índices de fios físicos e utiliza o método de layout trivial do Qiskit.

  • "validate" considera que o circuito de entrada já está fisicamente preparado. O Orbit verifica a compatibilidade do backend sempre que possível, não realiza remapeamento, roteamento, otimização nem correção de programação antes da inserção do DD e ignora physical_layout a operação, exibindo um aviso.

physical_layout

Tipo: object or null

Valor Padrão: None

Mapeamento opcional de qubits lógicos para físicos.

  • Obrigatório: Não
  • Valor padrão: None
  • Tipos de entrada válidos: objeto com chaves e valores inteiros não negativos, ou None

Exemplo: {"0": 85, "1": 89} mapeia o qubit lógico 0 para o qubit físico 85 e o qubit lógico 1 para o qubit físico 89. Python Os chamadores podem usar chaves inteiras; as chaves dos objetos JSON são cadeias de caracteres.

  • No "optimize" modo, isso é passado como uma semente inicial do layout, e o mapeamento final pode sofrer alterações durante a otimização/roteamento.
  • No "prepare" modo, o Orbit materializa o circuito nesses índices de fios físicos e, em seguida, utiliza uma preparaçã level-0 a com layout_method="trivial". Os SWAPs de roteamento explícito ainda podem alterar o estado quântico durante a execução.
  • No "validate" modo, os fios do circuito fornecidos são os que prevalecem; portanto, physical_layout é ignorado e gera um aviso.
num_transpilation_steps

Tipo: int

Valor Padrão: 300

Número de tentativas de Orbit com sementes de transpilação estocástica em transpilation_mode="optimize".

  • Obrigatório: Não
  • Valor padrão: 300
  • Tipos de entrada válidos: inteiro positivo
mem

Tipo: bool or None

Valor Padrão: None

Se o Orbit aplica a mitigação de erros de medição exclusivamente por meio do Sampler, utilizando o recurso “ M3 ”.

  • Obrigatório: Não

  • Valor padrão: None

  • Tipos de entrada válidos: bool ou None

  • Quando True, aplica a mitigação de erros de medição às imagens provenientes de sampler.

  • Quando False, não realiza o pós-processamento das imagens.

  • NoneQuando o modo Orbit está ativado, o MEM é habilitado para os PUBs do Sampler executados; já os modos raw e custom ignoram o MEM, a menos que estejam configurados para o contrário.

  • O Explicit True requer primitive="sampler", preview=False, e simulator=False.

  • As contagens brutas do Sampler são preservadas, e as contagens mitigadas são anexadas aos metadados do Orbit.

  • Caso a mitigação falhe durante o pós-processamento, o Orbit preserva o resultado bruto e registra a falha na mitigação nos metadados.

pub_options

Tipo: list[dict] or None

Valor Padrão: None

Modos de execução e substituições do per- PUB .

  • Obrigatório: Não

  • Valor padrão: None

  • Tipos de entrada válidos: list[dict] ou None

  • Uma entrada é transmitida para todos os PUBs; caso contrário, passe uma entrada por PUB.

  • {"mode": "raw"} utiliza uma única etapa de transpilação e agendamento do Qiskit optimization_level=0 para circuitos estáticos ou dinâmicos e ignora a otimização do Orbit, o Orbit DD, o DD dinâmico e o MEM.

  • {"mode": "orbit"} usa as configurações padrão do Orbit.

  • {"mode": "custom"} pode substituir transpilation_mode, physical_layout, dd_qubits, dd_strategy dynamic_dd_seq,, e mem para esse PUB o.

  • O modo Raw sempre usa transpilation_mode="prepare" com physical_layout=None, ignora o Orbit DD e desconsidera as opções globais de preparação.

  • O Orbit e os PUBs personalizados herdam as variáveis globais transpilation_mode e physical_layout , a menos que as substituam conforme PUB.

  • Use PUBs duplicados com pub_options para comparar os dados brutos, as configurações padrão do Orbit e uma estratégia DD personalizada em um único trabalho do Qiskit Runtime. Para uma linha de base CPMG simples, use {"dd_sequence": "CPMG", "pulse_density": 1.00, "dd_reps": 1} dentro do arquivo dd_strategy. PUB personalizado.

Para circuitos preparados pelo chamador, use transpilation_mode="validate" para os PUBs habilitados para Orbit:

options = {
    "pub_options": [
        {"mode": "raw"},
        {"mode": "orbit", "transpilation_mode": "validate"},
        {
            "mode": "custom",
            "transpilation_mode": "validate",
            "dd_qubits": None,
            "dd_strategy": [[{"dd_sequence": "CPMG", "pulse_density": 1.00, "dd_reps": 1}]],
            "mem": False,
        },
    ]
}
dd_strategy

Tipo: list[list[dict]]

Estratégias de DD ordenadas a serem aplicadas aos circuitos d PUB.

  • Obrigatório: Não

  • Valor padrão: [[{"dd_sequence": "auto", "pulse_density": 0.25, "dd_reps": 1}]]

  • Tipos de entrada válidos: list[list[dict]]

  • Opções: Lista externa não vazia de listas de estratégias não vazias.

  • A lista externa indexa PUBs ou circuitos. Se for fornecida apenas uma estratégia, o Orbit a transmite para todos os PUBs.

  • Cada lista interna é aplicada, rodada por rodada, ao mesmo circuito.

  • Cada rodada requer dd_sequence; pulse_density o valor padrão é 0.25; dd_reps o valor padrão é 1.

dd_strategy campos redondos

Tipo: str or dict or list

  • Campo: dd_sequence Sequência a ser inserida para uma rodada de DD.
  • Necessário: sim
  • Tipos de entrada válidos: str, dict, ou grupo de pulsos personalizado list
  • Opções: "auto", um nome de sequência embutido, um dicionário de variantes, como {"name": "ur", "variant": "8"}, ou uma lista personalizada de grupos de pulsos, como [[0.0], ["Y"], ["Xb", 0.5]].
  • Nomes predefinidos, organizados por slots de pulso: as sequências de dois slots são "CPMG", "pureY", e "superHahn"; as sequências de quatro slots são "XY4" e "superCPMG"; as sequências de oito slots são "XY8"; as sequências de dezesseis slots são "superEuler"; as sequências de vinte slots são "KDD".
  • Famílias embutidas parametrizadas: "CDD-n" com inteiro n >= 1 ("CDD-1" é equivalente a "XY4" e a sequência cresce recursivamente); "UR-n" ou "URn" com inteiro par n >= 4 (por exemplo, "UR-8" ou "URn8"); e "T-n" ou "Tn" com inteiro par n >= 2 (por exemplo, "T-8" ou "Tn8").
  • Variantes integradas do RGA: "RGA-2x", "RGA-4", "RGA-4p", "RGA-8a" "RGA-8c", "RGA-16a", "RGA-16b",, "RGA-32a", "RGA-32c", "RGA-64a", "RGA-64c", e "RGA-256a".
  • Os nomes de sequências integradas não diferenciam maiúsculas de minúsculas e ignoram separadores, como hífens e sublinhados. Por exemplo, "RGA-8a" e "rga8a" são equivalentes, assim como "UR-n-8" e "UR8".
  • Os valores numéricos personalizados correspondem a fases em unidades de pi para rotações de pi no plano xy. 0.0 é +X e 0.5 é +Y.
  • Os aliases de string personalizados incluem "X", "Y", "Xb", e "Yb".

Tipo: float

  • Campo: pulse_density Fração de cada intervalo ocioso disponível para os pulsos DD desta rodada.
  • Obrigatório: Não
  • Valor padrão: 0.25
  • Tipos de entrada válidos: float ou int
  • Opções: Navegar de 0.0 até 1.0
  • 0.0 deixa lacunas sem preenchimento nessa rodada. 1.0 agrupa os pulsos da forma mais densa que a temporização da sequência permite.

Tipo: int

Valor Padrão: 1

  • Campo: dd_reps Número de repetições da sequência DD desta rodada dentro de cada intervalo de inatividade qualificado.
  • Obrigatório: Não
  • Valor padrão: 1
  • Tipos de entrada válidos: int
  • Opções: Número inteiro >= 1
dynamic_dd_seq

Tipo: str or dict or list or None

Valor Padrão: XY8

Sequência DD utilizada para a inserção DD de alimentação direta de circuito dinâmico do Orbit.

  • Obrigatório: Não

  • Valor padrão: "XY8"

  • Tipos de entrada válidos: str, dict, grupo list de pulsos personalizado ou None

  • Opções: As mesmas formas de sequência que dd_strategy[].dd_sequence, ou None para desativar o estágio de inserção dinâmica de alimentação direta.

  • Aplica-se quando o Orbit detecta lógica condicional ou fluxo de controle e utiliza o pipeline DD de circuito dinâmico.

  • Primeiro é executada a passagem normal dd_strategy ; em seguida, o Orbit aplica essa sequência às regiões dinâmicas de feedforward identificadas.

dd_qubits

Tipo: list[int] or None

Valor Padrão: None

Lista global de permissões padrão de índices de qubits elegíveis para inserção no Orbit DD.

  • Obrigatório: Não

  • Valor padrão: None

  • Tipos de entrada válidos: list[int] ou None

  • Opções: None ou uma lista de números inteiros >= 0

  • None visa apenas qubits ativos/tocados.

  • Uma lista pode incluir apenas qubits inativos e exclui os qubits que não constam nela.

  • pub_options[i].dd_qubits É possível substituir esse valor nas orbit entradas ou custom PUB.

  • Listas de permissão explícitas só podem ser fornecidas para PUBs habilitados para Orbit cujo endereço resolvido transpilation_mode seja "validate", de modo que o chamador seja o proprietário dos índices dos qubits físicos. Os PUBs Raw ignoram o Orbit DD e não aceitam dd_qubits.

save_backend_info

Tipo: bool

Valor Padrão: False

Se o Orbit salva as propriedades de calibração do backend após a execução de uma tarefa do tipo “ Qiskit Runtime ”.

  • Obrigatório: Não

  • Valor padrão: False

  • Tipos de entrada válidos: bool

  • Opções: True / False

  • service.job(job_id).properties()Quando ativado, o Orbit consulta, grava as propriedades serializadas do backend em /datae informa o caminho salvo nos metadados do Orbit.

  • As falhas são relatadas como avisos e não invalidam os resultados das primitivas que foram bem-sucedidos.

default_shots

Tipo: int

Valor Padrão: 4096

Imagens padrão utilizadas para PUBs do Sampler que não especificam imagens explicitamente.

  • Obrigatório: Não

  • Valor padrão: 4096

  • Tipos de entrada válidos: int

  • Opções: Número inteiro > 0

  • Aplica-se apenas a primitive="sampler".

default_precision

Tipo: float

Valor Padrão: 0.015625

Precisão padrão utilizada para PUBs do Estimador que não especificam a precisão explicitamente.

  • Obrigatório: Não

  • Valor padrão: 0.015625

  • Tipos de entrada válidos: float ou int

  • Opções: Float > 0

  • Aplica-se apenas a primitive="estimator".

runtime_options

Tipo: dict

Qiskit Runtime opções primitivas passadas para a primitiva subjacente SamplerV2 ou EstimatorV2.

  • Obrigatório: Não

  • Valor padrão: {"resilience_level": 0, "dynamical_decoupling": {"enable": false}}

  • Tipos de entrada válidos: dict

  • São aceitos dicionários de opções aninhados, incluindo opções avançadas e experimentais do Qiskit Runtime para a primitiva selecionada.

  • O desacoplamento dinâmico em tempo de execução está desativado por padrão; portanto, a inserção de DD do Orbit é a única etapa de DD, a menos que o usuário opte por ativá-la.

Por exemplo, usuários avançados do Sampler podem ativar campos de depuração de circuitos dinâmicos:

options = {
    "runtime_options": {
        "experimental": {
            "execution": {
                "scheduler_timing": True,
                "stretch_values": True,
            }
        }
    }
}
  • Aviso: Portanto, deve-se alterar esse valor com cuidado, ativando manualmente abordagens específicas, como o “twirling”, sem deixar de excluir o DD.

resilience_level

Tipo: int or None

Valor Padrão: 0

Nível de resiliência do tempo de execução do estimador.

  • Obrigatório: Não

  • Valor padrão: 0

  • Tipos de entrada válidos: int ou None

  • Opções: 0 / 1 / 2 / None

  • Aplica-se a primitive="estimator".

  • Use None para deixar a opção “Runtime” desmarcada.

  • Se estiver definido como primitive="sampler", o Orbit o ignora e adiciona um aviso aos metadados do Orbit.

dynamical_decoupling

Tipo: dict

Opções de desacoplamento dinâmico passadas para Qiskit Runtime.

  • Obrigatório: Não
  • Valor padrão: {"enable": false}
  • Tipos de entrada válidos: dict

enable

Tipo: bool

Valor Padrão: False

Se deve ser ativada a inserção de DD do tipo “ Qiskit Runtime ”, além da inserção de DD do tipo “Orbit”.

  • Obrigatório: Não

  • Valor padrão: False

  • Tipos de entrada válidos: bool

  • Opções: True / False

  • Quando ativado, o Orbit exibe um aviso, pois a aplicação simultânea do Runtime DD e do Orbit DD pode causar um comportamento inesperado.

sequence_type

Tipo: str or None

Valor Padrão: None

Tipo de sequência DD opcional em tempo de execução.

  • Obrigatório: Não
  • Valor padrão: None
  • Tipos de entrada válidos: str ou None

É repassado para Qiskit Runtime quando fornecido.

scheduling_method

Tipo: str or None

Valor Padrão: None

Método opcional de agendamento DD em tempo de execução.

  • Obrigatório: Não
  • Valor padrão: None
  • Tipos de entrada válidos: str ou None

É repassado para Qiskit Runtime quando fornecido.

extra_slack_distribution

Tipo: str or None

Valor Padrão: None

Distribuição opcional do Runtime DD com folga adicional.

  • Obrigatório: Não
  • Valor padrão: None
  • Tipos de entrada válidos: str ou None

É repassado para Qiskit Runtime quando fornecido.

skip_reset_qubits

Tipo: bool or None

Valor Padrão: None

Configuração opcional do Runtime DD que determina se os qubits de reinicialização são ignorados.

  • Obrigatório: Não
  • Valor padrão: None
  • Tipos de entrada válidos: bool ou None

É repassado para Qiskit Runtime quando fornecido.

max_execution_time

Tipo: int or None

Valor Padrão: None

Limite flexível para o tempo máximo de execução da tarefa Qiskit Runtime.

  • Obrigatório: Não
  • Valor padrão: None
  • Tipos de entrada válidos: int ou None

O valor é especificado em segundos.

  • Opções: None ou um número inteiro > 0
  • Quando None, é utilizado o padrão do Runtime.
simulator

Tipo: bool

Valor Padrão: False

Se o Orbit executa a carga de trabalho em um simulador Aer local, em vez de em uma QPU real.

  • Obrigatório: Não
  • Valor padrão: False
  • Tipos de entrada válidos: bool

O simulador é executado dentro do contêiner de funções.

  • Opções: True / False
  • É ignorado quando preview é True.
  • É retornado um objeto normal PrimitiveResult com os metadados do Orbit anexados.
simulator_noise

Tipo: str

Valor Padrão: backend

Modelo de ruído utilizado quando simulator é True.

  • Obrigatório: Não

  • Valor padrão: "backend"

  • Tipos de entrada válidos: str

  • Opções: "backend" / "ideal"

  • "backend" utiliza AerSimulator.from_backend(backend) , sempre que possível.

  • AerSimulator``"ideal" usa um arquivo simples e sem ruído.

gate_dur

Tipo: int or None

Valor Padrão: None

Duração de um gate ou pulso DD.

  • Obrigatório: Não

  • Valor padrão: None

  • Tipos de entrada válidos: int ou None

  • Aviso: Utilize um valor explícito apenas para testes controlados ou quando houver um motivo específico e comprovado relacionado ao backend.

  • O valor utiliza as mesmas unidades que o backend usa para atrasos, normalmente dt.

  • Opções: None ou um número inteiro > 0

  • Quando Noneo Orbit determina um valor compatível com o backend a partir de backend.target utilizando a duração mais longa calibrada do gate X ou sqrt(X).


Saídas

A função retorna um Qiskit PrimitiveResult contendo um PubResultPUB por entrada. O Orbit preserva os dados de resultado das normais da primitiva selecionada e adiciona metadados do Orbit em quantum_elements_orbit.

Tipo: PrimitiveResult

Resultado padrão de uma primitiva do Qiskit com metadados do Orbit anexados.

  • primitive="sampler"Para cada PubResult.data , há dados de resultados do Sampler, como matrizes de bits de registro clássico.
  • primitive="estimator"Para cada PubResult.data , há dados de resultados do estimador, como valores esperados e erros-padrão.
  • No modo de visualização, cada um PubResult.data está vazio porque nenhuma primitiva Qiskit Runtime foi enviada.

Metadados de nível superior

metadata["quantum_elements_orbit"]

Tipo: dict[str, Any]

Relatório agregado do Orbit para a chamada de função completa.

functionVersion

Tipo: str

Versão do Orbit Core que gerou o resultado.

preview

Tipo: bool

Se o resultado foi gerado no modo de visualização.

simulator

Tipo: bool

Se o modo simulador foi solicitado.

simulatorNoise

Tipo: str

Modo de ruído do simulador: "backend" ou "ideal".

primitive

Tipo: str

Primitiva selecionada: "sampler" ou "estimator".

ddStrategy

Tipo: list[list[dict]]

Estratégia de DD normalizada utilizada na simulação.

pubOptions

Tipo: list[dict[str, Any]]

Resolvidos os modos de execução e substituições por PUB. ddStrategyCada entrada inclui o índice PUB, o modo, o valor resolvido transpilationMode, physicalLayout, mem, orbitEnabled ddQubits, dynamicDdSeq,, e, quando aplicável, o valor resolvido por PUB.

dynamicDdSeq

Tipo: str or dict or list or None

Sequência DD de alimentação direta com circuito dinâmico utilizada para a execução.

ddQubits

Tipo: list[int] or None

Lista de qubits DD globais permitidos, definida como padrão para a execução. Os relatórios do Per- PUB incluem a lista de permissões resolvida para cada PUB.

runtimeOptions

Tipo: dict[str, Any]

Opções de tempo de execução que o Orbit tentou aplicar, incluindo resilienceLevel e dynamicalDecoupling.

transpilationMode

Tipo: string

Modo de preparação de circuito global solicitado para PUBs habilitados para Orbit.

physicalLayout

Tipo: dict or None

Solicitação de mapeamento global do layout lógico para o físico para PUBs compatíveis com o Orbit.

numTranspilationSteps

Tipo: int

Número de sementes de transpilação estocástica configuradas para a transpilação otimizada.

backendInfo

Tipo: dict[str, Any]

Status da exportação da calibração do backend. Inclui enabled, saved, e, quando disponíveis, o nome do backend, o ID da tarefa do Qiskit Runtime, o caminho de salvamento e os avisos.

warnings

Tipo: list[str]

Avisos de nível de execução, como a visualização substituindo o modo simulador, o Runtime DD ativado junto com o Orbit DD ou o Sampler ignorando resilience_level.

pubs

Tipo: list[dict[str, Any]]

Um relatório de inserção em órbita por PUB de entrada.

metadata["resource_usage"]

Tipo: dict[str, dict[str, float]]

Utilização de recursos por fase, com registros relativos à otimização de hardware, espera pela QPU, execução na QPU e pós-processamento.

  • As fases incluem RUNNING: OPTIMIZING_FOR_HARDWARE, RUNNING: WAITING_FOR_QPU, RUNNING: EXECUTING_QPU, e RUNNING: POST_PROCESSING.
  • RUNNING: EXECUTING_QPU inclui QPU_TIME.

Metadados de órbita de Per- PUB

Cada um PubResult.metadata["quantum_elements_orbit"] contém o relatório de inserção referente a esse PUB.

pubIndex

Tipo: int

Índice do “ PUB ” na carga de trabalho enviada.

mode

Tipo: str

Resolvido de acordo com o modo de execução do PUB: "raw", "orbit", ou "custom".

orbitEnabled

Tipo: bool

Se a inserção do Orbit DD estava habilitada para o PUB.

transpilationMode

Tipo: string

Modo de preparação de circuito definido para este PUB.

physicalLayout

Tipo: dict or None

Foi resolvido o mapeamento do layout lógico para o físico para este PUB. No validate modo, esse valor é ignorado, acompanhado de um aviso.

mem

Tipo: bool or None

Resolvida a configuração de mitigação de erros de medição para este PUB.

dynamicDdSeq

Tipo: str or dict or list or None

Sequência DD de alimentação direta com circuito dinâmico resolvida para este PUB.

ddQubits

Tipo: list[int] or None

Lista de qubits DD permitidos definida para este PUB.

status

Tipo: str

Status da inserção do DD para este PUB, ou seja, se o DD foi aplicado ou ignorado.

numRounds

Tipo: int

Número de rodadas da estratégia DD aplicadas ao PUB.

warnings

Tipo: list[str]

PUB - avisos relacionados à inserção de DD e ao tratamento de compatibilidade.

insertionSummary

Tipo: dict[str, Any]

Resumo geral das inserções de DD para este PUB. Inclui o status, as contagens de lacunas iniciais e preenchidas, o número de sequências DD adicionadas, as contagens de portas adicionadas, a duração das portas, a profundidade e o tamanho do circuito antes e depois da inserção, além de avisos de inserção.

perRoundSummaries

Tipo: list[dict[str, Any]]

Resumos da inserção de DD por rodada. Cada entrada inclui o índice da rodada, a sequência, a densidade de pulsos, as repetições, o número de intervalos, o número de portas adicionadas, a duração das portas, a profundidade e o tamanho do circuito antes e depois dessa rodada, além de avisos.

measurementErrorMitigation

Tipo: dict[str, Any]

Ocorre quando a função MEM está ativada para pelo menos um PUB. Informa se uma medida de mitigação d M3 e foi aplicada, aplicada parcialmente, ignorada ou falhou. As entradas do tipo “Per- PUB ” preservam as contagens não mitigadas e incluem as contagens mitigadas quando a mitigação é bem-sucedida.

Profundidade do circuito após o DD

O DD insere pulsos reais e subatrasos nas janelas de inatividade programadas, de modo que a profundidade e o tamanho do circuito relatados geralmente aumentam. A inserção preserva a duração programada da janela de inatividade; ela não tenta preservar a profundidade do gate.

Visualizar saída

PrimitiveResultQuando options.preview é True, o Orbit retorna um objeto que contém apenas metadados. Nenhuma tarefa do tipo “ Qiskit Runtime ” é enviada, nenhuma contagem do Sampler nem valores do Estimator são preenchidos, e o tempo de QPU é relatado como 0.0. Use o modo de visualização para verificar os relatórios de inserção de DD antes de executá-los no hardware.

Saída do simulador

Quando options.simulator é True e options.preview é False, o Orbit executa a carga de trabalho pós-DD com um simulador Aer local dentro do contêiner da função. PrimitiveResultO resultado continua sendo um Orbit normal; os registros simulator=True e o modo selecionado simulatorNoise nos metadados de nível superior.

Resultado da mitigação de erros de medição

Quando o MEM resolvido estiver habilitado para pelo menos um PUB, o Orbit anexa measurementErrorMitigation os metadados. Quando o MEM é bem-sucedido, o método do get_counts() registro Sampler retorna o histograma corrigido pelo MEM. As contagens de tempo de execução não ajustadas continuam disponíveis como measurementErrorMitigation["rawCounts"].

Entre as medidas de mitigação bem-sucedidas relacionadas ao “ PUB ” estão:

  • enabled
  • method
  • status
  • register
  • rawCounts
  • quasiDistribution
  • mitigatedCounts
  • measurementMapping
  • mappingSource
  • rawCountsPreserved

Para circuitos dinâmicos, o Orbit aplica o MEM à sequência de bits de saída retornada como pós-processamento do histograma. O Orbit não determina se cada bit se originou de uma medição no terminal ou de uma medição no meio do circuito, e não altera, retroativamente ou em tempo real, os ramos condicionais que utilizaram resultados de medição não mitigados. Esse tratamento é adequado para sequências de bits destinadas a servir como saídas de circuitos, mas os usuários não devem interpretá-lo como uma correção do fluxo de controle dinâmico que gerou essas saídas.

Caso a mitigação falhe, o Orbit preserva o resultado bruto do Qiskit Runtime e registra o status de falha e a mensagem de erro nos metadados.


Manipulação de erros

O Orbit gera erros estruturados qiskit_serverless.ServerlessError em caso de falhas fatais. codeCada erro inclui uma carga útil, message, e details . O Orbit mapeia os erros para as categorias de códigos de erro existentes do IBM Quantum, sempre que possível; os erros de validação utilizam o código 1221. Os erros específicos de órbita utilizam o intervalo 4700 de códigos reservados do QE até 4709 quando nenhum código existente do IBM Quantum for mais adequado. Consulte a referência de códigos de erro IBM Quantum para obter orientações gerais sobre códigos de erro.

Erros fatais comuns

Verifique primeiro os campos de erro message e details . Eles identificam o campo inválido, o backend, o índice PUB ou a falha no Qiskit Runtime de origem, quando o Orbit consegue determiná-la.

  • Os erros de validação de entrada utilizam o código 1221. dd_strategy``pubsEntre elas estão tipos de opções inválidos, chaves de opção desconhecidas, valores vazios, inválidos, comprimento inválido pub_options , dd_qubits com resolução transpilation_mode diferente de "validate", circuitos preparados pelo chamador que não são compatíveis com o destino de backend selecionado, valores inválidos physical_layout e solicitações MEM incompatíveis, tais como mem=True com primitive="estimator", preview=True, ou simulator=True.
  • Erros de primitivas não suportadas utilizam o código 1211. O Orbit aceita apenas primitive="sampler" e primitive="estimator".
  • Erros de seleção do backend ou de capacidade do backend utilizam o código 1007 ou 1009. Entre elas estão nomes de backends indisponíveis, a ausência de um backend elegível com menor carga ou um backend sem as informações de temporização necessárias para a inserção de DD.
  • As falhas na inserção de DD e na viagem de ida e volta do QASM utilizam o código 1003. Isso pode ocorrer quando um circuito não pode ser transpilado, programado, convertido ou preenchido de maneira consistente para o backend e a estratégia DD selecionados.
  • Qiskit Runtime falhas no envio devem usar o código 1245; tarefas que falham antes de gerar um resultado devem usar o código 5203. O Orbit mantém um código de erro “ Qiskit Runtime ” do servidor de origem quando este é exposto, com o código de fallback do Orbit em details.
  • Falhas inesperadas específicas da órbita são relatadas como erros estruturados no intervalo reservado do QE (4700--4709) quando nenhum código de erro existente do IBM Quantum se aplica.

Condições não fatais são relatadas como avisos, em vez de resultar na falha da tarefa, quando o Orbit puder preservar o resultado com segurança. Os alertas de nível de execução aparecem em metadata["quantum_elements_orbit"]["warnings"]; PUB - os alertas de nível de sistema aparecem em cada relatório PUB. Os eventos de aviso recuperáveis utilizam o código 1300 quando o ambiente do Qiskit Functions aceita eventos de aviso. Entre os exemplos estão: preview=True a priorização de sobre simulator=True, Qiskit Runtime a ativação do DD em conjunto com o Orbit DD, o Sampler ignorando runtime_options.resilience_level, ou a falha na exportação da calibração do backend, embora o resultado primitivo esteja disponível.

Falhas na mitigação de erros de medição também não são fatais. Caso não seja possível aplicar uma mitigação d M3, o Orbit preserva o resultado bruto do Sampler e registra measurementErrorMitigation.status="failed" uma mensagem de erro nos metadados do Orbit.

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