用 VMware 虚拟机跑通阿里 SimAI:不买 GPU 服务器,也能研究大模型训练(超详细版)

用 VMware 虚拟机跑通阿里 SimAI:不买 GPU 服务器,也能研究大模型训练

面向初学者:只要你有一台普通 Windows 电脑,就能在虚拟机里把"大模型分布式训练"的性能仿真跑起来。


0. 先说人话:为什么要学 SimAI?

现在搞大模型,很多人一听"训练"就觉得必须这样:

  • 8 张 A100 / H100 的服务器
  • InfiniBand / RoCE 交换机
  • 几十台机器组成集群
  • 一次实验几万、几十万人民币

现实是:训练 GPT-3 级别模型,可能需要上千张高端 GPU;调一次并行策略、换一种网络拓扑、改一次通信参数,都要真机器跑,成本极高。

但 SimAI 的思路不一样:

不真正训练模型,不算 loss,不存激活值;而是"仿真"一次训练迭代里:计算花多久、通信花多久、网络会不会成为瓶颈。

所以你可以在一台笔记本 + VMware Ubuntu 虚拟机里:

  • 模拟 8 卡、64 卡甚至更多 GPU 的训练通信行为
  • 看 AllReduce / AllGather / Send-Recv 的通信时间
  • 比较不同并行策略对性能的影响
  • 不用买一张 GPU、不用一台交换机

用直白的话说:

真机训练 = 花钱试错

SimAI 仿真 = 先在计算机里"试驾"


1. 本教程能带你做到什么

学完你能:

  1. 在 VMware 里装好 Ubuntu 20.04
  2. 编译 SimAI 的 Analytical 模式
  3. 用一条命令模拟"8 张 GPU"的训练迭代
  4. 看懂结果文件:时间花在计算还是通信

你不会在本教程里:

  • 真正微调一个大模型
  • 用到显卡
  • 花一分钱租云 GPU

simAI介绍:

SimAI作为业界首个面向大语言模型推理和训练的全栈高精度模拟器,为AI大规模训练提供了端到端的性能模拟能力。具体介绍可参考这篇文章:SimAI架构详解:从SimCCL到astra-sim-alibabacloud的四大核心组件-CSDN博客


2. 为什么用 VMware,而不直接上真集群?

|-------------------|------------|------------------|
| 方式 | 成本 | 适合谁 |
| 真机 A100/H100 集群 | 几万~几百万 | 大厂 / 实验室 |
| 云上租 8×H100 | 按小时几百元 | 有预算的团队 |
| VMware 虚拟机跑 SimAI | 0 元 | 学生 / 初学者 / 架构学习者 |

SimAI 的 Analytical 模式本身是 CPU 侧计算:

  • 用带宽模型估算通信耗时
  • 用 kernel 时间模型估算计算耗时
  • 不依赖 CUDA、不依赖 RDMA 网卡

所以:普通电脑 + 虚拟机完全够用。


3. 环境准备

3.1 你需要什么

  • Windows 10/11 电脑
  • VMware Workstation / Player(免费版即可)
  • 能联网
  • 建议配置:
    • 内存 ≥ 8 GB(给虚拟机分配 4--8 GB)
    • CPU ≥ 4 核(给虚拟机分配 2--4 核)
    • 磁盘 ≥ 40 GB 空闲

3.2 创建虚拟机

  1. 打开 VMware → "创建新的虚拟机"
  2. 选择"典型" → 下一步
  3. 加载 Ubuntu 20.04 镜像(ubuntu-20.04-desktop-amd64.iso)
  4. 设置用户名和密码(记住密码,后面 sudo 要用)
  5. 硬件配置:
    • 内存:8192 MB
    • 处理器:2--4 核
    • 硬盘:40 GB
  6. 点击"完成",等待系统安装完毕
  7. 安装完成后登录,打开终端(Ctrl + Alt + T)

**为什么用 Ubuntu 20.04?**​ SimAI 官方在这个版本 + GCC 9.4 + Python 3.8 下测试过,兼容性最好。


4. 安装依赖(逐条解释)

以下所有命令在终端里逐条执行。

4.1 更新软件包列表

sudo apt-get update

简单说:这条命令是"刷新一下能装什么软件",不会升级任何已安装的软件。

4.2 安装编译工具和依赖库

sudo apt-get install -y git cmake build-essential autoconf libtool pkg-config python3 python3-pip python3-dev libssl-dev zlib1g-dev

。。。几分钟,中间省略

这条命令在做什么?

|------------|---------------------|
| 部分 | 含义 |
| install | 安装软件包 |
| -y | 自动回答"yes",不用每次都手动确认 |

每个软件包的作用:

