From @jolle-ag:
#13 (comment)
After talking to Kevin and testing myself, I realize that the current noise upscaling probably needs a more robust approach. There are two problems right now:
- prep_X and prep_Z are grouped into a single noise channel (prep). These should be kept as separate noise channels because 2. then the P gets a double count. Same happens for meas_X and meas_Z (they should be kept separate but are now joined into a single meas channel with its P).
- The p_idle_spam parameters are an effective 2-step p accounting for a measurement step and a state prep step. Again, this inflates the actual P when aggregating X, Y and Z.
For example, when using the config file as is (designed to produce a depolarizing noise model with p=6e-3), we see in the logs the following:
[Train] noise_model grouped totals: prep=0.008, meas=0.008, idle_cnot=0.006, idle_spam=0.011952, cnot=0.006; max_group=0.011952
[Train] Downscale NOT applied: max_group=0.011952 > target=6.0e-03. Parameters unchanged. If you intended a lower noise regime, check your noise model values.
Notice how we get the warning that max_group > 6e-3? That's due to the p_idle_spam's modeling two steps. In addition (we don't get warned about this), both meas > 6e-3 and prep > 6e-3.
The solution:
- Separate prep -> prep_x and prep_z; separate meas -> meas_x, meas_z.
- Divide idle_spam by 2 when deciding what should be the max_group to avoid the "2-step-inflation" of the P in this noise channel.
From @jolle-ag:
#13 (comment)
After talking to Kevin and testing myself, I realize that the current noise upscaling probably needs a more robust approach. There are two problems right now:
For example, when using the config file as is (designed to produce a depolarizing noise model with p=6e-3), we see in the logs the following:
Notice how we get the warning that max_group > 6e-3? That's due to the p_idle_spam's modeling two steps. In addition (we don't get warned about this), both meas > 6e-3 and prep > 6e-3.
The solution: