《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对应文件夹下。验证CUDAnvcc--version# 输出Cuda compilation tools, release 11.8, V11.8.89PyTorch安装pip还是conda我选pipconda虽然能自动处理依赖但大模型项目经常需要特定版本的torchvision、torchaudioconda源更新慢。我改用pip后没再遇到版本冲突。这里踩过坑直接pip install torch torchvision torchaudio会装CPU版。正确姿势是去PyTorch官网复制带CUDA版本的命令# CUDA 11.8版本pipinstalltorch2.1.0torchvision0.16.0torchaudio2.1.0 --index-url https://download.pytorch.org/whl/cu118注意版本号要对应。我习惯用2.1.0而不是最新的2.2.x因为很多第三方库比如bitsandbytes还没适配新版本。验证PyTorchimporttorchprint(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 VersionCUDA版本是否与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文件或者用WSL2Windows 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_mapauto模型加载到CPU导致OOMmodel_namegpt2# 小模型适合测试tokenizerAutoTokenizer.from_pretrained(model_name)modelAutoModelForCausalLM.from_pretrained(model_name,device_mapauto,# 自动分配到GPUtorch_dtypetorch.float16# 半精度节省显存)inputstokenizer(Hello, Im,return_tensorspt).to(cuda)outputsmodel.generate(**inputs,max_length50)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是怎么生成文本的。