HGAインスタンスとOracle Storageを連携させてみよう

はじめに

 前回のブログ記事では、同等スペック・同等条件下のサービス料金を比較を行いました。純粋な学習処理や画像処理用途での使用であれば、GPUメモリでも料金面でも優れた弊社のサービスを選択されることを強くおすすめしますが、一か所気になる点があります。それは・・・

HGAAWSAzureGMO
ストレージ [GB]120(別途EBS必要)790480

 HGAインスタンスは他社様同等スペックのインスタンスに比べストレージ容量が小さいことです。これは、基本的には弊社サービスはAIの学習処理やレンダリングでの使用を想定しているためです。しかし、既に弊社GPUインスタンスをお使いの方(いつもありがとうございます)やこれからご使用を検討されている方の中には、次のような理由から大容量のストレージを必要としているかもしれません。

  • 複数のAIシステムを1つのインスタンスで開発しているので学習データ総数が膨大
  • 学習用データとして大量の動画を用いている
  • 様々な理由からどうしてもバックアップ用のデータやログを保管する箇所が欲しい

 他にもオンプレのサーバやインスタンス間でファイルを簡単に共有できる環境を作りたいというご要望もこれから出てくるかもしれません。

 そこで、本記事では他社様のクラウドストレージと同期する方法について解説します。こうすることで、HGAインスタンスで使用できるスストレージ総容量を増やしたり、他のインスタンスやオンプレサーバ間でファイルを共有することができるようになります。説明の例としてHGAのamd1dlタイプのインスタンスとOracle Object Storage (以下まとめてOCIと呼ぶことにします)を同期させてみます。もちろん、どのインスタンスから(基本的には)どのクラウドストレージを使っても構いません(日本ではAWS S3が有名ですね)。また、すでにObject Storageにて同期対象のバケットを作成しているものとしています。作成されていない方はOracle社様公式ページのプロセスを踏み作成しましょう。

OCI側の設定:「顧客秘密キー」の作成

 HGAインスタンスとObject Storageを同期させるには認証用の秘密鍵の作成が必要です。OCIにSing Inしたら次の手順で作成しましょう。

 まず、ユーザアイコンをクリックしたとき表示されるボックス上、登録時のアカウントID(デフォルトだとEメールアドレスのはずです)をくりっくします。

Oracle Cloudのユーザページ

すると、ユーザ詳細のページが表示されるので左下の「顧客秘密キー」をクリックし「秘密キーの生成」を押下します。

秘密キー生成画面

すると鍵名を入力するダイアログが表示されるので、任意の鍵名を入力してください。

鍵名の入力

この後は重要です。「秘密キーの生成」ボタンを押下すると下図のようなダイアログが表示されると思います。

シークレットアクセスキー

この鍵については鍵生成時に一度しか表示されないので、テキストエディタ等にメモするようにしてください。

以上でストレージを同期させるための認証準備が完了しました。次はHGAインスタンス側の設定に入りましょう!

HGAインスタンス側設定:必要ツール群のインストール

  それではHGAインスタンスの方で必要な設定をしていきましょう!クラウドストレージとの同期にはRCLONEというオープンソースのソフトをインストールして使用します。Oracle Object Cloudに限らず、AWS S3やGoogle Driveとの同期も簡単に行えるとても便利なツールです!

 まずはRCLONEを含め、同期に必要なツール群をインスタンスしましょう。インスタンスにログインしたら次のコマンドを順番に実行してください。

sudo apt install unzip -y
sudo apt install curl -y
curl https://rclone.org/install.sh | sudo bash

上記のコマンドでインストールが完了したらターミナルで

rclone version

と入力し、RCLONEが正常にインストールされていることを確認してください(rclone v1.53.2などと表示されたら正常にインストールできたと言えます)。

rcloneコマンドが使用できるか確認

HGAインスタンス側設定: RCLONE用の設定ファイルを作成

 次に、OCIのオブジェクトストレージと同期を行うための設定を行います。この設定には、設定ファイルを作ってそこに記述する方法とrcloneコマンドからインタラクティブに作成する方法とがありますが、ここではわかりやすさを重視して前者の方法をとります。デフォルトでは設定ファイルが存在しないので下記のコマンドを実行して作成してください。

