[feat] Make the CPU reservation of the controller and SimpleStorageUnit configurable
Los mantenedores suelen responder en 1 día
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 2/5
- Tiempo estimado
- 1-3 horas
- Aptitud para principiantes
- 78/100
- Tipo de issue
- Nueva funcionalidad
- Claridad
- Bien especificado
- Estado de actividad
- Activo
- Stack tecnológico
- python
- Área
- performance
Línea de trabajo
Dos sitios de llamada definen los actors: transfer_queue/controller.py alrededor de la línea 1107 y transfer_queue/storage/simple_storage.py alrededor de la línea 900, ambos actualmente @ray.remote(num_cpus=1). Léelos junto con TransferQueueLockManager, que ya usa num_cpus=0, luego lee las dos variables de entorno y pasa el valor mediante .options(num_cpus=...) en las llamadas .remote(), con valor predeterminado 1 cuando no estén definidas. Terminado se ve como una prueba que construye los actors y verifica su num_cpus solicitado, además de ningún cambio de comportamiento cuando las variables están ausentes.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Problem
TransferQueueController and SimpleStorageUnit are declared with @ray.remote(num_cpus=1) (controller.py#L1107, simple_storage.py#L900), so each one reserves a full CPU for as long as it lives. A framework that starts a controller and several storage units per job reserves that many CPUs per job before any training work runs. verl's v1 trainer starts one controller and 8 storage units by default, so 9 CPUs per job (see verl#7398, where a 16-CPU Ray cluster was left with 7 CPUs after the units came up). When jobs queue for a GPU, their TransferQueue actors already hold CPUs and can keep the jobs ahead of them from being scheduled; #164 is the same pressure showing up as a startup hang.
The reservation is far above the usage. One local Ray 2.57.0 run (torch 2.13.0, Python 3.12) with 8 storage units, 126 kv_put calls per second of two small fields plus a kv_list per batch, for 30 seconds, measured through psutil CPU times of the actor processes:
controller 0.148 cores (average)
8 units 0.012 cores each (average)
TransferQueueLockManager is already num_cpus=0, so a zero reservation for these actors is not a new pattern here.
Proposal
Read the CPU request from environment variables, TQ_CONTROLLER_NUM_CPUS and TQ_STORAGE_UNIT_NUM_CPUS, and pass it through .options(num_cpus=...) where the actors are created. Keep the default at 1 so nothing changes for existing users. I can send a PR with a test that checks the requested resources of the created actors.
Not covered
The numbers above come from a small local loop, not from a training run, so they show the order of magnitude and not the load of a real job.
- Lenguaje dominante
- Python
- Estrellas
- 169
- Forks
- 56
- Merge medio
- 1 d 17 h
- PR fusionados (30 d)
- 15
Preparar el entorno
Este proyecto no incluye contenedor de desarrollo, Dockerfile ni guía de contribución, así que la configuración corre por tu cuenta: empieza por su README y consulta nuestra guía para la primera contribución para los pasos generales.
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de Ascend/TransferQueue
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
Ascend/TransferQueue#194 ·
Los mantenedores suelen responder en 1 día
-
[RFC] A pluggable PayloadTransfer interface for SimpleStoragePosiblemente ocupada @Ginray la tomó hace 2 días. Abiertoroadmap
Ascend/TransferQueue#208 · 1 comentario · 2 asignados ·
Los mantenedores suelen responder en 1 día
-
[doc] Document the contract of storage-side callables (data_parser, merge_fn) with a tutorialAbierto
Dificultad 4/5 3-5 días Aptitud para principiantes 55/100
Ascend/TransferQueue#195 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 4/5 3-5 días Aptitud para principiantes 30/100
Ascend/TransferQueue#188 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 4/5 3-5 días Aptitud para principiantes 45/100
Ascend/TransferQueue#180 ·
Los mantenedores suelen responder en 1 día
Todos los issues de Ascend/TransferQueue
Issues similares
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 74/100
strawberry-graphql/strawberry#4794 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
dataforgoodfr/cetolog#21 ·
-
security_citations_test fails against ecc 2026.11.6: SECURITY.md quotes ecc v2026.11.2's linesAbierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 76/100
btclib-org/btclib#2932 ·
Los mantenedores suelen responder en 1 día
-
metrics priority: medium
Dificultad 1/5 1-3 horas Aptitud para principiantes 86/100
LearningCircuit/local-deep-research#8336 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 80/100