首页 > 其他分享 >新手入门 | 搭建 AI 模型开发环境

新手入门 | 搭建 AI 模型开发环境

时间:2024-09-03 08:55:46浏览次数:11  
标签:AI 新手入门 pytorch CUDA https miniconda3 显卡 安装 搭建

目录

学习模型开发时,搭建环境可能会碰到很多曲折,这里提供一些通用的环境搭建安装方法,以便读者能够快速搭建出一套 AI 模型开发调试环境。

安装显卡驱动和开发库

本文只讲述 NVIDIA 显卡驱动的安装方法。

NVIDIA 显卡有多个系列,常用的有 Tensor 和 GeForce RTX 系列,两类显卡的驱动安装方式不一样,下面的章节会单独介绍如何安装驱动。

第一步,检测电脑是否正确识别显卡或已安装驱动。

打开设备管理器,点击 显示适配器 ,查看设备列表是否存在显卡。

image-20240831193543224

image-20240831193501897

如果电脑已经识别出显卡,可以通过 NVIDIA GeForce Experience 或者在其它驱动管理工具更新到最新版本的驱动程序。

1725110469061

或者直接到官方驱动页面搜索显卡型号要安装的驱动程序,Nvida 官方驱动搜索下载页面:https://www.nvidia.cn/drivers/lookup/

image-20240831194432476

对于 Tesla 系列显卡

例如在 Azure 等云平台创建 GPU 服务器后,如果显卡是 Tesla ,刚开机时可能识别不出显卡,需要先安装驱动之后才能显示显卡设备。

Windows 可参考该链接安装:https://learn.microsoft.com/zh-CN/azure/virtual-machines/windows/n-series-driver-setup

Linux 可参考该链接安装:https://learn.microsoft.com/zh-CN/azure/virtual-machines/linux/n-series-driver-setup

对于 Windows ,安装方法比较简单,只需要按照文档下载 GRID 程序安装包即可。

image-20240831193113478

安装后驱动,启动命令查看支持的 CUDA 版本:

nvidia-smi

file

可以看到,该驱动版本只支持 12.2 的 CUDA 版本。

对于 N 卡

对于 GeForce RTX 4060TI 、GeForce RTX 4070 等显卡,可以直接到官方下载驱动安装器:

https://www.nvidia.cn/geforce/drivers/

一般来说,家用主机的出厂时都会安装好的驱动的。

安装 CUDA 和 cuDNN

image-20240831195641685

CUDA 是 NVIDIA 专为图形处理单元 (GPU) 上的通用计算开发的并行计算平台和编程模型。借助 CUDA,开发者能够利用 GPU 的强大性能显著加速计算应用。

简单来说 CUDA 就是支持 CPU 分发和 GPU 并行计算的编程模型,为了使用 CUDA ,需要安装开发工具包。

CUDA 介绍:

https://developer.nvidia.cn/cuda-zone

https://developer.nvidia.com/zh-cn/blog/cuda-intro-cn/

CUDA 安装包下载地址:https://developer.nvidia.com/cuda-downloads

下打开安装包,根据提示操作安装即可,简洁安装会安装 C 盘,高级安装可以自定义安装位置,建议使用简洁安装,以免出现额外情况。

1725105003545

安装完成后,环境变量会多出两条记录:

image-20240831195802036

cuDNN 是基于 GPU 的深度学习加速库,下载文件后是一个压缩包。

下载地址:https://developer.nvidia.com/cudnn-downloads

1725105639726

打开 C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\,找到版本目录,或者通过环境变量 CUDA_PATH 找到安装目录,将 cuDNN 压缩包的内容复制合并到 CUDA 目录。

image-20240831220117612

最后将 bin、lib、lib\x64、include、libnvvp 五个目录添加到环境变量 Path 中。

也不知道具体到底需要多少环境变量,加就是了。

安装 Miniconda

Miniconda 是一个 Python 包管理器,能够在系统中创建多个环境隔离的 Python 环境。

下载地址:https://docs.anaconda.com/miniconda/

