Skip to main content
IBM Quantum Platform

Notas de versão do Qiskit 0.9


0.9

Terra 0.8

Destaques

  • Introdução do módulo Pulse em qiskit.pulse, que inclui ferramentas para criar comandos de pulso, agendá-los em canais de pulso, visualizar e executá-los em dispositivos IBM Q.
  • Classes QuantumCircuit e Instruction aprimoradas, permitindo a composição de subcircuitos arbitrários em circuitos maiores e também a criação de circuitos parametrizados.
  • Um módulo avançado do Quantum Info em qiskit.quantum_info, que fornece ferramentas para trabalhar com operadores e canais e usá-los em circuitos.
  • Novos passes de otimização do transpilador e acesso a rotinas de transpilação predefinidas.

Novos Recurso

  • A rotina principal do StochasticSwap é implementada em Cython.
  • Foram adicionadas as classes QuantumChannel para manipulação de canais quânticos e mapas CPTP.
  • Suporte a circuitos parametrizados.
  • A interface PassManager foi aprimorada e novas funções foram adicionadas para facilitar a interação e o uso com gerenciadores de passes personalizados.
  • O site PassManagers predefinido agora está incluído e oferece um pipeline predeterminado de passagens do transpilador.
  • Arquivos de configuração do usuário para permitir que os ambientes locais substituam os valores padrão de algumas funções.
  • Novo transpiler aprovado: EnlargeWithAncilla, Unroll2Q, NoiseAdaptiveLayout, OptimizeSwapBeforeMeasure, RemoveDiagonalGatesBeforeMeasure, CommutativeCancellation, Collect2qBlocks, e ConsolidateBlocks.

Considerações de Compatibilidade

Como parte da versão 0.8, os seguintes itens foram descontinuados e serão removidos ou alterados de forma incompatível com as versões anteriores em uma versão futura. Embora não sejam estritamente necessários, esses são aspectos que devem ser ajustados antes do lançamento do 0.9 (a menos que indicado de outra forma) para evitar uma mudança significativa no futuro.

  • Os métodos prefixados por _get no objeto DAGCircuit estão sendo renomeados sem esse prefixo.
  • Elementos alterados em couplinglist de CouplingMap de tuplas para listas.
  • Agora, as bases do Unroller devem ser explícitas, e a violação gera uma mensagem informativa QiskitError.
  • O pacote qiskit.tools.qcvv está obsoleto e será removido no futuro. Você deve migrar para o uso do Qiskit Ignis, que substitui esse módulo.
  • A função qiskit.compile() agora está obsoleta em favor do uso explícito da função qiskit.compiler.transpile() para transformar um circuito, seguido de qiskit.compiler.assemble() para criar um Qobj a partir dele. Em vez de compile(...), use assemble(transpile(...), ...).
  • qiskit.converters.qobj_to_circuits() foi preterido e será removido em uma versão futura. Em vez disso, o qiskit.assembler.disassemble() deve ser usado para extrair objetos QuantumCircuit de um Qobj compilado.
  • O espaço de nome qiskit.mapper foi descontinuado. As classes Layout e CouplingMap podem ser acessadas via qiskit.transpiler.
  • Algumas funções em qiskit.tools.qi.qi foram preteridas e movidas para qiskit.quantum_info.

Observe que algumas alterações incompatíveis com versões anteriores foram feitas durante esta versão. As notas a seguir contêm informações sobre como se adaptar a essas mudanças.

IBM Q Provedor

O provedor IBM Q foi incluído anteriormente no Terra, mas foi dividido em um pacote separado qiskit-ibmq-provider. Isso precisará ser instalado via pypi com pip install qiskit-ibmq-provider ou a partir da fonte para acessar qiskit.IBMQ ou qiskit.providers.ibmq. Se você instalar o qiskit com pip install qiskit, isso instalará automaticamente todos os subpacotes do projeto Qiskit.

Componentes Cython

