环境零基础搭建:本地大模型部署统一运行环境

1. 前言

如果你踩过这些坑——装了PyTorch却torch.cuda.is_available()返回False、CUDA版本和驱动不匹配导致报错、conda环境全局污染导致项目间依赖打架、模型下载到一半断连重来——那这篇就是为你写的。

本篇解决的核心问题:一次性搭建一个干净、可控、可复现的本地大模型运行环境,让后续所有部署操作(Ollama、llama.cpp、vLLM等)都能顺畅跑起来,不再被环境问题卡住。

适用场景:

  • 首次在本地搭建大模型运行环境
  • 多项目并行需要环境隔离
  • CUDA/cuDNN/PyTorch版本匹配搞不定
  • 国内网络下模型下载困难

学习收获:

  • 掌握conda环境隔离的工程实践
  • 理解CUDA→cuDNN→PyTorch的版本依赖链,不再盲目安装
  • 拿到一套完整的双平台安装命令清单
  • 获得一个一键环境校验脚本
  • 掌握多种模型下载方式,含国内镜像加速方案

2. 核心原理极简讲解

2.1 为什么环境配置是大模型部署的第一道坎

传统Web开发的环境问题,最坏情况是”跑不起来”。大模型部署的环境问题更致命——你可能跑起来了但用了CPU推理,速度慢10-50倍却浑然不知

GPU推理的完整调用链是:

1
应用程序代码 → PyTorch → CUDA Runtime API → cuDNN → NVIDIA GPU Driver → GPU硬件

这条链上任何一个版本不兼容,就会导致:静默回退CPU、运行时报错、或者性能严重下降。这就是为什么必须理解版本匹配关系。

2.2 CUDA / cuDNN / PyTorch 版本关系的底层逻辑

三个关键概念:

组件 是什么 版本依赖方向
NVIDIA Driver GPU硬件驱动,最底层 决定支持的最高CUDA版本
CUDA Toolkit GPU计算平台,提供编译和运行时 必须在Driver支持的范围内
cuDNN 深度学习加速库,基于CUDA 必须匹配CUDA大版本
PyTorch 上层框架,调用CUDA和cuDNN 必须精确匹配CUDA版本编译

核心依赖链:Driver → CUDA → cuDNN → PyTorch,自底向上兼容。

关键规则:

  1. Driver版本决定CUDA版本上限(向下兼容)
  2. PyTorch官方whl是针对特定CUDA版本编译的,必须对齐
  3. cuDNN大版本号要和CUDA大版本号一致

2.3 版本对应关系表(2024-2025稳定版推荐)

Driver与CUDA对应关系:

NVIDIA Driver版本 支持的CUDA版本
≥ 525.60.13 (Linux) / ≥ 526.98 (Windows) CUDA 12.x
≥ 535.54.03 (Linux) / ≥ 536.25 (Windows) CUDA 12.2+
≥ 550.54.14 (Linux) / ≥ 551.61 (Windows) CUDA 12.4+

CUDA / cuDNN / PyTorch 对应关系(推荐组合):

推荐组合 CUDA cuDNN PyTorch Python 适用场景
组合A(主力推荐) 12.1 8.9.x 2.1.x / 2.2.x / 2.4.x 3.10 / 3.11 主流显卡,兼容性最佳
组合B(最新稳定) 12.4 9.1.x 2.5.x / 2.6.x 3.10 / 3.11 新卡(4090/5090),追求新特性
组合C(老卡兼容) 11.8 8.6.x 2.0.x / 2.1.x 3.10 GTX 10xx/20xx老卡

工程决策:如果你的显卡是RTX 30系列或40系列,无脑选组合A(CUDA 12.1),这是目前生态兼容性最好的版本,几乎所有框架和量化工具都支持。除非你有明确需求需要CUDA 12.4的新特性,否则不要追新。


3. 环境 & 前置依赖

3.1 系统要求

