用 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. 本教程能带你做到什么
学完你能:
- 在 VMware 里装好 Ubuntu 20.04
- 编译 SimAI 的 Analytical 模式
- 用一条命令模拟"8 张 GPU"的训练迭代
- 看懂结果文件:时间花在计算还是通信
你不会在本教程里:
- 真正微调一个大模型
- 用到显卡
- 花一分钱租云 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 创建虚拟机
- 打开 VMware → "创建新的虚拟机"
- 选择"典型" → 下一步
- 加载 Ubuntu 20.04 镜像(ubuntu-20.04-desktop-amd64.iso)
- 设置用户名和密码(记住密码,后面 sudo 要用)
- 硬件配置:
- 内存:8192 MB
- 处理器:2--4 核
- 硬盘:40 GB
- 点击"完成",等待系统安装完毕
- 安装完成后登录,打开终端(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
最简单的方式------拖放:
- 在 Ubuntu 桌面打开文件管理器
- 进入 主目录 → SimAI → results
- 找到 test-EndToEnd.csv
- 右键复制 → 到 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 → 装依赖 → 克隆代码 → 编译 → 运行。每一步的命令都在这了,跟着敲就能跑通。遇到问题先看终端报错信息,大部分是路径不对或参数写错。