目錄
項目簡介
要求
需要考慮的問題
硬件需求和環境配置
n卡驅動配置
以cuda11.8 版本為例
下載對應的cudnn(version11+)
安裝GPU版本的torch
安裝gpu版本的TensorFlow
檢查cuda安裝情況
項目簡介
訓練一個模型,實現歌詞仿寫生成
任務類型:文本生成;
數據集是一份歌詞語料,訓練一個模型仿寫歌詞。
要求
1.清洗數據。歌詞語料中包含韓文等非中英文符號,可對語料做預處理,僅保留中英文與標點符號;
2.訓練模型、生成歌詞;
3.用Gradio網頁展示生成的歌詞;
需要考慮的問題
1.使用語料數據集csv:lyric.csv,不用到數據庫;
2.硬件使用的gpu是5g的n卡,比較有限,項目本身數據量和模型參數規模都不是特別大;
3.使用tensorflow2.9.1gpu版本的框架進行構建;
4.使用的網絡架構,以及每個部分的組件網絡、骨干網絡等,優先在各個環節選用目前的sota模型;
5.在模型訓練過程中要使用tensorboard可視化訓練過程;6.對于數據的處理,先對csv進行必要的可視化,然后進行多語言歌詞清洗(可參考的步驟:多語言過濾、特殊格式處理、分詞策略、序列對齊、同義詞替換、句式重組等);7.項目構建嚴格規范文件架構,做到一個腳本做一個環節(數據預處理腳本、模型構建腳本、訓練、測試、推理等等);
硬件需求和環境配置
n卡驅動配置
以cuda11.8 版本為例
CUDA Toolkit 11.8 Downloads | NVIDIA Developer
該提示是說未找到支持版本的 Visual Studio ,部分 CUDA 工具包組件可能無法正常工作,建議先安裝 Visual Studio 。若你:
不打算在 Visual Studio 中使用 CUDA 開發:勾選 “I understand, and wish to continue the installation regardless.”,然后點擊 “NEXT” 繼續安裝 CUDA,不影響 CUDA 在其他場景或非集成開發環境下的基本使用。
后續有在 Visual Studio 中進行 CUDA 開發的計劃:可先停止 CUDA 安裝,安裝合適版本的 Visual Studio(CUDA 不同版本對應支持特定的 Visual Studio 版本,需提前確認適配關系 ),之后再重新安裝 CUDA。
建議就默認安裝路徑,方便后續管理
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA
添加環境變量
CUDA_PATH和CUDA_PATH_V11.8
添加后查看 cmd里輸入
nvcc -V
cuda toolkit就安裝完成
下載對應的cudnn(version11+)
跑深度學習任務還需要對應版本的cudnn,才能在執行模型訓練等腳本時調用到gpu
cuDNN Archive | NVIDIA Developer
因為限制,國內無法注冊nvidia賬號,所以不能直接從官網下載,需要另找資源
需要這兩個包
獲取之后解壓
cudnn
將這三個(bin include lib)復制,合并到上面下載cuda的目錄下(要到對應版本的目錄)
粘貼進去
然后來到這個路徑下
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.8\extras\demo_suite
查看是否存在這兩個文件
打開cmd
進入這個路徑
依次執行
bandwidthTest.exe
看到末尾有‘PASS’說明成功
deviceQuery.exe
最后添加、檢查系統環境變量
Path中
需要有這三個路徑
安裝GPU版本的torch
版本是2.3.0 這個版本和cuda11.8 cudnn11.8兼容性較好 目前也使用得比較多
下載torch torchvision torchaudio
pip install torch==2.3.0 --index-url https://download.pytorch.org/whl/cu118
pip install -i https://mirrors.huaweicloud.com/repository/pypi/simple/ torchvision==0.14.0
pip install -i https://mirrors.huaweicloud.com/repository/pypi/simple/ torchaudio==2.3.0
測試腳本
import torch
import platformdef test_pytorch_gpu():"""測試當前環境中PyTorch與GPU的兼容性"""print(f"Python版本: {platform.python_version()}")print(f"PyTorch版本: {torch.__version__}")# 檢查CUDA是否可用if torch.cuda.is_available():print("\n=== CUDA 可用 ===")print(f"CUDA版本: {torch.version.cuda}")print(f"GPU數量: {torch.cuda.device_count()}")# 獲取并打印第一個GPU的信息
gpu_name = torch.cuda.get_device_name(0)print(f"第一個GPU: {gpu_name}")# 創建張量并在GPU上執行簡單運算try:# 創建在GPU上的張量
x = torch.tensor([1.0, 2.0], device='cuda')
y = torch.tensor([3.0, 4.0], device='cuda')# 執行加法運算
z = x + y# 將結果傳回CPU并打印print(f"\n在GPU上執行運算: {x} + {y} = {z.cpu().numpy()}")# 測試CUDA流
stream = torch.cuda.Stream()with torch.cuda.stream(stream):
a = torch.ones(1000, 1000, device='cuda')
b = a * 2
c = b.mean()
torch.cuda.synchronize()print("CUDA流測試成功")print("\nPyTorch與GPU環境兼容正常!")return Trueexcept Exception as e:print(f"\nGPU運算測試失敗: {str(e)}")print("PyTorch與GPU環境存在兼容性問題!")return Falseelse:print("\n=== CUDA 不可用 ===")print("PyTorch未檢測到可用的CUDA設備")print("可能原因: 沒有NVIDIA GPU、驅動未安裝或PyTorch版本與CUDA不匹配")# 檢查是否有MPS (Apple Silicon) 支持if hasattr(torch, 'has_mps') and torch.has_mps:print("\nMPS (Apple Silicon) 支持已檢測到")print("提示: 當前測試針對CUDA GPU,建議在NVIDIA GPU環境下運行")return Falseif __name__ == "__main__":
test_pytorch_gpu()
看到這個表示框架和軟硬件環境兼容了
安裝gpu版本的TensorFlow
pip install -i https://mirrors.huaweicloud.com/repository/pypi/simple/ tensorflow-gpu==2.9.1
# 深度學習框架
# tensorflow-gpu==2.9.1
# keras==2.9.0
測試安裝
import tensorflow as tfdef test_tensorflow_gpu():"""測試TensorFlow-GPU與CUDA的兼容性"""try:# 檢查TensorFlow版本
tf_version = tf.__version__print(f"TensorFlow版本: {tf_version}")# 檢查GPU是否可用
gpus = tf.config.list_physical_devices('GPU')if not gpus:print("未發現GPU設備。請確保安裝了正確的GPU驅動和CUDA工具包。")returnprint(f"發現{len(gpus)}個GPU設備:")for gpu in gpus:print(f" - {gpu}")# 測試GPU計算with tf.device('/GPU:0'):
a = tf.constant([1.0, 2.0, 3.0], shape=[1, 3])
b = tf.constant([1.0, 2.0, 3.0], shape=[3, 1])
c = tf.matmul(a, b)print("GPU計算測試成功!")print(f"計算結果: {c.numpy()}")# 檢查CUDA版本兼容性try:# 獲取TensorFlow編譯時的CUDA版本
cuda_compile_version = tf.sysconfig.get_build_info()['cuda_version']print(f"TensorFlow編譯時使用的CUDA版本: {cuda_compile_version}")# 獲取運行時CUDA版本(通過TensorFlow)
runtime_cuda_version = tf.test.is_built_with_cuda()if runtime_cuda_version:print("TensorFlow已啟用CUDA支持。")else:print("TensorFlow未啟用CUDA支持,可能無法使用GPU。")# 嘗試獲取更詳細的CUDA運行時版本try:from tensorflow.python.platform import build_info
cuda_version = build_info.cuda_version_number
cudnn_version = build_info.cudnn_version_numberprint(f"TensorFlow使用的CUDA版本: {cuda_version}")print(f"TensorFlow使用的cuDNN版本: {cudnn_version}")except Exception as e:print(f"無法獲取詳細的CUDA/cuDNN版本信息: {e}")# 檢查GPU驅動版本try:from tensorflow.python.client import device_lib
local_device_protos = device_lib.list_local_devices()for x in local_device_protos:if x.device_type == 'GPU':print(f"GPU驅動信息: {x.physical_device_desc}")except Exception as e:print(f"無法獲取GPU驅動信息: {e}")except Exception as e:print(f"CUDA版本檢查失敗: {e}")print("請手動檢查您的CUDA版本是否與TensorFlow兼容。")print("TensorFlow CUDA兼容性矩陣: https://www.tensorflow.org/install/source#gpu")except Exception as e:print(f"測試過程中發生錯誤: {e}")if __name__ == "__main__":
test_tensorflow_gpu()
檢查cuda安裝情況
NVIDIA 顯卡:使用 nvidia-smi 命令
若已安裝 NVIDIA 驅動,輸入:
nvidia-smi
可查看:
GPU 型號、驅動版本、CUDA 版本。
顯存使用情況、GPU 溫度、功耗等實時數據。
需要電腦有配置5G及以上顯存的顯卡,這里我使用n卡
再配置conda環境,創建一個項目環境
這是我的顯卡信息,現在用conda創建一個支持tensorflow2.x版本(同時tf編寫的源代碼使用的是2版本以下的numpy,降級numpy到2以下才能正常使用tf)的conda環境,注意python版本:
conda create -n nlp_tf python=3.9
完成后輸入conda activate nlp_tf啟動環境
在環境里下載tensorflow-gpu版本2.x以上
用華為云安裝:
pip install -i https://mirrors.huaweicloud.com/repository/pypi/simple/ tensorflow-gpu==2.9.1
# pip install -i https://mirrors.huaweicloud.com/repository/pypi/simple/ tensorflow==2.5.0
tensorflow安裝成功(目前很多鏡像源都下不成功,用華為云的源還可以,如果也不行只能自行再找找鏡像站或者資源)
在編譯器里面激活環境并更改解釋器