0. OCI HPCポータルとは

OCI HPCポータル は、 Oracle Cloud Infrastructure(以降 OCI と呼称)を活用してHPC/機械学習ワークロードを実行する際の有益な情報を技術面にフォーカスしてお届けすることを目的に、以下のコンテンツを提供します。

  1. OCI HPCチュートリアル集
    HPC/機械学習ワークロードの実行に最適なベアメタルインスタンス、GPUインスタンス、 クラスタ・ネットワーク 等の各種IaaSサービスを組み合わせて、様々な用途のHPC/GPUクラスタを構築する手順を解説するチュートリアル集です。
    提供するチュートリアルは、以下のカテゴリに分かれています。

    1. HPCクラスタ
    2. 機械学習環境
    3. ファイル共有ストレージ
    4. チュートリアルを組み合わせた実践的HPCシステム構築
  2. OCI HPCパフォーマンス関連情報
    HPC/機械学習ワークロードを実行する際のパフォーマンスに関する情報や、パフォーマンスチューニングを行う際の必須の情報源であるプロファイリングに関する情報を提供します。
    提供するパフォーマンス関連情報は、以下のカテゴリに分かれています。

    1. 標準ベンチマーク実行方法
    2. パフォーマンス関連Tips集
    3. プロファイリング関連Tips集
  3. OCI HPCテクニカルTips集
    HPC/機械学習ワークロードを実行する際に有益なテクニカルTipsを集めています。
    提供するテクニカルTipsは、以下のカテゴリに分かれています。

    1. クラスタ・ネットワーク
    2. ストレージ
    3. クラスタ管理
    4. 機械学習
    5. ソフトウェア環境
    6. その他
  4. OCI HPC関連情報リンク集
    HPC/機械学習ワークロードを実行する際に有益なテクニカル情報を提供するウェブサイトの情報を集めています。

  5. OCI HPC用語集
    本ポータルサイトを読み進めるうえで理解が必要なHPC関連の OCI 用語を解説しています。

提供するコンテンツは、随時追加・更新されますので、定期的にチェックしてみて下さい。
また本ポータルサイト内のコンテンツは、作者が誠心誠意作成していますが、間違いや不正確な記述などを見つけた場合は、 ここ からIssue登録でご連絡ください。


1. OCI HPCチュートリアル集

1-0. 概要

本章は、様々な用途のHPCシステムを構築するチュートリアルを集めた、 OCI HPCチュートリアル集 です。

各チュートリアルは、以下4つのカテゴリに分類されます。

  • HPCクラスタ

    このカテゴリは、最新のCPUを搭載するベアメタルインスタンスを クラスタ・ネットワーク で高帯域・低遅延に接続する、CPUワークロード向けHPCクラスタを構築するためのチュートリアルを集めています。
    チュートリアルで構築するHPCクラスタは、NFS、LDAP、 SlurmOpenMPI 等、システム運用・利用に欠かせないソフトウェアが使えます。

  • 機械学習環境

    このカテゴリは、GPUを搭載する単一のVMインスタンスを使用する小規模機械学習環境から、複数のGPUを搭載するベアメタルインスタンスを クラスタ・ネットワーク で高帯域・低遅延に接続する複数ノードに跨る大規模機械学習ワークロードに最適なGPUクラスタまで、機械学習環境を構築するためのチュートリアルを集めています。
    チュートリアルで構築するGPUクラスタは、 NVIDIA Container ToolkitDocker Community EditionEnroot のコンテナランタイム等、大規模な分散機械学習ワークロード実行に必須のソフトウェアが使えます。

  • ファイル共有ストレージ

    このカテゴリは、HPCクラスタやGPUクラスタを運用する際に必須となるファイル共有ストレージやそのバックアップ環境を、 OCI のサービスを組み合わせて構築するためのチュートリアルを集めています。

  • チュートリアルを組み合わせた実践的HPCシステム構築

    このカテゴリは、前述3つのカテゴリのチュートリアルを組み合わせることで、より実践的なHPCシステムを構築するためのチュートリアルを集めています。