mkdir -p /home/user/.config/rclone/
touch /home/user/.config/rclone/rclone.conf

上記のコマンドで作成したrclone.confを編集して設定を記述します。編集にはデフォルトで入っているnanoエディタを使用したりvimをインストールして使う方法がありますが、筆者個人としては以前紹介したVSCODEからインスタンスにSSH接続する方法でRemoteSSH環境をセットアップし、VSCodeから編集することをおすすめします。

 以下では、OCI Object Storageとの同期に必要なrclone.conf のフォーマットを示します。①~④までの数字の番号がついた箇所に必要情報を埋めるようにしてください。

[①] 
type = s3
provider = Other
env_auth = false
access_key_id = ②
secret_access_key = ③
endpoint = ④.compat.objectstorage.ap-tokyo-1.oraclecloud.com
region = ap-tokyo-1
  • ①は接続名です。任意につけてください。今回の検証ではocios-hgaとしております。
  • ②はアクセスキーです。下図のように生成した秘密鍵一覧表示画面から取得できるのでそれを貼り付けましょう
  • ③は秘密鍵生成時に一度だけ表示される鍵のことです。なくしたらまた鍵の作り直しです・・・
  • ④はストレージのネームスペースを表します。下の2枚目の図を参考にObject Storage詳細表示画面から取得してください。
  • 「region = ap-tokyo-1」の箇所はOCI登録時のリージョン情報とバケットを作成したリージョンが異なる場合必須ですが、日本国内でのみOCIを使っているのであれば必要ではない項目です(念のため入れてます)。
access_keyの内容
ストレージのネームスペース(④の箇所に入れる)

これにて設定完了です!それでは動作確認を行っていきましょう。

HGAインスタンス側設定: 動作確認

  ここからは実際にインスタンスからストレージ同期を行っていきます!

 まず、同期対象とするディレクトリを作成します。これは、どのディレクトリでも構いませんが、他のインスタンスやサーバと共有する場合を考慮し/mntディレクトリ配下に作成するのが無難です。こうすると同期したいとき、cpやmvコマンドで同期対象のファイルを同期用のディレクトリ移動させなければならない面倒さはありますが、何でも同期できるような設定は避けられることを強くおすすめします。以下の例でも/mnt配下に同期先ディレクトリを作成します。

sudo mkdir -p /mnt/storage_cooporation_testdir/testDir_HAG
sudo touch /mnt/storage_cooporation_testdir/testDir_HAG/test_hga.txt

上記の例では、/mnt配下のstorage_cooporation_testdir/を同期対象のファイルを格納するディレクトリとし、HGAインスタンス側からtestDir_HAG/というディレクトリを同期させるように設定しています。
テスト用のディレクトリ作成が完了したら

rclone copy /mnt/storage_cooporation_testdir/ [①の接続名]:[Object Storageのバケット名]

コマンドで同期を行います。ちゃんと同期できているか確認したい場合は

rclone ls [①の接続名]:[Object Storageのバケット名]

を実行すると下図のように表示されました。上で作成したtestDir_HGAデイレクトリとその内容がちゃんと同期されていることがわかりますね。
(図ではtestDir_OCIというディレクトリもありますが、これは筆者が検証時にOCIのインスタンスからも同期できるよう設定したためです)。

同期済ファイルの表示

また、オブジェクトストレージの詳細画面からも同期したファイルの内容を確認することができます(図の赤い四角で囲った箇所が同期済ファイルです)。

オブジェクトストレージの管理画面

 ちゃんと同期できていますね!
クラウドストレージとの同期は、学習処理時の学習用データの呼び出し時など、高速なデータ呼び出しが要求される場面には向きません(HGAインスタンスについてるストレージでやることを強くおすすめします)。しかし、バックアップデータやログの保存先、インスタンス間のファイル共有システム化など使える場面は多数あるはずです。すでにクラウドストレージを借りているのであれば、HGAインスタンスからも同期できるよう設定してみるのも面白いでしょう。

[HGAoffcial]

[dot]

[/dot]

この記事をシェアする