PyTorchバージョンとNVIDIA GPU Compute Capability Level サポート

PyTorchバージョンとNVIDIA GPU Compute Capability Level サポート
Photo by Christian Wiediger / Unsplash

古いPyTorchコード資産を持っている会社は、昔のコードが最新のPyTorchで動かない!最新のGPUで動かない!ということに遭遇することが多いのでしょうか。
今回は、PyTorchバージョン、対応GPU Capability Level 、対応CUDAバージョンについてまとめてみます。

PyTorchがサポートするGPUの Compute Capability

PyTorch バージョン サポートされる Compute Capability (SM) レベル
1.0.0 - 1.3.1 SM_35, SM_37, SM_50, SM_60, SM_61, SM_70
1.4.0 - 1.7.1 SM_37, SM_50, SM_60, SM_61, SM_70, SM_75
1.8.0 - 1.8.1 SM_37, SM_50, SM_60, SM_70, SM_75, SM_80
1.9.0 - 1.12.1 SM_37, SM_50, SM_60, SM_70, SM_75, SM_80, SM_86
1.13.0 - 2.0.1 SM_37, SM_50, SM_60, SM_70, SM_75, SM_80, SM_86, SM_90
2.1.0 以降 SM_50, SM_60, SM_70, SM_75, SM_80, SM_86, SM_90

PyTorchがサポートするPythonバージョン

PyTorch バージョン サポートされる Python バージョン
1.4.0 - 1.7.1 3.6, 3.7, 3.8
1.8.0 - 1.9.1 3.6, 3.7, 3.8, 3.9
1.10.0 - 1.12.1 3.7, 3.8, 3.9, 3.10
1.13.0 - 2.0.1 3.8, 3.9, 3.10, 3.11
2.1.0 以降 3.8, 3.9, 3.10, 3.11, 3.12

Compute Capabilityと代表的GPUラインナップ

SM_世代 データセンター/プロ向けGPU GeForce GPU
SM_100 (Blackwell) NVIDIA B100 (GB100), B200, GB202, GB203, GB205, GB206, GB207, NVIDIA B40 GeForce RTX 5090, RTX 5080
SM_90 (Hopper) NVIDIA H100, NVIDIA H200 -
SM_89 (Ada Lovelace) NVIDIA L4, NVIDIA L40, RTX 6000 Ada Generation, L40s Ada GeForce RTX 4090, GeForce RTX 4080, GeForce RTX 4070 Ti / 4070, GeForce RTX 4060 Ti / 4060, GeForce RTX 4050
SM_86, SM_87 (Ampere) NVIDIA A100, NVIDIA A30, NVIDIA A40, RTX A2000, A3000, RTX A4000, A5000, A6000, A10, A16, A2 Tensor Core GPU, A800 40GB GeForce RTX 3090, GeForce RTX 3080, GeForce RTX 3070, GeForce RTX 3060, GeForce RTX 3050
SM_75 (Turing) Quadro RTX 8000, RTX 6000, RTX 5000, RTX 4000, T4 GeForce RTX 2080 Ti, GeForce RTX 2070, GeForce GTX 1660 Ti
SM_70, SM_72 (Volta) Tesla V100, Quadro GV100, Titan V, Xavier NX -
SM_60, SM_61, SM_62 (Pascal) Tesla P100, Quadro GP100 GeForce GTX 1080, GTX 1070, GTX 1060, GTX 1050, GTX 1030, GT 1010, Titan Xp
SM_50, SM_52, SM_53 (Maxwell) Tesla M-series, Quadro M6000 GeForce GTX 980 Ti, GTX Titan X, GTX 980, GTX 970
SM_35, SM_37 (Kepler) Tesla K40, Tesla K80 -
SM_30 (Kepler) - GeForce 700シリーズ, GT-730
SM_20 (Fermi) - GeForce 400, 500, 600, GT-630

出展: https://blog.qualiteg.com/nvidia-gpu-capability-level/

対応CUDAバージョン

SM_世代 アーキテクチャ 互換性のある最小CUDAバージョン CUDA 12.5での状態
SM_100 Blackwell - -
SM_90 Hopper CUDA 12.0以降 対応
SM_89 Ada Lovelace CUDA 11.8以降 対応
SM_86, SM_87 Ampere CUDA 11.1以降 対応
SM_80 Ampere CUDA 11.0以降 対応
SM_75 Turing CUDA 10.0以降 対応
SM_70, SM_72 Volta CUDA 9.0以降 対応
SM_60, SM_61, SM_62 Pascal CUDA 8.0以降 対応
SM_50, SM_52, SM_53 Maxwell CUDA 6.0以降 対応
SM_30, SM_35, SM_37 Kepler CUDA 5.0以降 サポート終了
SM_20 Fermi CUDA 3.2以降 サポート終了

Read more

GPUメモリ最適化の深層:初回と最終バッチの特殊性を踏まえた効率的なAI画像処理

