def compute_derived_scalars_for_input_token_ints(
    model_context: StandardModelContext,
    input_token_ints: list[list[int]],
    scalar_derivers: list[ScalarDeriver],
    loss_fn_for_backward_pass: Callable[[torch.Tensor], torch.Tensor] | None,
    ablation_specs: list[AblationSpec] | None,
    autoencoder_context: MultiAutoencoderContext | AutoencoderContext | None,
    trace_config: TraceConfig | None,
) -> tuple[DerivedScalarStore, InferenceData]:
    """This function runs a forward pass on the given input tokens, with hooks added to the transformer to
    extract the activations needed to compute the scalars in scalar_derivers. It then returns a
    DerivedScalarStore containing the derived scalars for each token in the input."""
    multi_autoencoder_context = MultiAutoencoderContext.from_context_or_multi_context(
        autoencoder_context
    )
    multi_group_scalar_derivers_by_processing_step = {
        # "dummy" is a placeholder processing step name
        "dummy": MultiGroupScalarDerivers.from_scalar_derivers(scalar_derivers)
    }
    assert len(input_token_ints) == 1
    batched_ds_computation_params = [
        DerivedScalarComputationParams(
            input_token_ints=input_token_ints[0],
            multi_group_scalar_derivers_by_processing_step=multi_group_scalar_derivers_by_processing_step,
            device_for_raw_activations=model_context.device,
            loss_fn_for_backward_pass=loss_fn_for_backward_pass,
            ablation_specs=ablation_specs,
            trace_config=trace_config,
        )
    ]
    batched_multi_group_ds_store_by_processing_step: list[dict[str, MultiGroupDerivedScalarStore]]
    (
        batched_multi_group_ds_store_by_processing_step,
        batched_inference_data,
        _,
    ) = compute_derived_scalar_groups_for_input_token_ints(
        model_context=model_context,
        multi_autoencoder_context=multi_autoencoder_context,
        batched_ds_computation_params=batched_ds_computation_params,
    )
    return (
        batched_multi_group_ds_store_by_processing_step[0]["dummy"].to_single_ds_store(),
        batched_inference_data[0],
    )
This function runs a forward pass on the given input tokens, with hooks added to the transformer to
    extract the activations needed to compute the scalars in scalar_derivers. It then returns a
    DerivedScalarStore containing the derived scalars for each token in the input.
neuron_explainer/tests/test_online_autoencoder_dsts.py