Share via


Fornecedor IonQ

Dica

Os utilizadores pela primeira vez recebem automaticamente 500 USD (USD)Créditos do Azure Quantum gratuitos para utilização com cada fornecedor de hardware quântico participante. Se tiver consumido todos os créditos e precisar de mais, pode aplicar-se ao programa créditos do Azure Quantum.

Os computadores quânticos do IonQ executam cálculos ao manipular os estados energéticos hiperfinidos dos iões Ytterbium com lasers. Os átomos são qubits da natureza — cada qubit é idêntico dentro e entre programas. As operações lógicas também podem ser executadas em qualquer par arbitrário de qubits, o que permite programas quânticos complexos sem entraves à conectividade física. Quer saber mais? Leia a descrição geral da tecnologia do computador quântico de iões presos do IonQ.

  • Publisher: IonQ
  • ID do Fornecedor: ionq

O seguinte targets está disponível neste fornecedor:

Nome do destino ID de Destino Número de qubits Description
Simulador quântico ionq.simulator 29 qubits Simulador idealizado baseado na cloud do IonQ. Sem custos.
Harmonia IonQ ionq.qpu 11 qubits O computador quântico de iões presos do IonQ.
IonQ Aria 1 ionq.qpu.aria-1 25 qubits O computador quântico Aria trapped-ion da IonQ.
IonQ Aria 2 ionq.qpu.aria-2 25 qubits O computador quântico Aria trapped-ion da IonQ.
IonQ Forte ionq.qpu.forte 32 qubits O computador quântico Forte trapped-ion da IonQ. Disponível apenas na Pré-visualização Privada.

Os IonQ targets correspondem a um No Control Flow perfil. Para obter mais informações sobre este target perfil e as suas limitações, veja Compreender target os tipos de perfil no Azure Quantum.

Simulador quântico

O simulador idealizado acelerado por GPU que suporta até 29 qubits, com o mesmo conjunto de portas que o IonQ fornece no seu hardware quântico, um ótimo local para realizar trabalhos de verificação prévia antes de os executar num computador quântico real.

  • Tipo de tarefa: Simulation
  • Formato de Dados: ionq.circuit.v1
  • ID de Destino: ionq.simulator
  • Perfil de Execução de Destino: No Control Flow

Computador quântico IonQ Harmony

O IonQ Harmony é um computador quântico de iões preso e é dinamicamente reconfigurável no software para utilizar até 11 qubits. Todos os qubits estão totalmente ligados, o que significa que pode executar uma porta de dois qubits entre qualquer par.

  • Tipo de tarefa: Quantum Program
  • Formato de Dados: ionq.circuit.v1
  • ID de Destino: ionq.qpu
  • Perfil de Execução de Destino: No Control Flow
Nome do Parâmetro Tipo Necessário Descrição
shots int No Número de injecções experimentais. A predefinição é 500.

Temporização do sistema

Medir Duração média do tempo (μs)
T1 >10^7
T2 200,000
Porta de qubit único 10
Porta de dois qubits 210
Leitura 100
Registar reposição 25
Tempo de coerência/duração da porta 1667

Fidelidade do sistema

Operação Fidelidade média
Porta de qubit único 99,35% (SPAM corrigido)
Porta de dois qubits 96,02% (não corrigido por SPAM)
SPAM* 99.3 - 99.8%
Operação média geométrica 98.34%

* Preparação e Medição do Estado (SPAM): esta medição determina a precisão com que um computador quântico pode definir um qubit no estado inicial e, em seguida, medir o resultado no final.

Computador quântico do IonQ Aria

O IonQ Aria é o principal dos computadores quânticos de iões presos da IonQ, com um sistema reconfigurável dinamicamente de 25 qubits. Para obter mais informações, veja IonQ Aria (ionq.com).

Importante

A debiasing está ativada nos sistemas Aria por predefinição e as tarefas submetidas estão sujeitas a preços baseados em debiasing. Para obter mais informações sobre o desbiasing e como desativar/ativar o serviço, veja Mitigação de erros.

  • Tipo de tarefa: Quantum Program
  • Formato de Dados: ionq.circuit.v1
  • ID de destino: ionq.qpu.aria-1, ionq.qpu.aria-2
  • Perfil de Execução de Destino: No Control Flow
Nome do Parâmetro Tipo Necessário Descrição
shots int No Número de fotografias experimentais.

Temporização do sistema

Medir Duração média do tempo
T1 10-100 s
T2 1 s
Porta de qubit único 135 μs
Porta de dois qubits 600 μs

Fidelidade do sistema

Operação Fidelidade média
Porta de qubit único 99,95% (SPAM corrigido)
Porta de dois qubits 99,6% (não foi corrigido spam)
SPAM* 99.61%

