vast.ai で RTX 5090 を借りて ローカル LLM を動かす|2026-08 版
第 5 章

offer カードの読み方

価格だけで選ぶと失敗する。信頼度・回線・PCIe 世代・ディスクを読む

この章で分かること

offer カードは「値札」ではなく「契約書」

検索結果に並ぶ 1 行を offer(= ホストが「この構成なら貸す」と出している売り物)と呼びます。offer カードはただの値札ではありません。RENT を押した瞬間、そのカードに書かれている「いまの条件」でホストと自分の間にレンタル契約が成立します。あとから条件を交渉する窓口はありません。

取り違えやすい 3 点を先に潰します。

Max Duration を見ないと、作業の途中で消える

公式は「lifetime が切れたらインスタンスは失われるものと常に想定し、それまでに重要なデータをコピーして出せ」と書いています。さらに期限切れのインスタンスは期限切れの 48 時間後に削除されることがあり、期限切れの状態では再起動できません。3 日かかる作業を、Max Duration が 2 日の offer で始めてはいけません。

カードの 19 項目は 6 つの束に畳める

公式ドキュメントは、カードの表示項目を RENT ボタンを含めて 19 個列挙しています。「載るか・速いか・待つか・外に出せるか・いくらか・落ちないか」の 6 つに畳んで見れば、初回でも判断できます。

カードが並ぶ画面は Search / Create ページです。公式が「良いマシンを見つけてインスタンスを作るメインの入口」と呼んでいる場所で、絞り込みのコントロールは画面の上部と左側に、いま選んでいるテンプレート(= 起動時に走らせる Docker イメージ一式の設定。第 7 章で扱います)は左上に出ます。テンプレートを変えるボタンの名前は Change Template です。

offer カード(検索結果の 1 行) この数字が意味すること Location and Host ID US geolocation / host_id GPU Model 1× RTX 5090 gpu_name / num_gpus GPU Memory 32607 MB gpu_ram。64 件すべて同値 Motherboard details PCIE 5.0 pci_gen。3.0 のホストも実在 Network Bandwidth 下り 752 Mbps inet_down。実測の中央値 Network Ports 98 direct_port_count。外に出す穴 Total available disk 612 GB disk_space。ここから確保する DLPERF score 198.8 dlperf。LLM 推論の指標ではない Reliability Score 98.9% reliability / reliability2。60% 始まり Price 0.4037 USD/時 dph_total = GPU + 確保ディスク分
図 5-1 左がカードの表示名、右がその数字の意味です。19 項目のうち、初回の判断に効く 10 項目だけを抜きました。数値は 2026-08-24 に取得した 1× RTX 5090(on-demand)64 件の中央値、地域と PCIE 世代はその 64 件に実在した例です。実際のカードはホストごとに違う数字が並びます。Price に色を付けたのは、この 1 項目が他の項目の帰結として決まるからです。
束カードで見る項目何が決まるか
載るかGPU Memory / GPU Modelモデルが VRAM(= GPU 内部の作業用メモリ)に収まるかの上限。5090 は 32607 MB
速いかDLPERF score / Performance / GPU Memory の帯域同じ 5090 でもホスト側の詰まりで差が出る
待つかMotherboard details / Network Bandwidth / Disk speedモデルを VRAM に載せ終わるまでの時間
外に出せるかNetwork PortsJupyter(= ブラウザ上でコードを書いて動かす環境)や API を公開できる穴の数
いくらかPrice / Total available disk / Max Duration総額と、いつ強制的に終わるか
落ちないかReliability Score / Location and Host ID / 検証ラベル作業の途中で止まらないか

6 束のうち「速いか」に出てくる DLPERF score だけは補足が要ります。これは vast.ai 独自のディープラーニング性能スコアで、ResNet50 のような画像認識モデルを学習させたときの 1 秒あたり反復回数を近似する指標です。公式が挙げる例では V100 が約 21、2080 Ti が約 14、1080 Ti が約 10 で、「V100 は 1080 Ti のおよそ 2 倍速い」と読みます。GPU 単体ではなく GPU とホストの組み合わせに対するスコアなので、同じ 5090 でも PCIe・熱・電力で詰まるホストでは下がります。ただしLLM が 1 秒あたり何文字を生成するかの指標ではありません。5090 の DLPERF は公式に公開されておらず、2026-08-24 時点の実測中央値は 198.8 でした。