下载完成后,搜索 miniconda3 快捷菜单,以管理员身份运行,点击可以打开控制台,菜单列表会有 cmd 和 powershell 两个快捷链接,建议使用 powershell 入口。

后续执行 conda 命令,都要使用管理员身份运行。

image-20240901072421293

配置国内源加速下载:

conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/

执行 conda env list 目录查看默认环境安装目录。

image-20240901072824863

如果电脑已经安装过 Python 并且添加了环境变量,则不要将 G:\ProgramData\miniconda3 添加到环境变量中,因为这样会导致环境缭乱。

如果电脑还没有安装过 Python ,则可以直接将 G:\ProgramData\miniconda3G:\ProgramData\miniconda3\Scripts 添加到环境变量中。

笔者电脑卸载了手动安装的 Python,只使用 miniconda3 提供的环境。

如果 Python、pip 使用的是自行安装的,直接执行命令安装依赖包的时候,跟 miniconda3 环境是隔离的。如果需要在 miniconda3 环境安装依赖包,需要打开 miniconda3 控制台执行 pip 命令,这样安装的包才会出现在 miniconda3 环境中。

一个环境中安装依赖包后,不同的项目可以共用已下载的依赖包,不需要每个项目单独下载一次。

安装 PyTorch 和 Transformers

Flax、PyTorch 或 TensorFlow 都是深度学习框架,而 Transformers 底层可以使用 Flax、PyTorch 或 TensorFlow 深度学习框架,实现模型加载、训练等功能。

PyTorch 安装参考文档:https://pytorch.org/get-started/locally/

可以安装 GPU 版本(CUDA)或 CPU 版本,然后复制下方提示的安装命令。

1725148068180(1)

conda install pytorch torchvision torchaudio pytorch-cuda=12.4 -c pytorch -c nvidia

然后还需要执行命令安装 Transformers 和一些依赖库。

pip install protobuf 'transformers>=4.41.2' cpm_kernels 'torch>=2.0' gradio mdtex2html sentencepiece accelerate

可能会自动安装最新版本的 transformers,会出问题,后面的章节讲述如何解决。

使用 Modelscope 下载加载模型

ModelScope 是阿里云主导的一个国内 AI 模型社区,提供了各类模型和数据集以及开发工具库,由于 huggingface 上手难度稍大以及国外网络原因,这里使用 Modelscope 下载和加载模型。

安装 modelscope:

pip install modelscope

PyCharm 项目配置

PyCharm 是最常用的 Python 编程工具,因此这里讲解如何在 PyCharm 中配置 miniconda3 环境。

打开 PyCharm ,在设置中添加 miniconda3 的环境,步骤如图所示。

1725148940379

1725148968981(1)

然后创建一个项目,在项目中选择基于 conda 的环境。

1725149018283

模型加载和对话

在项目目录下创建 main.py 文件。

image-20240901080538372

将以下代码贴到 main.py,然后运行代码,会自动下载模型、加载模型和对话。

from modelscope import AutoTokenizer, AutoModel, snapshot_download

# 下载模型
# ZhipuAI/chatglm3-6b 模型仓库
# D:/modelscope 模型文件缓存存放目录
model_dir = snapshot_download("ZhipuAI/chatglm3-6b",cache_dir="D:/modelscope", revision="v1.0.0")

# 加载模型
# float 是 32,half 是16 位浮点数,内存可以减少一半
tokenizer = AutoTokenizer.from_pretrained(model_dir, trust_remote_code=True)
model = AutoModel.from_pretrained(model_dir, trust_remote_code=True).half().cuda()
model = model.eval()

# 开始对话
response, history = model.chat(tokenizer, "你好", history=[])
print(response)
response, history = model.chat(tokenizer, "晚上睡不着应该怎么办", history=history)
print(response)

1725150688028

"ZhipuAI/chatglm3-6b" 指的是 ZhipuAI 仓库的 chatglm3-6b 模型,可以通过 ModelScope 查看社区已上传的各类模型:

https://www.modelscope.cn/models

