CPU配置PyTorch(0.3)
9700X CPU跑PyTorch
有gpu最好还是去英伟达显卡安装带 CUDA 的 PyTorch,amd显卡也能跑,可惜我ubuntu已经装了24.10,只做学习用途就不重装系统了
一、环境说明
|
硬件/软件 |
版本/型号 |
|---|---|
|
CPU |
AMD Ryzen 7 9700X(16核) |
|
系统 |
Ubuntu 24.10(WSL2) |
|
Python |
3.12(大家测试用的最多的版本) |
|
PyTorch |
2.12.0+cpu(无GPU版) |
|
环境管理 |
Conda |
二、第一步:创建并激活Conda环境
1. 打开终端,输入以下命令创建环境
# 创建名为amd-env的conda环境(Python 3.12)
conda create -n amd-env python=3.12 -y
✅ 正确显示(终端输出):
Collecting package metadata (current_repodata.json): done
Solving environment: done
...
Preparing transaction: done
Verifying transaction: done
Executing transaction: done
#
# To activate this environment, use
#
# $ conda activate amd-env
#
# To deactivate an active environment, use
#
# $ conda deactivate
2. 激活环境
conda activate amd-env
✅ 正确显示(终端提示符变化):
(amd-env) lovasuka@DESKTOP-N5OM9QB:~$
⚠️ 注意:如果提示符还是(base),说明没激活成功,再输一遍conda activate amd-env。
三、第二步:安装PyTorch CPU版
1. 安装命令
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cpu
✅ 正确显示(部分输出):
Looking in indexes: https://download.pytorch.org/whl/cpu
Collecting torch
Downloading torch-2.12.0+cpu-cp312-cp312-manylinux1_x86_64.whl (195.8 MB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 195.8/195.8 MB 5.2 MB/s eta 0:00:00
Collecting torchvision
Downloading torchvision-0.17.0+cpu-cp312-cp312-manylinux1_x86_64.whl (6.2 MB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 6.2/6.2 MB 8.1 MB/s eta 0:00:00
Installing collected packages: torch, torchvision, torchaudio
Successfully installed torch-2.12.0+cpu torchvision-0.17.0+cpu torchaudio-2.2.0+cpu
2. 验证安装是否成功
python - << 'EOF'
import torch
print("PyTorch版本:", torch.__version__)
print("是否有GPU:", torch.cuda.is_available())
EOF
✅ 正确显示(终端输出):
PyTorch版本: 2.12.0+cpu
是否有GPU: False
❌ 错误情况:如果提示ModuleNotFoundError: No module named 'torch',说明安装失败,重新执行上面的pip命令。
四、第三步:搭建项目目录
1. 进入projects目录(如果没有就创建)
cd ~/projects || mkdir -p ~/projects && cd ~/projects
✅ 正确显示(终端路径变化):
(amd-env) lovasuka@DESKTOP-N5OM9QB:~/projects$
2. 创建day00/day03目录
mkdir -p day00/day03
cd day00/day03
✅ 正确显示(终端路径变化):
(amd-env) lovasuka@DESKTOP-N5OM9QB:~/projects/day00/day03$
五、第四步:编写测试代码
1. 用nano创建文件
nano bench_matmul.py
✅ 正确显示:终端进入nano编辑器界面(底部有快捷键提示)。
2. 粘贴以下代码(直接复制)
import torch
import time
import os
# ---------- 可调参数 ----------
SIZE = 5000 # 矩阵大小(5000x5000)
THREADS_LIST = [1, 4, 8, 12] # 测试的线程数
# ------------------------------
def bench(size, threads):
"""执行矩阵乘法基准测试"""
torch.set_num_threads(threads)
a = torch.randn(size, size)
b = torch.randn(size, size)
# 预热,避免冷启动误差
_ = a @ b
start = time.time()
c = a @ b
return time.time() - start
# 打印环境信息
print("PyTorch:", torch.__version__)
print("Using:", torch.device("cuda" if torch.cuda.is_available() else "cpu"))
print(f"CPU cores: {os.cpu_count()}\n")
# 运行基准测试
for t in THREADS_LIST:
sec = bench(SIZE, t)
print(f"[threads={t:>2}] {SIZE}x{SIZE} matmul: {sec:.2f}s")
# GPU分支(当前环境不可用)
if torch.cuda.is_available():
print("\n(GPU branch skipped — no GPU on this machine)")
3. 保存退出
-
按
Ctrl + O(写入文件) -
按
Enter(确认文件名) -
按
Ctrl + X(退出编辑器)
✅ 正确显示(回到终端命令行):
(amd-env) lovasuka@DESKTOP-N5OM9QB:~/projects/day00/day03$
六、第五步:运行测试
1. 执行代码
python bench_matmul.py
✅ 正确显示(终端输出示例):
PyTorch: 2.12.0+cpu
Using: cpu
CPU cores: 16
[threads= 1] 5000x5000 matmul: 1.80s
[threads= 4] 5000x5000 matmul: 0.62s
[threads= 8] 5000x5000 matmul: 0.40s
[threads=12] 5000x5000 matmul: 0.29s
⚠️ 注意:每个人耗时不同(和CPU负载有关)
七、学习建议(避免走弯路)
✅ 适合CPU学习的内容
-
神经网络基础(全连接层、激活函数)
-
反向传播算法(梯度下降)
-
小型数据集训练(MNIST手写数字、Fashion-MNIST衣服分类)
-
模型调试(看损失曲线、准确率)
⚠️ 需要GPU的内容(以后再用)
-
训练大模型(比如ResNet-50、BERT)
-
生成图片(GAN、Stable Diffusion)
-
长时间训练(几个小时以上)
Intel CPU:
✅ 直接复制上面的所有命令,一行不改
✅ 性能甚至可能比 AMD 略好(PyTorch 对 Intel 优化更深)
✅ 学习深度学习时,完全感觉不到区别
唯一要注意:
别把 SIZE设太大(比如 10000),否则内存不够
八、估算能装下的最大模型(经验法则:fp16 每个参数占 2 字节)
(base) lovasuka@DESKTOP-N5OM9QB:~$ free -h total used free shared buff/cache available Mem: 15Gi 1.5Gi 13Gi 9.7Mi 1.1Gi 13Gi Swap: 4.0Gi 0B 4.0Gi
✅ 可用于模型的内存 ≈ 13 GiB(保守取 12 GiB 做计算更安全)
1️⃣ 纯加载权重(最乐观,仅 fp16)
12 GiB × 1024³ ÷ 2 = 12 × 1,073,741,824 ÷ 2 ≈ 6.44 × 10⁹
≈ 64 亿参数(6.4B)
⚠️ 现实:刚加载完就 OOM,连推理都跑不起来。
2️⃣ 实际推理(float32 + 激活值,保守)
每个参数实际吃 4–8 字节(权重 4B + 临时激活 4B)
12 GiB ÷ 6 ≈ 2.0 × 10⁹
≈ 20 亿参数(2B)
✅ 能跑小模型(如 TinyLlama‑1.1B、Phi‑2‑2.7B 量化版)
3️⃣ 训练(Adam 优化器,最吃内存)
每个参数吃 16–20 字节(权重+梯度+动量+方差)
12 GiB ÷ 18 ≈ 0.67 × 10⁹
≈ 6.7 亿参数(0.67B)
✅ 适合学习用:MLP、CNN、小 Transformer(<1B)
|
用途 |
最大推荐模型 |
参数规模 |
备注 |
|---|---|---|---|
|
学习/练手 |
自定义小模型 |
<5 亿 |
稳如老狗 |
|
推理 fp16 |
蒸馏小模型 |
1–2 B |
勉强流畅 |
|
推理 int4 |
7B 量化模型 |
7 B |
用 llama.cpp |
|
训练 Adam |
微型模型 |
<1 B |
只能 toy 级 |
9700X 最优学习方案 ✅
✅ 推荐:CPU 学原理 + 云 GPU 训模型
|
阶段 |
在哪里跑 |
模型大小 |
|---|---|---|
|
理解 forward/backward |
本地 CPU |
1M – 10M |
|
调通训练 pipeline |
本地 CPU |
10M – 100M |
|
跑完整实验 |
腾讯云 GN7 |
1B – 7B |
|
写论文/做项目 |
AutoDL 4090 |
7B – 13B |
把结论写进 项目文件清单.txt
nano 项目文件清单.txt
在最后追加:
🧠 硬件能力说明(9700X + 16GB RAM):
- 纯加载 fp16 权重:理论 ≈ 64 亿参数
- 实际推理(float32):安全 ≤ 20 亿参数
- 训练(Adam):安全 ≤ 6.7 亿参数
💡 学习建议:
- 本地:跑 <1B 模型,理解原理
- 云端:租 GPU 跑 ≥7B 模型,做实验
- 不要试图在 16GB RAM 上训 7B 模型(必 OOM)
一句话总结
16GB 内存 ≈ 6.7 亿参数训练上限 / 20 亿参数推理上限。
本地 CPU 适合学原理,真·大模型请交给云 GPU。
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐



所有评论(0)