mirror of
https://github.com/clearml/clearml-agent
synced 2025-06-26 18:16:15 +00:00
Optimize dynamic GPU to query only relevant workers (requires clearml-server >=v2.0.0, otherwise the selection argument is ignored)
This commit is contained in:
parent
e551ee1eb5
commit
c76dfe7ce6
@ -1730,16 +1730,24 @@ class Worker(ServiceCommandSection):
|
||||
def _dynamic_gpu_get_available(self, gpu_indexes):
|
||||
# key: cast to string, value: 1 (i.e. gull GPU)
|
||||
gpu_indexes = {str(g): 1 for g in gpu_indexes}
|
||||
worker_name = self._session.config.get("agent.worker_name", "") + ':gpu'
|
||||
|
||||
# only return "Our" workers (requires server API +2, otherwise the selecort pattern is ignored)
|
||||
# noinspection PyBroadException
|
||||
try:
|
||||
response = self._session.send_api(workers_api.GetAllRequest(last_seen=600))
|
||||
response = self._session.send_api(workers_api.GetAllRequest(
|
||||
last_seen=600,
|
||||
worker_pattern="{}*".format(worker_name),
|
||||
_allow_extra_fields_=True
|
||||
))
|
||||
except Exception:
|
||||
return None
|
||||
|
||||
worker_name = self._session.config.get("agent.worker_name", "") + ':gpu'
|
||||
# filter only our workers, in case the selector pattern above was ignored due to lower version API server
|
||||
our_workers = [
|
||||
w.id for w in response.workers
|
||||
if w.id.startswith(worker_name) and w.id != self.worker_id]
|
||||
if w.id.startswith(worker_name) and w.id != self.worker_id
|
||||
]
|
||||
gpus = {}
|
||||
allocated_gpus = {}
|
||||
gpu_pattern = re.compile(r"\d+[.]?\d*[a-z]?")
|
||||
@ -2025,7 +2033,7 @@ class Worker(ServiceCommandSection):
|
||||
columns = ("id", "name", "tags")
|
||||
print("Listening to queues:")
|
||||
if dynamic_gpus:
|
||||
columns = ("id", "name", "tags", "gpus")
|
||||
columns = ("id", "name", "tags", "gpus (min, max)")
|
||||
for q in queues_info:
|
||||
q['gpus'] = str(dict(dynamic_gpus).get(q['id']) or '')
|
||||
print_table(queues_info, columns=columns, titles=columns)
|
||||
|
Loading…
Reference in New Issue
Block a user