revision="v1.0.0" 下载版本号跟仓库分支名称一致,可以填写不同分支名称下载不同的版本。

image-20240901093307337

CPU 和 GPU 问题

如果出现以下报错,可能安装的是 CPU 而不是 GPU 版本的 PyTorch。

    raise AssertionError("Torch not compiled with CUDA enabled")
AssertionError: Torch not compiled with CUDA enabled

image-20240901111744905

执行代码:

import torch
print(torch.__version__)

image-20240901113934658

按经验,如果使用了 pip 安装相关库,而不是使用 conda 命令安装的,需要执行以下命令卸载 pytorch:

pip uninstall torch torchvision torchaudio
conda uninstall pytorch torchvision torchaudio pytorch-cuda=12.4 -c pytorch -c nvidia

然后执行命令重新安装 pytorch:

conda install pytorch torchvision torchaudio pytorch-cuda=12.4 -c pytorch -c nvidia

重新执行命令后即可正常:

image-20240901120654336

transformers 版本错误

由于安装各类库的时候都是安装最新版本安装的,可能有部分库不兼容,执行到以下代码行时,抛出错误。

response, history = model.chat(tokenizer, "你好", history=[])

首先出现以下警告,然后出现报错:

1Torch was not compiled with flash attention. (Triggered internally at C:\cb\pytorch_1000000000000\work\aten\src\ATen\native\transformers\cuda\sdp_utils.cpp:555.)
  context_layer = torch.nn.functional.scaled_dot_product_attention(query_layer, key_layer, value_layer,

file

需要将 transformers 版本安装要求的最新版本(升级)。

pip install transformers==4.41.2

file

经历各种曲折,最后终于成功了:

image-20240901122852869

TORCH_USE_CUDA_DSA 错误

笔者碰到的问题应该是 GPU 性能不够导致的,该问题出现在 Azure A10 机器上,家用的 RTX 4060TI 没有出现这个问题。

不过也有可能是显卡驱动跟 CUDA 版本不一致导致的。

  File "C:\ProgramData\miniconda3\Lib\site-packages\transformers\generation\utils.py", line 2410, in _sample
    next_token_scores = logits_processor(input_ids, next_token_logits)
                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\ProgramData\miniconda3\Lib\site-packages\transformers\generation\logits_process.py", line 98, in __call__
    scores = processor(input_ids, scores)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\xxx\.cache\huggingface\modules\transformers_modules\chatglm3-6b\modeling_chatglm.py", line 55, in __call__
    if torch.isnan(scores).any() or torch.isinf(scores).any():
       ^^^^^^^^^^^^^^^^^^^^^^^^^
RuntimeError: CUDA error: the launch timed out and was terminated
CUDA kernel errors might be asynchronously reported at some other API call, so the stacktrace below might be incorrect.
For debugging consider passing CUDA_LAUNCH_BLOCKING=1
Compile with `TORCH_USE_CUDA_DSA` to enable device-side assertions.

file

使用 CPU 是可以的:

file

随便跑了一个 demo ,也是可以执行的。

https://github.com/pytorch/examples/blob/main/mnist/main.py

可能是 CUDA 库和驱动库版本不一致导致的,首先执行 nvidia-smi 命令,检查显卡驱动库兼容的 CUDA 版本。

file

下载安装对应版本的 CUDA,然后重新解压 cuDNN 以及设置环境变量。

file

最后,服务器也成功搭建起 AI 环境。

file

标签:AI,新手入门,pytorch,CUDA,https,miniconda3,显卡,安装,搭建
From: https://www.cnblogs.com/whuanle/p/18391714

相关文章

  • 洛谷 P3225 矿场搭建
    洛谷P3225矿场搭建题意煤矿工地可以看成是由隧道连接挖煤点组成的无向图。为安全起见,希望在工地发生事故时所有挖煤点的工人都能有一条出路逃到救援出口处。于是矿主决定在某些挖煤点设立救援出口,使得无论哪一个挖煤点坍塌之后,其他挖煤点的工人都有一条道路通向救援出口。请......
  • 深度学习入门篇Task3#Datawhale X 李宏毅苹果书 AI夏令营
    第二章实践方法论2.1模型偏差模型过于简单导致未拟合重新设计模型增加特征2.2优化问题梯度下降优化的不够,没找到最优参数针在海里,大海捞针,但是方法不给力建议:先使用简单的线性模型或者是SVR测试一下,一般这些模型不会优化不到位训练数据损失突然不再降低或者......
  • Typora 适配高版本 Mermaid
    Typora适配高版本Mermaid查看Mermaid版本info下载最新的mermaid.min.js文件在搜索框输入CDNhttps://cdn.jsdelivr.net/npm/mermaid@11/替换Typora的window.html文件<script> constinterval=setInterval(()=>{ console.log('checkmermaid...'); if......
  • 科普文:软件架构Elasticsearch系列之【2024年8月30日 Shay:Elasticsearch is Open Sourc
     2021年1月,当时Elastic公司决定把Elasticsearch和Kibana的许可证从Apache2.0变更为ElasticLicense2.0(ELv2)和ServerSidePublicLicense(SSPL)双许可。尽管这两个许可证也允许源代码公开,但它们并不符合开源倡议组织(OSI)的开源定义。应对质疑:“本就是一个错误,现......
  • 使用kamailio进行分机注册及互拨
    操作系统版本:Debian12.5_x64kamailio版本:5.8.2kamailio作为专业的SIP服务器,可承担注册服务器的角色。今天记录下kamailio作为注册服务器,承接分机注册,并实现相互拨打的过程。我将从以下几个方面展开:模块配置分机账号添加无rtp代理的分机互拨带rtp代理的分机互拨配套资源......
  • Fire Again
    2024.9.2还是写几句吧。今天被T1卡了很久呢。明明用简明的做法过掉了大部分数据,却没有怀疑cornercase的判断,而是转而怀疑做法本身,甚至double精度的问题。这是一个比较奇怪的决策。导致了10:30才通过掉。T2是一个简明的矩阵快速幂优化DP。但是根本没有任何思考地,写出......
  • 【Intel Hackathon大赛】基于OpenVINO™ Model Optimizer + ChatGLM-6B + P-Tuning的A
    随着人工智能技术的飞速发展,自然语言处理(NLP)领域迎来了前所未有的变革,而大语言模型(LargeLanguageModel,LLM)作为这一变革的核心驱动力,正逐步成为连接人类语言与机器智能的桥梁。LLM通过海量文本数据的学习,掌握了丰富的语言知识、上下文理解能力以及生成高质量文本的能力,为智能教......
  • LangChain入门指南,轻松学习,助你游刃有余
    一、前言像OpenAI的GPT-4这样的大型语言模型(LLM)已经风靡全球。它们可以自动执行各种任务,如回答问题、翻译语言、分析文本等等。LLM是第一种真正让人感觉像是“人工智能”的机器学习类型。然而,在实际产品中应用LLM仍存在挑战。特别是LLM管理,这是其中最棘手和繁琐的挑战之......
  • LinkAI工作流发布至广场,并通过api调用自己或者他人的工作流
    什么是工作流LinkAI工作流(WorkFlow)是一种灵活的智能体搭建方式。可以自由选择「大模型、应用、知识库、插件、意图识别、转人工、渠道消息发送」等多种原子能力,通过可视化拖拉拽的方式进行组合编排,零代码搭出一个业务流程。让智能体按照规划的方式进行工作。并且可以设置定时运行......
  • 【ACM独立出版, CCF主办】2024智能物联与计算国际学术会议(AITC 2024,11月1-11月3)
    为探讨智能物联与计算技术所涉领域的最新研究和发展趋势,2024智能物联与计算学术大会(AITC2024)将于2024年11月1日-11月3日在中国·杭州举行。AITC2024由中国计算机学会、中国人工智能学会、浙江省科学技术协会、浙江工业大学、浙江省人工智能产业技术联盟主办,由中国计......