Referência da API de mitigação de erros da rede Tensor da Algorithmiq
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.
Guia de funções do Algorithmiq TEM Qiskit
Entradas
Atualmente, o TEM apresenta as seguintes limitações:
- Circuitos parametrizados não são suportados. O argumento
parametersdeve ser definido comoNonese a precisão for especificada. Essa restrição será removida em versões futuras. - Só são suportados circuitos sem laços. Essa restrição será removida em versões futuras.
- Portas não unitárias, como reset, measure e todas as formas de fluxo de controle, não são suportadas. O suporte à reinicialização será adicionado nas próximas versões.
Parâmetros
pubs
Tipo: Iterable[EstimatorPubLike]
Uma iterável de objetos do tipo " PUB " (bloco unificado primitivo), como tuplas (circuit, observables) ou (circuit, observables, parameters, precision). Consulte a Visão geral dos PUBs para obter mais informações. Se for aprovado um circuito que não seja ISA, ele será compilado com as configurações ideais. Se um circuito ISA for aprovado, ele não será transpilado; nesse caso, a observável deve ser definida em toda a QPU.
- Necessário: sim
- Exemplo:
(circuit, observables)
backend_name
Tipo: str
Valor Padrão: Least busy backend
Nome do backend para realizar a consulta
- Obrigatório: Não
- Exemplo:
"ibm_fez"
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:
{"max_bond_dimension": 100}
Um dicionário que contém as opções avançadas do TEM. O dicionário pode conter as chaves da lista a seguir. Se alguma das opções não for especificada, será utilizado o valor padrão indicado na lista. Os valores padrão são adequados para o uso comum do TEM.
Lista de opções
tem_max_bond_dimension
Tipo: int
Valor Padrão: 500
A dimensão máxima do laço a ser utilizada nas redes tensoriais.
tem_compression_cutoff
Tipo: float
Valor Padrão: 1e-16
O valor de corte a ser utilizado nas redes tensoriais.
compute_shadows_bias_from_observable
Tipo: bool
Valor Padrão: False
Um indicador booleano que indica se o viés para o protocolo clássico de medição de sombras deve ou não ser adaptado à observável PUB. Se for False, será utilizado o protocolo clássico de sombras (probabilidade igual de medir Z, X, Y).
shadows_bias
Tipo: np.ndarray
Valor Padrão: np.array([1 / 3, 1 / 3, 1 / 3])
O viés a ser utilizado no protocolo de medição de sombras clássicas aleatórias, uma matriz de tipo 1d ou 2d com tamanho 3 ou forma (num_qubits, 3), respectivamente. A ordem é ZXY.
max_execution_time
Tipo: int or None
Valor Padrão: None
O tempo máximo de execução na QPU, em segundos. Se o tempo de execução exceder esse valor, a tarefa será cancelada. Caso contrário None, será aplicado um limite padrão definido pelo Qiskit Runtime.
num_randomizations
Tipo: int
Valor Padrão: 32
O número de randomizações a ser utilizado para o aprendizado de ruído e a rotação de portas.
max_layers_to_learn
Tipo: int
Valor Padrão: True
O número máximo de camadas distintas a serem aprendidas.
mitigate_readout_error
Tipo: bool
Valor Padrão: True
Um sinalizador booleano que indica se deve ou não ser realizada a mitigação de erros de leitura.
num_readout_calibration_shots
Tipo: int
Valor Padrão: 10000
O número de tentativas a ser utilizado para mitigar erros de leitura.
default_precision
Tipo: float
Valor Padrão: 0.02
A precisão padrão a ser usada para os PUBs cuja precisão não foi especificada.
seed
Tipo: int or None
Valor Padrão: None
Defina a semente do gerador de números aleatórios para garantir a reprodutibilidade. Se for o caso None, não defina a semente.
shots_per_randomization
Tipo: int
Valor Padrão: 128
O número total de tentativas a serem utilizadas por circuito de aprendizado aleatório.
layer_pair_depths
Tipo: list[int]
Valor Padrão: [0, 1, 2, 4, 16, 32]
As profundidades do circuito (medidas em número de pares) a serem utilizadas nas experiências de aprendizagem.
layer_noise_model
Tipo: NoiseLearnerResult, Sequence[LayerError], or None
Valor Padrão: None
O ruído pré-calculado do modelo de aprendizagem resulta de uma execução anterior.
private
Tipo: bool
Valor Padrão: False
Se as tarefas da QPU devem ser privadas. Definir esse valor como True impedirá downloads posteriores dos dados do experimento e é recomendado para trabalhos confidenciais.
tem_enforce_linear_circuit
Tipo: bool
Valor Padrão: False
Se o circuito deve ser implementado com topologia linear.
Precisão
A precisão dos resultados pode ser solicitada de três maneiras. A precisão pode ser passada no PUB, e ela se aplicará apenas a esse PUB. Caso contrário, é possível passar default_precision um nas opções, conforme especificado acima. Por fim, para uso avançado, o número específico de fotos por PUB pode ser passado nas opções com default_shots, e isso substituirá qualquer outra opção de precisão.
Se for passado um default_precision valor ou um valor por PUB, o número de iterações é estimado para atingir a precisão desejada. Isso é feito com base nos parâmetros da QPU e nas taxas de erro selecionados, da seguinte forma:
- Cálculo do erro por porta em camadas (EPLG), que quantifica o ruído introduzido pelas camadas de portas de dois qubits. Se houver propriedades de backend disponíveis, ele extrai a fidelidade relevante; caso contrário, utiliza um valor padrão.
- Contar o número de portas de dois qubits no circuito, já que estas são normalmente as principais fontes de ruído.
- Cálculo de um pré-fator de ruído com base no número de portas de dois qubits e no EPLG.
- Utilizando a precisão solicitada, ele estima o número necessário de disparos por meio de um cálculo que leva em conta o pré-fator de ruído e o inverso do quadrado da precisão.
Essa abordagem garante que o número de disparos seja suficiente para alcançar a precisão desejada, levando em conta tanto a estrutura do circuito quanto as características de ruído do backend.
Saídas
Um Qiskit PrimitiveResults que contém o resultado com correção TEM. O resultado para cada PUB é retornado como um objeto PubResult que contém os seguintes campos:
dados
Tipo: Databin
Um Qiskit DataBin que contém a observável com correção TEM e seu erro padrão. O formulário " DataBin " possui os seguintes campos:
evs: O valor observável corrigido pelo TEM.stds: O erro-padrão da observável corrigida pelo TEM.
metadados
Tipo: dict
Um dicionário que contém resultados adicionais. O dicionário contém as seguintes chaves:
"evs_non_mitigated": O valor observável sem mitigação de erros."stds_non_mitigated": O erro padrão do resultado sem mitigação de erros."evs_mitigated_no_readout_mitigation": O valor observado com mitigação de erros, mas sem mitigação de erros de leitura."stds_mitigated_no_readout_mitigation": O erro padrão do resultado com mitigação de erros, mas sem mitigação de erros de leitura."evs_non_mitigated_with_readout_mitigation": O valor observável sem mitigação de erros, mas com mitigação de erros de leitura."stds_non_mitigated_with_readout_mitigation": O erro padrão do resultado sem mitigação de erros, mas com mitigação de erros de leitura."resource_usage": Um dicionário que contém os recursos de tempo utilizados pelo TEM.