localhost와 유사한 Slurm 대안

localhost와 유사한 Slurm 대안

내 리소스(예: GPU)는 한 번에 한 번만 사용할 수 있습니다. 실험을 수행할 때 배치 파일이 언제 생성되었는지, 앞으로 어떤 실험을 수행할지 항상 알아야 합니다. 하지만 저는 마음을 바꾸는 걸 좋아하지만 그만두는 건 싫어하는 사람이에요.

한 대의 컴퓨터에서만 실행되고 작업을 대기열에 전달하고 필요한 경우 삭제할 수 있는 Slurm과 같은 것이 있습니까?

저는 GPU 로드(CPU 로드에서 작동하는 배치/at와 비교)에서 작동하고 작업을 순차적으로 실행할 수 있는 애플리케이션을 찾고 있습니다. 이는 한 번에 하나의 리소스(GPU)에서 하나의 작업만 실행할 수 있으며, 이전 작업의 실행이 완료된 후에 다음 작업이 시작된다는 의미입니다. 또한 작업에 더 높은 우선순위를 부여하거나 삭제하기 위해 대기열을 관리하고 싶습니다.

답변1

내 요구 사항에 완벽하게 맞는 솔루션을 찾았습니다. 제가 겪고 있는 문제는 GPU가 하나뿐인데 작업을 추가하고 작업 상태를 확인하고 필요한 경우 대기열에서 다시 제거할 대기열을 원한다는 것입니다.

Google 조사를 한 후 발견했습니다.작업 스풀러(tsp). 이 명령줄 도구를 사용하면 대기열에 작업을 추가하고 결과를 추적하는 것이 매우 쉽습니다. 지금까지 대기열을 하나만 사용했지만 더 많이 확장할 수 있습니다.

답변2

귀하가 컴퓨터의 유일한 사용자인 경우, hyper-shell(https://hyper-shell.readthedocs.io)에는 필요한 기능이 있습니다. hyper-shell cluster로그인으로 실행 하거나 백그라운드에 그대로 두고 PostgreSQL을 백엔드 데이터베이스로 사용할 수 있습니다. 이는 단일 시스템(특히 단일 리소스 - 한 번에 1개의 작업)에 대한 SLURM을 쉽게 대체할 수 있으며 크로스 플랫폼입니다.

예를 들어 를 사용하여 한 번에 하나의 작업을 제출할 수 있습니다 sbatch.hyper-shell task submitsqueuehyper-shell task search --remaining

구성, 로깅 등에 대한 다양한 옵션이 있습니다. 그러나 스케줄링 서비스의 기본 시작은 다음과 유사합니다.

hyper-shell cluster -N1 --forever --max-retries=2 --capture

면책조항: 저는 의 저자입니다 hyper-shell.

답변3

자신의 간단한 큐 관리자를 통해 작업을 실행하는 것이 허용됩니까?

#!/bin/bash

while ! mkdir /tmp/my_gpu_lockdir; do
    sleep $((RANDOM))
done

trap 'rmdir /tmp/my_gnu_lockdir' ERR EXIT

.... your actual task here ...

관련 정보