Release Notes¶
0.12.0¶
New Features¶
Added a
global_service
, so that if the user defines a QiskitRuntimeService, it will be used by the primitives, even if the service is not passed to them explicitly. For example:from qiskit_ibm_runtime import QiskitRuntimeService, Sampler service = QiskitRuntimeService(channel="ibm_quantum") # Sampler._service field will be initialized to ``service`` sampler = Sampler(backend="ibmq_qasm_simulator")
Added a new method,
qiskit_ibm_runtime.QiskitRuntimeService.instances()
that returns all instances(hub/group/project) the user is in. This is only for theibm_quantum
channel since theibm_cloud
channel does not have multiple instances.
Added validations for options on the second level of the dict, i.e., for each of resilience, simulator, execution, and transpilation, check that their options are supported. Otherwise throw an exception.
There is a new parameter,
channel_strategy
that can be set in the initialization ofqiskit_ibm_runtime.QiskitRuntimeService
or saved inqiskit_ibm_runtime.QiskitRuntimeService.save_account()
. Ifchannel_strategy
is set toq-ctrl
, all jobs within the service will use the Q-CTRL error mitigation strategy.
Upgrade Notes¶
Circuits and other input parameters will no longer be automatically stored in runtime jobs. They can still be retrieved with
qiskit_ibm_runtime.RuntimeJob.inputs()
.
Deprecation Notes¶
The
noise_amplifier
resilience options is deprecated. After the deprecation period, only local folding amplification will be supported. Refer to https://github.com/qiskit-community/prototype-zne for global folding amplification.
Bug Fixes¶
When running on channel «ibm_cloud», it is possible not to specify the backend. In this case, the system selects one of the available backends for this service. Issue #625 https://github.com/Qiskit/qiskit-ibm-runtime/issues/625 reported that the the backend returned by
job.backend()
was not always the actual backend on which the job was run. This PR fixes this bug.
Fixes a race condition in the test test_cancel_running_job() in test_job.py where job cancellation could not be performed. Refer to #1019 <https://github.com/Qiskit/qiskit-ibm-runtime/issues/1019>_ for more details.
Previously we added validation when jobs were run to make sure the number of circuits was not greater than the maximum for that backend,
backend.max_circuits
. This limit isn’t actually necessary for primtives run from within a session.
0.11.3¶
New Features¶
Added reason for failure when invoking the method
error_message()
.
Added a new property,
usage_estimation()
that returns the estimated running time,quantum_seconds
. Quantum time represents the time that the QPU complex is occupied exclusively by the job.
Raise an exception if the number of circuits passed to
_run_primitive()
exceeds the number of circuits supported on the backend.
There is a new method
update_tags()
that can be used to update thejob_tags
of a job.
If
instance
is provided as parameter toqiskit_ibm_runtime.QiskitRuntimeService
, then this is used as a filter inQiskitRuntimeService.backends()
. Ifinstance
is not recognized as one of the provider instances, an exception will be raised. Previously, we only issued a warning.
0.11.2¶
New Features¶
If a job has been cancelled, and job.result() is requested, throw an exception rather than returning None.
A new method,
qiskit_ibm_runtime.options.SimulatorOptions.set_backend()
, allows users to more easily set simulator options for a backend.from qiskit.providers.fake_provider import FakeManila from qiskit_aer.noise import NoiseModel # Make a noise model fake_backend = FakeManila() # Set options to include the noise model options = Options() options.simulator.set_backend(fake_backend) options.simulator.seed_simulator = 42
Bug Fixes¶
Fixed infinite recursion when attempting to deepcopy an IBMBackend. Added a method
qiskit_ibm_runtime.IBMBackend.deepcopy()
.
Fixed an issue where circuit metadata was not being serialized correctly resulting in a type error.
0.11.1¶
Deprecation Notes¶
In
qiskit_ibm_runtime.RuntimeJob.metrics()
, the bss field will be replaced by usage.
0.11.0¶
New Features¶
When retrieving a job with
qiskit_ibm_runtime.IBMRuntimeService.job()
theparams
will no longer be returned from the API. They will instead be loaded loazily when they are actually needed inqiskit_ibm_runtime.RuntimeJob.inputs()
.
Added warning when the backend is not active in QiskitRuntimeService.run.
Support input of type
CouplingMap
when given as simulator option. Previously we supported, for example:options.simulator = {"coupling_map": [[0, 1], [1, 0]]}
Now we also support the following:
options.simulator = {"coupling_map": CouplingMap.from_line(10)}
Upgrade Notes¶
A default session is no longer open for you if you pass a backend name or backend instance to
qiskit_ibm_runtime.Sampler
orqiskit_ibm_runtime.Estimator
constructors. The primitive will instead run without a session. In addition, you should now use thebackend
parameter to pass a backend name or instance instead of thesession
parameter (which can continue to be used to pass a session).
The first parameter of the
qiskit_ibm_runtime.Sampler
andqiskit_ibm_runtime.Estimator
constructors is nowbackend
instead ofsession
.
Deprecation Notes¶
Passing a backend name or backend instance to the
session
parameter when initializing aqiskit_ibm_runtime.Sampler
orqiskit_ibm_runtime.Estimator
has been deprecated. Please use thebackend
parameter instead. You can continue to pass a session using thesession
parameter.
0.10.0¶
New Features¶
Python 3.11 is now supported.
Upgrade Notes¶
Added error messages in case the user defines unsupported values for “max_execution_time”. Previously, this validation was done on the server side.
Bug Fixes¶
Added deserialization of the params of RuntimeJob.inputs. Previously, the circuits were returned in serialized format. Fixes issue #829.
Allow for users to retrieve all backends even if one of the backends has a missing configuration. The backend without a configuration will not be returned.
0.9.4¶
New Features¶
Added methods to validate input options to
transpilation
andenvironment
options.
Upgrade Notes¶
When constructing a backend
qiskit.transpiler.Target
, faulty qubits and gates from the backend configuration will be filtered out.
Deprecation Notes¶
The deprecated arguments
circuits
,parameters
,service
, andskip_transpilation
have been removed fromSampler
.Similarly, the deprecated arguments
circuits
,observables
,parameters
,service
, andskip_transpilation
have been removed fromEstimator
.In
QiskitRuntimeService
, theauth
parameter has been removed. Additionally, theinstance
,job_tags
, andmax_execution_time
paramters have been removed fromqiskit_ibm_runtime.QiskitRuntimeService.run()
. They can be passed in throughRuntimeOptions
instead.Within
RuntimeOptions
,backend_name
is no longer supported. Please usebackend
instead.
Bug Fixes¶
Fixed a bug where retrieving a job from a backend without
noise_model
orseed_simulator
options would result in a key error.
0.9.3¶
Upgrade Notes¶
Added error messages in case the user defines unsupported values for “optimization_level” or for “resilience_level”. Added validation checking for options given as input to
resilience
. Previously, this validation was done on the server side. By adding them on the client side, response will be much faster upon failure. The environment variableQISKIT_RUNTIME_SKIP_OPTIONS_VALIDATION
is used to control validation. If set, validation will be skipped.
Backend configurations are no longer loaded when
QiskitRuntimeService
is initialized. Instead, the configuration is only loaded and cached duringget_backend()
andbackends()
.
Bug Fixes¶
When creating an Option object and passing an input option to
resilience_options
, this option was included inresilience_options
, but the other, default options were removed. This was fixed, so now inputs are handled correctly, like other option types.
0.9.2¶
New Features¶
Added a new argument called
session_time
to the program_run method andqiskit_ibm_runtime.RuntimeOptions
. Now values entered by the user for sessionmax_time
will be sent to the server side assession_time
. This allows users to specify different values for sessionmax_time
andmax_execution_time
.
Added the method
target_history()
. This method is similar totarget()
. The difference is that the new method enables the user to pass a datetime parameter, to retrieve historical data from the backend.
Upgrade Notes¶
Accept all options on given on level 1 and assign them to the appropriate hierarchical option type. For example, if the user provides
options = {"shots": 10}
as input to Sampler/Estimator, this will be interpreted asoptions = {"execution: {"shots": 10}}
.
If a job is returned without a backend, retrieving the backend through
qiskit_ibm_runtime.RuntimeJob.backend()
will re-retrieve data from the server and attempt to update the backend. Additionally,job_id
andbackend
, which were deprecated attributes ofqiskit_ibm_runtime.RuntimeJob
have now been removed.
Added a user warning when the user passes an option that is not supported in Options.
Bug Fixes¶
Fixed a bug where the default values for
optimization_level
and forresilience_level
were not being set correctly.
Fixed an issue where if no backend was selected,
optimization_level
andresilience_level
would default toNone
, causing the job to fail.
If an instance is passed in to
qiskit_ibm_runtime.QiskitRuntimeService.get_backend()
and then the backend is used in a session, all jobs within the session will be run from the original instance passed in.
Removed additional decomposition of
BlueprintCircuit
s in the JSON encoder. This was introduced as a bugfix, but has since been fixed. Still doing the decomposition led to possible problems if the decomposed circuit was not in the correct basis set of the backend anymore.
0.9.1¶
Upgrade Notes¶
qiskit_ibm_runtime.QiskitRuntimeService.jobs()
now has abackend_name
parameter that can be used to only return jobs run with the specified backend.
Allow the user to store account details in a file specified by the user in the parameter.
filename
. The default remains ~/.qiskit/qiskit-ibm.json. Example of usage: Ex:QiskitRuntimeService.save_account(channel="ibm_quantum", filename="~/my_account_file.json", name = "my_account", token="my_token") service = QiskitRuntimeService(channel="ibm_quantum", filename="~/my_account_file.json", name = "my_account",)
Deprecation Notes¶
backend
is no longer a supported option when usingqiskit_ibm_runtime.Session.run()
. Sessions do not support multiple cross backends. Additionally, an exception will be raised if a backend passed in through options does not match the original session backend in an active session.
Bug Fixes¶
ECRGate
andCZGate
mappings have been added to theTarget
constructor to fix a tranpile bug.
Other Notes¶
Since error messages from a failing job may be long, we shortened them so that they begin from the last
Traceback
in the message.