HPCクラスタ機械学習環境 のカテゴリは、利用目的や構築手法の異なるチュートリアルを複数用意しており、自身の要件に合わせて以下の観点で使用するチュートリアルを選択します。

  • 構築手法

    構築手法は、 マーケットプレース 提供の スタック を使用する自動構築、予め用意された Terraform スクリプトを使用する自動構築、及び OCI コンソールから各リソースを順次構築する手動構築に分かれ、それぞれ以下の利点・欠点があります。
    なお、ここで紹介する自動構築(スタック)に分類されるチュートリアルの多くは、 HPCクラスタスタック を活用しています。

      利点 欠点 備考  
    自動構築
    スタック
    構築作業時間(※1)が短い
    GUI操作(※2)が可能
    構築手順のブラックボックス化
     ・システム構成の変更が難しい
     ・問題発生時の原因究明が困難
    ※1)スタックメニュー選択の時間
    ※2) OCI コンソール
     
    自動構築
    Terraform
    構築作業時間(※3)が短い
    CLI/GUI(※4)を選択可能
    Terraform 実行環境(※5)が必要 ※3)スタックメニュー選択の時間
    or
    Terraform スクリプト内変数修正
    に要する時間
    ※4)Terraform CLI/ OCI コンソール
    ※5)Terraform CLIを選択した場合
     
    手動構築
    OCI コンソール)
    構築手順が明確
     ・システム構成の変更が容易
     ・問題発生時原因究明容易
    GUI操作(※6)が可能
    構築作業時間が長い ※6) OCI コンソール操作  
  • クラスタ管理機能の有無

    構築するHPCクラスタやGPUクラスタは、以下のクラスタ管理機能を利用可能とするか、これらを含まない基礎インフラストラクチャのみを構築するかを選択する事が可能です。

    • ユーザ統合管理(LDAP)
    • ファイル共有ストレージ(NFS)
    • 計算/GPUノードのリソース管理・ジョブ管理( Slurm
  • スタティック/オンデマンドクラスタ

    構築するHPCクラスタやGPUクラスタは、ワークロードを実行する際に動的に必要な計算リソースを作成するオンデマンドクラスタとして構築するか、ワークロードの有無にかかわらず常に計算リソースを起動しておくスタティッククラスタとして構築するかを選択することが可能です。
    なおオンデマンドクラスタは、 クラスタオートスケーリング が実現します。

  • コンテナランタイム

    機械学習環境 カテゴリに含まれるチュートリアルは、使用するコンテナランタイムを以下から選択することが可能です。

    • Docker Community Edition
    • Enroot with Pyxis integrated in Slurm

1-1. HPCクラスタ

本章は、HPCクラスタを構築するチュートリアルを集めています。自身の要件に合わせてチュートリアルを選んだら、そのチュートリアル名をクリックします。

チュートリアル名 構築手法 クラスタ
管理機能
スタティック/
オンデマンド
計算ノードOS
HPCクラスタを構築する
(基礎インフラ手動構築編)
手動構築 無し スタティック Oracle Linux 7.9/8
HPCクラスタを構築する
(基礎インフラ自動構築編)
自動構築
Terraform CLI/スタック
無し スタティック Oracle Linux 7.9/8
HPCクラスタを構築する
(スタティッククラスタ自動構築編)
自動構築
スタック
有り スタティック Oracle Linux 7.9/8
HPCクラスタを構築する
(オンデマンドクラスタ自動構築編)
自動構築
スタック
有り オンデマンド Oracle Linux 7.9/8

1-2. 機械学習環境

本章は、機械学習環境を構築するチュートリアルを集めています。自身の要件に合わせてチュートリアルを選んだら、そのチュートリアル名をクリックします。

チュートリアル名 GPU
ノード数
構築手法 クラスタ
管理機能
スタティック/
オンデマンド
コンテナ
ランタイム
GPUノードOS
GPUインスタンスで
機械学習にトライ
単一 手動構築 無し スタティック Docker CE Oracle Linux 7.9/8
GPUクラスタを構築する
(基礎インフラ手動構築編)
複数 手動構築 無し スタティック Docker CE Oracle Linux 7.9/8
GPUクラスタを構築する
(基礎インフラ自動構築編)
複数 自動構築
(Terraform CLI
/スタック)
無し スタティック Docker CE Oracle Linux 7.9/8
GPUクラスタを構築する
(スタティッククラスタ自動構築編)
複数 自動構築
(スタック)
有り スタティック Enroot Oracle Linux 7.9/8
GPUクラスタを構築する
(オンデマンドクラスタ自動構築編)
複数 自動構築
(スタック)
有り オンデマンド Enroot Oracle Linux 7.9/8
GPUクラスタを構築する
(Ubuntu OS編)
複数 手動構築 無し スタティック - Ubuntu 20.04

1-3. ファイル共有ストレージ

1-3-0. 概要

本章は、HPC/GPUクラスタから利用するファイル共有ストレージやそのバックアップ環境を構築するチュートリアルを集めています。

1-3-1. ファイル共有ストレージ

下表は、性能や保存するデータ特性の異なるファイル共有ストレージを、その構築手法毎にまとめています。
自身の要件に合わせてファイル共有ストレージの構築手法を選択したら、そのチュートリアル名をクリックします。

構築手法の呼称 チュートリアル名 保存対象データ
(※7)
ターゲット
スループットレンジ
利用可能な
バックアップ手法
標準FSS ファイル・ストレージで
ファイル共有ストレージを
構築する
長期保存データ 120 MiB/s(※8) ファイル・ストレージ
提供するバックアップ機能
(※10)
高性能FSS ファイル・ストレージで
ファイル共有ストレージを
構築する
長期保存データ 10 GiB/s(※8) ファイル・ストレージ
提供するバックアップ機能
(※10)
ブロック・ボリューム
NFSサーバ
ブロック・ボリュームで
ファイル共有ストレージを
構築する
中期保存データ 5 GiB/s(※9) Rclone を使用した
オブジェクト・ストレージ への
バックアップ(※11)
DenceIO
NFSサーバ
短期保存データ用
高速ファイル共有ストレージ
を構築する
短期保存データ 10 GiB/s(※9) Rclone を使用した
オブジェクト・ストレージ への
バックアップ(※11)

※7)対象の構築手法が提供するデータ可用性レベルに応じて分類しています。(データ可用性が低いほど短期保存データ用ファイル共有ストレージに分類)
※8)マウント・ターゲット の最大スループット値を元に記載しています。
※9)IOR の測定値を元に記載しています。詳細な測定値は、 OCI HPCテクニカルTips集HPC/GPUクラスタ向けファイル共有ストレージの最適な構築手法2-1. コストパフォーマンスによる比較 を参照してください。
※10)スナップショット、クローン、及びレプリケーションが用意されています。これらサービスの詳細は、 OCI 公式ドキュメントの ここ を参照ください。
※11)このバックアップ環境は、チュートリアル ベア・メタル・インスタンスNFSサーバ向けバックアップサーバを構築する に従って構築することが出来ます。

どのファイル共有ストレージ構築手法を選択するかは、 OCI HPCテクニカルTips集HPC/GPUクラスタ向けファイル共有ストレージの最適な構築手法 を参照してください。

1-3-2. バックアップ

ファイル共有ストレージのバックアップは、チュートリアル ベア・メタル・インスタンスNFSサーバ向けバックアップサーバを構築する に従って構築するバックアップサーバで、容量単価の安価な オブジェクト・ストレージブロック・ボリュームより低いコスト にバックアップすることが可能です。

ファイル共有ストレージのバックアップを念頭に置いたバックアップ環境構築手法の比較は、 OCI HPCテクニカルTips集ファイル共有ストレージ向けバックアップ環境の最適な構築手法 を参照してください。

1-4. チュートリアルを組み合わせた実践的HPCシステム構築

本章は、異なるカテゴリのチュートリアルを組み合わせてより実践的なHPCシステムを構築する手法を紹介します。自身の要件に合わせてチュートリアルを選んだら、そのチュートリアル名をクリックします。

No. チュートリアル名 組み合わせるチュートリアル 構築するシステム概要
1 ブロック・ボリュームNFSサーバと
基礎インフラ編HPC/GPUクラスタを
組み合わせる
ブロック・ボリュームで
NFSサーバを構築する


HPCクラスタを構築する
(基礎インフラ手動構築編)

or
GPUクラスタを構築する
(基礎インフラ手動構築編)
基礎インフラ編のHPC/GPUクラスタの
ファイル共有ストレージを
ブロック・ボリューム NFSサーバで
サービス
2 ブロック・ボリュームNFSサーバと
自動構築編HPC/GPUクラスタを
組み合わせる
ブロック・ボリュームで
NFSサーバを構築する


HPCクラスタを構築する
(スタティッククラスタ自動構築編)

or
HPCクラスタを構築する
(オンデマンドクラスタ自動構築編)

or
GPUクラスタを構築する
(スタティッククラスタ自動構築編)

or
GPUクラスタを構築する
(オンデマンドクラスタ自動構築編)
自動構築編のHPC/GPUクラスタの
ファイル共有ストレージを
ブロック・ボリューム NFSサーバで
サービス

下表は、各チュートリアルで構築するシステム仕様を示します。

No. 構築手法 クラスタ管理機能 スタティック/オンデマンド コンテナランタイム(※11)
1 手動 無し(※10) スタティック Docker CE
2 自動 有り スタティック
or
オンデマンド
Enroot

※10)ファイル共有ストレージは、 ブロック・ボリューム NFSサーバが提供します。
※11)GPUクラスタが対象です。


2. OCI HPCパフォーマンス関連情報

2-0. 概要

本章は、HPC/機械学習ワークロードを実行する際のパフォーマンス関連情報を提供する、 OCI HPCパフォーマンス関連情報 です。

提供するコンテンツは、以下のカテゴリに分類されます。

  • 標準ベンチマーク実行方法

    このカテゴリは、 OCI 上に構築したHPC/GPUクラスタに対して、これらが想定通りの性能となっているかを確認する際に有効な標準ベンチマークの実行方法を解説しています。

  • パフォーマンス関連Tips集

    このカテゴリは、パフォーマンスに影響するパラメータをどのように設定すればよいかといった、パフォーマンス関連Tipsを集めています。

  • プロファイリング関連Tips集

    このカテゴリは、HPCアプリケーションのパフォーマンス解析やチューニングに必要な情報を収集する、プロファイリング関連Tipsを集めています。

2-1. 標準ベンチマーク実行方法

本章は、HPC/機械学習ワークロードを実行する際に性能の指標となる、OCIの各種IaaSサービスの基礎性能を計測するデファクトスタンダードな以下の標準ベンチマークについて、HPC/機械学習ワークロード向けシェイプや クラスタ・ネットワーク を使用して実行する方法を解説します。

  • HPL
  • STREAM
  • Intel MPI Benchmarks
  • NCCL Tests

