当前位置: 首页 > news >正文

《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.11

CUDA与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”。

我的做法:

  1. 打开NVIDIA控制面板 -> 系统信息 -> 组件,看“NVCUDA.DLL”版本号
  2. 去PyTorch官网看“Compute Platform”下拉菜单里支持哪些CUDA版本
  3. 选一个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.89

PyTorch安装: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大概率失败。解决方案:

  1. 去GitHub Releases下载预编译的whl文件
  2. 或者用WSL2(Windows Subsystem for Linux)开发

我目前在Windows上直接用WSL2 + Ubuntu 22.04,所有工具都能原生安装:

# 在WSL2中pipinstallbitsandbytes pipinstallflash-attn --no-build-isolation

flash-attn安装需要CUDA编译器,确保nvcc在PATH中。

环境隔离:虚拟环境是保命符

大模型项目依赖复杂,不同项目可能要求不同版本的PyTorch或transformers。我每个项目都建独立虚拟环境:

python-mvenv llm_envsourcellm_env/bin/activate# Linux/Mac# 或 llm_env\Scripts\activate # Windows

个人经验:虚拟环境名用项目名缩写,比如llama_finetunechatglm_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]))

如果输出一段连贯的英文文本,恭喜你,环境搭建成功。

个人经验性建议

  1. 别在系统Python里装任何大模型库。我见过有人直接在/usr/lib/python3里装torch,结果系统包管理器升级时把依赖搞崩了。虚拟环境是底线。

  2. CUDA版本宁旧勿新。PyTorch官方支持列表里最老的版本往往最稳定。我现在主力机还是CUDA 11.8,虽然驱动支持12.4,但没必要追新。

  3. Windows用户建议装WSL2。虽然PyTorch官方支持Windows,但bitsandbytes、flash-attn这些底层库在Windows上编译困难。WSL2里装Ubuntu,所有问题迎刃而解。

  4. 记录每次安装的版本号。我习惯在项目根目录放一个requirements.txt,用pip freeze > requirements.txt生成。下次重装环境直接pip install -r requirements.txt,省去排查版本冲突的时间。

  5. 遇到报错先看PyTorch官网的“Installation Troubleshooting”。很多问题(比如CUDA版本不匹配、缺少Visual C++ Redistributable)都有官方解决方案,比搜CSDN效率高。

环境搭建是门手艺活,踩过的坑越多,后面越顺。下一篇咱们用这个环境跑通第一个大模型推理示例,看看GPT-2是怎么生成文本的。

http://www.jsqmd.com/news/695079/

相关文章:

  • 电商效率翻倍:用 Open Claw 对接小红书视频详情接口,一键抓取商品全量信息
  • 隔空取“快递文件”?快递式文件分享,我在NAS部署一个文件柜
  • Linux 系统管理笔记
  • 搞定Android 10/11系统定制:解锁OEM、修改运营商显示、隐藏HotSeat的实操记录
  • VMD滚动分解+BiLSTM多变量时序预测,防信息泄露,MATLAB代码
  • mermaid初体验
  • 放弃数据分析转Java开发:一个双非硕士的岗位选择与避坑思考
  • Office Custom UI Editor:重新定义你的Office工作界面,效率提升50%不是梦!
  • 如何在PUBG中实现完美压枪?罗技鼠标宏终极教程指南
  • 甜品店亏损怎么自救?从赔钱到赚钱的3个狠招-佛山鼎策创局破局增长咨询
  • Human IgE一步法ELISA试剂盒如何拓展临床应用边界?
  • 5分钟搞定TouchDesigner实时人体姿态追踪:MediaPipe插件终极指南
  • 从零搭建GEO接口服务(附完整源码)| 新手友好,实操无坑
  • 《AI大模型应用开发实战从入门到精通共60篇》004、Hugging Face入门:模型库、数据集与Tokenizers快速上手
  • 基于微信小程序的茶馆连锁(预约+茶叶茶具商城)系统小程序设计与实现
  • 别再为破洞和缝隙头疼了!用CGAL的Stitch功能一键缝合网格边界
  • 理解Hive
  • 别再只画PCA了!用mixOmics给你的多组学文章加点高级可视化(网络图、双标图、热图一键生成)
  • 为什么你的 Reels 越做越没人看?Instagram 算法正在惩罚这类内容 - SocialEcho社媒管理
  • 3分钟让你的Mac变身专业KTV:LyricsX桌面歌词体验指南
  • 【国家药监局UDI校验强制新规倒计时】:VSCode实时校验模板已开源,错过将影响三类器械注册申报
  • 为什么你的Windows效率工具还在说英文?PowerToys-CN汉化项目深度解析
  • Qt右键菜单不弹?别急,先检查这个属性(setContextMenuPolicy详解)
  • Cadence IC617与Calibre 2019在Ubuntu 20.04上的避坑安装与集成指南
  • 【Linux系统】Shell命令运行及其原理
  • 建行广东江门分行:数字人民币场景应用引领校园金融数字化新风尚
  • DAN-F10N-00B,标准精度双频GNSS天线模块,实现城市环境米级精准定位与简易集成
  • 别再写SFINAE了!C++26反射驱动的零成本抽象重构:4类高频元编程模式迁移路径+编译时间压缩至1/5实录
  • 2026 年出海品牌社媒基准:你的竞争对手都在用什么策略 - SocialEcho社媒管理
  • 简单的拖拉拽功能