Add RemoteSlurmJob to connect SLURMCluster to a remote Slurm cluster
Nadie ha tomado este issue todavía.
- #504 de @alexandervaneck — cerrado sin fusionar
Evaluación
- Dificultad
- 5/5
- Tiempo estimado
- Más de una semana
- Aptitud para principiantes
- 25/100
- Tipo de issue
- Nueva funcionalidad
- Claridad
- Bastante claro
- Estado de actividad
- Estancado
- Stack tecnológico
- python
Línea de trabajo
Empieza leyendo las implementaciones existentes de SlurmCluster y SlurmJob, especialmente async start, job_file, _submit_job, _job_id_from_submit_output y _close_job. Compara su comportamiento con los endpoints de submission y cancellation de la Slurm REST API; después, define el comportamiento de las requests necesario para un reemplazo remoto drop-in y verifica que la submission y la cancellation preserven el ciclo de vida existente.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Hello 👋 Thank you for considering this feature request :) I have been looking over dask-jobqueue (together with prefect) to allocate resources on a Slurm cluster I have access to. dask-jobqueue seems exactly what we'd need for this, thank you for maintaining it 🙇
Context
In the case where Slurm and a python process (script or notebook) are not running on the same host SlurmCluster will not be able to spawn any jobs and error.
Slurm added a REST API: https://slurm.schedmd.com/rest_api.html
Feature
Could we add a RemoteSlurmCluster and RemoteSlurmJob that largely extend SlurmCluster/SlurmJob and instead of using subprocess.Popen we'd do an HTTP request instead?
class RemoteSLURMJob(SLURMJob):
@contextmanager
def job_file(self):
# we don't need the script file but only the script itself. to not alter `async def start(self):` we yield the script here.
yield self.job_script()
async def _submit_job(self, script):
# formatting should be according to:
# https://slurm.schedmd.com/rest_api.html#slurmctldSubmitJob
return requests.post('slurm-url/jobs/submit') # reach out to API
def _job_id_from_submit_output(self, out):
# out is the JSON output from _submit_job request.post
# See https://slurm.schedmd.com/rest_api.html#v0.0.36_job_submission_response
return out['job_id']
@classmethod
def _close_job(cls, job_id):
# See: https://slurm.schedmd.com/rest_api.html#slurmctldCancelJob
requests.delete(f'slurm-url/job/{job_id}')
class RemoteSLURMCluster(SLURMCluster):
job_cls = RemoteSLURMJob
As far as I can tell this should be a drop-in replacement.
Thoughts? (tagging @mrocklin @lesteve for visibility, hope you would have time for a review.)
- Lenguaje dominante
- Python
- Estrellas
- 256
- Forks
- 148
- Métricas de merge de PR
- Sin PR fusionados en 30 d
Preparar el entorno
- Sin Dockerfile ni archivo de Docker Compose
- Sin plantilla de pull request
- Leer la guía de contribución
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 dask/dask-jobqueue
-
bug LSF
Dificultad 3/5 1-2 días Aptitud para principiantes 65/100
dask/dask-jobqueue#703 · 1 comentario ·
-
Dificultad 4/5 3-5 días Aptitud para principiantes 35/100
dask/dask-jobqueue#701 ·
-
Dificultad 3/5 1-2 días Aptitud para principiantes 45/100
dask/dask-jobqueue#699 · 2 comentarios ·
-
bug
Dificultad 3/5 1-2 días Aptitud para principiantes 38/100
dask/dask-jobqueue#692 · 1 comentario ·
-
bug
Dificultad 4/5 3-5 días Aptitud para principiantes 35/100
dask/dask-jobqueue#691 · 7 comentarios ·
Todos los issues de dask/dask-jobqueue
Issues similares
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
CLIMADA-project/climada_python#1337 ·
Los mantenedores suelen responder en 3 días
-
tail without reverseAbierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
8go/matrix-commander#233 ·
-
documentation
Dificultad 2/5 1-3 horas Aptitud para principiantes 66/100
-
documentation enhancement priority:high size:M
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
Los mantenedores suelen responder en 1 día
-
Validate non-divisible effective batch sizes in the Unsloth LoRA backendPosiblemente ocupada @debesh-biswas la tomó hoy. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 70/100