各ベンチマークの実行方法は、下表の対象シェイプ部分のリンクをクリックして参照してください。

名称 ベンチマークサイトURL 対象シェイプ
HPL Link BM.Optimized3.36
BM.Standard.E5.192
STREAM Link BM.Optimized3.36
BM.Standard.E5.192
Intel MPI Benchmarks Link BM.Optimized3.36
NCCL Tests Link BM.GPU.A100-v2.8/BM.GPU4.8
BM.GPU.H100.8

2-2. パフォーマンス関連Tips集

本章は、HPC/機械学習ワークロードの実行時パフォーマンスに関連する、パフォーマンス関連Tipsを提供します。

  • パフォーマンスに関連するベアメタルインスタンスのBIOS設定方法

    ベアメタルインスタンスは、作成する際にBIOSの設定を指定することが可能です。
    これらの設定は、 NPS (NUMA nodes per socket)や SMT (Simultanious Multi Threading)といった、当該インスタンスの性能に影響するものが少なくありません。
    本パフォーマンス関連Tipsは、これらのBIOS設定を指定してHPC/GPUクラスタを構築する方法を解説します。

  • 不要サービス停止によるパフォーマンスチューニング方法

    計算リソースを極限まで使用するHPCワークロードの実行は、些細な計算リソースを使用するOS常駐サービスがその性能に影響することがあります。
    特に高並列実行時は、HPCクラスタ内の1ノードでこのようなサービスが稼働していることで、そのスケーラビリティに影響を及ぼします。
    本パフォーマンス関連Tipsは、OS標準で稼働している常駐サービスの中でリソースを多く消費しているものを特定しこれを停止することで、OSレベルのパフォーマンスチューニングを実施する方法を解説します。

  • クラスタ・ネットワークのトポロジーを考慮したノード間通信最適化方法

    クラスタ・ネットワーク は、業界標準のRoCEv2を採用する高帯域・低遅延のRDMA対応インターコネクトネットワークサービスで、そのトポロジーがFat treeのため同一リーフスイッチに接続するノード間とスパインスイッチを介して異なるリーフスイッチに接続するノード間で、ノード間通信のレイテンシが大きく異なります。このため、この特性を意識して適切な計算/GPUノードにジョブを配置することで、レイテンシに影響を受け易いワークロードの性能や高並列実行時のスケーラビリティを改善できる場合があります。
    本パフォーマンス関連Tipsは、この クラスタ・ネットワーク のレイテンシ特性を生かしてマルチノードジョブをクラスタ内に配置することで、ノード間通信性能を最適化する方法を解説します。

  • CFD解析フローのコストパフォーマンを向上させるOpenFOAM関連Tips

    OpenFOAM は、CAE分野で多くの利用実績を持つオープンソースのCFDアプリケーションで、計算時に多くのメモリ帯域を使用したり実行中に多くのデータをファイルシステムに書き出したりする特性があるため、これらを考慮した実行方法を採用することでその性能を大きく向上させることが可能です。
    本パフォーマンス関連Tipsは、HPCワークロードの実行に最適なベアメタルインスタンス BM.Optimized3.36クラスタ・ネットワーク でノード間接続するHPCクラスタで OpenFOAM を使用する際、CFD解析フローをコストパフォーマンス良く実行するという観点で有益なTipsを解説します。

2-3. プロファイリング関連Tips集

本章は、HPCアプリケーションのパフォーマンス解析やチューニングに必要な情報を収集する、プロファイリング関連Tips集を提供します。

  • PAPIでHPCアプリケーションをプロファイリング

    HPCワークロードの実行に最適なベアメタル・インスタンスでアプリケーションを実行する場合、高価な計算資源を有効活用出来ているかを検証するため、アプリケーションのプロファイリングを実施することが一般的です。
    PAPI は、HPCワークロード向け ベアメタル・シェイプ に採用されている Intel Ice LakeAMD EPYC 9004シリーズ のCPUが持つハードウェアカウンタから浮動小数点演算数やキャッシュヒット数といったプロファイリングに有益な情報を取得するAPIを提供し、HPCアプリケーションのプロファイリングに欠かせないツールとなっています。
    本プロファイリング関連Tipsは、 ベアメタル・インスタンス 上で実行するHPCアプリケーションを PAPI を使ってプロファイリングする方法を解説します。

  • Score-P・Scalasca・CubeGUIで並列アプリケーションをプロファイリング

    並列アプリケーションは、ロードバランス不均衡やプロセス間通信の影響等で並列実行数の増加と共にスケーラビリティの低下が発生しますが、HPCワークロードの実行に最適なベアメタル・インスタンスでアプリケーションを高並列実行する場合、高価な計算資源を有効活用する観点から、スケーラビリティ低下の原因を調査しチューニングでスケーラビリティーを改善する開発プロセスを踏んだり、最も効率的な並列実行数を見極める必要があり、これらの判断に必要な情報を得るためにアプリケーションをプロファイリングすることが重要です。
    本プロファイリング関連Tipsは、 ベアメタル・インスタンス 上で実行するOpenMPやMPIでコーディングされた並列プログラムをオープンソースの Score-PScalasca 、及び CubeGUI を駆使してプロファイリングし、並列アプリケーションを効果的に実行するための有益な情報を取得する方法を解説します。


3. OCI HPCテクニカルTips集

3-0. 概要

本章は、HPC/機械学習ワークロードを実行する際に有益なテクニカルTipsを集めた、 OCI HPCテクニカルTips集 です。

各テクニカルTipsは、以下のカテゴリに分類されます。

  • クラスタ・ネットワーク

    このカテゴリは、 クラスタ・ネットワーク に関連するテクニカルTipsを集めています。

  • ストレージ

    このカテゴリは、HPC/GPUクラスタと共に使用するストレージに関連するテクニカルTipsを集めています。

  • クラスタ管理

    このカテゴリは、多数の計算/GPUノードを効果的に構築・運用するためのクラスタ管理に関するテクニカルTipsを集めています。

  • 機械学習

    このカテゴリは、機械学習ワークロード実行に関するテクニカルTipsを集めています。

  • ソフトウェア環境

    このカテゴリは、HPC/機械学習ワークロードを実行する環境を構築する際に必要となる、プログラム開発環境(コンパイラ、MPI、線形代数演算ライブラリ)やリソース管理・ジョブ管理システム(ジョブスケジューラ、コンテナランタイム)等のソフトウェア環境を構築・整備する際に有益なテクニカルTipsを集めています。

  • その他

    このカテゴリは、以上の何れのカテゴリにも属さないテクニカルTipsを集めています。

3-1. クラスタ・ネットワーク