* Preparação e Medição de Estado (SPAM): esta medição determina com que precisão um computador quântico pode definir um qubit no estado inicial e, em seguida, medir o resultado no final.

O IonQ Aria está disponível através do plano de Créditos Quânticos do Azure e de um plano de faturação separado. Para obter mais informações, veja Preços do Azure Quantum.

Computador quântico IonQ Forte

O IonQ Forte é o computador quântico com maior desempenho e disponibilidade comercial do IonQ. Com um sistema configurável por software de 32 qubits, o IonQ Forte está disponível na Pré-visualização Privada no Azure Quantum. Para obter mais informações, veja IonQ Forte (ionq.com).

Importante

Por predefinição, a debiasing está ativada no sistema Forte e os trabalhos submetidos estão sujeitos a preços baseados em debiasing. Para obter mais informações sobre o desarmaamento e como desativar/ativar o serviço, veja Mitigação de erros.

  • Tipo de tarefa: Quantum Program
  • Formato de Dados: ionq.circuit.v1
  • ID de destino: ionq.qpu.forte
  • Perfil de Execução de Destino: No Control Flow
Nome do Parâmetro Tipo Necessário Descrição
shots int No Número de fotografias experimentais.

Formato de entrada

Em Q#, a saída de uma medição quântica é um valor do tipo Result, que só pode utilizar os valores Zero e One. Quando define uma operação Q#, esta só pode ser submetida para hardware IonQ se o tipo de retorno for uma coleção de Results, ou seja, se a saída da operação for o resultado de uma medição quântica. A razão para tal deve-se ao facto de o IonQ criar um histograma a partir dos valores devolvidos, pelo que restringe o tipo de retorno para Result simplificar a criação deste histograma.

O IonQ targets corresponde ao No Control Flow profile. Este perfil não pode executar operações quânticas que exijam a utilização dos resultados das medições de qubit para controlar o fluxo do programa.

Nota

Atualmente, não pode submeter programas quânticos que apliquem operações em qubits medidos no No Control Flowtargets, mesmo que não utilize os resultados para controlar o fluxo do programa. Ou seja, No Control Flowtargets não permita medições a meio do circuito.

Por exemplo, o seguinte código não pode ser executado num No Control Flowtarget:

operation MeasureQubit(q : Qubit) : Result { 
   return M(q); 
}

operation SampleMeasuredQubit(q : Qubit) : Result {
    H(MeasureQubit(q));
    return M(MeasureQubit(q));
}

Formato de saída

Quando submete um programa quântico ao simulador IonQ, este devolve o histograma criado pelas medições. O simulador IonQ não amostra a distribuição de probabilidade criada por um programa quântico, mas devolve a distribuição dimensionada para o número de capturas. Isto é mais evidente quando submete um único circuito de tiro. Verá vários resultados de medição no histograma para uma captura. Este comportamento é inerente ao simulador IonQ, enquanto o IonQ QPU executa o programa e agrega os resultados.

Capacidades Adicionais

Estão listadas aqui capacidades adicionais suportadas pelo hardware IonQ.

Funcionalidade Description
Mitigação de erros Utilizar o desbiasing para minimizar o ruído e maximizar o desempenho algorítmico no hardware IonQ
Suporte de portas nativas Definir e executar circuitos diretamente em portas nativas de hardware do IonQ
Simulação de modelos de ruído Simular o perfil de ruído que os circuitos encontrarão quando os executar em hardware IonQ diferente.

Os utilizadores podem tirar partido destas capacidades adicionais através de parâmetros pass-through nos fornecedores de Q# e Qiskit do Azure Quantum.

Mitigação de erros

O IonQ fornece a opção para ativar a mitigação de erros quânticos ao submeter tarefas para hardware IonQ. A mitigação de erros é um processo ao nível do compilador que executa e executa múltiplas variações simétricas de um circuito e, em seguida, agrega os resultados ao mitigar o impacto dos erros de hardware e da decoherência do qubit. Ao contrário das técnicas de correção de erros quânticos , a mitigação de erros não requer sobrecarga de porta grande e qubit.

A debiasing é o processo de criação de ligeiras variações de um determinado circuito que deve ser idêntico numa máquina sem ruído ideal, utilizando técnicas como diferentes atribuições de qubits, decomposições de porta e soluções de impulso e, em seguida, executar essas variações.

Afiação e Média são opções para agregar os resultados das variações. A média baseia-se igualmente em todos os resultados de variação, enquanto o Sharpening filtra os resultados erróneos e pode ser mais fiável para determinados tipos de algoritmos.

Para obter mais informações, veja Debiasing and Sharpening (Debiasing e Sharpening). Para obter preços de mitigação de erros, veja Preços do IonQ.

