Informationen wie die GPU-Nutzung von Python abrufen (Befehl nvidia-smi)

Ich möchte herausfinden, welche GPU auf dem Server kostenlos ist → Ich frage mich, ob ich die GPU-Nutzungsrate aus dem Programm abrufen kann ~ Ich habe ein wenig nachgeforscht und der Befehl nvidia-smi, den ich immer verwende, liefert je nach Option eine maschinenlesbare Ausgabe Ich habe das gefunden.

--query-gpu Option

Die Option "--query-gpu" ruft die gewünschten Informationen ab, verarbeitet sie in den durch die Option "--format" angegebenen Ausgabestil und gibt sie aus.

Es scheint beispielsweise, dass Sie die folgenden Informationen angeben können.

--index: Hardware-Maschinennummern, die mit 0 beginnen, z. B. "0" oder "1" --memory.free: Menge an freiem GPU-Speicher, z. B. "5123 MiB" --memory.used: Verwendeter GPU-Speicher, z. B. "3451 MiB" --memory.total: Die in der GPU installierte Speichermenge, z. B. "8113 MiB" --utilization.gpu: GPU-Auslastung wie "12%" --utilization.memory: GPU-Speicherauslastung, z. B. "49%" --Timelink: Die Zeit, zu der der Befehl nvidia-smi ausgeführt wurde, z. B. "2016/12/16 22: 05: 43.771". --uuid: Eine global eindeutige, unveränderliche ID. Es scheint, dass es nichts mit der an der GPU angebrachten Nummer zu tun hat, wie "GPU-92275dc5-b7cc-1a5f-0348-f389e3040f2b".

Es gibt viele andere Schlüssel, also probieren Sie sie mit nvidia-smi --help-query-gpu aus.

--format Option

Es wird verwendet, um die durch --query-gpu angegebenen Informationen an CSV auszugeben. --Format = csv ist der einfachste Weg, es aufzurufen, aber Sie können auch noheader und nounits angeben.

--noheader: Die Kopfzeile wird nicht als erste Zeile der CSV angezeigt --nounits: Wenn Sie beispielsweise die GPU-Auslastung (utlization.gpu) erhalten, wird "10%" zu "10".

Sie können diese kombinieren, um "--format = csv, noheader" oder "--format = csv, noheader, nounits" zu erstellen.

Funktion zum Abrufen von NVIDIA-SMI-Informationen in Python

import subprocess
import json

DEFAULT_ATTRIBUTES = (
    'index',
    'uuid',
    'name',
    'timestamp',
    'memory.total',
    'memory.free',
    'memory.used',
    'utilization.gpu',
    'utilization.memory'
)

def get_gpu_info(nvidia_smi_path='nvidia-smi', keys=DEFAULT_ATTRIBUTES, no_units=True):
    nu_opt = '' if not no_units else ',nounits'
    cmd = '%s --query-gpu=%s --format=csv,noheader%s' % (nvidia_smi_path, ','.join(keys), nu_opt)
    output = subprocess.check_output(cmd, shell=True)
    lines = output.decode().split('\n')
    lines = [ line.strip() for line in lines if line.strip() != '' ]

    return [ { k: v for k, v in zip(keys, line.split(', ')) } for line in lines ]


import pprint
pprint.pprint(get_gpu_info())

Es hat so funktioniert.

Wenn Sie den Bot-GPU-Status mit "Slack" usw. fragen, können Sie auf diese Weise leicht einen Bot erstellen, der Ihnen den GPU-Nutzungsstatus anzeigt. Enjoy!

Recommended Posts

Informationen wie die GPU-Nutzung von Python abrufen (Befehl nvidia-smi)
Informationen zum BTC / JPY-Board erhalten Sie von Python --bitflyer
[Python] Holen Sie sich Produktinformationen wie ASIN und JAN mit Amazon PA-API Version 5.0
Führen Sie Befehle aus Python aus
Führen Sie den Befehl von Python aus
Informationen von tweet_id (Python)
Holen Sie sich nur die Python-Version (z. B. 2.7.5) in die CentOS 7-Shell
Holen Sie sich Alembic-Informationen mit Python
So erhalten Sie eine Zeichenfolge aus einem Befehlszeilenargument in Python
Über Python, aus und importieren, als
Python Holen Sie sich das kommende Wetter von der Wetter-API
Holen Sie sich Wetterinformationen mit Python & Scraping
Liste von Befehlen wie Docker / Kubernetes
[Python] Informationen zu Scraping-Objektiven von price.com
Rufen Sie Optionen in Python sowohl aus JSON-Dateien als auch aus Befehlszeilenargumenten ab
Sammeln von Informationen von Twitter mit Python (Twitter API)
Abrufen von Eigenschaftsinformationen durch Scraping mit Python
Holen Sie sich HTML von Element mit Python-Selen
Erhalten Sie Wechselkurse von offenen Wechselkursen in Python
[Hinweis] Mit Python Daten von PostgreSQL abrufen
Holen Sie sich Tastenanschläge von / dev / input (python evdev)
Holen Sie sich den Batteriestand von SwitchBot mit Python
[Python] Python-Paketinformationen mit der PyPI-API abrufen
Holen Sie sich mit Python die Niederschlagswahrscheinlichkeit aus XML
Aufrufbefehle von Python (Windows Edition)
[Python] Holen Sie sich die Hauptfarbe aus dem Screenshot
Abrufen des Metrikverlaufs von MLflow in Python
[Python] Ich habe versucht, den Typnamen als Zeichenfolge aus der Typfunktion abzurufen