项目 最低要求 推荐配置
操作系统 Windows 10 21H2 / Ubuntu 20.04 Windows 11 / Ubuntu 22.04
GPU NVIDIA GTX 1060 6GB RTX 3060 12GB 及以上
系统内存 16GB 32GB+
硬盘空间 50GB可用 200GB+ SSD
NVIDIA Driver ≥ 525.x ≥ 535.x

3.2 查看当前环境信息

在开始安装前,先确认你的GPU和驱动状态:

1
2
# Windows & Linux 通用
nvidia-smi

输出右上角的 CUDA Version 是你的驱动支持的最高CUDA版本,不是已安装的CUDA版本。后续选CUDA版本不能超过这个数。


4. Step-by-step 实操流程

4.1 Conda 安装与环境创建

为什么用Conda而不是venv? conda能管理Python版本和C/C++库依赖(包括CUDA相关库),而venv只能管理Python包。大模型部署涉及大量C库依赖,conda是更优选择。

安装 Miniconda(推荐,轻量)

=== “Windows”

1. 下载安装包:[https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/](https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/)

选择 `Miniconda3-latest-Windows-x86_64.exe`

2. 安装时勾选:
   - ✅ "Add Miniconda to my PATH environment variable"(虽然它标红,但对命令行使用更方便)
   - ✅ "Register Miniconda as my default Python"

3. 验证安装:

1
2
conda --version
# 输出示例:conda 24.x.x

=== “Linux”

1
2
3
4
5
6
7
8
9
10
11
12
# 下载 Miniconda
wget https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/Miniconda3-latest-Linux-x86_64.sh

# 安装
bash Miniconda3-latest-Linux-x86_64.sh -b -p $HOME/miniconda3

# 初始化
$HOME/miniconda3/bin/conda init bash
source ~/.bashrc

# 验证
conda --version

配置conda镜像源(国内必备)

1
2
3
4
5
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/
conda config --set show_channel_urls yes

创建大模型专属环境

1
2
3
4
5
6
7
8
9
10
11
# 创建环境(指定Python版本和关键依赖)
conda create -n llm python=3.10 -y

# 激活环境
conda activate llm

# 验证
python --version
# Python 3.10.x
which python # Linux
where python # Windows

避坑:永远不要在base环境装大模型相关依赖。不同项目对PyTorch、transformers版本要求不同,全局污染会导致无法排查的冲突。

4.2 CUDA 安装

版本选择逻辑

  1. 先看 nvidia-smi 输出的CUDA Version上限
  2. 根据前文对应关系表选择组合A(12.1)或组合B(12.4)
  3. 只要不超驱动上限,向下兼容没问题

CUDA Toolkit 安装

=== “Windows”