Ativar a mitigação de erros

Nota

A debiasing está ativada por predefinição nos sistemas Aria e Forte e desativada por predefinição nos sistemas Harmony.

No Azure Quantum, a mitigação de erros pode ser ativada ou desativada para tarefas submetidas com Q# ou com Qiskit.

Para ativar a mitigação de erros, adicione um parâmetro opcional para o target computador:


option_params = {
    "error-mitigation": {
        "debias": True
    }
}

Para desativar a mitigação de erros, defina o parâmetro como False:


option_params = {
    "error-mitigation": {
        "debias": False
    }
}

Nota

Se também estiver a utilizar a simulação do modelo de ruído do IonQ, esses parâmetros podem ser incluídos aqui, por exemplo:

option_params = {
    "error-mitigation": {
        "debias": False
    },
    "noise": {
    "model": "harmony",
    "seed": 100
    }
}

Para obter mais informações, veja Simulação de modelos de ruído.

Executar uma tarefa no Azure Quantum com mitigação de erros

Este exemplo utiliza um gerador de números aleatórios simples.

Primeiro, importe os pacotes necessários e inicie o perfil base:

import qsharp
import azure.quantum
qsharp.init(target_profile=qsharp.TargetProfile.Base)

Em seguida, defina a função.

%%qsharp
open Microsoft.Quantum.Measurement;
open Microsoft.Quantum.Arrays;
open Microsoft.Quantum.Convert;

operation GenerateRandomBit() : Result {
    use target = Qubit();

    // Apply an H-gate and measure.
    H(target);
    return M(target);
}

and compile the operation:

