- Oracle Cloud
- Oracle Database
OCIでGPUインスタンスを構築してみた
OCIで提供されている生成AIサービスとGPUインスタンスを前回の記事「生成AIにGPUが適している理由」で紹介しました。本記事では、GPUインスタンスをデプロイして、インスタンス上でLLM(大規模言語モデル)の動作環境を構築する方法をご紹介します。
|
お客様から「課金を抑えるため、夜間や週末はComputeインスタンスを停止したいが自動化する方法はありますか」というお問い合わせを多くいただきます。
Computeインスタンス自体に起動/停止を自動化する機能はなく、以下記事のOCI CLIを使用してOS標準のcronやタスクスケジューラ、またはJP1などのジョブ管理ツールからCLI実行を自動化する必要がありました。
OCI CLIでCompute VMとDatabase VMを操作する方法
https://www.ashisuto.co.jp/db_blog/article/vm-with-ocicli.html
その後、Computeサービスに自動スケーリング機能がリリースされ、こちらを応用することで任意の日時でComputeインスタンスの起動/停止が可能となりました。
今回は、こちらの方法をご紹介します。
まず、自動スケーリング機能についてご紹介します。
スケーリングは、簡単に言うとサーバの処理機能を増強することを指します。
主な考えとして以下の2つの方法があります。
・スケールアップ:サーバ自体のスペック(CPU、メモリなど)を増強し、処理性能を上げる
・スケールアウト:サーバ台数を増やし、処理を分散させることで処理性能を上げる
自動スケーリング機能は、後者のスケールアウトを処理負荷が高くなったタイミング(メトリックベース)、または任意のタイミング(スケジュールベース)で自動的に実施させることが可能な機能です。
このスケジュールベースでの自動スケーリングを流用して、Computeインスタンス起動、停止を自動化します。
それでは、画面例を交えて設定方法をご紹介します。
設定の流れは、以下のとおりです。
1.インスタンス構成の作成
2.インスタンスプールの作成と、Computeインスタンスへのアタッチ
3.自動スケーリングの設定
まず、自動起動/停止を設定するComputeの詳細画面に移動します。
※本記事ではkka-computeを対象とします。
その後、[他のアクション]→[インスタンス構成の作成]をクリックします。
※インスタンス構成はComputeインスタンス作成時に使用される構成情報のテンプレートです。
※今回はkka-computeの構成情報を基にテンプレートを作成します。
|
作成先のコンパートメントを選択し、任意の名前を入力後、[インスタンス構成の作成]をクリックします。
※コンパートメントはComputeインスタンスと同じコンパートメントが選択されています。
※名前には「instance-config-YYYYMMDD-MMHH」が入力されています。
|
インスタンス構成が作成されました。
|
作成したインスタンス構成の詳細画面から[インスタンス・プールの作成]をクリックします。
|
任意の名前を入力します。
※名前には「instance-pool-YYYYMMDD-MMHH」が入力されています。
インスタンス・プール作成先のコンパートメントと作成したインスタンス構成を選択します。
また、インスタンス数に
”0”
を入力します。
入力後に[次]をクリックします。
※インスタンス構成詳細は編集不要です。
|
可用性ドメイン、フォルト・ドメインは、対象Computeインスタンスと統一する必要があります。
また、Computeインスタンスが存在するVCNとサブネットを選択します。
選択後、[次]をクリックします。
※日本リージョンの場合は、「可用性ドメイン1」から変更する必要はありません。
※フォルト・ドメインは、画面例のとおり未選択で問題ありません。
※本記事ではロード・バランサは使用しません。
|
この後、確認画面が表示されますので、[作成]をクリックします。
インスタンス・プールが作成されました。
|
インスタンス・プール詳細画面の左下の[アタッチされたインスタンス]→[インスタンスのアタッチ]をクリックします。
|
アタッチ先のインスタンスを選択し、[インスタンスのアタッチ]をクリックします。
※アタッチするための前提条件として以下がありますのでご注意ください。
・インスタンスとプールが実行中である。
・インスタンスとプールのマシン・タイプが同一である(仮想マシンまたはベア・メタル)。
・インスタンスとプールの可用性ドメインとフォルト・ドメインが同一である。
・インスタンスのプライマリVNICが、プールと同じVCNおよびサブネットに存在する。
・セカンダリVNICが定義されている場合、インスタンスのセカンダリVNICが、プール内の
その他のインスタンスで使用されているセカンダリVNICと同じVCNおよびサブネットに
存在する。
・インスタンスが別のプールにアタッチされていない。
|
しばらく待つとアタッチが完了します。
作成したインスタンス・プールの詳細画面から[その他]→[自動スケーリング構成の作成]をクリックします。
|
任意の名前を入力します。
※名前には「autoscaling-config-YYYYMMDD-HHMM」が入力されています。
作成先のコンパートメントを選択します。
[次]をクリックします。
|
[スケジュールベースの自動スケーリング]を選択します。
[全インスタンスのライフサイクル状態の変更]を選択します。
ライフサイクルアクションから[起動]を選択します。
クイック・スタートから[カスタム]を選択します。
Computeインスタンスの自動起動を行う日時をcron書式で指定します。
※本記事では、毎日4:00 UTC(13:00 JST)に実施するように設定します。
※設定はUTCで行う必要がありますので、ご注意ください。
|
続いて、自動停止のスケジュールを設定します。
画面をスクロールして、[+ 他のポリシー]をクリックします。
先程と同様に、[スケジュールベースの自動スケーリング]を選択します。
[全インスタンスのライフサイクル状態の変更]を選択します。
ライフサイクルアクションから[強制停止]を選択します。
クイック・スタートから[カスタム]を選択します。
Computeインスタンスの自動停止を行う日時をcron書式で指定します。
※本記事では、毎日3:30 UTC(12:30 JST)に実施するように設定します。
設定後、[次]をクリックします。
|
確認画面が表示されますので、[作成]をクリックします。
自動スケーリングの設定が完了しました。
|
それでは、指定したスケジュールどおりにComputeインスタンスの起動/停止が行われるか確認してみましょう。
インスタンス・プールの詳細画面を開くと、ステータスが[停止済]となっています。
スケジュールされた起動/停止はインスタンス・プールに対して実施され、アタッチされたComputeインスタンスも連動して起動/停止する仕組みです。[作業リクエスト]をクリックすると、[プール内のインスタンスを停止]がスケジュール指定した[3:30 UTC(12:30 JST)]に実行されたことが確認できます。
|
Computeインスタンスも停止していることが確認できます。
|
続いて、起動を確認しましょう。
インスタンス・プールの詳細画面を開くと、ステータスが[実行済]となっています。
[作業リクエスト]をクリックすると、[プール内のインスタンスを起動]がスケジュール指定した[4:00 UTC(13:00 JST)]に実行されたことが確認できます。
|
Computeインスタンスも起動していることが確認できます。
|
自動スケーリング機能をご利用いただくにあたり、補足情報として2点ご紹介します。
インスタンス・プールをアタッチしたComputeインスタンスを、Computeインスタンス詳細画面の[停止]から停止しても、しばらくたつと自動で起動されます。
|
これは、仕様上想定された正常な動作です。
インスタンス・プールを停止せずにインスタンス・プール内のComputeインスタンスを停止した場合、インスタンス・プールは所属するComputeインスタンスを起動します。
そのため、スケジューリングした時間外でComputeインスタンスを明示的に停止する必要がある場合は、インスタンス・プール自体を停止します。
インスタンス・プールの詳細画面の[停止]をクリックします。
確認画面が表示されますので、[インスタンス・プールの停止]をクリックします。
|
例えば、以下ブログ記事にあるメトリックによるComputeの起動/停止を監視されている場合、自動スケーリング機能による自動起動/停止は、メトリックによる監視で検知されません。
デフォルト機能と侮るなかれ。OCIのモニタリング機能を活用しよう!
https://www.ashisuto.co.jp/db_blog/article/N0017_OracleCloud_20200519.html
もし自動スケーリング機能による自動起動/停止が実行されたか監視されたい場合は、イベント・サービスを利用して検知し、メール通知することが可能です。
OCIコンソールの左上三本メニューから[監視および管理]→[イベント・サービスのルール]をクリックします。
|
[ルールの作成]をクリックします。
|
必要な項目を入力し、[ルールの作成]をクリックします。
今回は以下のように設定しました。
・表示名:test_rule
・説明:auto scaling
・ルール条件:
- 条件:イベント・タイプ
- サービス名:Compute
- イベント・タイプ:Autoscaling Configuration - Scaling Action
・アクション
- アクション・タイプ:通知
- 通知コンパートメント:作成した通知トピックのあるコンパートメント
- トピック:作成したトピック名
※トピックの作成については、次のブログの[メール通知の設定]をご参照ください。
https://www.ashisuto.co.jp/db_blog/article/N0017_OracleCloud_20200519.html
|
自動スケーリングによる自動起動/停止が実行された際、以下のようなメールがトピックで指定したメールアドレスに届きます。
※件名は変更できません(自動起動/停止で同じ件名です)
※自動起動/停止の判断はeventTime、descriptionの内容から判断いただく必要があります
※eventTimeは自動スケーリングが動作した時間(UTC表記)です
※descriptionは"START executed"が自動起動、"STOP executed"が自動停止を指します
|
今回は、Computeインスタンスの起動/停止の自動化方法をご紹介しました。
一例ですが、テストなどの一時的な目的で平日のみ利用される場合、週末や長期休暇前に停止することを意識されているかと思います。
しかし、多忙のため「うっかり停止し忘れて課金額が高くなってしまった」というケースも十分起こり得ると思います。
意図しない課金を抑えるため(もちろんそれ以外の用途にも)、本記事ならびに以下マニュアルなどもご参考いただけますと幸いです。
自動スケーリング
https://docs.oracle.com/ja-jp/iaas/Content/Compute/Tasks/autoscalinginstancepools.htm
OCI技術資料 : 自動スケーリング概要
https://speakerdeck.com/ocise/ociji-shu-zi-liao-zi-dong-sukeringugai-yao
■本記事の内容について
本記事に示した定義及び条件は変更される場合があります。あらかじめご了承ください。
■商標に関して
・Oracle®、Java、MySQL及びNetSuiteは、Oracle、その子会社及び関連会社の米国及びその他の国における登録商標です。
・Amazon Web Services、AWS、Powered by AWS ロゴ、[およびかかる資料で使用されるその他の AWS 商標] は、Amazon.com, Inc. またはその関連会社の商標です。
文中の社名、商品名等は各社の商標または登録商標である場合があります。
OCIで提供されている生成AIサービスとGPUインスタンスを前回の記事「生成AIにGPUが適している理由」で紹介しました。本記事では、GPUインスタンスをデプロイして、インスタンス上でLLM(大規模言語モデル)の動作環境を構築する方法をご紹介します。
前回の記事でお伝えしたとおり、OCVSを構築するとVMwareの複数の機能が利用可能です。 それらの機能の中で、今回はHCXの概要や具体的な機能、OCVSでHCXを利用するメリットなどをお伝えします!
2024年5月にOracle Cloud環境にて、先行してOracle DB 23aiがリリースされました。 Oracle Base Database ServiceにおけるOracle Database 23aiの検証結果を報告します。 今回は「統合メモリー管理」をテーマにお伝えします。