在阿里云 ECS(或者任何主流云厂商的云服务器)上搭建机器学习环境,核心逻辑其实就三步:选对实例 -> 装好基础软件栈 -> 跑通第一个模型。
很多新手容易犯的错误是上来就装 Anaconda,结果发现依赖冲突搞半天。作为过来人,我给你梳理一套目前最稳定、也是国内开发者用得最多的“标准作业流程”。这套方案兼顾了性能、稳定性和可维护性。
第一步:选型与系统准备(别省这一步的钱)
机器学习最吃的是 GPU 和内存。CPU 虽然能跑推理,但训练深度模型基本没戏。
-
实例规格:
- 训练阶段:必须选带 GPU 的实例。推荐
gn6i(Tesla T4,性价比高,适合大多数 CV/NLP 任务)或gn7(A10/A100,适合大模型微调)。如果是轻量级实验,可以考虑ecs.gn6i-c4g1.xlarge这种单卡起步的配置。 - 内存:GPU 显存再大,数据加载也需要 CPU 内存。建议至少 32GB 起步,跑大模型直接上 128GB+。
- 磁盘:系统盘 50G 足够,但一定要挂载一块 ESSD 云盘 作为数据盘。SSD 的随机读写速度对 DataLoader 影响巨大,机械硬盘会直接把你的训练速度拖死。
- 训练阶段:必须选带 GPU 的实例。推荐
-
操作系统:
- 首选 Ubuntu 20.04 LTS 或 22.04 LTS。为什么?因为 PyTorch、TensorFlow 官方文档和社区教程绝大多数基于 Ubuntu,踩坑概率最低。CentOS 8 已经停止维护,不推荐新用;Windows Server 除非你要做特定的 .NET 生态或某些封闭商业软件,否则驱动配置麻烦,劝退。
第二步:基础环境安装(避坑指南)
不要直接用 apt install python,那个版本太老。也不要直接去官网下载 CUDA 安装包手动配环境变量,容易出错。推荐使用 NVIDIA 提供的容器化驱动思路,或者更轻量的本地驱动管理。
1. 安装显卡驱动和 CUDA Toolkit
阿里云 ECS 购买 GPU 实例时,通常可以选择“预装 NVIDIA 驱动”的镜像。如果有这个选项,直接选! 这是最省心的。
如果没有,或者你想自己折腾,步骤如下:
# 1. 更新源
sudo apt update
sudo apt upgrade -y
# 2. 安装显卡驱动 (以 Ubuntu 为例)
sudo ubuntu-drivers autoinstall
sudo reboot # 重启后检查 nvidia-smi 是否正常
# 3. 安装 CUDA Toolkit (建议下载.run 文件或 deb 包,不要只用 apt 装,版本可能滞后)
# 去 NVIDIA 官网下载对应你驱动版本的 CUDA Toolkit
wget https://developer.download.nvidia.com/compute/cuda/11.7.0/local_installers/cuda_11.7.0_515.43.04_linux.run
sudo sh cuda_11.7.0_515.43.04_linux.run
# 注意:安装过程中,如果提示是否安装驱动,选 NO(因为你已经有了),只装 toolkit 和 samples
# 4. 配置环境变量 (~/.bashrc 中添加)
export PATH=/usr/local/cuda-11.7/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda-11.7/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
source ~/.bashrc
验证:nvcc -V 和 nvidia-smi。
2. 安装 Python 环境管理器:Conda 或 Miniforge
这里强烈建议使用 Miniforge 而不是官方的 Anaconda。Miniforge 默认使用 conda-forge 通道,社区支持更好,且包含大量科学计算库,避免私有频道带来的许可证问题。
# 下载并安装 Miniforge
wget https://github.com/conda-forge/miniforge/releases/latest/download/Miniforge3-Linux-x86_64.sh
bash Miniforge3-Linux-x86_64.sh
# 按照提示操作,最后记得 source ~/.bashrc
第三步:构建虚拟环境与深度学习框架
不要在 base 环境里装东西!这是大忌。
1. 创建独立环境
# 创建一个名为 ml_env 的环境,指定 Python 版本
conda create -n ml_env python=3.10 -y
conda activate ml_env
2. 安装 PyTorch (以 CUDA 11.7 为例)
去 PyTorch 官网 复制对应的命令。对于大多数用户,pip 方式最简单:
# 假设你用的是 CUDA 11.7
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu117
如果你需要 TensorFlow:
pip install tensorflow[and-cuda]
3. 常用工具链安装
# 数据处理必备
pip install numpy pandas scikit-learn pillow opencv-python-headless
# 可视化
pip install matplotlib seaborn tensorboard
# 如果是做 NLP,可能需要 transformers, datasets 等
# pip install transformers datasets accelerate
# 代码编辑器(如果在远程服务器写代码)
pip install jupyterlab
第四步:实战优化技巧(这才是大神和普通人的区别)
环境搭好了只是开始,要在云上跑出高性能,得注意以下几点:
-
数据传输提速:
从 OSS(对象存储)下载数据到 ECS 本地 SSD 是非常必要的。网络 IO 往往是瓶颈。# 安装 ossutil wget http://gosspublic.alicdn.com/ossutil/1.7.18/ossutil-linux-amd64-v1.7.18.tar.gz tar -zxvf ossutil-linux-amd64-v1.7.18.tar.gz ./ossutil-linux-amd64-v1.7.18/ossutil config -e oss-cn-hangzhou.aliyuncs.com -i <AccessKeyId> -k <AccessKeySecret> # 同步数据到本地数据盘 ./ossutil-linux-amd64-v1.7.18/ossutil cp oss://your-bucket/data ./data -r -
Jupyter Notebook 远程访问:
直接在服务器上启动 Jupyter,方便调试。jupyter lab --ip=0.0.0.0 --port=8888 --no-browser --allow-root注意:为了安全,建议通过 SSH 隧道映射端口,而不是直接暴露 8888 端口到公网。
ssh -L 8888:localhost:8888 user@your-ecs-ip然后在本地浏览器访问
http://localhost:8888。 -
多卡并行:
如果你买了双卡或多卡实例,确保 PyTorch 能识别所有 GPU。import torch print(torch.cuda.device_count()) # 应该显示正确的卡数 model = MyModel().cuda() # 使用 DataParallel 或 DistributedDataParallel -
断点续训与日志:
云端任务可能会因为欠费、故障中断。务必实现 Checkpoint 机制,定期保存模型权重。同时,使用tmux或screen来运行训练脚本,防止 SSH 断开导致进程终止。tmux new -s train_session # 在里面运行 python train.py # Ctrl+B, D 退出 session # tmux attach -t train_session 重新进入
总结
在 ECS 上搭建 ML 环境,核心不是“装软件”,而是隔离环境和IO 优化。
- 系统:Ubuntu 20.04/22.04。
- 驱动:优先用预装镜像,否则手动匹配 CUDA 版本。
- 环境:Miniforge + Conda 虚拟环境,绝不污染 base。
- 框架:PyTorch 为主流,通过 pip 按 CUDA 版本安装。
- 运维:用 tmux 保活,用 OSS 提速数据导入,用 SSH 隧道安全访问 Jupyter。
这套流程下来,基本能覆盖 90% 以上的日常机器学习和深度学习需求。如果遇到具体的报错,比如 cuBLAS 错误或 ImportError,通常是 CUDA 版本和 PyTorch 版本不匹配,回去核对一下 PyTorch 官网的安装命令即可解决。
云技术博客