A partir da versão 0.8, a rotina de troca estocástica central agora é implementada em Cython. Isso foi feito para melhorar significativamente o desempenho do swapper; no entanto, se você compilar o Terra a partir do código-fonte ou executá-lo em um non-x86 ou em outra plataforma sem rodas pré-construídas e instalar a partir da distribuição do código-fonte, será necessário certificar-se de que o Cython esteja instalado antes de instalar/compilar o Qiskit Terra. Isso pode ser feito facilmente com o pip/pypi: pip install Cython.

Fluxo de trabalho do compilador

A função qiskit.compile() foi descontinuada e substituída pela primeira chamada qiskit.compiler.transpile() para executar a otimização e o mapeamento em um circuito e, em seguida, qiskit.compiler.assemble() para criar um Qobj a partir desse circuito otimizado para enviar a um backend. Embora isso seja apenas uma descontinuação, será emitido um aviso se você usar a antiga chamada qiskit.compile() .

parâmetros transpile(), assemble(), execute()

Essas funções são muito sobrecarregadas e aceitam uma ampla gama de entradas. Eles podem lidar com entradas de circuito e de pulso. Todos os kwargs, exceto backend para essas funções, agora também aceitam listas dos tipos aceitos anteriormente. O kwarg initial_layout agora pode ser fornecido como uma lista e um dicionário, por exemplo, para mapear um experimento Bell nos qubits 13 e 14, você pode fornecer: initial_layout=[13, 14] ou initial_layout={qr[0]: 13, qr[1]: 14}

Qobj

A classe Qobj foi dividida em duas subclasses separadas, dependendo do caso de uso: PulseQobj ou QasmQobj para trabalhos de pulso e circuito, respectivamente. Se estiver interagindo diretamente com o Qobj, talvez seja necessário ajustar seu uso de acordo.

O qiskit.qobj.qobj_to_dict() foi removido. Em vez disso, use o método to_dict() de um objeto Qobj.

Visualização

A maior mudança no módulo de visualização é que ele foi transferido de qiskit.tools.visualization para qiskit.visualization. Isso foi feito para indicar que o módulo de visualização é mais do que apenas uma ferramenta. No entanto, como essa interface foi declarada estável na versão 0.7, a interface pública do site qiskit.tools.visualization continuará funcionando. Isso pode mudar em uma versão futura, mas será descontinuado antes da remoção, se isso acontecer.

As funções anteriormente obsoletas, plot_circuit(), latex_circuit_drawer(), generate_latex_source(), e matplotlib_circuit_drawer() de qiskit.tools.visualization foram removidas. Em vez dessas funções, deve-se usar a chamada para qiskit.visualization.circuit_drawer() com os argumentos apropriados.

As chaves plot_barriers e reverse_bits , anteriormente obsoletas, no dicionário de kwarg style estão obsoletas; em vez disso, os kwargs qiskit.visualization.circuit_drawer() plot_barriers e reverse_bits devem ser usados.

As funções de plotagem de Wigner plot_wigner_function, plot_wigner_curve, plot_wigner_plaquette e plot_wigner_data anteriormente no módulo qiskit.tools.visualization._state_visualization foram removidas. Eles nunca foram expostos por meio da interface pública estável e não foram bem documentados. O código para usar esse recurso ainda pode ser acessado por meio do repositório qiskit-tutorials.

Mapeador

A API pública de qiskit.mapper foi transferida para qiskit.transpiler. Embora só tenha sido descontinuado nesta versão, ele será removido na versão 0.9, portanto, atualizar o uso de Layout e CouplingMap para importar de qiskit.transpiler em vez de qiskit.mapper antes que isso ocorra evitará surpresas no futuro.

Aer 0.2

