elastic / elastic/elastic-evals-sdk-python

[kbn-evals] HTTP efficiency: connection pooling and score batching

Abierto
#39 0 comentarios 0 reacciones 0 asignados Ver en GitHub
kbn-evals Team:nightshift-context-and-research
Lenguaje dominante
Python
Estrellas
2
Forks
0
Merge medio
1 d 13 h
PR fusionados (30 d)
18

Descripción

### Summary

Every request to Kibana opens a new `httpx.AsyncClient`, makes one call, and closes it. For N examples x R repetitions, every score ingest is a separate TCP connection to the same host. The scores API supports batching but each evaluator result is sent alone.

The [httpx async docs](https://www.python-httpx.org/async/#opening-and-closing-clients) say: "do not instantiate multiple client instances inside a hot loop."

### Problem

- `datasets_client.py:61-62`, `scores_client.py:39`, `evaluators_client.py:83-88`, `inference/client.py:179-180` all use `async with httpx.AsyncClient(...) as client:` per request
- Score ingest sends one `POST` per evaluator result; the scores API accepts a list of scores per request

### Fix

- Create one `httpx.AsyncClient` per API client class in `__init__`, close it in `aclose()`
- `ElasticEvalsClient` manages the lifecycle via `async with` or a `finally` block
- Batch score ingest calls per example rather than per evaluator result

### Done when

- [ ] Each API client holds one `httpx.AsyncClient` for the lifetime of a run
- [ ] `ElasticEvalsClient` supports `async with client:` or `await client.aclose()`
- [ ] Score ingest sends one request per example instead of one per evaluator result

Guía de contribución

No hay ninguna guía de contribución indexada para este repositorio

Línea de trabajo

Lee datasets_client.py, scores_client.py, evaluators_client.py e inference/client.py para comparar sus ciclos de vida de AsyncClient por solicitud y, a continuación, rastrea la propiedad de ElasticEvalsClient. Verifica el trabajo completado comprobando que los clientes reutilicen un cliente HTTP por ejecución, admitan la limpieza asíncrona y envíen una solicitud de ingestión de scores por ejemplo.

Escrito por el modelo de indexación a partir del texto del issue.

Evaluación

Stack tecnológico
python
Área
api, networking, performance
Tipo de issue
Refactorización
Dificultad
4/5
Tiempo estimado
3-5 días
Estado de actividad
Tranquilo
Claridad
Bien especificado
Aptitud para principiantes
55/100

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.