aphrodite-engine icon indicating copy to clipboard operation
aphrodite-engine copied to clipboard

[Feature]: pass-through parameter from request to model.forward (already implemented)

Open qpwo opened this issue 1 year ago • 1 comments

🚀 The feature, motivation and pitch

It took me ages to figure out how to pass a custom parameter from the API through to the model.forward call. This is very useful for running little experiments and making custom logs.

Should I dress it up in a PR?

It would be disabled by default. I guess you'd do aphrodite run --enable-passthrough-param or similar.

Example

## example request:
client.completions.create(
    model='70b',
    prompt='I was',
    extra_body={"passthrough": {"save_activations": True}},
)

## example modification of LlamaForCausalLM.forward:
def forward(
    self,
    input_ids: torch.Tensor,
    positions: torch.Tensor,
    kv_caches: List[torch.Tensor],
    attn_metadata: AttentionMetadata,
    intermediate_tensors: Optional[IntermediateTensors] = None,
    passthrough: Optional[Dict] = None,
) -> Union[torch.Tensor, IntermediateTensors]:
    passthrough = passthrough or {}
    save_activations = bool(passthrough.get("save_activations", False)) # example 1
    scale_gate_up = float(passthrough.get('scale_gate_up', 1.0)) # example 2
    model_output = self.model(
        input_ids, positions, kv_caches, attn_metadata, intermediate_tensors,
        save_activations=save_activations,
        scale_gate_up=scale_gate_up,
    )
    return model_output

Alternatives

I could not find any alternatives but would be quite happy to learn of any.

Additional context

PR is mostly written already, I would just tidy it if you want this feature.

qpwo avatar Nov 25 '24 22:11 qpwo

Doesn't seem particularly difficult to maintain, so go ahead!

AlpinDale avatar Nov 25 '24 22:11 AlpinDale