Novos Recurso

  • Adicionada a porta multiplexadora qiskit-aer #192
  • Adicionada a função remap_noise_model a noise.utils qiskit-aer #181
  • Adicionado o método __eq__ a NoiseModel, QuantumError, ReadoutError qiskit-aer #181
  • Adicionado suporte para portas rotuladas em modelos de ruído qiskit-aer #175
  • Adicionados os sites otimizados mcx, mcy, mcz, mcu1, mcu2, mcu3, portões para QubitVector qiskit-aer #124
  • Adicionada porta de troca controlada otimizada em QubitVector qiskit-aer #142
  • Adicionada otimização de fusão de porta para QasmController, que é ativada pela configuração fusion_enable=true qiskit-aer #136
  • Adicionado um melhor gerenciamento de simulações com falha qiskit-aer #167
  • Adicionada otimização de truncamento de qubits para qubits não utilizados qiskit-aer #164
  • Adicionada a capacidade de desativar o erro de despolarização no modelo de ruído do dispositivo qiskit-aer #131
  • Adicionada a instrução de inicialização do simulador em statevector_state qiskit-aer #117, qiskit-aer #137
  • Adicionados mapas de acoplamento aos simuladores qiskit-aer #93
  • Adicionada a estrutura de otimização de circuitos qiskit-aer #83
  • Adicionado o benchmarking qiskit-aer #71, qiskit-aer #177
  • Adicionado suporte a rodas para distribuições do tipo Debian qiskit-aer #69
  • Adicionada a autoconfiguração de threads para o simulador qasm qiskit-aer #61
  • Adição do método de simulação com base nas decomposições de classificação do estabilizador qiskit-aer #51
  • Adicionado basis_gates kwarg a NoiseModel init qiskit-aer #175.
  • Foi adicionado um parâmetro opcional a NoiseModel.as_dict() para retornar dicionários que podem ser serializados usando diretamente a biblioteca json padrão qiskit-aer #165
  • Refatorar o gerenciamento de thread do qiskit-aer nº 50
  • Aprimorar as transformações de ruído qiskit-aer #162
  • Aprimorar o relatório de erros qiskit-aer nº 160
  • Aumente a eficiência da paralelização com max_memory_mb um novo parâmetro de backend_opts qiskit-aer #61
  • Melhorar o desempenho do u1 em statevector qiskit-aer #123

Correções de bugs

  • Corrigidos os problemas de conflito do OpenMP em macOS para o complemento do Terra qiskit-aer #46

Considerações de Compatibilidade

  • Opção de backend "initial_statevector" obsoleta para QasmSimulator e StatevectorSimulator qiskit-aer #185
  • Renomeou a opção de backend "chop_threshold" para "zero_threshold" e alterou o valor padrão para 1e-10 qiskit-aer #185

Ignis 0.1

Novos Recurso

  • Volume quântico
  • Mitigação de medições usando calibrações com tensores
  • O RB simultâneo tem a opção de alinhar as portas Clifford entre os subconjuntos
  • A correção da medição pode produzir uma nova calibração para um subconjunto de qubits

Considerações de Compatibilidade

  • RB grava no conjunto mínimo de registradores clássicos (costumava ser Q [i] ->C [i] ). Essa alteração permite a correção da medição com RB. A menos que os usuários tenham um código de análise externo, isso não alterará os resultados. Os circuitos RB da 0.1 não são compatíveis com os instaladores da 0.1.1.

Aqua 0.5