3-2. ストレージ

  • ベアメタルインスタンスのNVMe SSDローカルディスク領域ファイルシステム作成方法

    高速スクラッチ領域として利用することを想定したNVMe SSDローカルディスクを内蔵するHPCクラスタ向けベアメタルシェイプ BM.Optimized3.36 やGPUクラスタ向けベアメタルシェイプ BM.GPU4.8/BM.GPU.A100-v2.8/BM.GPU.H100.8 は、NVMe SSDローカルディスクをOSのファイルシステムとして利用するための設定をユーザ自身が行う必要があります。
    本テクニカルTipsは、このファイルシステム作成方法を解説します。

  • HPC/GPUクラスタ向けファイル共有ストレージの最適な構築手法

    HPC/GPUクラスタを運用する際必須となるファイル共有ストレージは、NFSでこれをサービスすることが一般的ですが、この際の選択肢は、NFSのマネージドサービスである ファイル・ストレージ を使用する方法と、高帯域のネットワークポートを持つベア・メタル・インスタンスとストレージサービスで構築する方法があります。
    本テクニカルTipsは、コストパフォーマンス、可用性、構築・運用のしやすさ等を考慮し、自身の要件に沿った最適なファイル共有ストレージ構築手法を選定する方法を解説します。

  • ブロック・ボリュームを使用するNFSサーバのインスタンス障害からの復旧方法

    ブロック・ボリューム とベアメタルインスタンスを組み合わせたNFSサーバは、HPC/GPUクラスタで必須となるファイル共有ストレージをコストパフォーマンス良く運用するためには最適なソリューションですが、NFSサーバとなるベアメタルインスタンスに障害が発生し起動できなくなった場合、どのようにデータ領域を復旧すればよいでしょうか。
    本テクニカルTipsは、このシナリオで発生する障害の復旧方法を解説します。

  • 計算/GPUノードのブート・ボリューム動的拡張方法

    インスタンスのルートファイルシステムを格納する ブート・ボリューム は、OSを停止することなく動的にその容量を拡張することが可能です。
    ただこの動的拡張は、 OCI コンソールやインスタンスOSで複数のオペレーションを実施する必要があり、ノード数が多くなるクラスタ環境の計算/GPUノードでは、これらのオペレーションを効率的に実施することが求められます。
    本テクニカルTipsは、HPC/GPUクラスタの多数の計算/GPUノードに対し、 ブート・ボリューム の動的拡張を効率的に実施する方法を解説します。

  • ファイル共有ストレージ向けバックアップ環境の最適な構築手法

    HPC/GPUクラスタを運用する際必須となるファイル共有ストレージは、コストパフォーマンスを考慮すると ベア・メタル・インスタンスブロック・ボリューム 等のストレージサービスで構築することになりますが、そのバックアップ環境は自身で構築する必要があり、バックアップを格納するストレージはその安価な容量単価から オブジェクト・ストレージブロック・ボリュームより低いコスト が有力な選択肢になります。
    本テクニカルTipsは、ファイル共有ストレージのバックアップを容量単価の安価なストレージに取得することを念頭に、自身のバックアップ要件に沿った最適なバックアップ環境構築手法を選定する方法を解説します。

3-3. クラスタ管理

  • 計算/GPUノードの効果的な名前解決方法

    ノード数が多くなるHPCクラスタやGPUクラスタの計算/GPUノードの名前解決は、どのように行うのが効果的でしょうか。
    本テクニカルTipsは、 仮想クラウド・ネットワーク のDNSを使用した効果的な計算/GPUノードの名前解決方法を解説します。

  • 計算/GPUノードデプロイ時の効果的なOSカスタマイズ方法

    ノード数が多くなるHPCクラスタやGPUクラスタの計算/GPUノードは、デプロイ時に実施するOSカスタマイズをどのように行うのが効果的でしょうか。
    本テクニカルTipsは、計算/GPUノードデプロイ時のOSカスタマイズ方法の選択肢と、それぞれの利用方法について解説します。

  • 計算/GPUノードのホスト名リスト作成方法

    ノード数が多くなるHPCクラスタやGPUクラスタは、全ての計算/GPUノードのホスト名の一覧を記載したホスト名リストを作成することで、構築・運用作業を効率的に進めることが可能になります。
    本テクニカルTipsは、HPC/GPUクラスタの計算/GPUノードのホスト名リストを効果的に作成する方法を解説します。

  • 計算/GPUノードの追加・削除・入れ替え方法

    HPC/GPUクラスタは、実行するワークロードの増減に伴い計算/GPUノードのノード数を増減する必要が生じることがあります。またハードウェア障害が発生すると、利用可能なノード数を維持するために当該ノードを別のノードに置き換える必要が生じます。
    本テクニカルTipsは、 クラスタ・ネットワーク を使用するHPC/GPUクラスタで計算/GPUノードのノード数を増減する方法や置き換える方法を解説します。

  • pdshで効率的にクラスタ管理オペレーションを実行

    ノード数が多くなるHPC/GPUクラスタは、クラスタに含まれるノードに対して様々な管理オペレーションを実施する必要があります。この時、これらのオペレーションを実現するためのコマンドを全てのノードに適用する際、どのような方法が効果的でしょうか。
    本テクニカルTipsは、 pdsh を使用して計算/GPUクラスタの管理オペレーションを効率的に実施する方法を解説します。

  • オンデマンドクラスタ実現のためのインスタンス・プリンシパル認証設定方法

    パブリッククラウドは、ワークロード発生時に必要な規模のHPC/GPUクラスタを構築し、ワークロード終了時にこれを削除する、オンデマンドクラスタ環境を構築するには最適なサービスです。
    オンデマンドクラスタの管理は、ソフトウェアにより自動化することが一般的ですが、HPC/GPUクラスタに必要な OCI リソースの作成・終了をこのアプリケーションに許可するための仕組みとして、 インスタンス・プリンシパル 認証が用意されています。
    本テクニカルTipsは、オンデマンドクラスタを念頭とした インスタンス・プリンシパル 認証の設定方法を解説します。

  • OCIロギングとGrafanaを使用したHPC/GPUクラスタのログ監視方法

    ノード数が多くなるHPC/GPUクラスタは、各計算/GPUノードに分散するログを一元的に監視するフレームワークを構築することで、運用管理工数の低減や監視対象ログの見落としを防ぎ、システムセキュリティーを効率的に維持することが可能です。
    OCI 上にこのフレームワークを構築する際、活用できるソフトウェアはいくつかありますが、 OCIロギングGrafana を統合したログ監視は、 Grafana の多彩な機能を活用できる点で有力な選択肢です。
    本テクニカルTipsは、 OCIロギングGrafana を使用してHPC/GPUクラスタのログを効率的に監視する方法を解説します。

  • OCIモニタリングとGrafanaを使用したHPC/GPUクラスタのメトリック監視方法

    HPCワークロードや機械学習ワークロードを実行するHPC/GPUクラスタは、ワークロード実行中のCPU/GPU使用率、メモリ使用率、ネットワーク使用帯域等のメトリックを定期的に監視し、高価な計算資源を有効活用することが求められますが、ノード数が多くなるHPC/GPUクラスタでは、これらメトリックの監視が一元的・効率的に行える必要があります。
    OCI 上にこのフレームワークを構築する際、活用できるソフトウェアはいくつかありますが、 OCIモニタリングGrafana を統合したメトリック監視は、 Grafana の多彩な機能を活用できる点で有力な選択肢です。
    本テクニカルTipsは、 OCIモニタリングGrafana を使用してHPC/GPUクラスタのメトリックを効率的に監視する方法を解説します。

3-4. 機械学習

  • UbuntuをOSとする機械学習ワークロード向けGPUノード構築方法

    機械学習ワークロード実行のためのGPU搭載ノードは、NVIDIAが提供する様々なGPU関連ソフトウェアの開発が主に Ubuntu で行われていることから、そのOSに Ubuntu を使用するのが主流になっていますが、 Ubuntu をOSに指定してGPU搭載インスタンスをデプロイする場合、GPUを利用するためのソフトウェアを自身でインストール・セットアップする必要があります。
    本テクニカルTipsは、 Ubuntu をGPU搭載インスタンスと共にデプロイした後GPU利用に必要なソフトウェアをインストール・セットアップすることで、機械学習ワークロード向けGPUノードを構築する方法を解説します。

