Skip to content

Qiskit MLflow auto logging #1

Description

@vstirbu

Implement a PoC for auto logging to MLflow QProv data for Qiskit experiments.

Mental model

import mlflow
from mqt.bench import BenchmarkLevel, get_benchmark
from q8s.runtime.mlflow.qiskit import autolog

autolog()

from iqm.qiskit_iqm.fake_backends.fake_aphrodite import IQMFakeAphrodite
from qiskit.transpiler import generate_preset_pass_manager

mlflow.set_experiment("qubernetes-transpilation")


with mlflow.start_run():
    qc = get_benchmark(
        benchmark="qft",
        level=BenchmarkLevel.ALG,
        circuit_size=10,
    )

    backend = IQMFakeAphrodite()

    manager = generate_preset_pass_manager(
        optimization_level=3,
        backend=backend,
    )

    tqc = manager.run(qc)

    job = backend.run(tqc, shots=1024, memory=True)

    result = job.result()

    result.get_counts()

Required infrastructure

flowchart
    qpu[QPU]
    subgraph Python app
        app[Quantum Routine]
        sim[Simulator]

        app --> |execute| sim
    end

    mlflow[MLflow Tracking Server]

    app --> |logs|mlflow
    app --> |execute| qpu
Loading

Working plan

TODOs:

  • circuit
  • backend
  • transpilation passes
  • StagedPassManager extraction

Interaction

sequenceDiagram
    box Program
    participant p as User
    participant a as Autologging
    end
    participant m as MLflow

    Note over p: import autolog
    p ->> p: autolog()
    p -->> a: 
    activate a
        a ->> a: create context

        Note over p: import other deps
        p ->> p: generate_preset_pass_manager
        p -->> a: backend
        a ->> a: update context with backend info

        p ->> p : passmanager.run
        p -->> a: circuit
        a ->> a: update context with circuit

        loop passes
            p -->> a: pass
            a ->> a: update context with pass info
        end

    a ->> m: log

    deactivate a
Loading

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions