8 卡 H100 大模型训练环境部署文档
目标:在 Ubuntu 22.04 系统上部署一个支持模型训练和推理的深度学习环境,基于 8 张 NVIDIA H100 GPU,支持 LLaMA-Factory 和 DeepSpeed 分布式训练。
硬件环境:
-
• CPU:36 核 -
• 内存:1TB -
• GPU:8 张 NVIDIA H100(80GB HBM3) -
• 存储:NVMe SSD -
• 操作系统:Ubuntu 22.04 LTS
日期:2025年4月17日
目录
-
1. 系统准备
1.1 更新系统并安装基础工具
1.2 配置存储
1.3 配置网络 -
2. NVIDIA 驱动与 CUDA 配置
2.1 安装 NVIDIA 驱动
2.2 安装 NVIDIA Fabric Manager
2.3 安装 CUDA 特定版本 可选
2.4 安装 cuDNN 特定版本 可选 -
3. Anaconda 环境配置
3.1 安装 Anaconda
3.2 创建 Conda 环境 -
4. PyTorch 和依赖安装
4.1 安装 PyTorch 【必须】
4.2 安装 FlashAttention -
5. LLaMA-Factory 配置
5.1 安装 LLaMA-Factory
5.2 配置数据集和模型
5.3 模型格式转换(可选) -
6. 运行训练和推理任务
6.1 训练任务
6.2 推理任务 -
7. 辅助工具安装
7.1 安装 llama.cpp
7.2 安装 nvitop -
8. 版本汇总 -
9. 安装过程AI分析
9.1 有效命令与关键安装
9.2 无效或重复命令 -
10. 故障排查
10.1 CUDA Error 802 (system not yet initialized)
1. 系统准备
1.1 更新系统并安装基础工具
确保系统包最新并安装必要工具:
sudo apt-get update
sudo apt install -y net-tools iputils-ping iptables parted lrzsz vim axel unzip cmake gcc make build-essential ninja-build
1.2 配置存储
为大数据集和模型检查点配置 NVMe SSD 和 LVM:
# 检查磁盘
fdisk -l
lsblk
# 分区 NVMe 磁盘
parted /dev/nvme0n1
# 命令:mklabel gpt, mkpart primary ext4 0% 100%, set 1 lvm on, quit
# 格式化分区
mkfs.ext4 /dev/nvme0n1p1
# 创建 LVM 逻辑卷
sudo lvcreate -n backup-lv -l 100%FREE ubuntu-vg
mkfs.ext4 /dev/ubuntu-vg/backup-lv
# 创建挂载点
mkdir /data /backup
# 配置 /etc/fstab
sudo vi /etc/fstab
# 添加以下内容(使用 blkid 获取 UUID):
# UUID=<nvme0n1p1-uuid> /data ext4 defaults 0 0
# /dev/ubuntu-vg/backup-lv /backup ext4 defaults 0 0
# 挂载
sudo mount -a
验证:
-
• 检查挂载: df -Th -
• 检查 UUID: blkid -
• 检查目录: ls -larth /data/ /backup/
1.3 配置网络
确保网络接口支持高带宽通信:
cd /etc/netplan/
sudo vi 00-installer-config.yaml
# 示例配置(根据实际网卡调整):
network:
ethernets:
enp25s0f0:
dhcp4: no
addresses: [10.1.1.10/24]
gateway4: 10.1.1.1
nameservers:
addresses: [8.8.8.8, 8.8.4.4]
version: 2
sudo netplan apply
验证:
-
• 检查 IP: ip addr -
• 检查网卡状态: ethtool enp25s0f0 -
• 测试连通性: ping 8.8.8.8
2. NVIDIA 驱动与 CUDA 配置
2.1 安装 NVIDIA 驱动
安装 H100 适配的 NVIDIA 数据中心驱动:
cd /data/install_deb/
sudo chmod +x NVIDIA-Linux-x86_64-570.124.06.run
sudo ./NVIDIA-Linux-x86_64-570.124.06.run --no-x-check --no-nouveau-check --no-opengl-files
验证:
-
• 检查驱动: nvidia-smi -
• 检查模块: lsmod | grep nvidia
版本:
-
• NVIDIA 驱动:570.124.06
2.2 安装 NVIDIA Fabric Manager
为多 GPU 系统安装 Fabric Manager,支持 NVLink 和高效通信:
cd /data/install_deb/
wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/nvidia-fabricmanager-570_570.124.06-1_amd64.deb
sudo apt-get install ./nvidia-fabricmanager-570_570.124.06-1_amd64.deb
systemctl enable nvidia-fabricmanager
systemctl restart nvidia-fabricmanager
验证:
-
• 检查状态: systemctl status nvidia-fabricmanager -
• 检查 Fabric Manager: nvidia-smi -q | grep -i -A 2 Fabric
版本:
-
• Fabric Manager:570.124.06
2.3 安装 CUDA 特定版本 可选
安装 CUDA 12.4,支持 PyTorch 和深度学习任务:
cd /data/install_deb/
wget https://developer.download.nvidia.com/compute/cuda/12.8.0/local_installers/cuda_12.4.0_550.54.14_linux.run
sudo ./cuda_12.4.0_550.54.14_linux.run --no-x-check --no-nouveau-check --no-opengl-files
# 配置环境变量
echo 'export CUDA_HOME=/usr/local/cuda-12.4' >> ~/.bashrc
echo 'export PATH=$CUDA_HOME/bin:$PATH' >> ~/.bashrc
echo 'export LD_LIBRARY_PATH=$CUDA_HOME/lib64:$LD_LIBRARY_PATH' >> ~/.bashrc
source ~/.bashrc
验证:
-
• 检查 CUDA 版本: nvcc --version -
• 检查 GPU 状态: nvidia-smi
版本:
-
• CUDA:12.4.0 -
• 驱动兼容性:550.54.14
2.4 安装 cuDNN 特定版本 可选
安装 cuDNN,提升深度学习性能:
cd /data/install_deb/
wget https://developer.download.nvidia.com/compute/cudnn/9.0.0/local_installers/cudnn-local-repo-ubuntu2204-9.0.0_1.0-1_amd64.deb
sudo dpkg -i cudnn-local-repo-ubuntu2204-9.0.0_1.0-1_amd64.deb
sudo apt-get update
sudo apt-get install -y libcudnn9-cuda-12 libcudnn9-dev-cuda-12
验证:
-
• 检查 cuDNN 版本: cat /usr/include/cudnn_version.h | grep CUDNN_MAJOR -A 2
版本:
-
• cuDNN:9.0.0
3. Anaconda 环境配置
3.1 安装 Anaconda
安装 Anaconda 用于环境隔离:
cd /data/install_deb/
wget https://repo.anaconda.com/archive/Anaconda3-2024.10-1-Linux-x86_64.sh
bash Anaconda3-2024.10-1-Linux-x86_64.sh
echo 'export PATH="/root/anaconda3/bin:$PATH"' >> ~/.bashrc
source ~/.bashrc
conda init
验证:
-
• 检查 Conda 版本: conda --version
版本:
-
• Anaconda:2024.10-1 -
• Python:3.12
3.2 创建 Conda 环境
创建隔离环境 llama_factory:
conda create -n llama_factory python=3.12
conda activate llama_factory
验证:
-
• 检查环境: conda info --envs -
• 检查 Python 版本: python --version
4. PyTorch 和依赖安装
4.1 安装 PyTorch 【必须】
安装 PyTorch 2.5.1,支持 CUDA 12.4:
conda activate llama_factory
pip install torch==2.5.1 torchvision==0.20.1 torchaudio==2.5.1 --index-url https://download.pytorch.org/whl/cu124
验证:
-
• 检查 PyTorch: python -c "import torch; print(torch.__version__); print(torch.cuda.is_available()); print(torch.version.cuda); print(torch.cuda.device_count()); print([torch.cuda.get_device_name(i) for i in range(torch.cuda.device_count())])"
版本:
-
• PyTorch:2.5.1 -
• torchvision:0.20.1 -
• torchaudio:2.5.1 -
• CUDA(PyTorch):12.4
4.2 安装 FlashAttention
安装 FlashAttention,提升 Transformer 模型性能:
pip install flash_attn-2.7.4.post1+cu12torch2.5cxx11abiFALSE-cp312-cp312-linux_x86_64.whl
验证:
-
• 检查安装: pip show flash-attn -
• 测试: python -c "import flash_attn; print('FlashAttention installed successfully!')"
版本:
-
• flash-attn:2.7.4.post1
5. LLaMA-Factory 配置
5.1 安装 LLaMA-Factory
克隆并安装 LLaMA-Factory:
cd /data
git clone https://github.com/hiyouga/LLaMA-Factory.git
cd LLaMA-Factory
pip install llamafactory==0.9.0 -i https://repo.huaweicloud.com/repository/pypi/simple
验证:
-
• 检查版本: llamafactory-cli --version
版本:
-
• LLaMA-Factory:0.9.0
5.2 配置数据集和模型
准备数据集和预训练模型:
cd /data
tar xvf checkpoint-214971.tar
tar xvf Qwen2___5-7B-Instruct.tar
mv Qwen2___5-7B-Instruct qwen25_7BI
# 移动数据集
cd /data/SKData
mv data/*.jsonl ./
# 配置 dataset_info.json
cd /data/LLaMA-Factory/data
vim dataset_info.json
# 示例配置:
{
"v5": {
"file_name": "/data/SKData/new_step_data_20250317_train_ocv.jsonl",
"columns": {
"prompt": "prompt",
"response": "response"
}
},
"ddz_dataset": {
"file_name": "/data/ddz_dataset/ai_data_training_v1.0.json",
"columns": {
"prompt": "prompt",
"response": "response"
}
}
}
5.3 模型格式转换(可选)
将 Hugging Face 模型转换为 GGUF 格式,用于 llama.cpp 推理:
cd /data/llama.cpp
python convert_hf_to_gguf.py /data/checkpoint-214971 --outfile /data/qwen2-model.gguf
验证:
-
• 检查 GGUF 文件: ls -larth /data/qwen2-model.gguf
6. 运行训练和推理任务
6.1 训练任务
使用 DeepSpeed 和多 GPU 进行模型微调:
conda activate llama_factory
FORCE_TORCHRUN=1 DISABLE_VERSION_CHECK=1 CUDA_VISIBLE_DEVICES=0,1 llamafactory-cli train examples/qwen2_7b_freeze_sft_ddz_v1.yaml
配置文件示例 (qwen2_7b_freeze_sft_ddz_v1.yaml):
model_name_or_path: /data/qwen25_7BI
dataset:v5,ddz_dataset
template:qwen
finetuning_type:freeze
use_deepspeed:true
deepspeed:ds_configs/stage3.json
per_device_train_batch_size:4
gradient_accumulation_steps:8
learning_rate:5e-5
num_train_epochs:3
output_dir: /data/checkpoint
验证:
-
• 监控 GPU 使用: nvitop或nvidia-smi -
• 检查日志: tail -f /data/checkpoint/train.log
6.2 推理任务
启动 API 服务进行推理:
conda activate llama_factory
API_PORT=6000 CUDA_VISIBLE_DEVICES=4,5 llamafactory-cli api examples/test_7b_dcot.yaml
配置文件示例 (test_7b_dcot.yaml):
model_name_or_path: /data/checkpoint-214971
template: qwen
infer_backend: vllm
vllm_args:
gpu_memory_utilization: 0.9
max_model_len: 4096
7. 辅助工具安装
7.1 安装 llama.cpp
用于模型转换和轻量推理:
cd /data
git clone https://github.com/ggerganov/llama.cpp
cd llama.cpp
mkdir build && cd build
cmake .. -DGGML_CUDA=ON -DCMAKE_CUDA_ARCHITECTURES=90
cmake --build . --config Release
验证:
-
• 测试推理: ./build/bin/llama-cli -m /data/qwen2-model.gguf --prompt "What is the capital of France?" -n 256 -t 8 --gpu-layers 28 -c 4096
7.2 安装 nvitop
用于 GPU 监控:
pip install nvitop
验证:
-
• 运行: nvitop
版本:
-
• nvitop:最新
8. 版本汇总
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
9. 安装过程AI分析
9.1 有效命令与关键安装
以下是 .bash_history 中有效的关键安装步骤,经过筛选和整理:
-
1. NVIDIA 驱动 ( NVIDIA-Linux-x86_64-570.124.06.run):
-
• 命令: sudo ./NVIDIA-Linux-x86_64-570.124.06.run --no-x-check --no-nouveau-check --no-opengl-files -
• 分析:570.124.06 是 H100 GPU 的最新数据中心驱动,安装成功, nvidia-smi显示 8 张 H100 GPU。 -
• 注意:多次尝试安装其他驱动版本(如 550、535),最终确认 570.124.06 最稳定。
-
2. NVIDIA Fabric Manager ( nvidia-fabricmanager-570_570.124.06-1_amd64.deb): -
• 命令: sudo apt-get install ./nvidia-fabricmanager-570_570.124.06-1_amd64.deb -
• 分析:Fabric Manager 确保多 GPU 间 NVLink 高效通信, systemctl status nvidia-fabricmanager确认服务运行正常,未进行安装可导致错误,详见 10.1。 -
3. CUDA 12.4 ( cuda_12.4.0_550.54.14_linux.run): -
• 命令: sudo ./cuda_12.4.0_550.54.14_linux.run --no-x-check --no-nouveau-check --no-opengl-files -
• 分析:CUDA 12.4 与 PyTorch 2.5.1 和 H100 兼容,环境变量配置正确, nvcc --version显示 12.4.0。 -
4. cuDNN ( cudnn-local-repo-ubuntu2204-9.0.0_1.0-1_amd64.deb): -
• 命令: sudo dpkg -i cudnn-local-repo-ubuntu2204-9.0.0_1.0-1_amd64.deb && sudo apt-get install -y libcudnn9-cuda-12 libcudnn9-dev-cuda-12 -
• 分析:cuDNN 9.0.0 增强深度学习性能,安装成功, cat /usr/include/cudnn_version.h确认版本。 -
5. FlashAttention ( flash_attn-2.7.4.post1+cu12torch2.5cxx11abiFALSE-cp312-cp312-linux_x86_64.whl): -
• 命令: pip install flash_attn-2.7.4.post1+cu12torch2.5cxx11abiFALSE-cp312-cp312-linux_x86_64.whl -
• 分析:使用预编译 wheel 避免编译问题, ninja-build确保依赖完整,pip show flash-attn确认安装。 -
6. PyTorch 和依赖: -
• 命令: pip install torch==2.5.1 torchvision==0.20.1 torchaudio==2.5.1 --index-url https://download.pytorch.org/whl/cu124 -
• 分析:PyTorch 2.5.1 与 CUDA 12.4 和 H100 兼容,多次卸载重装确保环境一致, python -c "import torch; print(torch.cuda.is_available())"确认 GPU 可用。 -
7. LLaMA-Factory 和其他库: -
• 命令: pip install llamafactory==0.9.0 transformers==4.46.1 accelerate==0.34.2 deepspeed==0.15.4 vllm==0.8.2 -i https://repo.huaweicloud.com/repository/pypi/simple -
• 分析:LLaMA-Factory 0.9.0 稳定运行, DISABLE_VERSION_CHECK=1解决版本冲突,vllm提供高效推理。 -
• 重复安装驱动:多次尝试 nvidia-driver-550、nvidia-driver-535等,最终使用570.124.06,早期版本无效。 -
• Conda 渠道配置:多次调整 Conda 渠道(如 conda-forge、pytorch),但 PyTorch 最终通过 pip 安装,Conda 渠道配置影响有限。 -
• FlashAttention 编译失败:尝试从源代码编译 flash-attn(git clone和python setup.py install),因依赖复杂失败,改为预编译 wheel。 -
• vllm 安装问题:多次尝试不同版本(如 0.6.2、0.7.2),最终 0.8.2 兼容 LLaMA-Factory。 -
• 冗余命令:如 conda init llamafactory(无效,正确为conda init bash)、多次ls -larth和ps auxf用于调试,文档中已精简。 -
• NVIDIA 驱动问题: -
• 检查模块: lsmod | grep nvidia -
• 清理旧驱动: sudo apt purge nvidia* -
• CUDA 未检测到 GPU:CUDA initialization: Unexpected error from cudaGetDeviceCount -
• 验证环境变量: echo $CUDA_HOME $LD_LIBRARY_PATH -
• 检查 PyTorch: python -c "import torch; print(torch.cuda.is_available())" -
• 安装 -
• FlashAttention 安装失败: -
• 确保 ninja已安装:ninja --version -
• 使用预编译 wheel 或降级 Python 到 3.11。 -
• LLaMA-Factory 版本冲突: -
• 设置 DISABLE_VERSION_CHECK=1绕过检查。 -
• 确保 transformers==4.46.1。 -
• vllm 推理错误: -
• 检查 use_beam_search参数,必要时修改/root/anaconda3/envs/llama_factory/lib/python3.12/site-packages/llamafactory/chat/vllm_engine.py。 -
• 错误日志: CUDA initialization: Unexpected error from cudaGetDeviceCount(). Did you run some cuda functions before calling NumCudaDevices() that might have already set an error? Error 802: system not yet initialized(2025-04-15 17:45:57, 13:10:42)。 -
• 原因: -
• NVIDIA Fabric Manager 服务未启动或版本与驱动不匹配。 -
• CUDA 环境变量配置错误。 -
• PyTorch 与 CUDA 版本不兼容。 -
• 解决方法:
检查 Fabric Manager:systemctl unmask nvidia-fabricmanager.service
sudo rm -f /lib/systemd/system/nvidia-fabricmanager.service
sudo rm -f /etc/systemd/system/nvidia-fabricmanager.service
sudo apt-get remove nvidia-fabricmanager*
sudo apt-get install ./nvidia-fabricmanager-570_570.124.06-1_amd64.deb
sudo systemctl enable nvidia-fabricmanager
sudo systemctl restart nvidia-fabricmanager -
• 验证: python -c "import torch; print(torch.cuda.is_available()); print(torch.cuda.device_count())"
nvidia-smi
9.2 无效或重复命令
10. 故障排查
10.1 CUDA Error 802 (system not yet initialized)


