新手入门 | 搭建 AI 模型开发环境
新手入门 | 搭建 AI 模型开发环境
本文将详细介绍如何搭建AI模型开发环境,包括显卡驱动、CUDA、cuDNN、Miniconda、PyTorch、Transformers等关键组件的安装步骤,以及在PyCharm中配置开发环境的具体方法。文章还提供了在实际开发中可能遇到的问题及其解决方案,如CPU和GPU版本混淆、transformers版本错误等。
安装显卡驱动和开发库
本文只讲述NVIDIA显卡驱动的安装方法。
NVIDIA显卡有多个系列,常用的有Tensor和GeForce RTX系列,两类显卡的驱动安装方式不一样,下面的章节会单独介绍如何安装驱动。
第一步,检测电脑是否正确识别显卡或已安装驱动。打开设备管理器,点击"显示适配器",查看设备列表是否存在显卡。
如果电脑已经识别出显卡,可以通过NVIDIA GeForce Experience或者在其他驱动管理工具更新到最新版本的驱动程序。
或者直接到官方驱动页面搜索显卡型号要安装的驱动程序,Nvidia官方驱动搜索下载页面:https://www.nvidia.cn/drivers/
对于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程序安装包即可。
安装后驱动,启动命令查看支持的CUDA版本:
nvidia-smi
可以看到,该驱动版本只支持12.2的CUDA版本。
对于N卡
对于GeForce RTX 4060TI、GeForce RTX 4070等显卡,可以直接到官方下载驱动安装器:https://www.nvidia.cn/geforce/drivers/
一般来说,家用主机的出厂时都会安装好的驱动的。
安装CUDA和cuDNN
CUDA是NVIDIA专为图形处理单元(GPU)上的通用计算开发的并行计算平台和编程模型。借助CUDA,开发者能够利用GPU的强大性能显著加速计算应用。
简单来说CUDA就是支持CPU分发和GPU并行计算的编程模型,为了使用CUDA,需要安装开发工具包。
CUDA介绍:
CUDA安装包下载地址:https://developer.nvidia.com/cuda-downloads
下打开安装包,根据提示操作安装即可,简洁安装会安装C盘,高级安装可以自定义安装位置,建议使用简洁安装,以免出现额外情况。
安装完成后,环境变量会多出两条记录:
cuDNN是基于GPU的深度学习加速库,下载文件后是一个压缩包。
下载地址:https://developer.nvidia.com/cudnn-downloads
打开C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\,找到版本目录,或者通过环境变量CUDA_PATH找到安装目录,将cuDNN压缩包的内容复制合并到CUDA目录。
最后将bin、lib、lib\u0064、include、libnvvp五个目录添加到环境变量Path中。
也不知道具体到底需要多少环境变量,加就是了。
安装Miniconda
Miniconda是一个Python包管理器,能够在系统中创建多个环境隔离的Python环境。
下载地址:https://docs.anaconda.com/miniconda/
下载完成后,搜索miniconda3快捷菜单,以管理员身份运行,点击可以打开控制台,菜单列表会有cmd和powershell两个快捷链接,建议使用powershell入口。
后续执行conda命令,都要使用管理员身份运行。
配置国内源加速下载:
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
执行conda env list目录查看默认环境安装目录。
如果电脑已经安装过Python并且添加了环境变量,则不要将G:\ProgramData\miniconda3添加到环境变量中,因为这样会导致环境缭乱。
如果电脑还没有安装过Python,则可以直接将G:\ProgramData\miniconda3、G:\ProgramData\miniconda3\Scripts添加到环境变量中。
如果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版本,然后复制下方提示的安装命令。
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的环境,步骤如图所示。
然后创建一个项目,在项目中选择基于conda的环境。
模型加载和对话
在项目目录下创建main.py文件。
将以下代码贴到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)
"ZhipuAI/chatglm3-6b"指的是ZhipuAI仓库的chatglm3-6b模型,可以通过ModelScope查看社区已上传的各类模型:https://www.modelscope.cn/models
revision="v1.0.0"下载版本号跟仓库分支名称一致,可以填写不同分支名称下载不同的版本。
CPU和GPU问题
如果出现以下报错,可能安装的是CPU而不是GPU版本的PyTorch。
raise AssertionError("Torch not compiled with CUDA enabled")
AssertionError: Torch not compiled with CUDA enabled
执行代码:
import torch
print(torch.__version__)
按经验,如果使用了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
重新执行命令后即可正常:
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,
需要将transformers版本安装要求的最新版本(升级)。
pip install transformers==4.41.2
经历各种曲折,最后终于成功了:
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.
使用CPU是可以的:
随便跑了一个demo,也是可以执行的。
https://github.com/pytorch/examples/blob/main/mnist/main.py
可能是CUDA库和驱动库版本不一致导致的,首先执行nvidia-smi命令,检查显卡驱动库兼容的CUDA版本。
下载安装对应版本的CUDA,然后重新解压cuDNN以及设置环境变量。
最后,服务器也成功搭建起AI环境。