3-5. ソフトウェア環境

  • Slurm環境での利用を前提とするUCX通信フレームワークベースのOpenMPI構築方法

    OpenMPI は、最新のMPI言語規格に準拠し、HPC/機械学習ワークロード実行に必要とされる様々な機能を備えたオープンソースのMPI実装です。
    OpenMPI で作成したアプリケーションのHPC/GPUクラスタに於ける実行は、計算リソース有効利用の観点から通常ジョブスケジューラを介したバッチジョブとして行いますが、ジョブスケジューラが Slurm の場合、 PMIx を使用することでMPIアプリケーションの起動や通信初期化のスケーラビリティを向上させることが可能です。
    また UCX は、 OpenMPIクラスタ・ネットワーク を利用して高帯域・低遅延のMPIプロセス間通信を実現するために欠かせない通信フレームワークです。
    本テクニカルTipsは、 PMIx を使用する Slurm 環境で通信フレームワークに UCX の使用を前提とする OpenMPI 構築方法を解説します。

  • Slurmによるリソース管理・ジョブ管理システム構築方法

    HPC/GPUクラスタのリソース管理・ジョブ管理は、ジョブスケジューラを活用することでこれを効率的かつ柔軟に運用することが可能です。近年のHPC/機械学習ワークロードの大規模化は、MPI等を使ったノード間並列ジョブの重要性を増大させ、このような大規模ジョブを様々な運用ポリシーに沿って処理出来る機能をジョブスケジューラに求めています。オープンソースのジョブスケジューラ Slurm は、この要求を満足出来る代表的なジョブスケジューラとして現在人気を集めています。
    本テクニカルTipsは、HPC/機械学習ワークロードの実行に最適なベアメタルインスタンスを高帯域・低遅延RDMAインターコネクトサービスの クラスタ・ネットワーク で接続するHPC/GPUクラスタで、リソース管理・ジョブ管理システムを Slurm で構築する方法を解説します。

  • 線形代数演算ライブラリインストール・利用方法

    HPCワークロードを実行する際、行列やベクトルの線形代数演算を高速に実行する必要が生じます。
    これらの演算は、ソースコードを自作することで対応することも出来ますが、オープンソースで配布されている線形代数演算ライブラリである BLASOpenBLAS を利用することで、開発工数の削減、保証された計算精度、高速な演算の実行等、様々なメリットを享受することが可能です。
    本テクニカルTipsは、 BLASOpenBLAS をHPCワークロードの実行に最適なベアメタルインスタンスにインストールし、Fortranのサンプルコードからこれを利用する方法を解説します。

  • OpenFOAMインストール・利用方法

    OpenFOAM は、CAE分野で多くの利用実績を持つオープンソースのCFDアプリケーションです。
    OpenFOAM は、メッシュ作成等のプリ処理、ソルバーによる解析処理、及び解析結果を可視化するポスト処理の全てのCFD解析フローを、自身が提供するツール群と外部のツール群を組合せてオープンソースソフトウェアで完結することが可能です。また OpenFOAM が提供するソルバーは、MPIで並列化されており、1万コアを超える並列実行の実績も報告されています。
    本テクニカルTipsは、 OpenFOAM とこれを中核とするCFD解析フローに有用なオープンソースのツール群を、HPCワークロードの実行に最適なベアメタルインスタンスにインストールし、これを利用する方法を解説します。

  • Slurmによるリソース管理・ジョブ管理システム運用Tips

    オープンソースの Slurm は、HPC/GPUクラスタのリソース管理・ジョブ管理をコストパフォーマンス良く運用するためのジョブスケジューラとして、現在有力な選択肢です。
    本テクニカルTipsは、 OCI 上に構築するHPC/GPUクラスタのリソース管理・ジョブ管理を Slurm で効果的に運用するための様々なテクニカルTipsをご紹介します。

3-6. その他

  • ベアメタル・インスタンスのカーネルダンプ取得方法

    カーネルダンプは、Linuxカーネルに関連する問題を解析する際に重要な情報ですが、ルートファイルシステムを含む ブート・ボリューム をiSCSI接続する ベアメタル・インスタンス は、 仮想マシン・インスタンス と比較してその取得に特別な準備が必要です。
    本テクニカルTipsは、 ベアメタル・インスタンス でカーネルダンプを取得し、これをcrashコマンドで読み込むまでの手順を解説します。

  • サイト間VPNによるOCIとの拠点間接続方法

    HPC/機械学習ワークロードをオンプレミスから OCI に移行する際、多くのケースでオンプレミスと OCI を拠点間接続する必要が生じます。
    例えば、オンプレミス側の有償CAEアプリケーション用ライセンスサーバに OCI 側の計算ノードからライセンス取得のためにアクセスするケースや、オンプレミス側の端末から OCI 側のログインノードにログインしインタラクティブ処理を行うケースです。
    本テクニカルTipsは、 サイト間VPN を使用してIPSecのトンネルモードでオンプレミスと OCI を拠点間接続し、 OCI 側プライベートサブネットに接続する計算ノード相当のインスタンスとオンプレミス側プライベートサブネットに接続するライセンスサーバ相当のインスタンスの疎通を可能とするための手順を解説します。


4. OCI HPC関連情報リンク集

4-0. 概要

本章は、HPC/機械学習ワークロードを実行する際の有益な情報を提供するウェブサイトの情報を集めた、 OCI HPC関連情報リンク集 です。

各ウェブサイトは、以下のカテゴリに分類されます。

4-1. クラスタ・ネットワーク

  • First Principles: Building a high-performance network in the public cloud

    クラスタ・ネットワーク は、データリンク層にイーサネット、トランスポート層にIBトランスポートを使用し、マイクロ秒レベルの低レイテンシでRDMA通信を実現しますが、パケットロスの発生を前提とするイーサネット上(Lossy network)でTCP/IPのような再送制御を持たないIBトランスポートを使用し、どのようにパケットロスにセンシティブなRDMA通信を可能にしているのでしょうか。
    本ブログとそこからリンクされている同タイトルのYouTubeビデオは、輻輳制御の仕組みである DCQCN(Data Center Quantitized Congention Notification) を使用して クラスタ・ネットワーク がこの問題に対処している点、実行するワークロードタイプに応じて DCQCN の特性をレイテンシと帯域幅の観点で最適化している点を解説しています。

  • Congestion Control for Large-Scale RDMA Deployments

    クラスタ・ネットワーク は、輻輳制御の仕組みである DCQCN(Data Center Quantitized Congention Notification) と、イーサネットでロスレスネットワークを実現する仕組みである PFC(Priority Flow Control) を使用して、高帯域・低レイテンシのRDMA通信をRoCEv2上に実現します。
    2015年のSIGCOMMカンファレンスで発表された本論文は、 クラスタ・ネットワーク で採用している DCQCNPFC の組み合わせで実現する輻輳制御を初めて提案しました。
    ここで提案する輻輳制御は、 PFC のもつ輻輳伝搬の問題を新たに考案した DCQCN を組合せることで解決し、RoCEv2ファブリックの帯域幅・レイテンシ・通信安定性を向上させますが、本論文の中ではこれらをシミュレーションや実験の結果から示しています。