|-----------------|----------------------------------------------|
| 软件包 | 干什么用 |
| git | 从 GitHub 下载 SimAI 源代码 |
| cmake | 跨平台构建工具,SimAI 用它来组织编译流程 |
| build-essential | 一整套编译工具的集合,包含 gcc(C 编译器)、g++(C++ 编译器)、make 等 |
| autoconf | 自动配置脚本工具,部分子模块编译需要 |
| libtool | 库文件管理工具 |
| pkg-config | 帮助编译器找到已安装库的路径 |
| python3 | Python 3 解释器(SimAI 部分脚本用 Python 写) |
| python3-pip | Python 的包管理器,用来安装 Python 库 |
| python3-dev | Python 开发头文件,编译 Python 扩展时需要 |
| libssl-dev | SSL/TLS 加密库的开发文件,部分网络通信代码依赖 |
| zlib1g-dev | 压缩库的开发文件 |

简单说:这条命令一次性装好了"从网上下代码 → 编译 → 运行脚本"所需的所有工具。

安装过程可能需要几分钟,等终端提示符重新出现就完成了。


5. 下载 SimAI 源代码(逐条解释)

5.1 克隆仓库

git clone GitHub - aliyun/SimAI · GitHub

|-------------------------------------|-----------------------|
| 部分 | 含义 |
| git clone | 从远程仓库完整复制一份代码到本地 |
| https://github.com/aliyun/SimAI.git | SimAI 在 GitHub 上的仓库地址 |

执行后,当前目录会多出一个 SimAI/ 文件夹。

5.2 进入项目目录

cd SimAI

后面的所有操作都要在这个目录里执行。

5.3 拉取子模块

git submodule update --init --recursive

|---------------|------------------------|
| 部分 | 含义 |
| git submodule | Git 子模块管理命令 |
| update --init | 初始化并下载所有子模块代码 |
| --recursive | 递归下载:子模块里还有子模块,一层层全拉下来 |

**为什么要这一步?**​ SimAI 不是一个单独的程序,它依赖多个外部项目:

  • ns-3:网络模拟器
  • AstraSim:分布式训练模拟框架
  • SimCCL:集合通信库模拟

这些都在子模块里,不拉取就编译不了。

git submodule update --remote

|------------|------------------------------|
| 部分 | 含义 |
| --remote | 拉取子模块的最新版本(而不是锁定在某个旧 commit) |

注意:子模块总大小几个 GB,网络慢的话可能需要十几分钟。如果中途失败,重新执行这两条命令即可。

可以看到,simAI文件夹下面,多了子模块文件夹


6. 编译 Analytical 模式

6.1 执行编译

./scripts/build.sh -c analytical

。。。中间省略

看到100%就是成功了。

|--------------------|-------------------------------------------------|
| 部分 | 含义 |
| ./scripts/build.sh | 运行项目里的编译脚本(位于 scripts/ 目录下) |
| -c analytical | -c 是"configuration"的缩写,指定编译模式为 analytical(分析模式) |

Analytical 模式是什么?

SimAI 有三种模式:

  • Analytical:用公式和带宽模型直接计算通信/计算耗时,最快,不需要模拟每个网络包
  • Simulation(ns-3):包级网络模拟,能看到交换机、拥塞、丢包
  • Physical:在真实 RDMA 网卡上发真实流量

初学者用 Analytical 模式最合适------编译快、运行快、结果直观。

编译过程会输出大量信息,看到类似下面的内容就说明成功了:

编译产物在 bin/ 目录下:

ls bin/SimAI_analytical

能看到这个文件就说明编译成功。


7. 第一次仿真:模拟 8 张 GPU

7.1 执行仿真命令

把下面整条命令复制粘贴到终端,一行写完,按回车:

./bin/SimAI_analytical -w example/workload_analytical.txt -g 8 -g_p_s 8 -r test-

逐条拆解每个参数:

|------------------------------------|------------------------------------------------------------------|
| 参数 | 含义 |
| ./bin/SimAI_analytical | 运行编译好的模拟器可执行文件 |
| -w example/workload_analytical.txt | -w = workload(工作负载),指定一个描述"模拟什么模型、什么并行策略"的配置文件 |
| -g 8 | -g = GPUs,总共模拟 8 张 GPU |
| -g_p_s 8 | -g_p_s = GPUs per server,每个节点 8 张 GPU。因为总共 8 张、每节点 8 张,所以是 1 个节点 |
| -r test- | -r = result prefix,结果文件名前缀。生成的 CSV 文件会以 test- 开头 |

这条命令的整体含义:

用 Analytical 模式,模拟一个 1 节点 8 卡的集群,按照 workload_analytical.txt 里描述的模型配置,跑一次训练迭代的性能仿真。

7.2 判断运行是否成功

执行后终端会输出一些信息,看到以下关键行就说明运行完成:

同时终端会回到命令提示符:

@ubuntu:~/SimAI$

确认结果文件:

ls -lh results/test-EndToEnd.csv