1. 下载CUDA Toolkit:[https://developer.nvidia.com/cuda-toolkit-archive](https://developer.nvidia.com/cuda-toolkit-archive)

选择 CUDA 12.1.x → Windows → x86_64 → 版本号 → exe(local)

2. 安装选择 **自定义安装**,勾选:
   - ✅ CUDA → Development → Compiler → nvcc
   - ✅ CUDA → Development → Libraries
   - ✅ CUDA → Runtime → Libraries
   - ❌ Driver components(不勾选,保留现有驱动)

3. 验证安装:

1
2
nvcc --version
# 输出应包含 Cuda compilation tools, release 12.1

=== “Linux”

1
2
3
4
5
6
7
8
9
10
11
12
13
# 下载CUDA 12.1(runfile方式,更灵活)
wget https://developer.download.nvidia.com/compute/cuda/12.1.0/local_installers/cuda_12.1.0_530.30.02_linux.run

# 安装(不装驱动,只装Toolkit)
sudo sh cuda_12.1.0_530.30.02_linux.run --toolkit --silent --override

# 配置环境变量
echo 'export PATH=/usr/local/cuda-12.1/bin:$PATH' >> ~/.bashrc
echo 'export LD_LIBRARY_PATH=/usr/local/cuda-12.1/lib64:$LD_LIBRARY_PATH' >> ~/.bashrc
source ~/.bashrc

# 验证
nvcc --version

工程决策:为什么推荐runfile而非apt安装?runfile安装到/usr/local/cuda-x.y,多版本共存方便,切换只需改软链接。apt安装会覆盖系统CUDA,升级和回退都不灵活。

4.3 cuDNN 安装与配置

cuDNN是NVIDIA为深度学习优化的加速库,Transformer推理强烈依赖它。

=== “Windows”

1. 下载cuDNN:[https://developer.nvidia.com/rdp/cudnn-archive](https://developer.nvidia.com/rdp/cudnn-archive)

需要注册NVIDIA开发者账号(免费)。选择 **cuDNN 8.9.x for CUDA 12.x** → Windows → zip包

2. 解压后,将以下文件复制到CUDA安装目录:

1
2
3
4
# 假设cuDNN解压到 D:\cudnn,CUDA安装在 C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.1
xcopy D:\cudnn\bin\*.dll "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.1\bin\" /Y
xcopy D:\cudnn\include\*.h "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.1\include\" /Y
xcopy D:\cudnn\lib\x64\*.lib "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.1\lib\x64\" /Y
3. 验证:
1
2
3
where cudnn64_9.dll
# 或检查头文件
dir "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.1\include\cudnn*.h"

=== “Linux”

1
2
3
4
5
6
7
8
9
10
11
12
# 下载cuDNN 8.9.x for CUDA 12.x(tar包)
# 假设已下载到 ~/Downloads/
cd ~/Downloads/
tar -xvf cudnn-linux-x86_64-8.9.x.x_cuda12-archive.tar.xz

# 复制到CUDA目录
sudo cp cudnn-linux-x86_64-8.9.x.x_cuda12-archive/include/cudnn*.h /usr/local/cuda-12.1/include/
sudo cp cudnn-linux-x86_64-8.9.x.x_cuda12-archive/lib/libcudnn* /usr/local/cuda-12.1/lib64/
sudo chmod a+r /usr/local/cuda-12.1/include/cudnn*.h /usr/local/cuda-12.1/lib64/libcudnn*

# 验证
cat /usr/local/cuda-12.1/include/cudnn_version.h | grep CUDNN_MAJOR -A 2

简化方案:如果你通过conda安装PyTorch(推荐),conda会自动把cuDNN作为依赖安装到虚拟环境中,无需手动配置。手动安装cuDNN主要适用于从源码编译的场景(如编译llama.cpp的CUDA后端)。

4.4 PyTorch 安装

这是最关键的一步——PyTorch版本必须精确匹配你选择的CUDA版本。

安装命令

=== “CUDA 12.1(组合A,推荐)”

1
2
3
4
conda activate llm

# 使用pip安装(推荐,比conda更快更稳定)
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121

=== “CUDA 12.4(组合B)”

1
2
3
conda activate llm

pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu124

=== “CUDA 11.8(组合C,老卡)”

1
2
3
conda activate llm

pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118

验证PyTorch GPU可用

1
2
3
4
5
6
7
8
9
10
python -c "
import torch
print(f'PyTorch版本: {torch.__version__}')
print(f'CUDA可用: {torch.cuda.is_available()}')
print(f'CUDA版本: {torch.version.cuda}')
print(f'GPU数量: {torch.cuda.device_count()}')
if torch.cuda.is_available():
print(f'GPU名称: {torch.cuda.get_device_name(0)}')
print(f'GPU显存: {torch.cuda.get_device_properties(0).total_mem / 1024**3:.1f} GB')
"

期望输出: CUDA可用: True。如果是False,跳到第7节踩坑记录排查。

工程决策:为什么用pip而不是conda装PyTorch?PyTorch官方维护pip源,更新最快。conda源的PyTorch版本经常滞后,且conda解析依赖极慢。经验是:PyTorch用pip,其他Python包也用pip,conda只用来管理Python版本和创建环境。

4.5 Git 与 Git LFS 安装

大模型文件动辄数GB到数十GB,Git LFS(Large File Storage)是下载和管理模型文件的必备工具。

=== “Windows”

1
2
3
4
5
6
7
8
9
10
# 安装Git(如果未安装)
# 下载:https://git-scm.com/download/win

# 安装Git LFS
git lfs install
# 如果提示lfs不是git命令,需单独安装:https://git-lfs.github.io/

# 验证
git --version
git lfs version

=== “Linux”

1
2
3
4
5
6
7
8
9
10
# Ubuntu
sudo apt update
sudo apt install -y git git-lfs

# 初始化Git LFS
git lfs install

# 验证
git --version
git lfs version

4.6 编译工具安装

部分Python包(如flash-attn、bitsandbytes等)需要从源码编译,必须有编译工具链。

=== “Windows”

安装 **Visual Studio Build Tools**:

1. 下载:[https://visualstudio.microsoft.com/visual-cpp-build-tools/](https://visualstudio.microsoft.com/visual-cpp-build-tools/)
2. 安装时勾选 **"使用C++的桌面开发"** 工作负载
3. 确保包含以下组件:
   - MSVC v143 生成工具
   - Windows 11 SDK
   - CMake 工具

验证:
1
2
cl  # MSVC编译器
cmake --version

=== “Linux”

1
2
3
4
5
6
7
8
# Ubuntu
sudo apt update
sudo apt install -y build-essential cmake gcc g++

# 验证
gcc --version
g++ --version
cmake --version

4.7 常用 Python 依赖库安装

一站式安装大模型部署核心依赖:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
conda activate llm

# 配置pip镜像源(国内加速)
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple

# 核心依赖安装
pip install \
transformers>=4.40.0 \
accelerate>=0.27.0 \
sentencepiece \
tokenizers>=0.15.0 \
safetensors \
datasets \
peft>=0.10.0 \
bitsandbytes>=0.43.0 \
scipy \
protobuf

# 如果需要flash-attention(需编译,速度提升显著)
pip install flash-attn --no-build-isolation

# 如果需要vLLM(后续篇章会详细讲)
# pip install vllm

说明bitsandbytes在Windows上从0.41版本开始原生支持,无需WSL。如果安装失败,可以尝试预编译whl:https://github.com/jllllll/bitsandbytes-windows-webui/releases


5. 模型下载全攻略

模型文件通常5-50GB,下载是环境搭建中最耗时的环节,也是最容易被网络问题搞崩的环节。

5.1 HuggingFace 官方下载

最直接的方式,但国内访问不稳定:

1
2
3
4
5
6
7
8
9
10
11
# 方法1:使用huggingface-cli
pip install huggingface-hub
huggingface-cli download meta-llama/Meta-Llama-3-8B-Instruct --local-dir ./models/Meta-Llama-3-8B-Instruct

# 方法2:Python代码下载
from huggingface_hub import snapshot_download
snapshot_download(
repo_id="Qwen/Qwen2.5-7B-Instruct",
local_dir="./models/Qwen2.5-7B-Instruct",
resume_download=True # 支持断点续传
)

5.2 国内镜像站加速下载(推荐)

https://hf-mirror.com 是目前最稳定的HuggingFace国内镜像:

1
2
3
4
5
6
7
8
# 方法1:设置环境变量(推荐,对所有huggingface工具生效)
export HF_ENDPOINT=https://hf-mirror.com

# Windows PowerShell
$env:HF_ENDPOINT = "https://hf-mirror.com"

# 然后正常使用huggingface-cli或Python代码下载即可
huggingface-cli download Qwen/Qwen2.5-7B-Instruct --local-dir ./models/Qwen2.5-7B-Instruct
1
2
3
4
5
6
7
8
9
10
# 方法2:代码中直接指定镜像端点
import os
os.environ["HF_ENDPOINT"] = "https://hf-mirror.com"

from huggingface_hub import snapshot_download
snapshot_download(
repo_id="Qwen/Qwen2.5-7B-Instruct",
local_dir="./models/Qwen2.5-7B-Instruct",
resume_download=True
)

持久化配置(写入shell配置文件,一劳永逸):

=== “Linux”

1
2
echo 'export HF_ENDPOINT=https://hf-mirror.com' >> ~/.bashrc
source ~/.bashrc

=== “Windows”

1
2
3
# 系统环境变量设置
[System.Environment]::SetEnvironmentVariable("HF_ENDPOINT", "https://hf-mirror.com", "User")
# 重启终端生效

5.3 Git LFS 克隆模型仓库

适合需要完整仓库(含代码和配置)的场景:

1
2
3
4
5
6
7
8
9
10
11
12
# 设置镜像(国内)
git config --global url."https://hf-mirror.com/".insteadOf "https://huggingface.co/"

# 克隆模型仓库
git lfs install # 确保LFS已启用
git clone https://huggingface.co/Qwen/Qwen2.5-7B-Instruct ./models/Qwen2.5-7B-Instruct

# 只下载模型权重,不下载LFS文件(先跳过大文件)
GIT_LFS_SKIP_SMUDGE=1 git clone https://huggingface.co/Qwen/Qwen2.5-7B-Instruct ./models/Qwen2.5-7B-Instruct
# 然后单独拉取需要的文件
cd ./models/Qwen2.5-7B-Instruct
git lfs pull --include="*.safetensors"

工程决策:优先推荐 huggingface-cli download 而非 git clone。原因:huggingface-cli支持断点续传、并行下载、选择性下载特定文件,git clone大仓库容易超时中断且恢复困难。

5.4 断点续传方案

大文件下载最怕中断,以下是可靠方案:

1
2
3
4
5
6
7
8
9
# wget断点续传
wget -c https://hf-mirror.com/Qwen/Qwen2.5-7B-Instruct/resolve/main/model-00001-of-00004.safetensors

# aria2c多线程断点续传(强烈推荐,速度提升显著)
# 安装:apt install aria2 / choco install aria2
aria2c -c -x 8 -s 8 \
https://hf-mirror.com/Qwen/Qwen2.5-7B-Instruct/resolve/main/model-00001-of-00004.safetensors \
-d ./models/Qwen2.5-7B-Instruct \
-o model-00001-of-00004.safetensors

-c 启用断点续传,-x 8 使用8个连接,-s 8 每个服务器8个连接,实测下载速度可提升3-5倍。

5.5 模型存放目录规范建议

1
2
3
4
5
6
7
8
9
10
11
12
13
14
~/llm_workspace/
├── models/ # 所有模型统一存放
│ ├── Qwen2.5-7B-Instruct/ # 按模型名建目录
│ │ ├── config.json
│ │ ├── tokenizer.json
│ │ ├── model.safetensors
│ │ └── ...
│ ├── Meta-Llama-3-8B-Instruct/
│ └── deepseek-r1-7b/
├── envs/ # 环境配置脚本
│ └── check_env.py # 环境校验脚本
└── scripts/ # 常用脚本
├── download_model.py
└── convert_gguf.sh

建议:模型目录放在SSD上,机械硬盘加载模型慢2-3倍。如果SSD空间有限,可以用符号链接把模型目录指向大容量硬盘。


6. 环境校验一键脚本

将以下脚本保存为 check_env.py,随时运行检查环境状态:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
#!/usr/bin/env python3
"""
本地大模型部署环境校验脚本
检查CUDA、PyTorch、GPU、关键库版本是否正常
"""

import sys
import importlib
import platform
from pathlib import Path


def check_python():
"""检查Python版本"""
version = sys.version_info
status = "✅" if version >= (3, 9) else "❌"
print(f"{status} Python版本: {version.major}.{version.minor}.{version.micro}")
if version < (3, 9):
print(" ⚠️ 建议升级到Python 3.10+")


def check_cuda():
"""检查CUDA可用性"""
try:
import torch
if torch.cuda.is_available():
print(f"✅ CUDA可用")
print(f" CUDA版本: {torch.version.cuda}")
print(f" cuDNN版本: {torch.backends.cudnn.version()}")
print(f" GPU数量: {torch.cuda.device_count()}")
for i in range(torch.cuda.device_count()):
props = torch.cuda.get_device_properties(i)
mem_gb = props.total_mem / (1024 ** 3)
print(f" GPU {i}: {props.name} | {mem_gb:.1f}GB | 算力{props.major}.{props.minor}")
# 实际GPU计算测试
x = torch.randn(1000, 1000, device="cuda")
y = torch.mm(x, x)
print(f"✅ GPU计算测试通过")
else:
print("❌ CUDA不可用 — PyTorch无法使用GPU")
print(" 排查方向:")
print(" 1. nvidia-smi 是否正常输出")
print(" 2. PyTorch安装的CUDA版本与驱动是否匹配")
print(" 3. 是否误装了CPU版本的PyTorch")
except ImportError:
print("❌ PyTorch未安装")
return


def check_packages():
"""检查关键依赖库"""
required = {
"torch": "2.0.0",
"transformers": "4.36.0",
"accelerate": "0.25.0",
"sentencepiece": None,
"tokenizers": "0.15.0",
"safetensors": None,
"bitsandbytes": "0.41.0",
"peft": "0.7.0",
}

print("\n依赖库检查:")
for pkg, min_ver in required.items():
try:
mod = importlib.import_module(pkg)
ver = getattr(mod, "__version__", "未知")
if min_ver and ver < min_ver:
print(f"⚠️ {pkg}: {ver} (建议≥{min_ver})")
else:
print(f"✅ {pkg}: {ver}")
except ImportError:
print(f"❌ {pkg}: 未安装")


def check_system():
"""检查系统信息"""
print(f"操作系统: {platform.system()} {platform.release()}")
print(f"系统架构: {platform.machine()}")
print(f"处理器: {platform.processor()}")


def check_disk():
"""检查磁盘空间"""
try:
if platform.system() == "Windows":
import ctypes
free_bytes = ctypes.c_ulonglong(0)
ctypes.windll.kernel32.GetDiskFreeSpaceExW(
None, None, None, ctypes.pointer(free_bytes)
)
free_gb = free_bytes.value / (1024 ** 3)
else:
stat = Path.home().stat()
free_gb = stat.st_size # 简化,Linux下可用shutil
import shutil
usage = shutil.disk_usage(Path.home())
free_gb = usage.free / (1024 ** 3)

status = "✅" if free_gb > 50 else "⚠️"
print(f"{status} 可用磁盘空间: {free_gb:.1f} GB")
if free_gb < 50:
print(" ⚠️ 磁盘空间不足50GB,大模型下载可能受限")
except Exception:
print("⚠️ 磁盘空间检查跳过")


def main():
print("=" * 55)
print(" 本地大模型部署环境校验")
print("=" * 55)

check_system()
print()
check_python()
print()
check_cuda()
check_packages()
print()
check_disk()

print("\n" + "=" * 55)
print(" 校验完成")
print("=" * 55)


if __name__ == "__main__":
main()

使用方式:

1
2
conda activate llm
python check_env.py

7. 踩坑记录 & 问题解决

7.1 CUDA版本与PyTorch不匹配

症状: torch.cuda.is_available() 返回 False,或报错 RuntimeError: CUDA out of memory 但实际显存够用。

排查:

1
2
import torch
print(torch.version.cuda) # 查看PyTorch编译时的CUDA版本

然后对比 nvidia-smi 的CUDA版本。如果PyTorch的CUDA版本高于驱动支持的最高CUDA版本,GPU不可用。

解决:

1
2
3
4
5
6
# 卸载当前PyTorch
pip uninstall torch torchvision torchaudio

# 重新安装匹配版本的PyTorch
# 例如驱动支持CUDA 12.1:
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121

7.2 Conda环境激活问题

症状(Windows): PowerShell中conda activate报错,提示Initialize-Conda相关错误。

解决:

1
2
3
4
5
6
7
# 初始化conda for PowerShell
conda init powershell

# 如果执行策略阻止脚本运行
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser

# 重启PowerShell

症状(Linux): conda: command not found

解决:

1
2
3
# 重新初始化
$HOME/miniconda3/bin/conda init bash
source ~/.bashrc

7.3 Windows编译工具缺失导致安装失败

症状: pip install bitsandbytespip install flash-attn 报错,提示 Microsoft Visual C++ 14.0 is required

解决:

  1. 安装 Visual Studio Build Tools(见4.6节)
  2. 安装后重启终端
  3. 如果还不行,尝试预编译whl:
1
2
# bitsandbytes Windows预编译版本
pip install https://github.com/jllllll/bitsandbytes-windows-webui/releases/download/wheels/bitsandbytes-0.43.0-py3-none-win_amd64.whl

7.4 下载中断/网络问题

症状: 模型下载到一半中断,从头再来。

解决:

  • 使用 huggingface-cli download(自带断点续传)
  • 设置 HF_ENDPOINT=https://hf-mirror.com
  • 大文件用 aria2c -c 断点续传
  • 如果huggingface-cli卡住,可手动拼URL用wget/aria2c下载单个文件

7.5 显卡驱动与CUDA版本关系

关键认知: nvidia-smi 显示的CUDA Version是驱动支持的最高版本,不是当前安装的CUDA版本。你可以安装低于此版本的任何CUDA版本。

升级驱动解决兼容问题:

=== “Windows”

直接去 [NVIDIA驱动下载页](https://www.nvidia.cn/Download/index.aspx) 下载最新Game Ready或Studio驱动安装即可。

=== “Linux”

1
2
3
4
5
6
7
8
9
# Ubuntu添加NVIDIA驱动PPA
sudo add-apt-repository ppa:graphics-drivers/ppa
sudo apt update

# 安装指定版本驱动(如535)
sudo apt install nvidia-driver-535

# 重启
sudo reboot

原则:驱动尽可能新,CUDA选择生态最兼容的版本(目前是12.1)。


8. 场景适配 & 优劣分析

场景 推荐配置 理由
学习实验(入门) Windows 11 + CUDA 12.1 + conda 上手快,调试方便,社区资料多
多项目并行开发 Linux + conda多环境 环境隔离更干净,资源调度灵活
低配机器(GTX 1060等) CUDA 11.8 + PyTorch 2.0.x 老卡兼容性好,配合量化方案可用
生产部署(推理服务) Linux + Docker + CUDA 12.1 环境可复现,运维标准化
多卡/集群 Linux + CUDA 12.4 + NCCL 新版CUDA对多卡通信优化更好

Windows vs Linux 实话实说:

维度 Windows Linux
上手难度 ⭐ 低 ⭐⭐ 中
编译兼容性 经常踩坑 丝滑
flash-attn支持 需WSL或预编译 原生支持
vLLM支持 不支持 完整支持
适合阶段 学习/测试 生产部署
显存利用率 略低 略高

建议: 学习阶段用Windows没问题,但真正要做生产级部署(特别是vLLM、多卡场景),一定要切换到Linux。WSL2是个折中方案,但GPU直通配置有坑。


9. 本篇小结

核心知识点复盘

  1. 版本依赖链:Driver → CUDA → cuDNN → PyTorch,自底向上兼容,任何一个环节不匹配都会出问题
  2. 环境隔离:conda创建独立环境,永不污染base
  3. 组合选型:CUDA 12.1 + PyTorch 2.x + Python 3.10 是当前兼容性最好的组合
  4. 下载加速:hf-mirror.com + aria2c + 断点续传,三件套解决国内下载问题
  5. 校验先行:每次装完环境先跑校验脚本,不要等到部署时才发现问题

关键命令速查表

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# 环境管理
conda create -n llm python=3.10 -y # 创建环境
conda activate llm # 激活环境
conda env list # 查看所有环境
conda remove -n llm --all # 删除环境

# PyTorch安装(CUDA 12.1)
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121

# GPU状态
nvidia-smi # 查看GPU状态和驱动信息

# 模型下载
export HF_ENDPOINT=https://hf-mirror.com # 设置镜像(Linux)
huggingface-cli download <repo_id> --local-dir <path> # 下载模型

# 断点续传
aria2c -c -x 8 -s 8 <url> -d <dir> -o <filename>

# 环境校验
python check_env.py # 运行校验脚本

本文为「本地大模型部署系列」第2篇,完整系列持续更新中。