【NLP】自然語言項目設計

目錄

項目簡介

要求

需要考慮的問題

硬件需求和環境配置

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安裝成功(目前很多鏡像源都下不成功,用華為云的源還可以,如果也不行只能自行再找找鏡像站或者資源)

在編譯器里面激活環境并更改解釋器

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/86724.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/86724.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/86724.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

設計模式:觀察者模式 (Observer) 案例詳解

目錄 一、引言:為什么需要觀察者模式? 二、觀察者模式的核心原理 1. 角色劃分 2. 類圖關系 三、經典案例解析 案例1:天氣監測系統 案例2:股票價格監控系統 案例3:MVC架構中的模型-視圖分離 案例4:J…

CTF-Misc:開啟全方位解題之旅

目錄 一、CTF-Misc 入門指引二、基礎技能儲備2.1 文件格式識別2.2 基礎工具使用 三、信息搜集技巧3.1 搜索引擎技巧3.2 網絡信息挖掘 四、編碼轉換奧秘4.1 常見編碼類型4.2 編碼轉換工具 五、隱寫分析秘籍5.1 圖片隱寫5.1.1 LSB 隱寫5.1.2 顏色通道與 Exif 信息5.1.3 圖片修復與…

Adobe創意套件深度挖掘:效率倍增與靈感迸發的新玩法

最近在深入體驗奧地利Blueskyy藝術學院的Adobe正版教育訂閱,并研究全家桶時有不少新發現,忍不住想和大家分享一下。 先簡單說下這個訂閱的感受: Firefly 積分。 這應該是我用過Firefly積分最多的版本,1500點/周。對于我們這些創意…

左神算法之有序二維矩陣中的目標值查找

有序二維矩陣中的目標值查找 目錄 有序二維矩陣中的目標值查找1. 題目描述2. 問題解釋3. 解決思路方法一:逐行二分查找(適合行數較少的情況)方法二:利用行列有序特性(最優解) 4. 代碼實現5. 總結 1. 題目描…

深入理解AVL樹及其旋轉操作

AVL樹的概念 二叉搜索樹雖可以縮短查找的效率,但如果數據有序或接近有序二叉搜索樹將退化為單枝樹,查找元素相當于在順序表中搜索元素,效率低下。因此,兩位俄羅斯的數學家G.M.Adelson-Velskii和E.M.Landis在1962年發明了一種方法…

URL帶有中文會引入哪些問題

處理含中文字符的 URL 1 為什么會出現“亂碼”或崩潰? URL 標準(RFC 3986)規定:除少數保留字符外,URL 只能包含 ASCII。中文屬于 Unicode,因此必須先轉換。如果直接把 https://example.com/路徑/ 這樣的字…

結構體字段能否單獨加 mut

你問的這個問題在 Rust 里很常見: 一、結構體字段能否單獨加 mut 1. 結構體字段能否單獨加 mut? 不能。Rust 中,mut 是用來修飾變量綁定的,可變性是綁定的屬性,而不是結構體字段本身的屬性。 你不能寫: …

scGPT-spatial 復現

文章目錄 ? 總體流程總覽(從 H5AD 到模型訓練)🔧 步驟 1:讀取 H5AD 文件并做基礎預處理🧱 步驟 2:構造訓練樣本輸入(token、value)📦 步驟 3:使用 DataColla…

運放電壓跟隨器為什么要加電阻

運放電壓跟隨器為什么要加電阻 我們常見運放的電壓跟隨器如下: 有時候會看見電路中加兩個電阻: 作用就是保護運放,起限流電阻的作用。 當輸入電壓高的時候,運放內部存在鉗位二極管,此電阻就能限流。 并不是所有運放…

MinerU 2.0部署

簡介 MinerU 2.0使用sglang加速,與之前差別較大,建議按照官方的Docker鏡像的方式啟動。 Docker鏡像 Dockerfile 這是官方的Dockerfile # Use the official sglang image FROM lmsysorg/sglang:v0.4.7-cu124# install mineru latest RUN python3 -m …