|---------------------------|-----------------------------------|
| 部分 | 含义 |
| ls | 列出文件 |
| -lh | -l 显示详细信息,-h 把文件大小转成人类可读格式(KB/MB) |
| results/test-EndToEnd.csv | 结果文件路径 |

如果看到类似 192K 这样的文件大小(不是 0),就说明仿真结果已经成功生成。

7.3 查看结果内容

head results/test-EndToEnd.csv

CSV 文件里记录了每一层的:

  • 计算耗时
  • 通信类型(AllReduce、AllGather、Send/Recv 等)
  • 通信耗时
  • 总迭代时间

7.4 从虚拟机拷贝结果到 Windows

最简单的方式------拖放:

  1. 在 Ubuntu 桌面打开文件管理器
  2. 进入 主目录 → SimAI → results
  3. 找到 test-EndToEnd.csv
  4. 右键复制 → 到 Windows 桌面粘贴

或者用 VMware 共享文件夹(VMware 设置 → 选项 → 共享文件夹),把文件复制到共享目录后在 Windows 侧访问。


8. 结果怎么读(初学者版)

打开 CSV 文件后,重点看这些概念:

|---------------|-----------------------------------|
| 字段/概念 | 意思 |
| compute time | GPU 算矩阵乘法等花了多久 |
| TP comm | 张量并行通信时间(节点内 AllReduce) |
| DP comm | 数据并行通信时间(跨节点 AllReduce) |
| PP bubble | 流水线空泡------某些 GPU 在等前一层算完,空闲等待的时间 |
| EP comm | MoE 专家并行通信(AllToAll) |
| Total Time | 一次迭代端到端总时间 |

一句话总结:

SimAI 不告诉你"模型训得准不准",只告诉你"这样配硬件和并行,训练快不快"。

这就是 AI 基础设施工程师日常要解决的核心问题。


9. SimAI 三种模式对比

|-------------------|-----------------|------------|-------------|
| 模式 | 要不要 GPU | 速度 | 用途 |
| Analytical(本教程用的) | 不需要 | 秒级 | 快速估算、入门学习 |
| Simulation(ns-3) | 不需要 | 分钟~小时 | 看交换机、拥塞、拓扑 |
| Physical | 需要 RDMA 网卡 | 真机级 | 发真实 NCCL 流量 |

初学者路径:Analytical → 理解并行策略 → Simulation → 理解网络瓶颈


10. 学完你应该建立的认知

很多人初学大模型会误以为"训练 = 写 PyTorch + 调学习率 + 等显卡"。但工业界另一半问题是:

  • 8 卡为什么比 4 卡没快一倍?
  • TP=2 还是 PP=4 更适合我的模型?
  • 交换机带宽从 100G 提到 400G,训练时间能降多少?

这些问题:

  • 真机试 = 烧钱
  • SimAI 仿真 = 改参数、重跑

所以 SimAI 的价值一句话:

在大模型时代,先仿真、再采购;先算时间线,再买交换机。

你刚才在一台普通电脑的虚拟机里,用几条命令,就完成了"8 卡大模型训练迭代"的性能仿真------这就是仿真器的意义。


附录:常用命令速查

bash

查看 Ubuntu 版本

lsb_release -a

查看 SimAI 帮助信息

./bin/SimAI_analytical -h

确认当前在哪个目录pwd

查看文件是否存在ls example/workload_analytical.txt

实时监控程序是否在跑(另开一个终端)

top -p $(pgrep SimAI_analytical)

查看结果文件末尾tail results/test-EndToEnd.csv

统计结果文件行数wc -l results/test-EndToEnd.csv


教程总结:从装虚拟机到跑通 SimAI,核心就五步------装 Ubuntu → 装依赖 → 克隆代码 → 编译 → 运行。每一步的命令都在这了,跟着敲就能跑通。遇到问题先看终端报错信息,大部分是路径不对或参数写错。

相关推荐
LHICOD1 天前
Linux-2
java·linux·后端·jar·vmware·svm·vm
cyf311 天前
第 02 篇:ARP——IP 地址到 MAC 地址的“翻译官“
tcp/ip·计算机网络·wireshark·以太网·vmware·arp·地址解析协议
Smoothcloud润云2 天前
GPU算力平台推荐:复现实验时,如何判断租用资源是否合适?
服务器·人工智能·深度学习·gpu算力·gpu
Eloudy4 天前
从源码 安装sglang
gpu
Eloudy4 天前
SGLang 的组成结构与基本工作原理
llm·gpu·sglang
LHICOD4 天前
Linux-1
linux·ip·vmware·虚拟机·cmd·ping
Eloudy4 天前
`ibv_get_device_list` 实现分析
网络·gpu·rdma
蒸鱼Yuzheng5 天前
移动端 Overdraw 治理:从单帧热图到屏幕空间预算
性能优化·gpu·renderdoc·overdraw·移动端渲染
Eloudy5 天前
MLNX_OFED 源码补齐、Debug/Release 构建命令与修改记录
gpu·rdma