Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.haiqu.ai/llms.txt

Use this file to discover all available pages before exploring further.

Haiqu.pretrain(problem, *, max_time=60, seed=42, initial_parameters=None, name=None, description=None)

Pretrain parameters for a variational quantum circuit to minimize the expectation value of input observable.
  • Parameters:
    • problem (VariationalProblem) — problem instance containing the ansatz circuit and observable.
    • max_time (float) — maximal time (in seconds) the pretraining can take. If this time exceeds (not counting initialization and other overheads), then the current best result is returned. Defaults to 1 minute. Current maximal pretraining time is 15 minutes.
    • seed (int *|*None) — a seed for initial random initialization of weights. They are chosen from uniform distribution in the interval [-π,π). Defaults to 42.
    • initial_parameters (list *[*float ] *|*None) — if specified, then these weights are used instead of random ones. Defaults to None.
    • name (str *|*None) — optional name of the job. If not set, then automatic will be generated.
    • description (str *|*None) — optional description of the job. If not set, then automatic will be generated.
  • Returns: Job handle to track pretraining progress and retrieve results. : Call job.result() to retrieve the pretrained ansatz parameters as a list[float] (one entry per parameter in the input VariationalProblem.ansatz), suitable for use as parameters in run() or as initial_parameters in variational_optimization(). Run help(job.result) for the full description of result and info contents.
  • Return type: PretrainingJobModel

Examples

>>> from qiskit import QuantumCircuit
>>> from qiskit.circuit.library import EfficientSU2
>>> from qiskit.quantum_info import SparsePauliOp
>>> from haiqu.sdk import haiqu
>>> from haiqu.sdk.qml import VariationalProblem
>>> pqc = qiskit.QuantumCircuit(5)
>>> pqc.compose(EfficientSU2(num_qubits=pqc.num_qubits, reps=1), inplace=True)
>>> loss = SparsePauliOp(["ZIIII", "IIZXI"])
>>> problem = VariationalProblem(pqc, loss)
>>> job = haiqu.pretrain(problem, max_time=10)
>>> pretrained_params = job.result()  # accessing the pretrained parameters
>>> haiqu.run([problem.ansatz], observables=[problem.observable], parameters=[pretrained_params],
...           device=haiqu.get_device("aer_simulator")).result()  # checking the result
[[[-2.0]]]  # result may vary. -2 is the optimal loss for two independent pauli strings