Novos Recurso

  • Implementação do algoritmo HHL com suporte LinearSystemInput
  • Componente plugável Eigenvalues com variante EigQPE
  • Componente plugável Reciprocal com as variantes LookupRotation e LongDivision
  • Operações de controle múltiplo U1 e U3 mcu1 e mcu3
  • Componente conectável QFT derivado do componente IQFT
  • Resumiu os circuitos transpilados no nível de registro DEBUG
  • QuantumInstance aceita basis_gates e coupling_map novamente.
  • Suporte ao uso da porta cx para o emaranhamento na forma variacional RY e RYRZ (cz é a opção padrão)
  • Suporte ao uso de Hamiltoniano de misturador arbitrário no QAOA, permitindo o uso do QAOA em problemas de otimização com restrições [arXiv:1709.03489]
  • Adicionada a classe base do algoritmo variacional VQAlgorithm, implementada por VQE e QSVMVariational
  • Adicionado o site ising/docplex.py para gerar automaticamente o Ising Hamiltonian a partir de modelos de otimização do DOcplex
  • Adicionado o modo 'basic-dirty-ancilla' para mct
  • Adicionado o site mcmt para portões multicontrolados e com vários alvos
  • Recursos expostos para gerar circuitos a partir de fórmulas lógicas AND, OR, DNF (formas normais disjuntivas) e CNF (formas normais conjuntivas)
  • Foi adicionado o recurso de gerar circuitos a partir de fórmulas ESOP (soma exclusiva de produtos) com otimização opcional baseada em Quine-McCluskey e ExactCover
  • Adicionado o site LogicalExpressionOracle para gerar circuitos de oráculo a partir de expressões lógicas booleanas arbitrárias (incluindo suporte a DIMACS) com capacidade de otimização opcional
  • Adicionado o site TruthTableOracle para gerar circuitos de oráculo a partir de tabelas-verdade com capacidade de otimização opcional
  • Adicionado o site CustomCircuitOracle para gerar o oráculo a partir de circuitos especificados pelo usuário
  • Adição da implementação do algoritmo Deutsch-Jozsa
  • Adicionada a implementação do algoritmo Bernstein-Vazirani
  • Adicionada a implementação do algoritmo de Simon
  • Adicionada a implementação do algoritmo de Shor
  • Adição de recurso opcional para que o algoritmo de Grover assuma um estado inicial personalizado (em oposição à superposição uniforme padrão)
  • Capacidade adicionada para criar um estado inicial Custom usando o circuito existente
  • Adição do algoritmo de otimização ADAM (e AMSGRAD)
  • Distribuições multivariadas adicionadas, de modo que os modelos de incerteza agora têm componentes de distribuição univariada e multivariada
  • Adicionada a opção de incluir ou ignorar as operações de troca para construções de circuitos qft e iqft
  • Adição do solucionador de sistema linear clássico ExactLSsolver
  • Adicionados os parâmetros auto_hermitian e auto_resize ao algoritmo HHL para suportar matrizes não hermitianas e de tamanho diferente de 2n2^n por padrão
  • Foi adicionado outro mapa de recursos, RawFeatureVector, que mapeia diretamente os vetores de recursos para os estados dos qubits para classificação
  • SVM_Classical agora pode carregar modelos treinados por QSVM

Correções de bugs

  • Corrigido o site ising/docplex.py para multiplicar corretamente os valores constantes nas restrições
  • Foi corrigida a configuração de pacotes para identificar corretamente os pacotes de namespace usando setuptools.find_namespace_packages

Considerações de Compatibilidade

  • QuantumInstance não aceita mais o memory .
  • Movida a linha de comando e a GUI para um repositório separado (qiskit_aqua_uis)
  • Removido o oráculo específico do SAT(agora suportado pelo LogicalExpressionOracle)
  • Alteração da implementação do modo advanced de mct: uso de portas h simples em vez de ch e correção da etapa de recursão antiga em _multicx
  • Componentes random_distributions renomeados para uncertainty_models
  • Reorganizou as construções de vários portões comuns (ch, cry, mcry, mct, mcu1, mcu3, mcmt, logic_and e logic_or) e circuitos (PhaseEstimationCircuit, BooleanLogicCircuits, FourierTransformCircuits e StateVectorCircuits) no diretório circuits
  • Renomeou o algoritmo QSVMVariational para VQC, que significa Variational Quantum Classifier (Classificador Quântico Variacional)
  • Renomeou o algoritmo QSVMKernel para QSVM
  • Renomeou a classe SVMInput para ClassificationInput
  • Renomeado o tipo de problema 'svm_classification' para 'classification'
  • Alterou o tipo de entangler_map usado em FeatureMap e VariationalForm para lista de listas

IBM 0.1

Novos Recurso

  • Este é o primeiro lançamento como um pacote autônomo. Se estiver instalando o Terra de forma autônoma, você também precisará instalar o pacote qiskit-ibmq-provider com o pip install qiskit-ibmq-provider se quiser usar os back-ends do IBM Q.
  • O suporte a trabalhos de formato não Qobj foi removido do provedor. Você terá que converter os envios em um formato mais antigo para Qobj antes de poder enviar.
Esta página foi útil?
Relate um bug, erro de digitação ou solicite conteúdo no GitHub.