4-2. ストレージ

  • The best choice for NFS file service running on Oracle Cloud Infrastructure

    HPC/GPUクラスタを運用する際必須となるファイル共有ストレージは、 ブロック・ボリューム とベアメタルインスタンスの BM.Optimized3.36 を組み合わせてNFSでサービスすることで、コストパフォーマンスを最大化することが可能です。
    その理由は、このシェイプが50 GbpsのTCP/IP接続用ポートを2個搭載し、それぞれをiSCSI接続の ブロック・ボリューム アクセス用途とNFSクライアントへのNFSサービス用途に割当ててこれらを同時に使用することで、NFSサービスに50 Gbpsの帯域をフルに使用することが可能となるためです。
    本ブログは、 ブロック・ボリュームBM.Optimized3.36 を組み合わせたNFSサーバに対し、IORとmdtestを使用したIO性能と信頼性の評価を行い、その結果を解説しています。

  • Gfarm development environment on OCI managed by Terraform and Ansible

    Gfarmファイルシステム は、 NPO法人つくばOSS技術支援センター が技術支援を提供し、オープンソースとして利用可能な大容量、高信頼、高性能なストレージを低コストで提供する、分散ファイルシステムです。
    Gfarmファイルシステム は、ファイルサーバとして機能するファイルシステムノードを複数用意し、これらのノードにデータを複製として分散配置することで、高い帯域幅と可能性を実現します。
    本GitHubサイトは、 Gfarm 環境を OCI 上に TerraformAnsible で自動構築するスクリプト群を提供し、トップページの構築手順に従うことでその構築作業を大幅に簡素化します。


5. OCI HPC用語集

5-0. 概要

本章は、 OCI のHPCに関連する用語を解説する、 OCI HPC用語集 です。
本ポータルサイトを読み進める際、不明な OCI 用語の理解に役立ててください。

5-1. クラスタ・ネットワーク

クラスタ・ネットワーク は、ノード間を高帯域・低遅延に接続するインターコネクトネットワークサービスで、以下の特徴を持ちます。

  • RoCEv2を採用するリンク当たり100/200 Gbpsの高帯域・低遅延RDMAインターコネクト
  • オーバーサブスクリプションの無いノンブロッキングトポロジーから来る高い性能再現性

クラスタ・ネットワーク の作成は、予め作成した インスタンス構成クラスタ・ネットワーク に接続するインスタンス数を指定して行い、この インスタンス構成 に紐づく インスタンス・プール が自動的に作成され、この インスタンス・プールクラスタ・ネットワーク に接続するインスタンスを インスタンス構成 に従ってデプロイします。
OCI リソースとしての クラスタ・ネットワーク は、共にデプロイされるインスタンスを高帯域・低遅延で接続する、 仮想クラウド・ネットワーク とは独立したノード間インターコネクトとして機能します。

クラスタ・ネットワーク に接続するインスタンスは、 ここ に記載の クラスタ・ネットワーク 対応シェイプでから選択することが可能で、以下のソフトウェアがインストールされている必要があります。

  • Mellanox OFED
  • wpa_supplicant
  • 802.1X認証関連ユーティリティソフトウェア
  • クラスタ・ネットワーク 設定ユーティリティソフトウェア

これらの クラスタ・ネットワーク 接続に必要なソフトウェアは、自身でインストールすることも出来ますが、これらが予めインストールされた クラスタネットワーキングイメージ も用意されています。

クラスタ・ネットワーク と共に作成するインスタンスは、デプロイ後にOS上で以下の処理を完了することで、 クラスタ・ネットワーク を利用することが可能になります。

  • クラスタ・ネットワーク との802.1X認証
  • クラスタ・ネットワーク 接続用ネットワークインターフェースへのIPアドレス付与

これらの処理は、前述の802.1X認証関連ユーティリティソフトウェアと クラスタ・ネットワーク 設定ユーティリティソフトウェアで行います。
この手順は、 OCI HPCテクニカルTips集クラスタネットワーキングイメージを使ったクラスタ・ネットワーク接続方法 を参照してください。

関連する OCI 公式ドキュメントは、 ここ を参照してください。

OCIコンソールの クラスタ・ネットワーク メニューは、 ここ をクリックしてアクセスします。 OCI へのログインを要求された場合は、ログインを完了して下さい。

5-2. リソース・マネージャ

リソース・マネージャ は、 OCI のリソース管理(作成・変更・削除)の自動化をIaC(Infrastructure-as-code)のコンセプトで実現する、 OCI コンソールからGUIで操作するマネージド Terraform サービスで、 OCI の様々なサービスを組み合わせた複雑なシステムの構築を自動化することで、システム構築や運用に必要な工数を大幅に削減します。

リソース・マネージャ は、様々な OCI サービスを組み合わせたシステム構築作業を、メニュー形式でオプションを選択することで予め作成された スタックOCI コンソールから適用・破棄することで、1クリックで実施することを可能にします。

関連する OCI 公式ドキュメントは、 ここ を参照してください。

リソース・マネージャ の利用方法は、チュートリアル リソース・マネージャを使ってサンプルアプリケーションをデプロイする を参照してください。

OCI コンソールの リソース・マネージャ メニューは、 ここ をクリックしてアクセスします。 OCI へのログインを要求された場合は、ログインを完了して下さい。

5-3. スタック

スタック は、 リソース・マネージャ から作成する OCI リソースで、作成する OCI リソースの構成情報を記述した Terraform スクリプトと スキーマ・ドキュメント を元に作成され、 リソース・マネージャ が管理する OCI リソースの定義情報を持ちます。

作成された スタック は、 リソースマネージャ から適用・破棄することで、定義した一連のリソースを OCI コンソールから1クリックで作成・削除することを可能にします。

リソース・マネージャ から スタック を作成する代表的な方法は、予め用意した Terraform スクリプトと スキーマ・ドキュメント をアーカイブ・圧縮した スタック ファイルを リソース・マネージャ に読み込ませ、メニュー形式の選択肢を自身の要望に沿って選択して作成する方法です。
この スタック ファイルは、様々な環境構築向けのものが マーケットプレース から提供されており、その多くが無償で利用可能です。

関連する OCI 公式ドキュメントは、 ここスタック を参照してください。

スタック の作成方法は、チュートリアル リソース・マネージャを使ってサンプルアプリケーションをデプロイする を参照してください。

OCI コンソールの スタック メニューは、 ここ をクリックしてアクセスします。 OCI へのログインを要求された場合は、ログインを完了して下さい。

5-4. スキーマ・ドキュメント

スキーマ・ドキュメント は、 リソース・マネージャ から スタック を作成する際、作成するリソースを選択するメニューを定義する、YAML形式のファイルです。
例えば、作成するインスタンスのシェイプを選択するメニュー、インスタンスにアタッチするブートボリュームのサイズを指定するメニュー、インスタンスにログインする際に使用するSSH鍵を指定するメニュー等を スキーマ・ドキュメント で実現することが出来ます。

スキーマ・ドキュメント は、 リソース・マネージャ から作成する OCI リソースの構成情報をコードとして記述した Terraform スクリプトと共に スタック ファイルを構成し、 リソース・マネージャ に読み込ませることで利用します。

スキーマ・ドキュメント は、 マーケットプレース から提供される様々な環境構築向け スタック ファイルに予め含まれているため、通常これをそのまま利用するだけですが、自身の環境向けにカスタマイズした スタック ファイルを作成する場合は、その構文を理解する必要があります。

関連する OCI 公式ドキュメントは、 ここ を参照してください。

5-5. マーケットプレイス

マーケットプレイス は、 スタック ファイルと カスタム・イメージ を提供する、オラクルが運営するオンライン・ストアです。

