コンテンツにスキップ

Compute

PyTorch + CUDA

余計な主張のない選択肢です。公式の PyTorch イメージ、ビルドに合わせた CUDA、SSH 経由の root シェル、そのほかに邪魔をするものはありません。

テンプレート一覧には、上流の 4 つのタグがあります。いずれも公式の pytorch/pytorch イメージで、プラットフォームの SSH レイヤー以外に手は加えていません。

テンプレートイメージPyTorchCUDA
PyTorch 2.8 - Cuda 12.9pytorch/pytorch:2.8.0-cuda12.9-cudnn9-runtime2.8.012.9
PyTorchpytorch/pytorch:2.5.1-cuda12.4-cudnn9-runtime2.5.112.4
PyTorch 2.2 - Cuda 12.1pytorch/pytorch:2.2.0-cuda12.1-cudnn8-runtime2.2.012.1
PyTorch 2.1 - Cuda 11.8pytorch/pytorch:2.1.0-cuda11.8-cudnn8-runtime2.1.011.8

古いものに固定される理由——古い CUDA でビルドされた依存関係や、PyTorch のメジャーバージョンに追いついていないリポジトリ——がなければ、最新を選んでください。

始める前に知っておくべきことが 2 つあります。

  • Web UI はありません。 これらのテンプレートはポート 80 で何も動かさないため、https://<your-slug>.instance.grafilab.ai は応答しません。作業は SSH で行い、ブラウザで見たいものは自分で起動して Web Access で公開します。
  • これらは devel ではなく runtime イメージです。 CUDA のランタイムライブラリは入っていますが、ツールキットは入っていないため nvcc がありません。インストール時に CUDA カーネルをコンパイルするパッケージは失敗します。トラブルシューティング を参照してください。

スクリプト向けのテンプレートです。起動して回しっぱなしにする学習ループ、評価のスイープ、独自の CLI を持つリポジトリなど。クリーンな環境と、それを完全に制御する権限が手に入ります。

ブラウザでセルごとに作業したいなら、JupyterLab が同じ考え方にノートブックサーバーを載せたものです。ブラウザ上の IDE でファイルを編集したいなら code-server を使ってください。

インスタンスをデプロイし、ステップ 2 の Template Selection で PyTorch のカードのいずれかを選びます。学習または推論に使うモデルに合わせて、カードの VRAM を選んでください。詳しい手順は GPU インスタンスをデプロイする にあります。

  1. In the console open My Instance (https://app.grafilab.ai/orders) and find the card for your instance. Wait until its status reads Active.

  2. Click Connect. The Connect with SSH dialog shows an SSH Connect command and a Password.

  3. Copy the command into a terminal, press Enter, and paste the password when prompted. You land in a root shell inside the container.

まず、ドライバがカードを認識しているか確認します。

ターミナルウィンドウ
nvidia-smi

次に、PyTorch から見えているか確認します。

ターミナルウィンドウ
python -c "import torch; print(torch.__version__, torch.cuda.is_available(), torch.cuda.get_device_name(0))"

True と、レンタルしたカードの名前が出れば正常です。False になる場合は トラブルシューティング を参照してください。

コードとデータをマシンに載せる

Section titled “コードとデータをマシンに載せる”
ターミナルウィンドウ
git clone https://github.com/<owner>/<repo>.git
cd <repo>
pip install -r requirements.txt

コーヒー休憩より長くかかるものは tmux の中で実行し、SSH が切れてもジョブが生き残るようにしてください。

ターミナルウィンドウ
tmux new -s train
python train.py

Ctrl-b に続けて d でデタッチ、tmux attach -t train で戻ります。出力をファイルに残せればよいだけなら、nohup python train.py > train.log 2>&1 & でも構いません。

はじめからポート 80 で動くサービスはないので、ブラウザから触りたいものは自分で起動してプロキシ経由でマッピングします。localhost ではなく、すべてのインターフェースにバインドしてください。

ターミナルウィンドウ
pip install jupyterlab
jupyter lab --ip 0.0.0.0 --port 8888 --allow-root

続いてインスタンスカードの Web Access を開き、Service Name と Port に 8888 を指定してマッピングを追加し、生成されたプロキシ URL を使います。Gradio アプリなど、ほかのサーバーでも同じです。手順は インスタンスを管理する にあります。

Nothing persists past the rental

Instances have no persistent volume. Anything you write at runtime — downloaded models, installed packages, notebooks, outputs — lives in the container for the lifetime of the rental and is gone when it expires. Before Expire at, back up the folders you care about to Grafilab storage and download the archive.

守るべきはチェックポイントです。書き出し先を意識して選び、実行が生成するそばからマシンの外——git リモート、オブジェクトストレージ、Hugging Face のリポジトリ——へ送り出し、インスタンス上にしかないものは Expire at の前にインスタンスカードの Backup で保存してください。

  • GPU ノードなのに torch.cuda.is_available() が False を返す。 ノードの NVIDIA ドライバが、イメージのビルドに使われた CUDA より古いということです。より古い CUDA タグのテンプレート——2.5.1-cuda12.4 や 2.2.0-cuda12.1——で起動し直すか、別のノードを選んでください。
  • nvcc: command not found、またはパッケージが CUDA 拡張のビルドに失敗する。 これらは CUDA ツールキットのない runtime イメージです。ビルド済みの wheel があればそれを入れるか、対応する -devel のイメージタグからカスタムテンプレートを作ってください。カスタムテンプレート を参照してください。
  • 起動直後の Connection refused。 コンテナがまだ起動中です。インスタンスカードが Active になるまで待ってください。
  • DataLoader が共有メモリのエラーで落ちる。 コンテナの /dev/shm は 2 GB です。num_workers を下げるか、torch.multiprocessing.set_sharing_strategy("file_system") を設定してください。