Skip to main content

gpurunner

Один CLI для GPU-задач на чужому залізі: подати, стежити, забрати результат, не переплатити. Сім бекендів за одним інтерфейсом — Kaggle, Modal, Google Colab, Vast.ai, Lightning, Beam, Saturn Cloud.

In English. gpurunner is a command-line tool that submits GPU jobs (OCR, handwriting recognition, model training) to Kaggle, Modal, Colab, Vast.ai, Lightning, Beam or Saturn Cloud through one interface, tracks them in a local manifest, fetches outputs and keeps an eye on spending. Documentation and CLI messages are in Ukrainian. It works on its own and also serves as the GPU rental module of nyshporka.

Статус: альфа (0.2). Команди й машинний вивід, на які спираються інші програми, описано в docs/contract.md і в межах мінорної версії не міняються; решта ще рухається.

1. Навіщо

  • Той самий job іде на безкоштовну квоту Kaggle, на Modal із посекундним білінгом або на орендований бокс Vast — міняється лише -b.
  • Кожен прогін лишає запис у локальному маніфесті: що подано, куди, з якими параметрами, чим закінчилось і чому впало.
  • Гроші видно до старту: прорахунок вартості, стеля витрат, залишки по бекендах (gpurunner balance), і що зараз тарифікується (gpurunner burn).
  • Для довгих заходів на Vast є наглядач (gpurunner htr supervise): орендує бокс, стежить за темпом, доганяє пропуски, звіряє повноту й гасить оренду сам.
  • Бакет S3 для цього не обов'язковий: htr plan --transport box везе кадри й ваги на саму машину по scp і піднімає на ній крихітний склад, з якого їх бере робота. Чекпоінти наглядач забирає додому сам — машина може вмерти.

2. Установлення

Потрібен Python 3.11+.

⚠ На PyPI пакет і репозиторій звуться gpuhire, а команда в терміналі, модуль і змінні оточення — gpurunner. Ім'я gpurunner на PyPI зайняте схожим проєктом (gpu-runner), і майданчик не дав його взяти; перейменовувати команду заради цього не стали. Тобто pip і git clone кажуть одне ім'я, а --help і GPURUNNER_* — інше, і це не помилка.

pip install gpuhire                 # ядро + Kaggle
pip install "gpuhire[modal]"        # + Modal
pip install "gpuhire[vast,r2]"      # + Vast.ai і доставка даних через R2
pip install "gpuhire[all]"          # modal, colab, vast, web, r2

lightning, beam, saturn ставляться поіменно: їхні SDK важкі й потрібні одиницям. Як модуль Нишпорки: pip install "gpuhire[vast,r2]" поруч із нею — Нишпорка знайде плагін сама.

Поруч із Нишпоркою gpurunner стає її бекендом оренди: оголошує entry point nyshporka.cloud, і nysh cloud сам орендує бокс на Vast.ai, читає справу по SSH, забирає результат і гасить оренду. Від людини — лише ключ API (gpurunner auth vast --key <КЛЮЧ>) і баланс; SSH-ключ генерується сам, R2 не потрібен. Докладно — docs/nyshporka.md.

З вихідного коду:

git clone https://github.com/SERGIUSH-UA/gpuhire && cd gpuhire
uv sync --extra all
uv run gpurunner --version

3. Перший прогін

gpurunner auth kaggle --verify        # обліковка на місці?
gpurunner ls                          # які є job'и й бекенди
gpurunner run net-probe -b kaggle     # найдешевша перевірка: чи є в кернелі мережа
gpurunner watch <handle>              # чекати до кінця
gpurunner fetch <handle> -o out/      # забрати вихід

--dry-run перевіряє параметри й показує код, який поїде на бекенд, нічого не подаючи. Параметри job'а — -p ключ=значення (значення розбирається як JSON, якщо виходить).

🔴 Vast тарифікує погодинно й не спиняється після завершення job'а. Після fetch обов'язково gpurunner cancel <handle>; що зараз горить, показує gpurunner burn.

4. Бекенди

бекенд extra обліковка особливість
kaggle — ~/.kaggle/kaggle.json або KAGGLE_USERNAME + KAGGLE_KEY безкоштовна тижнева квота; вхід — Kaggle Dataset
modal modal ~/.modal.toml (modal token new) посекундний білінг; дані — у томі Modal; локальний Python має бути 3.12 — як в образі
colab colab OAuth-клієнт Google у теці конфігурації нотбук треба запустити руками: Runtime → Run all
vast vast VAST_API_KEY або файл vast_api_key оренда боксу по SSH; тарифікація до cancel
lightning lightning LIGHTNING_USER_ID, LIGHTNING_API_KEY Studio + teamspace
beam beam BEAM_TOKEN або ~/.beam/config.ini стеля витрат на прогін і на місяць
saturn saturn SATURN_TOKEN, SATURN_BASE_URL типи інстансів — gpurunner saturn sizes

gpurunner auth <бекенд> показує, де шукається обліковка й чого бракує; --verify робить пробний запит. Тека конфігурації — %LOCALAPPDATA%\gpurunner (Windows) або ~/.config/gpurunner; перекривається GPURUNNER_CONFIG_DIR. Приклади файлів — у docs/config/.

