努力
加油

在ECS服务器上如何搭建机器学习环境?

在阿里云 ECS(或者任何主流云厂商的云服务器)上搭建机器学习环境,核心逻辑其实就三步:选对实例 -> 装好基础软件栈 -> 跑通第一个模型。

很多新手容易犯的错误是上来就装 Anaconda,结果发现依赖冲突搞半天。作为过来人,我给你梳理一套目前最稳定、也是国内开发者用得最多的“标准作业流程”。这套方案兼顾了性能、稳定性和可维护性。

第一步:选型与系统准备(别省这一步的钱)

机器学习最吃的是 GPU 和内存。CPU 虽然能跑推理,但训练深度模型基本没戏。

  1. 实例规格:

    • 训练阶段:必须选带 GPU 的实例。推荐 gn6i(Tesla T4,性价比高,适合大多数 CV/NLP 任务)或 gn7(A10/A100,适合大模型微调)。如果是轻量级实验,可以考虑 ecs.gn6i-c4g1.xlarge 这种单卡起步的配置。
    • 内存:GPU 显存再大,数据加载也需要 CPU 内存。建议至少 32GB 起步,跑大模型直接上 128GB+。
    • 磁盘:系统盘 50G 足够,但一定要挂载一块 ESSD 云盘 作为数据盘。SSD 的随机读写速度对 DataLoader 影响巨大,机械硬盘会直接把你的训练速度拖死。
  2. 操作系统:

    • 首选 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

第四步:实战优化技巧(这才是大神和普通人的区别)

环境搭好了只是开始,要在云上跑出高性能,得注意以下几点:

  1. 数据传输提速:
    从 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
  2. 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。

  3. 多卡并行:
    如果你买了双卡或多卡实例,确保 PyTorch 能识别所有 GPU。

    import torch
    print(torch.cuda.device_count()) # 应该显示正确的卡数
    model = MyModel().cuda()
    # 使用 DataParallel 或 DistributedDataParallel
  4. 断点续训与日志:
    云端任务可能会因为欠费、故障中断。务必实现 Checkpoint 机制,定期保存模型权重。同时,使用 tmux 或 screen 来运行训练脚本,防止 SSH 断开导致进程终止。

    tmux new -s train_session
    # 在里面运行 python train.py
    # Ctrl+B, D 退出 session
    # tmux attach -t train_session 重新进入

总结

在 ECS 上搭建 ML 环境,核心不是“装软件”,而是隔离环境和IO 优化。

  1. 系统:Ubuntu 20.04/22.04。
  2. 驱动:优先用预装镜像,否则手动匹配 CUDA 版本。
  3. 环境:Miniforge + Conda 虚拟环境,绝不污染 base。
  4. 框架:PyTorch 为主流,通过 pip 按 CUDA 版本安装。
  5. 运维:用 tmux 保活,用 OSS 提速数据导入,用 SSH 隧道安全访问 Jupyter。

这套流程下来,基本能覆盖 90% 以上的日常机器学习和深度学习需求。如果遇到具体的报错,比如 cuBLAS 错误或 ImportError,通常是 CUDA 版本和 PyTorch 版本不匹配,回去核对一下 PyTorch 官网的安装命令即可解决。