```python
MyProgram = qsharp.compile("GenerateRandomBit()")

Ligue-se ao Azure Quantum, selecione a target máquina e configure os parâmetros irrelevantes para o emulador:

MyWorkspace = azure.quantum.Workspace(
    resource_id = "",
    location = ""
)

MyTarget = MyWorkspace.get_targets("ionq.qpu")

Especificar a error-mitigation configuração


option_params = {
    "error-mitigation": {
        "debias": True
    }
}

Transmita a configuração de mitigação de erros ao submeter a tarefa:

job = MyTarget.submit(MyProgram, "Experiment with error mitigation", shots = 10, input_params = option_params)
job.get_results()

No Qiskit, transmite os parâmetros opcionais à configuração do target computador antes de submeter a tarefa:

circuit.name = "Single qubit random - Debias: True"
backend.options.update_options(**option_params)
job = backend.run(circuit, shots=500)

Nota

Se não transmitir o parâmetro, a máquina irá utilizar a error-mitigationtarget predefinição: ativada para sistemas Aria e Forte e desativada para sistemas Harmony.

Suporte e utilização de portas nativas

Por predefinição, o IonQ permite-lhe especificar um circuito quântico com um conjunto abstrato de portas quânticas, denominado qis, que permite flexibilidade e portabilidade ao escrever um algoritmo sem se preocupar com a otimização do hardware.

No entanto, em alguns casos de utilização avançada, poderá querer definir um circuito diretamente nas portas nativas para estar mais próximo do hardware e ignorar a otimização. O conjunto de portas nativas é o conjunto de portas quânticas que são executadas fisicamente no processador quântico e mapeiam o circuito para as que fazem parte da execução.

Para obter mais informações, veja Introdução With Native Gates (ionq.com).

Para utilizar a porta nativa definida ao submeter tarefas do Qiskit para o Azure Quantum, especifique o gateset parâmetro ao inicializar o back-end como no exemplo abaixo:

# Here 'provider' is an instance of AzureQuantumProvider
backend = provider.get_backend("ionq.qpu", gateset="native")
Nome do Parâmetro Tipo Necessário Description
gateset cadeia (de carateres) No Especifica o conjunto de portas que será utilizado para definir um circuito. Um valor de qis corresponde às portas abstratas (comportamento predefinido) e native às portas nativas de hardware IonQ.

Para obter mais informações sobre as tarefas do Qiskit, veja Submit a circuit with Qiskit (Submeter um circuito com o Qiskit).

Simulação de modelos de ruído

Mesmo o melhor do hardware quântico atual tem ruído inerente e conhecer as características irrelevantes do seu target sistema pode ajudá-lo a refinar os algoritmos e obter uma predição mais realista de resultados ao executar o circuito em hardware. O IonQ fornece uma simulação de modelo de ruído que introduz dados irrelevantes no circuito através de uma "impressão digital de ruído" específica do target hardware. Para obter mais informações, veja Introdução à Simulação de Modelos de Ruído de Hardware.

Parâmetros do modelo de dados irrelevantes

Nome do Parâmetro Valores Descrição
noise model, seed Ativa a simulação do modelo de dados irrelevantes
model ideal, harmony, aria-1 Especifica o modelo de dados irrelevantes para o target hardware.
  • ideal - Não é introduzido ruído no circuito. Isto é o mesmo que não ativar a simulação de ruído.
  • harmony - Utiliza o modelo de dados irrelevantes para o computador quântico IonQ Harmony.
  • aria-1 - Utiliza o modelo de dados irrelevantes para o computador quântico IonQ Aria.
seed Número inteiro entre 1 e $2^{31}$ (2.147.483.648) Permite-lhe especificar um valor de seed para dados irrelevantes pseudo-aleatórios e amostragem de imagens, criando resultados irrelevantes reproduzíveis. Se o parâmetro não for especificado, é criado um valor aleatório seed .

Consciência de tiro

A simulação de modelos de dados irrelevantes tem suporte para capturas; ou seja, mostra as medições do estado de saída com base no número de capturas fornecidas. No Azure Quantum, o shots parâmetro é submetido com a tarefa e é necessário para harmony modelos de dados aria-1 irrelevantes. Se não for especificado nenhum shot valor, é utilizado um valor predefinido de 1000 . Se o ideal modelo de dados irrelevantes for utilizado, o shots parâmetro é ignorado.

Capacidade de qubit

Embora o ideal modelo de dados irrelevantes lhe permita simular até 29 qubits com o simulador quântico IonQ, os modelos de dados irrelevantes específicos do hardware estão limitados à capacidade de qubit real do target hardware: 11 qubits para o harmony modelo de dados irrelevantes e 25 qubits para o aria-1 modelo de dados irrelevantes.

Ativar a simulação de modelos de dados irrelevantes

No Azure Quantum, a simulação de modelos de dados irrelevantes pode ser ativada ou desativada para tarefas submetidas com Q# ou com Qiskit.

Para ativar a simulação de modelos de dados irrelevantes, adicione um parâmetro opcional para a target máquina, por exemplo:


option_params = {
    "noise": {
        "model": "harmony",   # targets the Harmony quantum computer
        "seed" : 1000         # If seed isn't specified, a random value is used  
    }
}

Nota

Se também estiver a utilizar a mitigação de erros do IonQ, esses parâmetros podem ser incluídos aqui, por exemplo:

option_params = {
    "error-mitigation": {
        "debias": False
    },
    "noise": {
    "model": "harmony",
    "seed": 1000
    }
}

Para obter mais informações, veja Mitigação de erros.

Executar uma tarefa com simulação de modelo de dados irrelevantes

Pode utilizar o mesmo programa de exemplo mostrado anteriormente na mitigação de erros e adicionar ou substituir a configuração do modelo de dados irrelevantes em option_params;

option_params = {
    "error-mitigation": {
        "debias": True
    },
    "noise": {
    "model": "aria",
    "seed": 1000
    }
}

Em seguida, transmita os parâmetros opcionais quando submeter a tarefa:

job = MyTarget.submit(MyProgram, "Experiment with noise model simulation", shots = 10, input_params = option_params)
job.get_results()

No Qiskit, transmite os parâmetros opcionais à configuração do target computador antes de submeter a tarefa:

circuit.name = "Single qubit random - Debias: True"
backend.options.update_options(**option_params)
job = backend.run(circuit, shots=500)

Preços

Para ver o plano de faturação do IonQ, veja Preços do Azure Quantum.

Limites e quotas

As quotas do IonQ são controladas com base na unidade de utilização QPU, que é qubit-gate-shot (QGS). A utilização de recursos é creditada na sua conta.

Cada programa quântico consiste em $N$ portas lógicas quânticas de um ou mais qubits e é executado para um determinado número de capturas. O número de gate-shots é calculado pela seguinte fórmula:

$$ QGS = N · C $$

em que:

  • $N$ é o número de portas de um ou dois qubits submetidas
  • $C$ é o número de capturas de execução pedidas

As quotas baseiam-se na seleção do plano e podem ser aumentadas com um pedido de suporte. Para ver os limites e quotas atuais, aceda ao painel Créditos e quotas e selecione o separador Quotas da área de trabalho no portal do Azure. Para obter mais informações, veja Quotas do Azure Quantum.

Nota

Se estiver a utilizar um plano de Créditos do Azure Quantum e não um plano de faturação, as informações de quotas mapeiam para os créditos alocados. Nesse caso, a quota lista o número total de créditos que recebeu.

Estado do IonQ

Para obter informações sobre os atrasos no processamento de tarefas QPU do IonQ, veja a página de estado do IonQ.

Gráfico de melhores práticas e conectividade do IonQ

Para ver as melhores práticas recomendadas para a QPU do IonQ, veja Melhores Práticas do IonQ (ionq.com).