HuggingFace Hub スペース : GPU スペースの使用 (翻訳/解説)
翻訳 : (株)クラスキャット セールスインフォメーション
作成日時 : 01/04/2023
* 本ページは、HuggingFace Hub Spaces の以下のドキュメントを翻訳した上で適宜、補足説明したものです:
* サンプルコードの動作確認はしておりますが、必要な場合には適宜、追加改変しています。
* ご自由にリンクを張って頂いてかまいませんが、sales-info@classcat.com までご一報いただけると嬉しいです。
- 人工知能研究開発支援
- 人工知能研修サービス(経営者層向けオンサイト研修)
- テクニカルコンサルティングサービス
- 実証実験(プロトタイプ構築)
- アプリケーションへの実装
- 人工知能研修サービス
- PoC(概念実証)を失敗させないための支援
- お住まいの地域に関係なく Web ブラウザからご参加頂けます。事前登録 が必要ですのでご注意ください。
◆ お問合せ : 本件に関するお問い合わせ先は下記までお願いいたします。
- 株式会社クラスキャット セールス・マーケティング本部 セールス・インフォメーション
- sales-info@classcat.com ; Web: www.classcat.com ; ClassCatJP
HuggingFace Hub スペース : GPU スペースの使用
Space のトップのナビゲーションバーにある Setting ボタンを使用して、貴方の Space を GPU アクセラレータを使用するようにアップグレードできます。サイドプロジェクトのためにクールなデモを構築している場合には無償アップグレードをリクエストすることさえできます!
Longer-term, we would also like to expose non-GPU hardware, like HPU, IPU or TPU. If you have a specific AI hardware you’d like to run on, please let us know (website at huggingface.co).
As soon as your Space is running on GPU you can see which hardware it’s running on directly from this badge:
フレームワーク固有の要件
殆どの Space は GPU アップグレードの後、そのまま動作するはずですが、貴方が使用した機械学習フレームワークの CUDA バージョンをインストールする必要がある場合があります。貴方の Space が改良されたハードウェアを活用できることを確実にするため、(以下の) このガイドに従ってください。
PyTorch
組み込み CUDA ドライバーと互換なバージョンの PyTorch をインストールする必要があります。requirements.txt ファイルに以下の 2 行を追加すれば動くはずです :
--extra-index-url https://download.pytorch.org/whl/cu113
torch
app.py で以下のコードを実行して Space ログで出力を確認すれば、インストールが成功したか検証できます :
import torch
print(f"Is CUDA available: {torch.cuda.is_available()}")
# True
print(f"CUDA device: {torch.cuda.get_device_name(torch.cuda.current_device())}")
# Tesla T4
多くのフレームワークは GPU が利用可能であれば自動的に使用します。これは 🤗 transformers のパイプライン、fastai や他の多くのものに当てはまります。他のケース、あるいは PyTorch を直接使用する場合には、計算が CPU 上ではなくアクセラレータ上で行われることを確実にするためにモデルとデータを GPU に移動する必要があるかもしれません。PyTorch の .to() 構文を利用できます、例えば :
model = load_pytorch_model()
model = model.to("cuda")
JAX
JAX を使用する場合、貴方の GPU Space でインストールされている CUDA と cuDNN バージョンと互換なバイナリを指定する必要があります。あなたの requirements.txt ファイルに以下の 2 行を追加してください :
-f https://storage.googleapis.com/jax-releases/jax_cuda_releases.html
jax[cuda11_cudnn805]
その後、以下のコードから出力をプリントして Space ログでそれを確認することでインストールを検証できます。
import jax
print(f"JAX devices: {jax.devices()}")
# JAX devices: [StreamExecutorGpuDevice(id=0, process_index=0)]
print(f"JAX device type: {jax.devices()[0].device_kind}")
# JAX device type: Tesla T4
Tensorflow
デフォルトの tensorflow インストールは CUDA デバイスを認識するはずです。requirements.txt ファイルに tensorflow を追加して app.py で以下のコードを使用すれば Space ログで確認できます。
import tensorflow as tf
print(tf.config.list_physical_devices('GPU'))
# [PhysicalDevice(name='/physical_device:GPU:0', device_type='GPU')]
課金
Spaces の課金はハードウェア使用量に基づき、分単位で計算されます。
Space のライフサイクルの間、Space が実際に動作しているときだけに課金されます。つまり、ビルドやスタートアップの間にはコストはかかりません。
稼働中の Space に障害が発生し始めた場合には、自動的にサスペンドされますので、課金も停止します。
無料のハードウェアで動作する Spaces は長期間 (e.g. 2日間) 使用されない場合には自動的にサスペンドされます。アップグレードされた Spaces は使用がない場合でさえも無期限に動作します。Space の課金を中断するために、ハードウェアを CPU basic に変更することができます。
アップグレードされたハードウェアを使用する Spaces に対して、カスタム遅延後の Space の自動サスペンション設定のような、追加のライフサイクル制御は間もなく提供される予定です。
課金についての追加情報は dedicated Hub-wide セクション で見つけられます。
カスタム・スリープ時間の設定
Space がデフォルトの cpu-basic ハードウェアで動作している場合、設定時間 (現在、72 時間) 以上の間使用されない (inactive) 場合にはスリープします。Space にアクセスした人は誰でもそれを自動的に再起動します。
貴方の Space が決して停止しない (never to deactivate) ようにしたい場合や、カスタム・スリープ時間を設定したい場合には、有料ハードウェアにアップグレードする必要があります。
デフォルトでは、アップグレードされた Space は決してスリープしません。けれども、アップグレードされた Space に対してはそれが使用されないときにアイドル (stopped stage) になるようにこの設定を使用できます 😴。それがスリープ中はアップグレードされたハードウェアに対して課金はされません。Space は新しい訪問者を受け取れば、「目覚める (‘wake up’)」か再起動されます。
そして貴方の Spaces のハードウェア設定で以下のインターフェイスが利用可能です :
The following options are available:
以上