A web interface of gpustat
---
aggregate gpustat
across multiple nodes.
NOTE: This project is in alpha stage. Errors and exceptions are not well handled, and it might use much network resources. Please use at your own risk!
pip install gpustat-web
Python 3.6+ is required.
Launch the application as follows. A SSH connection will be established to each of the specified hosts.
Make sure ssh <host>
works under a proper authentication scheme such as SSH authentication.
gpustat-web --port 48109 HOST1 [... HOSTN]
You might get "Host key is not trusted for <host>
" errors. You'll have to accept and trust SSH keys of the host for the first time (it's stored in ~/.ssh/known_hosts
);
try ssh <host>
in the command line, or ssh -oStrictHostKeyChecking=accept-new <host>
to automatically accept the host key. You can also use an option gpustat-web --no-verify-host
to bypass SSH Host key validation (although not recommended).
Note that asyncssh does NOT obey the ~/.ssh/config
file
(e.g. alias, username, keyfile), so any config in ~/.ssh/config
might not be picked up.
https://HOST:PORT/
: A webpage that updates automatically through websocket.https://HOST:PORT/gpustat.html
: Result as a static HTML page.https://HOST:PORT/gpustat.txt
: Result as a static plain text.https://HOST:PORT/gpustat.ansi
: Result as a static text with ANSI color codes. Trycurl https://.../gpustat.ansi
Query strings:
?nodes=gpu001,gpu002
: Select a subset of nodes to query and display
By default the web server will run as a HTTP server.
If you want to run a secure SSL/TLS server over the HTTPS protocol, use --ssl-certfile
and --ssl-keyfile
option.
You can use letsencrypt (certbot
) to create a pair of SSL certificate and keyfile.
Troubleshoothing: Verify SSL/TLS handshaking (if TLS connections cannot be established)
openssl s_client -showcerts -connect YOUR_HOST.com:PORT < /dev/null
To see CPU usage as well:
python -m gpustat_web --exec 'gpustat --color --gpuname-width 25 && echo -en "CPU : \033[0;31m" && cpu-usage | ascii-bar 27'
MIT License
Copyright (c) 2018-2023 Jongwook Choi