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。

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