5. Job'и

Перелік з описами й бекендами — gpurunner ls; готові набори параметрів із прорахунком вартості — gpurunner recipes <job>.

Загальні:

job що робить
net-probe чи є у віддаленому кернелі мережа
paddleocr PaddleOCR PP-OCRv5 по переліку PDF за посиланнями → txt і json по сторінках
vit_classifier, crop_verifier, dino_surname_verifier дотренування бінарного класифікатора зображень (ViT / DINOv2) і скоринг
yolo_spotter дотренування YOLO на пошук одного рукописного слова
churro, rukopys_ocr сторінкове читання історичних документів VLM-моделями
kraken_lines, trocr_lines сегментація сторінок на рядки й читання рядків
kraken_train, parseq_train трен моделей читання рядків (kraken, PARSeq); на Vast ваги кожної епохи по ходу трену їдуть у R2 — див. train-out
htr_eval, htr_lines_eval, htr_page_bench, paddle_page_bench, spotter_page_bench бенчмарки читання рукопису

Потребує пакета nyshporka:

job що робить
htr_case прогін архівної справи раннером Нишпорки на орендованій карті; раннер і моделі приїжджають архівом ассетів, gpurunner доставляє їх на бокс і стежить

Команди gpurunner htr … (план, передполіт, наглядач, забір чекпоінтів, калібрування) обслуговують саме htr_case.

6. Команди

run · status · watch · logs · fetch · cancel · sweep      життєвий цикл прогону
ls · recipes · balance · burn · reconcile · dash           огляд, гроші, звірка
auth <бекенд>                                              обліковки
dataset push|files                                         Kaggle-датасети
drive push|files                                           вхідні дані Colab у Google Drive
vast offers|instances · saturn sizes                       ринок і типи машин
boxes ls|explain|ban|star|prune|forget                     реєстр орендних боксів
bg start|status|stop                                       довгі задачі у фоні
htr plan|preflight|supervise|state|stop|quiesce|fetch-ckpt|calibrate|append
train-out ls|get|prune|convert                            ваги епох трену в R2 (Vast)

gpurunner <команда> --help — повний перелік прапорців.

7. Реєстр боксів

Кожна оренда на Vast лишає рядок «обіцяне поруч із виміряним»: яке залізо заявив хост і який темп воно дало. З цього складається вердикт машини, і наступний пошук оферти погані машини оминає, а добрі шукає адресно.

Реєстр — дані користувача, а не пакета: у ньому ідентифікатори машин, ціни й назви власних прогонів. Лежить у GPURUNNER_REPO_DATA_DIR, без змінної — у <тека даних>/registry. Змінну варто спрямувати в теку власного git-репозиторію: тоді в дифі видно, коли й чому бокс став поганим.

8. Для програм

Інші програми кличуть gpurunner окремим процесом і читають --json: останній рядок stdout, що починається з {, — один об'єкт. Форма відповідей, перелік стабільних команд, схема plan.json і змінні оточення — docs/contract.md.

Другий шлях — плагін у тому самому інтерпретаторі: клас gpurunner.plugins.nyshporka_cloud:VastRent (entry point nyshporka.cloud) орендує й гасить бокс для конвеєра Нишпорки. Методи, форма Box.meta і необов'язкові status / login / estimate — §6 контракту.

9. Розробка

uv sync --extra all
uv run pytest
uv run ruff check .
uv run mypy src
python tools/scan_private.py          # ворота проти приватних даних

Тести не ходять у мережу й не потребують обліковок. Порядок внесення змін і чекліст релізу — CONTRIBUTING.md; про вразливості — SECURITY.md.

10. Ліцензія

MIT — див. LICENSE.

Metadata

Release files for gpuhire 0.9.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for gpuhire 0.9.0
File Size Uploaded Provenance
gpuhire-0.9.0.tar.gz 1.3 MB With provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for gpuhire 0.9.0
File Interpreter ABI Platform
gpuhire-0.9.0-py3-none-any.whl Python 3 none any Details

Total release size: 2.3 MB

Release files / gpuhire-0.9.0.tar.gz

Download URL gpuhire-0.9.0.tar.gz
Size 1.3 MB
Tags Source
SHA-256 checksum
How to use checksums
8941ff41aa360b52ce5bdeefcbf8bea7ce9fe4f325c15f6de2e2d1b02dd97438
BLAKE2b-256 checksum
How to use checksums
a03adbc116fefb92ee56b51f8365da7d71922b80c1368fa5fcbfd7ce4d34ebb7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 18, 2026.

Transparency log

Release files / gpuhire-0.9.0-py3-none-any.whl

Download URL gpuhire-0.9.0-py3-none-any.whl
Size 938.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
9fe921c06bd3f41180867ffa486810164d6a38066430ab3e2297af9706aaa693
BLAKE2b-256 checksum
How to use checksums
4d31ffe4d9b7b298516fe758c44e1ffcd31b83d1155db815af9d7a62642917bc
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 18, 2026.

Transparency log

Security for gpuhire 0.9.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

All 2 files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for gpuhire-0.9.0.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 18, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

0.9.0 This release

2 release files Full provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page