黑馬python(十七)

目錄: 1.數據可視化-地圖-基礎案例 2.全國疫情地圖 3.河南省疫情地圖繪制 4.基礎柱狀圖構建 5.基礎時間線柱狀圖繪制 6.動態GDP柱狀圖繪制 1.數據可視化-地圖-基礎案例 圖示有點對的不準,可以通過后面的參數 2.全國疫情地圖 3.河南省疫情地圖繪制…

Segment Anything in High Quality之SAM-HQ論文閱讀

摘要 最近的 Segment Anything Model(SAM)在擴展分割模型規模方面取得了重大突破,具備強大的零樣本能力和靈活的提示機制。盡管 SAM 在訓練時使用了 11 億個掩碼,其掩碼預測質量在許多情況下仍不理想,尤其是對于結構復雜的目標。我們提出了 HQ-SAM,使 SAM 能夠精確地分割…

深入理解_FreeRTOS的內部實現(2)

1.事件組 事件組結構體: 事件組 “不關中斷” 的核心邏輯 事件組操作時,優先選擇 “關調度器” 而非 “關中斷” ,原因和實現如下: 關調度器(而非關中斷) FreeRTOS 提供 taskENTER_CRITICAL()(…

【圖論題典】Swift 解 LeetCode 最小高度樹:中心剝離法詳解

文章目錄 摘要描述題解答案題解代碼分析思路來源:樹的“中心剝離法”構造鄰接表和度數組循環剝葉子終止條件 示例測試及結果時間復雜度空間復雜度總結 摘要 樹是一種重要的數據結構,在許多應用里,我們希望選一個根,讓這棵樹的高度…

Docker的介紹與安裝

? Docker 對初學者的簡單解釋和應用場景 1.什么是 Docker? 簡單來說,Docker 就像一個“裝箱子”的工具,這個箱子叫做“容器”。 你寫的程序和它運行需要的環境(比如操作系統、軟件、工具)都裝進一個箱子里。這個箱…

引導相機:工業自動化的智能之眼,賦能制造業高效升級

在工業自動化浪潮中,精準的視覺引導技術正成為生產效率躍升的關鍵。作為遷移科技——一家成立于2017年、專注于3D工業相機和3D視覺系統的領先供應商,我們深知"引導相機"的核心價值:它不僅是一個硬件設備,更是連接物理世…

智能相機如何重塑工業自動化?遷移科技3D視覺系統的場景革命

從硬件參數到產業價值,解碼高精度視覺系統的落地邏輯 一、工業視覺的“智慧之眼” 遷移科技深耕3D工業相機領域,以“穩定、易用、高回報”為核心理念,打造覆蓋硬件、算法、軟件的全棧式視覺系統。成立6年累計融資數億元的背后,是…

【數據挖掘】聚類算法學習—K-Means

K-Means K-Means是一種經典的無監督學習算法,用于將數據集劃分為K個簇(clusters),使得同一簇內的數據點相似度高,不同簇間的相似度低。它在數據挖掘、模式識別和機器學習中廣泛應用,如客戶細分、圖像壓縮和…

linux環境內存滿php-fpm

檢查 PHP-FPM 配置 pm.max_children:該參數控制 PHP-FPM 進程池中最大允許的子進程數。過高的子進程數會導致內存占用過大。你可以根據服務器的內存大小來調整 pm.start_servers:控制 PHP-FPM 啟動時創建的進程數。根據實際情況調整此值。 pm.min_spare_…

基于CNN卷積神經網絡圖像識別小程序9部合集

基于CNN卷積神經網絡圖像識別小程序合集-視頻介紹下自取 ? 內容包括: 基于python深度學習的水果或其他物體識別小程序 003基于python深度學習的水果或其他物體識別小程序_嗶哩嗶哩_bilibili 代碼使用的是python環境pytorch深度學習框架,代碼的環境安…