はじめに
本記事では、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
目次
- システム準備
- NVIDIAドライバとCUDAの設定
- Anaconda環境の構築
- PyTorchと依存関係のインストール
- LLaMA-Factoryの設定
- トレーニングと推論タスクの実行
- 補助ツールのインストール
- バージョン一覧
- インストールプロセスのAI分析
- トラブルシューティング
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環境でNVLinkと効率的な通信をサポートするFabric Managerをインストールします:
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をインストールします:
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
3.2 Conda環境の作成
LLMトレーニング用の専用Conda環境を作成します:
conda create -n llm python=3.10
conda activate llm
4. PyTorchと依存関係のインストール
4.1 PyTorchのインストール(必須)
H100 GPUに最適化されたPyTorchをインストールします:
pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu124
確認方法:
- PyTorchのGPUサポート確認:
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をインストールします:
pip install flash-attn --no-build-isolation
5. LLaMA-Factoryの設定
5.1 LLaMA-Factoryのインストール
LLaMA-Factoryをインストールして、LLMのファインチューニングを行います:
cd /data
git clone https://github.com/hiyouga/LLaMA-Factory.git
cd LLaMA-Factory
pip install -e .
5.2 データセットとモデルの設定
データセットとモデルを適切なディレクトリに配置します:
mkdir -p /data/LLaMA-Factory/data
mkdir -p /data/LLaMA-Factory/models
5.3 モデル形式の変換(オプション)
必要に応じて、モデル形式を変換します:
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を使用した分散トレーニングの例:
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 推論タスク
トレーニング済みモデルを使用した推論の例:
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をインストールします:
cd /data
git clone https://github.com/ggerganov/llama.cpp.git
cd llama.cpp
make LLAMA_CUBLAS=1
7.2 nvitopのインストール
GPUモニタリング用にnvitopをインストールします:
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が正しく起動していない場合に発生します。以下の手順で解決できます:
systemctl restart nvidia-fabricmanager
nvidia-smi -pm 1
まとめ
この記事では、8枚のNVIDIA H100 GPUを使用した大規模言語モデルトレーニング環境の構築方法について詳しく解説しました。適切なハードウェア、ソフトウェア、および設定を組み合わせることで、最先端のLLMトレーニングと推論を効率的に実行できる環境を構築できます。