目录

项目简介

要求

需要考虑的问题

硬件需求和环境配置

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深度学习框架,代码的环境安…