価格の上にマウスを乗せると、GPU レンタル・ストレージ・帯域の内訳が開きます。「思ったより高い」と感じたら、まずここを開いてどの成分が膨らんでいるのかを確かめます。

なお検索画面のフィルタ項目を全部列挙した公式ページは存在しません。あるのは「offer カードに出ている項目のほとんどは検索フィルタで絞り込める」という 1 文だけです。「カードの項目名 ≒ 検索フィルタ ≒ API のフィールド名」と考え、API のフィールド一覧を辞書として引くのが確実です。

Price は 1 つの数字ではない

公式は費用を GPU 本体・ストレージ・帯域の 3 成分に分けています。そしてカードの Price に入っているのは前の 2 つだけです。

dph_base GPU 本体の時間単価 running の毎秒だけ課金 + storage_total_cost 確保したディスク分 止めても毎秒課金 = dph_total = カードの Price この 1 つの数字 inet_down_cost / inet_up_cost USD/GB。カードの Price の外 残高から引かれる (更新は数秒ごと) 毎秒 転送バイトごと
図 5-2 上段の足し算がカードの Price(dph_total)です。下段の帯域料金はこの足し算に入らず、別の蛇口として残高を減らします。引き金が時間かバイト数かで分かれているのが要点です。

dph_total(カードの Price) = dph_base(GPU 本体) + storage_total_cost(確保したディスク分)

成分ごとに課金される引き金が違うところが要点です。GPU 本体はインスタンスが動いている毎秒。ストレージはインスタンスが存在してオンラインである毎秒、状態を問わず(動作中・停止中・イメージ読み込み中のすべて)。帯域は送受信されたバイトごとで、こちらも状態を問いません。残高の更新は数秒ごとです。

止めてもストレージ課金は続く

公式の警告そのままです。「停止してもストレージ課金は続く。課金を止めるにはインスタンスを完全に削除(destroy)せよ」。計算例: storage_cost の実測中央値は 0.200 USD/GB/月(2026-08-24 時点)なので、40 GB を 1 か月確保したままにすると 40 × 0.200 = 月 8 USD(1 USD = 150 円として約 1,200 円)。GPU を 1 時間動かす 0.4037 USD より、放置したディスクの方が高くつきます。

金額の目安を先に置きます。2026-08-24 時点の実測(1× RTX 5090、on-demand、借りられる状態の 64 件)で、最安 0.3215・中央値 0.4037・最高 0.6022 USD/時。1 USD = 150 円として 1 時間あたり約 48 円〜約 90 円、中央値で約 61 円です。offer を眺めているだけでは課金は始まりません。始まるのは RENT を押してからです。

同じ 64 件から、カードに並ぶ主な値の散らばりを出しました。すべて 2026-08-24 時点の実測値です。

カードに出る値(API フィールド)最小中央値最大
1 時間単価 dph_total(USD/時)0.32150.40370.6022
ストレージ storage_cost(USD/GB/月)0.1330.2000.867
下り速度 inet_down(Mbps)48752—
提供ディスク disk_space(GB)126123203
信頼度 reliability20.59430.9890—
ポート数 direct_port_count—98—
下り単価 inet_down_cost(USD/GB)—0.0026—
上り単価 inet_up_cost(USD/GB)—0.0039—

「—」は今回の取得で記録していない値です。相場は日単位で動くので、借りる日の数字は自分で取り直してください(コマンドは章末)。

Reliability Score と verified ラベル

Reliability Score は「そのマシンが過去どれだけ落ちずに動いてきたか」の指標です。読み方に癖があり、すべてのマシンが 60% から始まって、稼働実績を積むにつれて上がります。つまり 60% 台は「悪い」ではなく「まだ実績がない」に近い。公式の推奨ラインは重要な作業なら 95% 以上、レンタルが長期になるほど重要度が上がるとされています。指定は 0〜1 の小数(画面の % を 100 で割った値。95% なら {"gte": 0.95})。なお API のレスポンスには reliability と reliability2 の 2 つが入っていますが、両者がどう違うのかは公式ドキュメントに書かれていません。検索フィルタに指定できるのは reliability の方だけです。

もう 1 つのラベルが検証状態です。3 段階あります。

「既定で除外」が効かない経路がある