マーケットプレイス から提供される スタック ファイルや カスタム・イメージ は、オラクルはもちろんそのパートナーが提供するものも含まれ、その多くが無料で提供されています。

これら マーケットプレイス から提供されるリソースは、これを有効に活用することでHPCシステムを構築する作業工数を大幅に削減することが可能で、OCI HPCチュートリアル集 でもこれらを活用する方法が紹介されています。

関連する OCI 公式ドキュメントは、 ここ を参照してください。

OCI コンソールの マーケットプレイス メニューは、 ここ をクリックしてアクセスします。 OCI へのログインを要求された場合は、ログインを完了して下さい。

5-6. カスタム・イメージ

カスタムイメージ は、実行中のインスタンスから取得するOSのブートイメージで、カスタマイズを適用したインスタンスと同じ状態のインスタンスの複製を可能にします。

HPCクラスタやGPUクラスタ構築の際、OSレベルのカスタマイズを加えたインスタンスから取得した カスタム・イメージ を活用し、インスタンス作成後のカスタマイズ処理を省略することで、構築時間を短縮することが可能です。

クラスタネットワーキングイメージ は、 クラスタ・ネットワーク に接続するためのソフトウェア等を含む、 カスタム・イメージ として提供されます。

関連する OCI 公式ドキュメントは、 ここ を参照してください。

OCI コンソールの カスタム・イメージ メニューは、 ここ をクリックしてアクセスします。 OCI へのログインを要求された場合は、ログインを完了して下さい。

5-7. インスタンス構成

インスタンス構成 は、作成するインスタンスの構成情報( コンパートメント可用性ドメイン 、シェイプ、イメージ、ブートボリュームサイズ、SSH公開鍵、 cloud-init 構成ファイル等)を持ちます。

インスタンス構成 は、同じ構成のインスタンスを複製することを可能とし、HPCシステムの構築・管理に必須の機能です。

関連する OCI 公式ドキュメントは、 ここ を参照してください。

OCI コンソールの インスタンス構成 メニューは、 ここ をクリックしてアクセスします。 OCI へのログインを要求された場合は、ログインを完了して下さい。

5-8. インスタンス・プール

インスタンス・プール は、同じ構成のインスタンス群を一括作成・スケールアウト・スケールイン・一括削除する機能を持ち、HPCシステムの構築・管理に必須の機能です。

インスタンス・プール は、 インスタンス構成 を指定して作成し、新たなインスタンスをこのインスタンス構成に基づいて作成します。

関連する OCI 公式ドキュメントは、 ここ を参照してください。

OCI コンソールの インスタンス・プール メニューは、 ここ をクリックしてアクセスします。 OCI へのログインを要求された場合は、ログインを完了して下さい。

5-9. クラスタオートスケーリング

クラスタオートスケーリング は、オラクルが作成・メンテナンスしているオンデマンドクラスタ管理ツールで、 Slurm に投入されるジョブに応じて必要なベアメタルインスタンスを クラスタ・ネットワーク と共に作成してワークロードを実行するためのクラスタ環境を動的に構築、ジョブ終了後設定したアイドル時間が経過すると自動的にこのクラスタ環境を削除します。
このため クラスタオートスケーリング は、1本のジョブのために1クラスタを割当てる Cluster per job アプローチを採用していると言えます。

クラスタオートスケーリング は、 HPCクラスタスタック に含まれるPythonとシェルで書かれたスクリプト群で実現され、この スタックAutoscaling フィールドの Scheduler based autoscaling チェックボックスをオンにしてスタックを適用することで、これらスクリプト群がインストールされ利用可能になります。

5-10. HPCクラスタスタック

HPCクラスタスタック は、CPUワークロード向けHPCクラスタや分散機械学習ワークロード向けGPUクラスタを自動構築するための、 マーケットプレース から提供される スタック で、 スタック の利用自体は無料です。

