《AI大模型应用开发实战从入门到精通共60篇》003 开发环境搭建:Python、CUDA、PyTorch与Hugging Face全家桶安装指南
003 开发环境搭建:Python、CUDA、PyTorch与Hugging Face全家桶安装指南
从一次“显卡不干活”的惨案说起
上周帮同事调试一个LLaMA微调脚本,他报错说“显存占用为0但程序跑不动”。我远程一看,nvidia-smi显示显卡驱动正常,torch.cuda.is_available()却返回False。折腾半小时,发现他装PyTorch时用了pip install torch——默认装了CPU版本。这种坑我踩过三次,每次都是因为没仔细看PyTorch官网那行小字:“Select your CUDA version”。
所以这篇笔记,咱们就从最底层的CUDA版本对齐开始,一步步把环境搭成“铁桶阵”。
Python版本:别追新,追稳
大模型开发目前最稳的是Python 3.10。3.11以上有些算子库还没完全适配,3.9以下又缺一些类型注解特性。我习惯用pyenv管理多版本,但如果你刚入门,直接去python.org下载3.10.11安装包就行。
踩坑记录:千万别用系统自带的Python(比如macOS的/usr/bin/python3),版本太老且权限混乱。Windows用户注意安装时勾选“Add Python to PATH”,否则后面pip会找不到。
验证安装:
python3--version# 输出:Python 3.10.11CUDA与cuDNN:显卡的“方言”必须对齐
先查你的NVIDIA显卡算力。RTX 30系列(安培架构)用CUDA 11.8最稳,RTX 40系列(Ada Lovelace)建议CUDA 12.1。老卡如GTX 10系列用CUDA 11.0也行。
别这样写:直接去NVIDIA官网下载最新CUDA 12.4。我试过,PyTorch当时还没出对应版本,装完torch直接报“CUDA driver version is insufficient”。
我的做法:
- 打开NVIDIA控制面板 -> 系统信息 -> 组件,看“NVCUDA.DLL”版本号
- 去PyTorch官网看“Compute Platform”下拉菜单里支持哪些CUDA版本
- 选一个PyTorch和显卡驱动都支持的版本,比如CUDA 11.8
下载CUDA Toolkit时选“exe(local)”安装包,别选网络安装——国内网络你懂的。安装时取消勾选“Visual Studio Integration”,除非你要写CUDA C代码。
cuDNN更简单:去NVIDIA开发者网站注册后下载对应CUDA版本的cuDNN压缩包,解压后把bin、include、lib文件夹里的文件复制到CUDA安装目录(默认C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.8)对应文件夹下。
验证CUDA:
nvcc--version# 输出:Cuda compilation tools, release 11.8, V11.8.89PyTorch安装:pip还是conda?我选pip
conda虽然能自动处理依赖,但大模型项目经常需要特定版本的torchvision、torchaudio,conda源更新慢。我改用pip后没再遇到版本冲突。
这里踩过坑:直接pip install torch torchvision torchaudio会装CPU版。正确姿势是去PyTorch官网复制带CUDA版本的命令:
# CUDA 11.8版本pipinstalltorch==2.1.0torchvision==0.16.0torchaudio==2.1.0 --index-url https://download.pytorch.org/whl/cu118注意版本号要对应。我习惯用2.1.0而不是最新的2.2.x,因为很多第三方库(比如bitsandbytes)还没适配新版本。
验证PyTorch:
importtorchprint(torch.__version__)# 2.1.0print(torch.cuda.is_available())# Trueprint(torch.cuda.get_device_name(0))# NVIDIA GeForce RTX 3090如果torch.cuda.is_available()返回False,检查:
- 显卡驱动版本是否够新(
nvidia-smi看Driver Version) - CUDA版本是否与PyTorch匹配
- 是否装了CPU版(
pip list | grep torch看有没有+cpu后缀)
Hugging Face全家桶:transformers + datasets + accelerate + peft
这四个库是大模型开发的标配。我习惯一次性装好,避免后面缺依赖:
pipinstalltransformers datasets accelerate peft别这样写:pip install transformers后跑代码报错“No module named ‘accelerate’”,又回来补装。一次性装完省心。
transformers是模型加载和推理的核心,datasets处理数据,accelerate负责多卡训练和混合精度,peft做LoRA微调。
验证安装:
fromtransformersimportAutoModel,AutoTokenizerfromdatasetsimportload_datasetfromaccelerateimportAcceleratorfrompeftimportLoraConfig,get_peft_modelprint("All imports successful!")额外工具:bitsandbytes与flash-attn
如果你要微调大模型(比如LLaMA-7B),这两个库能救命。bitsandbytes做4bit量化,flash-attn加速注意力计算。
这里踩过坑:bitsandbytes在Windows上安装需要编译,直接pip大概率失败。解决方案:
- 去GitHub Releases下载预编译的whl文件
- 或者用WSL2(Windows Subsystem for Linux)开发
我目前在Windows上直接用WSL2 + Ubuntu 22.04,所有工具都能原生安装:
# 在WSL2中pipinstallbitsandbytes pipinstallflash-attn --no-build-isolationflash-attn安装需要CUDA编译器,确保nvcc在PATH中。
环境隔离:虚拟环境是保命符
大模型项目依赖复杂,不同项目可能要求不同版本的PyTorch或transformers。我每个项目都建独立虚拟环境:
python-mvenv llm_envsourcellm_env/bin/activate# Linux/Mac# 或 llm_env\Scripts\activate # Windows个人经验:虚拟环境名用项目名缩写,比如llama_finetune、chatglm_deploy。别用venv这种通用名,时间长了根本分不清哪个环境对应哪个项目。
最终验证脚本
写一个简单的测试脚本,确保所有组件能协同工作:
importtorchfromtransformersimportAutoModelForCausalLM,AutoTokenizer# 这里踩过坑:第一次跑时忘了加device_map="auto",模型加载到CPU导致OOMmodel_name="gpt2"# 小模型,适合测试tokenizer=AutoTokenizer.from_pretrained(model_name)model=AutoModelForCausalLM.from_pretrained(model_name,device_map="auto",# 自动分配到GPUtorch_dtype=torch.float16# 半精度节省显存)inputs=tokenizer("Hello, I'm",return_tensors="pt").to("cuda")outputs=model.generate(**inputs,max_length=50)print(tokenizer.decode(outputs[0]))如果输出一段连贯的英文文本,恭喜你,环境搭建成功。
个人经验性建议
别在系统Python里装任何大模型库。我见过有人直接在/usr/lib/python3里装torch,结果系统包管理器升级时把依赖搞崩了。虚拟环境是底线。
CUDA版本宁旧勿新。PyTorch官方支持列表里最老的版本往往最稳定。我现在主力机还是CUDA 11.8,虽然驱动支持12.4,但没必要追新。
Windows用户建议装WSL2。虽然PyTorch官方支持Windows,但bitsandbytes、flash-attn这些底层库在Windows上编译困难。WSL2里装Ubuntu,所有问题迎刃而解。
记录每次安装的版本号。我习惯在项目根目录放一个
requirements.txt,用pip freeze > requirements.txt生成。下次重装环境直接pip install -r requirements.txt,省去排查版本冲突的时间。遇到报错先看PyTorch官网的“Installation Troubleshooting”。很多问题(比如CUDA版本不匹配、缺少Visual C++ Redistributable)都有官方解决方案,比搜CSDN效率高。
环境搭建是门手艺活,踩过的坑越多,后面越顺。下一篇咱们用这个环境跑通第一个大模型推理示例,看看GPT-2是怎么生成文本的。