「既定で unverified を除外する」が確実に当てはまるのは、Web の検索画面と CLI です(CLI は既定クエリ 'external=false rentable=true verified=true' を持っています)。REST API は、公式ドキュメントでは verified の既定が {"eq": true} と書かれているのに、2026-08-24 に API キー無しで verified を指定せずに叩いたところ、返ってきた 64 件のうち 43 件が unverified / deverified でした(この章の実測値はすべてその 64 件です)。REST で verified だけに絞りたいなら既定に頼らず、"verified": {"eq": true} を自分で書いてください。

ここは公式の書きぶりどおりに 2 点伝えます。1 つ目、認定基準の数字は公式内で食い違っています(あるページは「TIER 2/3 または ISO 27001」、FAQ は「ISO 27001 および/または Tier 3/4」)。どちらも信じ込まず「認定データセンター」と読むのが安全です。2 つ目、unverified は「品質が悪い」を意味しません。検証は完全に自動で、需給によって判定が動的に変わります。エラーが検知されたマシンは一時的に deverified されて Unverified として現れ、復帰も自動、ほとんどのエラーは解決から 1〜2 時間で解除されます。

5090 を 1 枚だけ借りたい読者には、もう 1 つ構造的な事実が効きます。公式は「同一 GPU 種別なら枚数が多いほど verified になりやすい(8×5090 のほうが 2×5090 より、2× のほうが 1× より優先される)」と明記しています。つまり1 枚だけの 5090 は構造的に verified になりにくい。実測(2026-08-24 時点、64 件)でも verified は 21 件、33% で、1 時間単価の中央値は verified も非 verified も同じ 0.404 USD/時でした。「verified は割高」も「unverified は危険」も、この時点の 5090 には当てはまりません。ラベルで一括判断せず reliability の数字で個別に見ます。

同じ 5090 でも待ち時間は何倍も変わる

ここが「価格だけで選ぶと失敗する」のいちばん具体的な理由です。GPU が同じ RTX 5090 でも、モデルのファイルを VRAM に載せ終わるまでの時間はホストによって何倍も違います。効くのは 3 つです。

ディスク上の モデルファイル pci_gen 5.0 GPU の VRAM 32607 MB 読み込みの待ち時間が短い ディスク上の モデルファイル pci_gen 3.0 GPU の VRAM 32607 MB 同じ 5090 でも待ち時間が伸びる
図 5-3 帯の太さが「一度に流せる量」です。左右の箱は上下でまったく同じ(同じモデル・同じ 5090・同じ 32607 MB)で、違うのは通り道の世代だけ。具体的な GB/s はカードの Motherboard details に出るので、候補どうしで比べます。

計算例(1 GB = 8 Gbit の単純計算。速度は 2026-08-24 時点の実測値): 20 GB のモデルを落とすとき、752 Mbps なら約 3.5 分ですが、48 Mbps では約 56 分かかります。差は約 52 分。その間も GPU の時間課金は動いているので、最安の 0.3215 USD/時でも約 0.28 USD を「待つだけ」に払います。最安と中央値の価格差は 1 時間あたり 0.0822 USD ですから、遅い回線を 1 回引くだけで 3 時間分以上の値引きが消えます。

イメージ読み込み中(loading)の課金

公式 FAQ は起動が遅いときの説明で「loading 中は課金されない」と書いています。ただしこれは GPU のレンタル料の話で、ストレージ料は状態を問わず課金されます。起動は recommended template なら通常 5 分以内。大きなイメージだとダウンロードに 1 時間以上かかることもあり、20 分以上進まないなら別のマシンを試すのが公式の指示です。

外に穴を開けるつもりなら direct_port_count(カードの Network Ports)も見ます。実測(2026-08-24 時点)の中央値は 98 でした。verified の条件が「GPU 1 枚あたり最低 3 ポート開放、100 ポート推奨」なので、極端に少ないホストは Jupyter や API の公開でつまずきます。

安い順に並べても、1 位は押さない

高い 0.3215 0.3763 0.4037 0.6022 最安 第 1 四分位 中央値 最高(64 件中) 差 0.0822 USD/時 1 USD = 150 円として約 12 円 この差より効くのに価格に出ない項目 reliability / pci_gen / inet_down / disk_bw storage_cost / direct_port_count / duration
図 5-4 2026-08-24 に取得した 1× RTX 5090(on-demand、借りられる状態)64 件の 1 時間単価です。第 1 四分位は安い順に並べて 4 分の 1 の位置にある値、中央値は真ん中の値。最安から中央値までの幅はたった 0.0822 USD/時です。右に並べたのは、その差より結果に効くのにこの数直線に現れない項目です。

