0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

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

Last updated at Posted at 2025-04-26

はじめに

本記事では、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 システムの更新と基本ツールのインストール

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

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トレーニングと推論を効率的に実行できる環境を構築できます。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?