8枚のH100 GPUを使用した大規模言語モデルトレーニング環境の構築ガイド




          

## はじめに

本記事では、Ubuntu 22.04システム上に8枚のNVIDIA H100 GPUを使用した大規模言語モデル（LLM）のトレーニングと推論をサポートする深層学習環境の構築方法について詳しく解説します。この環境は、LLaMA-FactoryやDeepSpeedを使用した分散トレーニングをサポートします。

## ハードウェア環境

- **CPU**: 36コア
- **メモリ**: 1TB
- **GPU**: 8枚のNVIDIA H100（80GB HBM3）
- **ストレージ**: NVMe SSD
- **OS**: Ubuntu 22.04 LTS

## 目次

1. システム準備
2. NVIDIAドライバとCUDAの設定
3. Anaconda環境の構築
4. PyTorchと依存関係のインストール
5. LLaMA-Factoryの設定
6. トレーニングと推論タスクの実行
7. 補助ツールのインストール
8. バージョン一覧
9. インストールプロセスのAI分析
10. トラブルシューティング

## 1. システム準備

### 1.1 システムの更新と基本ツールのインストール

システムパッケージを最新の状態にし、必要なツールをインストールします：

```bash
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を設定します：

```bash
# ディスクの確認
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 ネットワークの設定

高帯域幅通信をサポートするネットワークインターフェースを確保します：

```bash
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データセンタードライバをインストールします：

```bash
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環境でNVLinkと効率的な通信をサポートするFabric Managerをインストールします：

```bash
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特定バージョンのインストール（オプション）

PyTorchと深層学習タスクをサポートするCUDA 12.4をインストールします：

```bash
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をインストールします：

```bash
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をインストールします：

```bash
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

### 3.2 Conda環境の作成

LLMトレーニング用の専用Conda環境を作成します：

```bash
conda create -n llm python=3.10
conda activate llm
```

## 4. PyTorchと依存関係のインストール

### 4.1 PyTorchのインストール（必須）

H100 GPUに最適化されたPyTorchをインストールします：

```bash
pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu124
```

確認方法：
- PyTorchのGPUサポート確認：
```python
import torch
print(f"PyTorch version: {torch.__version__}")
print(f"CUDA available: {torch.cuda.is_available()}")
print(f"CUDA version: {torch.version.cuda}")
print(f"GPU count: {torch.cuda.device_count()}")
```

### 4.2 FlashAttentionのインストール

トレーニング速度を向上させるFlashAttentionをインストールします：

```bash
pip install flash-attn --no-build-isolation
```

## 5. LLaMA-Factoryの設定

### 5.1 LLaMA-Factoryのインストール

LLaMA-Factoryをインストールして、LLMのファインチューニングを行います：

```bash
cd /data
git clone https://github.com/hiyouga/LLaMA-Factory.git
cd LLaMA-Factory
pip install -e .
```

### 5.2 データセットとモデルの設定

データセットとモデルを適切なディレクトリに配置します：

```bash
mkdir -p /data/LLaMA-Factory/data
mkdir -p /data/LLaMA-Factory/models
```

### 5.3 モデル形式の変換（オプション）

必要に応じて、モデル形式を変換します：

```bash
python src/transformers/convert_llama_weights_to_hf.py \
    --input_dir /path/to/llama/weights \
    --model_size 7B \
    --output_dir /data/LLaMA-Factory/models/llama-7b-hf
```

## 6. トレーニングと推論タスクの実行

### 6.1 トレーニングタスク

DeepSpeedを使用した分散トレーニングの例：

```bash
cd /data/LLaMA-Factory
deepspeed --num_gpus=8 src/train_bash.py \
    --deepspeed configs/deepspeed_zero3.json \
    --stage sft \
    --model_name_or_path /data/LLaMA-Factory/models/llama-7b-hf \
    --do_train \
    --dataset alpaca_gpt4_en \
    --template default \
    --finetuning_type lora \
    --lora_rank 8 \
    --lora_alpha 16 \
    --lora_dropout 0.05 \
    --output_dir /data/LLaMA-Factory/output/llama-7b-sft \
    --overwrite_output_dir \
    --max_steps 1000 \
    --per_device_train_batch_size 4 \
    --gradient_accumulation_steps 4 \
    --save_steps 100 \
    --save_total_limit 2 \
    --learning_rate 5e-5 \
    --weight_decay 0.01 \
    --warmup_steps 100 \
    --logging_steps 10 \
    --tf32 True
```

### 6.2 推論タスク

トレーニング済みモデルを使用した推論の例：

```bash
cd /data/LLaMA-Factory
python src/inference/inference_hf.py \
    --model_name_or_path /data/LLaMA-Factory/output/llama-7b-sft \
    --template default \
    --finetuning_type lora
```

## 7. 補助ツールのインストール

### 7.1 llama.cppのインストール

軽量推論用にllama.cppをインストールします：

```bash
cd /data
git clone https://github.com/ggerganov/llama.cpp.git
cd llama.cpp
make LLAMA_CUBLAS=1
```

### 7.2 nvitopのインストール

GPUモニタリング用にnvitopをインストールします：

```bash
pip install nvitop
```

## 8. バージョン一覧

- **OS**: Ubuntu 22.04 LTS
- **NVIDIAドライバ**: 570.124.06
- **CUDA**: 12.4.0
- **cuDNN**: 9.0.0
- **Anaconda**: 2024.10-1
- **Python**: 3.10
- **PyTorch**: CUDA 12.4対応

## 9. インストールプロセスのAI分析

### 9.1 有効なコマンドと重要なインストール

- NVIDIAドライバとFabric Managerのインストールは、H100 GPUの性能を最大限に引き出すために不可欠です
- DeepSpeedとFlashAttentionは、大規模モデルの分散トレーニングを効率化します
- LLaMA-Factoryは、LLMのファインチューニングを簡素化します

### 9.2 無効または重複するコマンド

- 一部のコマンドは環境によっては冗長になる可能性があります
- 特定のバージョンのCUDAとcuDNNのインストールは、PyTorchが独自のCUDAを持っている場合はオプションです

## 10. トラブルシューティング

### 10.1 CUDA Error 802（システムがまだ初期化されていない）

この問題は通常、Fabric Managerが正しく起動していない場合に発生します。以下の手順で解決できます：

```bash
systemctl restart nvidia-fabricmanager
nvidia-smi -pm 1
```

## まとめ

この記事では、8枚のNVIDIA H100 GPUを使用した大規模言語モデルトレーニング環境の構築方法について詳しく解説しました。適切なハードウェア、ソフトウェア、および設定を組み合わせることで、最先端のLLMトレーニングと推論を効率的に実行できる環境を構築できます。