手順にすると 4 段です。

  1. 落とす条件を先に決める: GPU 1 枚・reliability 0.95 以上・pci_gen 4.0 以上・下り 300 Mbps 以上・ディスク 60 GB 以上・Max Duration は作業日数より長く。このうち公式が示している基準は reliability 0.95 以上だけで、残りは本書が「初回で待たされないための下限」として置いた目安です(下り 300 Mbps は、20 GB のモデルを 10 分弱で落とせる線)
  2. そのうえで価格の昇順に並べる
  3. 上から 3 件のカードを開く。価格にマウスを乗せて内訳を見て、storage_cost と Max Duration を比べる
  4. 迷ったら中央値付近を選ぶ。0.0822 USD/時(約 12 円)の差は、待ち時間 1 回で消える

条件をまとめて試すならコマンドが速いです。CLI(= 端末から打つ vastai コマンド。導入手順は第 8 章)ならこう書きます。

vastai search offers 'gpu_name=RTX_5090 num_gpus=1 reliability>0.95 pci_gen>=4.0 inet_down>300 disk_space>60 duration>3 rented=False' -o 'dph'

自分で置き換える箇所(プレースホルダ)はありません。第 8 章で vastai を入れたあとなら、この 1 行をそのまま貼れば動きます。条件をスペースで並べると AND になります。-o 'dph' は 1 時間単価の昇順(フィールド名の後ろに - を付けると降順)、duration>3 は「最大レンタル期間が 3 日より長い」、rented=False は「自分がすでに借りているマシンとの競合を避ける」です。クエリ全体をシングルクォートで囲むのを忘れないでください(> をシェルがリダイレクトと解釈します)。

この 1 行には書いていない条件がもう 3 つ効いています。CLI は既定クエリ 'external=false rentable=true verified=true' を持っているからです。つまり上のコマンドは既定で verified のマシンしか返しません。1 枚だけの 5090 は構造的に verified になりにくいので(前節)、これだけで 2026-08-24 の実測なら候補の約 3 分の 2 が消えます。unverified も候補に入れたいときは、公式例と同じようにクエリへ verified=False を書き足すか、-n(--no-default)で既定クエリごと無効化します。-n を使うと rentable=true も外れるので、いま借りられる offer だけを見たいなら rentable=True を自分で書き足してください。

REST API(= プログラムから叩く窓口)ならこうです。実測(2026-08-24)ではこのエンドポイントは API キー無しでも公開 offer を返しました(公式仕様は全エンドポイントで Bearer トークンを要求すると書いています)。

curl -s -X POST "https://console.vast.ai/api/v0/bundles" \
  -H "Content-Type: application/json" \
  -d '{"limit":64,"type":"ondemand","rentable":{"eq":true},
       "gpu_name":{"eq":"RTX 5090"},"num_gpus":{"eq":1},
       "reliability":{"gte":0.95},"gpu_ram":{"gte":30000},
       "order":[["dph_total","asc"]]}'

この例は verified を書いていないので、実測どおりなら unverified も混ざって返ります。verified だけに絞りたければ "verified": {"eq": true} を足してください。type の値は ondemand(ハイフン無し)です。公式ページの本文例には on-demand と書かれた箇所もありますが、値の定義はハイフン無しで、実測でもハイフン無しが通りました。

返る件数には上限があります。limit に 200 や 1000 を渡しても実測では 64 件しか返りませんでした(公式ドキュメントに上限の記述はありません)。全体を眺めたいなら、価格帯や国で条件を割って複数回叩きます。

そして、0 件が返ってきたときにまず疑う場所がここです。REST と CLI では書式も単位も違います。

フィールドREST API(bundles)CLI(vastai search offers)
gpu_nameスペース区切り。実測では "RTX 5090" で一致アンダースコア。RTX_5090
gpu_ramMB。32 GB は 30000 程度で指定GB。30(CLI が自動変換)
cpu_ramMBGB
duration秒。「今から最低これだけ使える」日。「最大レンタル期間」
最大 CUDAcuda_max_goodcuda_vers
1 時間単価dph_totaldph
inet_downドキュメントの表記は MB/sMb/s。カード表示は Mbps
検証状態の既定ドキュメント上は verified の既定が {"eq": true}(実測では効かなかった)既定クエリに verified=true。verified=False か -n で外す