GPUメモリ最適化の深層:初回と最終バッチの特殊性を踏まえた効率的なAI画像処理

はじめに こんにちは!Qualitegプロダクト開発部です。 当社では、LLMテクノロジーをベースとしたAIキャラクター、AIヒューマンの研究開発を行っています。そんな中、表情、仕草のように「人間らしさ」をもったバーチャルヒューマンを再現するときには画像生成、画像編集といったAIを活用した画像処理が必要となります。 人と対話するAIヒューマンやバーチャルヒューマンはタイムリーに表情や仕草を生成する必要があるため、複数の画像をフレーム連結してつくるモーション(シンプルにいうと動画)を短時間に生成する必要があります。 このようなとき、AIトレーニングやシンプルな推論とは異なり、いかにGPUの能力を引き出してやるか「GPUの使いこなし術」がミソとなります。 GPUの使いこなし術というと、以前のブログにも連続バッチやダイナミックバッチについてLLM推論のコンテクストで語りましたが、本日は画像処理におけるGPUメモリ最適化、とくに、推論時バッチにおける「初回と最終回」のお作法という少しマニアックな話題について語ってみようとおもいます。 画像処理とGPU GPUを用いた画像

By Qualiteg プロダクト開発部
Qualitegセレクション:アイディア深堀編③RoundRobinの活用術

Qualitegセレクション:アイディア深堀編③RoundRobinの活用術

Qualiteg blogを訪問してくださった皆様、こんにちは。Micheleです。AIを活用した新規事業やマーケティングを手がけている私には、クライアントからよく寄せられる質問があります。AIを用いた事業展開を検討されている方々が共通して直面するであろう課題に対して、このブログを通じて私なりの解答をご提供したいと思います。 Qualitegセレクション、アイディア深堀編もいよいよ第3弾!今回は、複数人でアイディアを発散・深堀する際に効果的な RoundRobin(ラウンドロビン) という手法をご紹介します。ブレインストーミングに行き詰まった時や、多様な視点を取り入れたい時にぜひ活用してみてください。 RoundRobinとは? RoundRobinとは、様々な場面で用いられますが、大抵の場合において「持ち回り」、つまり「何かの役割・出番をたくさんの物事・人員で交替しあう」というような意味で使うことが多いです。 ここでは、参加者全員が順番にアイディアを出し、それを記録していく手法をRoundRobinと呼んでいます。順番に意見を述べることで、発言力の差による偏りをなくし、全

By Join us, Michele on Qualiteg's adventure to innovation
Qualitegセレクション:アイディア深堀編②6W2Hの活用術

Qualitegセレクション:アイディア深堀編②6W2Hの活用術

Qualiteg blogを訪問してくださった皆様、こんにちは。Micheleです。AIを活用した新規事業やマーケティングを手がけている私には、クライアントからよく寄せられる質問があります。AIを用いた事業展開を検討されている方々が共通して直面するであろう課題に対して、このブログを通じて私なりの解答をご提供したいと思います。 本日のテーマは6W2H Qualitegセレクションは、ユーザーエクスペリエンス(UX)向上のためのヒントやツールを紹介するシリーズです。今回は、アイディアをより具体的に、実行可能なレベルまで深堀りする手法として、6W2Hの活用術をご紹介します。 優れたUXを実現するには、ユーザーのニーズを深く理解し、それを満たすサービスやプロダクトを提供することが不可欠です。そのためには、アイディア段階で徹底的に検討し、実現可能性や課題を明確にする必要があります。 今回は、アイディアを深堀りする際に非常に役立つツール「6W2H」について詳しくご紹介します。 6W2Hとは? 6W2Hは、問題解決や状況分析のための強力なフレームワークです。以下の8つの質問から構成さ

By Join us, Michele on Qualiteg's adventure to innovation
【極めればこのテンソル操作 】tensor.unsqueeze(0)と array[None] の違い

【極めればこのテンソル操作 】tensor.unsqueeze(0)と array[None] の違い

今日は、 unsqueeze(0) の解説しつつ、私たちがよく直面する「あるある」な問題についてもちょこっと話してみたいと思います。 「value.unsqueeze(0)」と「value[None]」 の見分けついていますか? はい、前者は主に PyTorch、後者は NumPyでの操作の違いです。 でもどちらも、ぱっとみは、先頭に新しく次元を追加する操作なので、コードをちらっとみただけではわからないことがありますよね。 なぜかというと、ディープラーニング系のプログラミングでは PyTorchのテンソルと、NumPyの配列操作がかなり入り混じるからです。 そう、今日の話題はPyTorchとNumPyのコードが入り乱れて、どっちの配列(テンソル)を扱っているのわけワカメになる問題です。 ちなみに、話題のテーマをブラさないように PyTorchでは 先頭に新しい次元を追加するときに unsqueeze(0) だけでなく [None] も使えてしまいますが、いったん[None]は NumPy で主に使用する操作という前提で説明させてくださいませ。^^; これに対する当

By Qualiteg プロダクト開発部