1. ホーム
  2. python

[解決済み] Google Colaboratory: GPUに関する誤解を招く情報 (一部のユーザーは5%のRAMしか利用できない)

2022-07-29 01:06:09

質問

update: この質問は Google Colab の "ノートブックの設定に関連するものです。ハードウェア アクセラレータ。GPU" に関連しています。この質問は、"TPU" オプションが追加される前に書かれたものです。

Google Colaboratory が無料の Tesla K80 GPU を提供するという複数の興奮するアナウンスを読み、私は以下を実行しようとしました。 fast.ai レッスンを実行しようとしましたが、決して完了せず、すぐにメモリ不足になりました。私はその原因を調べ始めました。

要するに、「無料の Tesla K80」はすべての人にとって「無料」ではなく、ある人にとっては「無料」のほんの一部でしかないということです。

私はカナダの西海岸からGoogle Colabに接続しましたが、24GBのGPU RAMのうち、私は0.5GBしか使用できませんでした。他のユーザーは 11GB の GPU RAM にアクセスできます。

0.5GB の GPU RAM は、ほとんどの ML/DL の作業には明らかに不十分です。

何が得られるかわからない場合、私がかき集めた小さなデバッグ関数があります (ノートブックの GPU 設定でのみ動作します)。

# memory footprint support libraries/code
!ln -sf /opt/bin/nvidia-smi /usr/bin/nvidia-smi
!pip install gputil
!pip install psutil
!pip install humanize
import psutil
import humanize
import os
import GPUtil as GPU
GPUs = GPU.getGPUs()
# XXX: only one GPU on Colab and isn’t guaranteed
gpu = GPUs[0]
def printm():
 process = psutil.Process(os.getpid())
 print("Gen RAM Free: " + humanize.naturalsize( psutil.virtual_memory().available ), " | Proc size: " + humanize.naturalsize( process.memory_info().rss))
 print("GPU RAM Free: {0:.0f}MB | Used: {1:.0f}MB | Util {2:3.0f}% | Total {3:.0f}MB".format(gpu.memoryFree, gpu.memoryUsed, gpu.memoryUtil*100, gpu.memoryTotal))
printm()

他のコードを実行する前に、jupyter notebookでそれを実行すると、私に与えます。

Gen RAM Free: 11.6 GB  | Proc size: 666.0 MB
GPU RAM Free: 566MB | Used: 10873MB | Util  95% | Total 11439MB

フルカードにアクセスできる幸運なユーザは見ることができます。

Gen RAM Free: 11.6 GB  | Proc size: 666.0 MB
GPU RAM Free: 11439MB | Used: 0MB | Util  0% | Total 11439MB

GPUtil から借用した GPU RAM の利用可能性に関する私の計算に、何か欠陥があると思いますか?

このコードをGoogle Colab notebookで実行した場合、同様の結果が得られることを確認できますか?

私の計算が正しければ、空き箱のGPU RAMをより多く取得する方法はありますか?

update: なぜ一部のユーザーが他のユーザーの 20 分の 1 を取得するのかわかりません。たとえば、このデバッグを手伝ってくれた人はインド出身ですが、彼は全部を取得しました!

ノート : GPU の一部を消費している可能性のあるスタック/暴走/並列ノートブックを殺す方法についての提案は、これ以上送らないでください。どのように切り取っても、もしあなたが私と同じ状況にあり、デバッグ コードを実行していたなら、まだ合計 5% の GPU RAM があることがわかるでしょう (まだこの更新の時点では)。

どのように解決するのですか?

このスレッドの文脈では無効であることを示唆する回答が何十件も出てくるのを防ぐため、!kill -9 -1 を提案し、このスレッドを閉じましょう。

答えは簡単です。

この記事を書いている時点では、Google は単純に、一部の人には GPU の 5% しか与えず、他の人には 100% を与えています。これは単純なことです。

dec-2019 update: 問題はまだ存在する - この質問のupvotesはまだ続いています。

Mar-2019 update: 1 年後、Google 社員 @AmiF が事態についてコメントし、問題は存在せず、この問題があるように見える人は、メモリを回復するためにランタイムをリセットする必要があると述べています。しかし、アップボートは続いており、私には、@AmiFの提案にもかかわらず、この問題がまだ存在していることを物語っているように思えます。

Dec-2018 update: 私は、Google がロボットが非標準的な動作を検出したときに、特定のアカウントのブラックリスト、またはおそらくブラウザのフィンガープリントを持っているかもしれないという仮説を立てています。まったくの偶然かもしれませんが、かなり長い間、Google Re-captcha を必要とするあらゆる Web サイトで、通過を許可される前に何十ものパズルを通過しなければならず、達成に 10 分以上かかることがよくある、という問題が発生しました。これは何ヶ月も続きました。今月になって突然、パズルがまったくなくなり、1年前と同じように、どんな Google Re-captcha もマウスを1回クリックするだけで解決するようになりました。

なぜこの話をするのか?それは のGPU RAMを100%使わされたからです。 . だから、もしあなたが理論上のGoogleブラックリストに載っているなら、たくさんのリソースを無料で与えられるほど信頼されていないのではないかというのが、私の疑念です。GPUアクセスの制限とRe-captchaの悪夢の間に同じ相関関係を見いだせる人はいるのでしょうか。私が言ったように、それは完全に偶然の一致である可能性もあります。