隨著NVIDIA不斷推出基于新架構(gòu)的GPU產(chǎn)品,機器學(xué)習(xí)框架需要相應(yīng)地更新以支持這些硬件。本文記錄了在RTX 5070 Ti上運行PyTorch時遇到的CUDA兼容性問題,并詳細(xì)分析了問題根源及其解決方案,以期為遇到類似情況的開發(fā)者提供參考。

打開網(wǎng)易新聞 查看精彩圖片

在Anaconda虛擬環(huán)境("development")中使用VSCode進(jìn)行開發(fā)時,將開發(fā)硬件更換為RTX 5070 Ti后,PyTorch運行時出現(xiàn)以下錯誤提示:

  1. NVIDIA GeForce RTX 5070 Ti with CUDA capability sm_120 is not compatible with the current PyTorch installation.
  2. The current PyTorch install supports CUDA capabilities sm_50 sm_60 sm_61 sm_70 sm_75 sm_80 sm_86 sm_90.
  3. RuntimeError: CUDA error: no kernel image is available for execution on the device

經(jīng)分析,問題的核心在于PyTorch穩(wěn)定版的預(yù)編譯二進(jìn)制文件不支持sm_120計算能力。RTX 5070 Ti采用了較新的架構(gòu),需要更新的CUDA版本以及對應(yīng)的PyTorch構(gòu)建版本才能正常工作。

解決方案分析與實施

1、使用PyTorch Nightly構(gòu)建版本

首先采用的解決方案是使用PyTorch官方提供的Nightly構(gòu)建版本。該版本通常包含對最新硬件的支持,但可能存在一定的不穩(wěn)定性。具體實施步驟如下:

  1. 清理現(xiàn)有環(huán)境
  2. conda activate development
  3. pip uninstall torch torchvision torchaudio -y
  4. pip cache purge
  5. 安裝支持CUDA 12.8的Nightly構(gòu)建版本
  6. pip3 install --pre torch torchvision torchaudio --index-url https://download.pytorch.org/whl/nightly/cu128

通過這一命令,可以安裝支持CUDA 12.8的PyTorch版本,該版本能夠支持RTX 5070 Ti的sm_120架構(gòu)。

2、環(huán)境變量配置嘗試

初期曾考慮通過配置

  1. TORCH_CUDA_ARCH_LIST

環(huán)境變量來解決問題:

  1. set TORCH_CUDA_ARCH_LIST=12.0

但是這種方法對已安裝的預(yù)編譯二進(jìn)制文件沒有實質(zhì)性影響。因為該環(huán)境變量主要在從源碼編譯PyTorch時發(fā)揮作用,而非控制已安裝版本的行為。

3、CUDA工具包更新

為確保系統(tǒng)環(huán)境的完整性,同時安裝了最新的CUDA工具包(CUDA 12.8)。這一步驟對于確保驅(qū)動程序、CUDA庫與PyTorch版本的兼容性至關(guān)重要。完成安裝后,通過

  1. torch.version.cuda

可以驗證CUDA版本已成功更新為12.8,且系統(tǒng)能夠正確識別RTX 5070 Ti的硬件屬性。

結(jié)果與經(jīng)驗

經(jīng)過上述調(diào)整,成功解決了RTX 5070 Ti與PyTorch的兼容性問題。系統(tǒng)現(xiàn)在能夠正確識別并充分利用GPU的計算能力。從這次問題解決過程中,可以總結(jié)出以下幾點技術(shù)經(jīng)驗:

深度學(xué)習(xí)開發(fā)環(huán)境在面對新硬件時,需要關(guān)注多個層面的兼容性。對于最新的GPU架構(gòu),穩(wěn)定版的預(yù)編譯框架可能缺乏支持,此時Nightly構(gòu)建版本或從源碼編譯是更可行的方案。

環(huán)境變量如

  1. TORCH_CUDA_ARCH_LIST

的作用范圍和時機需要準(zhǔn)確理解。該變量主要影響編譯過程,對預(yù)編譯的二進(jìn)制文件無效,這一點在問題診斷中尤為重要。

確保CUDA工具包、驅(qū)動程序與深度學(xué)習(xí)框架版本的一致性是解決兼容性問題的基礎(chǔ)。在升級任何一個組件時,都需要考慮其他組件的相應(yīng)調(diào)整。

環(huán)境重建有時是解決復(fù)雜依賴問題的最直接方法。完全卸載現(xiàn)有組件并安裝最新版本最終解決了問題,這種方法雖簡單但往往有效。

總結(jié)

新一代GPU如RTX 5070 Ti在深度學(xué)習(xí)環(huán)境中的應(yīng)用,可能需要超出常規(guī)配置的特殊處理。本文記錄的經(jīng)驗表明,使用最新的CUDA版本、采用Nightly構(gòu)建版本以及確保環(huán)境各組件間的一致性,是解決此類問題的關(guān)鍵策略。

對于需要使用最新硬件的深度學(xué)習(xí)從業(yè)者而言,了解這些策略并靈活應(yīng)用,將有助于更高效地配置開發(fā)環(huán)境,避免在技術(shù)細(xì)節(jié)上消耗過多時間。

https://avoid.overfit.cn/post/2924df9d6e17436180bbbe799928e378