この スタック は、作成時のメニューを適切に選択することで、以下のクラスタ管理機能を有効にすることが可能です。

  • ジョブスケジューラ( Slurm
  • オンデマンドクラスタ管理( クラスタオートスケーリング
  • クラスタ内ファイル共有( ファイル・ストレージ
  • クラスタ内ユーザ統合管理(LDAP)

またGPUクラスタでは、選択するメニューにより以下の機能を利用することが可能です。

  • コンテナランタイム( Enroot
  • ジョブスケジューラからのコンテナインポート・起動・停止( Pyxis

またこのスタックは、構築を大きく2つのステップに分けて実行しており、前半は Terraform を使用した OCI レベルのリソース構築フェーズで、後半は Terraform から起動される Ansible によるOSレベルのカスタマイズフェーズです。
具体的には、使用する機能により以下のような処理が行われます。

Terraform による OCI リソース構築フェーズ]

  • 仮想クラウド・ネットワーク と関連するネットワークリソース構築
  • クラスタ・ネットワーク と関連リソース構築
  • Bastionノードインスタンス構築
  • 計算/GPUノードインスタンス構築
  • ファイル・ストレージ 構築
  • Ansible 関連ソフトウェアインストール
  • クラスタオートスケーリング 関連ソフトウェアインストール

[ Ansible によるOSレベルカスタマイズフェーズ]

  • firewalld停止
  • NVMe SSDローカルディスク領域ファイルシステム構築
  • /etc/hostsファイル生成
  • NFSファイル共有環境構築
  • LDAPユーザ統合環境構築
  • クラスタ・ネットワーク 用ネットワークインターフェース構築
  • Slurm 環境構築
  • Enroot 環境構築

このスタックを利用すると、通常であれば数日かかるようなクラスタ構築作業を、 OCI コンソールのGUIから10項目程度のメニューを選択するだけで実施することが可能になります。

マーケットプレイスHPCクラスタスタック ページは、 ここ をクリックしてアクセスします。 OCI へのログインを要求された場合は、ログインを完了して下さい。

5-11. cloud-init

cloud-init は、主要なクラウドサービスプロバイダーで利用可能なOSカスタマイズのための仕組みで、指定された文法に沿った設定ファイル(cloud-config)やシェルスクリプトをインスタンスや インスタンス構成 を作成する際に指定することで、インスタンス作成直後に実施する様々なカスタマイズをOSに適用します。

cloud-init の設定ファイルは、cloud-configと呼ばれるYAML形式で記述されるテキストファイルで、プラットフォーム間・異なるOS間で共通に使用できる cloud-init のモジュールを使用してOSカスタマイズ内容を以下のように記述し、異なるプラットフォーム・OSに跨って可搬性を高めた簡潔な記述を可能にします。

#cloud-config
# Change time zone to JST
timezone: Asia/Tokyo
runcmd:
# Stop firewalld
  - systemctl stop firewalld
  - systemctl disable firewalld

cloud-init は、基本的にインスタンス作成後に一度だけ実施されるため、NVMe SSDローカルディスクにファイルシステムを作成する等の、HPC/機械学習ワークロード向けベアメタルインスタンスを作成する際に必須となるようなOS上のカスタマイズを実施するのに最適です。

cloud-init は、 クラスタ・ネットワーク 作成時に指定する インスタンス構成 と紐づけることで、 クラスタ・ネットワーク に接続する全ての計算ノードやGPUノードに一斉にOSカスタマイズを適用することを可能にします。

cloud-init 公式ドキュメントは、 ここ を参照してください。

5-12. Terraform

Terraform は、主要なクラウドサービスプロバイダーで利用可能なInfrastructure as code(IaS)のコンセプトに基づくツールで、IaaSからPaaSまでほぼすべてのクラウド上のリソースのライフサイクル(構築・変更・破棄)管理を安全かつ効率的に実施することを可能にします。

Terraform で管理されるリソースは、拡張子 .tf を持つ Terraform スクリプトで定義され、これを Terraform が読み込んでライフサイクル管理が行われます。

OCI における Terraform は、 リソース・マネージャ から利用する方法と、ソフトウェアをインストールして OCI との認証関係を結んだ Terraform 実行環境から Terraform CLIで利用する方法があります。

以下は、 Terraform 実行環境で Terraform CLIを利用して OCI 上にリソースを作成する様子を示しています。

$ ls -l
total 24
-rw-r--r--. 1 opc opc 3606 May 31 14:51 main.tf
-rw-r--r--. 1 opc opc  272 May 31 14:51 outputs.tf
-rw-r--r--. 1 opc opc  223 May 31 14:51 provider.tf
-rw-r--r--. 1 opc opc 4510 May 31 14:52 terraform.tfvars
-rw-r--r--. 1 opc opc 1701 May 31 14:51 variables.tf
$ terraform init

Initializing the backend...
:
Terraform has been successfully initialized!
$ terraform apply --auto-approve

Terraform used the selected providers to generate the following execution plan. Resource actions are
indicated with the following symbols:
  + create
:
Apply complete! Resources: 9 added, 0 changed, 0 destroyed.
$ terraform destroy --auto-approve
:
Destroy complete! Resources: 9 destroyed.
$

関連する OCI 公式ドキュメントは、 ここ を参照してください。

Terraform CLIを使用して OCI 上にリソースを自動構築する方法は、 OCI チュートリアルTerraformでOCIの構築を自動化する を参照してください。

5-13. クラスタネットワーキングイメージ

クラスタネットワーキングイメージ は、 クラスタ・ネットワーク への接続に必要な以下ソフトウェアが予めインストールされた Oracle Linux をベースとする カスタム・イメージ で、 マーケットプレイス から提供されています。

  • Mellanox OFED
  • wpa_supplicant
  • 802.1X認証関連ユーティリティソフトウェア
  • クラスタ・ネットワーク 設定ユーティリティソフトウェア

802.1X認証関連ユーティリティソフトウェアと クラスタ・ネットワーク 設定ユーティリティソフトウェアは、 Oracle Cloud Agent のプラグインとしてこれらを提供する クラスタネットワーキングイメージ と、個別のRPMパッケージとして提供する クラスタネットワーキングイメージ が存在します。
また、使用するシェイプがGPUを搭載するかどうかにより、HPC クラスタネットワーキングイメージ とGPU クラスタネットワーキングイメージ が存在します。
またベースOSの Oracle Linux は、バージョン7系と8系の クラスタネットワーキングイメージ が存在します。
これらの組み合わせから自身の用途に合わせて クラスタネットワーキングイメージ を適切に選択する方法は、 OCI HPCテクニカルTips集クラスタネットワーキングイメージの選び方 を参照してください。

マーケットプレイスクラスタネットワーキングイメージ は、HPC クラスタネットワーキングイメージここ 、GPU クラスタネットワーキングイメージここ をクリックしてアクセスします。 OCI へのログインを要求された場合は、ログインを完了して下さい。

5-14. 構成ソース・プロバイダ

構成ソース・プロバイダ は、 GitHub 等のソースコード管理サービスで公開されているソースコードを リソース・マネージャスタック として取り込むための、ソースコード管理サービスへの接続情報を持つ OCI リソースです。

GitHub 等で公開されている Terraform スクリプトを基に OCI 上にHPC/GPUクラスタ等を自動構築する場合、まずこの 構成ソース・プロバイダ を作成し、これを介して Terraform スクリプトを GitHub 等から取り込んで リソース・マネージャスタック を作成、この スタック を適用してリソースを作成します。

OCI HPCチュートリアル集 で紹介する Terraform スクリプトを使用する手法は、ソースコード管理サービスに GitHub を使用しますが、 GitHub にアクセスするための 構成ソース・プロバイダ の作成は、 GitHub のアカウントを持っておりこのアカウントで Personal access token を発行しておく必要があります。
GitHub のアカウント作成は ここPersonal access token の発行は ここ を参照してください。

構成ソース・プロバイダ の作成手順は、 OCI 公式ドキュメントの ここ を参照してください。
OCI HPCチュートリアル集 で使用する 構成ソース・プロバイダ は、以下で作成します。

  • パブリック・エンドポイント/プライベート・エンドポイント : パブリック・エンドポイント
  • タイプ : GitHub
  • サーバーURL : https://github.com/

関連する OCI 公式ドキュメントは、 ここ を参照してください。

5-15. インスタンス・プリンシパル

インスタンス・プリンシパル は、 IAM が認証・認可を管理する単位の一つで、動的グループIAMポリシー を組合せて使用することで、特定のインスタンスから実行する OCI サービスへのAPIコール( OCI リソースの作成等)に対する認証・認可を制御する際に使用します。
この IAM の認証・認可を管理する単位は、 インスタンス・プリンシパル の他に、 OCI コンソールにログインする際に使用する ユーザ・プリンシパル が存在します。

インスタンス・プリンシパル を使用する IAM 認証・認可の仕組みは、 インスタンス・プリンシパル 認証と呼ばれ、動的にHPC/GPUクラスタのライフサイクルを管理するソリューションに適用することが可能です。
このソリューションでは、クラスタ管理ノードを インスタンス・プリンシパル として 動的グループ に登録(認証)し、このクラスタ管理ノードから発行するAPIコールを IAMポリシー で許可(認可)することで、クラスタ管理ノードからHPC/GPUクラスタのライフサイクルを動的に管理することを可能にします。
OCI HPCチュートリアル集 で紹介している クラスタオートスケーリング を使用するオンデマンドクラスタソリューションは、この仕組みを使用しています。

このオンデマンドクラスタ実現のための インスタンス・プリンシパル 認証の設定方法は、 OCI HPCテクニカルTips集オンデマンドクラスタ実現のためのインスタンス・プリンシパル認証設定方法 を参照してください。

関連する OCI 公式ドキュメントは、 ここ を参照してください。

5-16. 動的グループ

動的グループ は、 インスタンス・プリンシパル をグループ化する仕組みで、 インスタンス・プリンシパル による IAM 認証・認可を実施するには欠かせません。

インスタンス・プリンシパル動的グループ の関係は、ユーザとこれを含むグループの関係に似ており、インスタンス等を含む 動的グループ を定義し、これに対する IAMポリシー を設定することで、 ユーザ・プリンシパル 認証を使用することなく、 動的グループ に含まれる OCI リソースによる各種 OCI サービスへのAPIコールを制御することが出来ます。

動的グループ に含める インスタンス・プリンシパル は、以下のように定義することが可能です。

  • 特定のOCIDを持つインスタンスをメンバーとする
  • 特定のOCIDを持つ コンパートメント に属するインスタンスをメンバーとする
  • 特定の タグ・キー でタグ付けされたインスタンスをメンバーとする

関連する OCI 公式ドキュメントは、 ここ を参照してください。

OCI コンソールの 動的グループ メニューは、 ここ をクリックして表示される ルートコンパートメント内のドメイン フィールドで利用している ドメイン を選択し、左側の 動的グループ メニューを選択します。 OCI へのログインを要求された場合は、ログインを完了して下さい。