inet_down の単位は公式内で表記が揺れています。カード表示と CLI が Mbps で一致し、実測の中央値 752 も Mbps として自然なので、本書では Mbps として読みます。duration は秒と日で意味も向きも違うため、REST と CLI を混ぜて書かないのが安全です。

つまずきポイント

「安い順に並べて 1 位を押した」

最安帯には非 verified のマシンが多く、pci_gen 3.0 や下り 48 Mbps のホストも混ざります(2026-08-24 の実測範囲に実在)。最安と中央値の差は 1 時間で 0.0822 USD しかないのに、遅い回線を引けば 20 GB のダウンロードで約 52 分、約 0.28 USD を待ち時間に払います。価格でソートするのは、落とす条件を決めたあとです。

「ディスクは後から増やせると思った」

検索画面のストレージのスライダーは検索フィルタであると同時に、これから作るインスタンスへの割り当て量の入力欄を兼ねています。だからここで決めた値がインスタンス作成時に確定し、あとから変更できません。既定値は Web の画面と CLI の create instance が 10GB、REST API が 8GB。LLM のウェイトは数十 GB になるので、公式の Tip どおり思っているより多めに確保します。足りなくなったら、より大きいディスクで作り直すしかありません。しかも止めているインスタンスにもディスク課金は続きます。

「フィルタをいじったら検索できなくなった」

Error: invalid_request 0 is not a valid search op が出たら、いま使っているテンプレートの extra filters に無効な項目が入っています。公式の対処はフィルタのリセットです。また RENT で offer is no longer available が出たら、その GPU スロットは他の人に取られています。需要が集中すると同じ offer を多数の人が同時に取りに行き、成功するのは 1 人だけなので、候補は 3 件持っておきます。

「gpu_frac を見なかった」

gpu_frac が 0.125 の offer は、GPU 8 枚挿しマシンの 1 枚だけを借りる契約です。同じマシンの他の 7 枚は別の人が使っています。カードの CPU Cores と System RAM が「割り当て / 総数」の形で出ているのはこのためです。データの前処理や量子化で CPU を使うつもりなら、この分数を必ず見ます。

理解度チェック

Q1. 検索しても unverified のマシンが出てきません。なぜですか?

既定で除外されているからです。CLI は既定クエリ 'external=false rentable=true verified=true' が効いているので、verified=False を書き足すか -n(--no-default)で無効化します。REST API も公式ドキュメント上は verified の既定が {"eq": true} ですが、2026-08-24 の実測では指定なしで unverified も返りました。狙った状態に絞るなら明示的に書くのが確実です。

Q2. カードの Price には帯域(通信)の料金が含まれていますか?

含まれていません。Price(dph_total)は GPU 本体(dph_base)と確保したディスク分(storage_total_cost)の合計です。帯域は inet_down_cost / inet_up_cost として USD/GB で別に、送受信されたバイトごとに課金されます。

Q3. Reliability 95% 以上に絞りたいとき、REST API には何と書きますか?

"reliability": {"gte": 0.95} です。画面の % ではなく 0〜1 の小数で渡します。

Q4. REST API に "gpu_name": {"eq": "RTX_5090"} を渡すとどうなりますか?

2026-08-24 の実測では 0 件になりました。REST にはスペース区切りの表示名 "RTX 5090" を渡します。アンダースコア表記は CLI 側の書式です。公式ドキュメント内でも表記が混在しているので、0 件が返ったらまずここを疑います。

Q5. 同じ 0.40 USD/時の RTX 5090 が 2 台。片方が明らかに待たされます。カードのどこを見ますか?

Motherboard details(pci_gen と理論上の最大 PCIE 帯域)、Network Bandwidth(inet_down)、Disk speed(disk_bw)、そして gpu_frac です。DLPERF score も GPU とホストの組み合わせのスコアなので参考になりますが、ResNet50 の学習のような一般的タスクを近似する指標で、LLM 推論の速度そのものではありません。

まとめ

次章では、同じ offer を「中断されない契約(On-demand)」「中断される契約(Interruptible)」「前払いで割引を取る契約(Reserved)」のどれで借りるかを、実測の値段差から決めます。