早い者勝ちで使えない！？Google CloudでH100を使う方法（Flex Startモード篇）

# はじめに

こんにちは、京セラコミュニケーションシステム　川村（@kccs_takahiro-kawamura）です。

昨今、大手クラウドベンダーを中心にGPUを何基追加調達したみたいなニュースが頻繁に出ていますね。
こんなに調達していたらすぐに使えるだろうと思ったら大間違いです。
LLMのトレーニング用途で利用されるH100、H200といったGPUは早い者勝ちの争奪戦が行われています。
残念ながらこれらのGPUは今使いたい！と思って使えるものではありません。
では、どうすれば利用できるのか、Google CloudでGPUを利用する方法を今回は記載したいと思います。

:::note info
本記事は2024年12月ごろに作成しております。よって、引用している文章などはこの時点での最新となります。ご了承ください。
:::

## 本記事の対象者
* Google CloudでGPUが使いたい方

# GPUを使うためには
Google Cloudでは、Compute EngineでVMインスタンスを作成するときにGPU搭載のマシンタイプを選択することでGPUを利用できます。
ただし、この方法は早い者勝ちの争奪戦に勝つ必要があり、空きリソースがない場合はVMインスタンスを作成できず利用できません。
ではどのように利用するのかと言うと、Dynamic Workload Scheduler（以降、DWS）という仕組みを用いて、GPUを使いたいということをGoogle Cloudへリクエストします。

# DWSとは
Google Cloud上で大規模で複雑なワークロードを効率的にオーケストレートするための、フルマネージドサービスです。
従来のワークフローオーケストレーションツールとは異なり、DWSは、ワークロードの規模や複雑さ、そしてリソースの可用性に適応的に対応できる点が大きな特徴です。
**リソースの可用性に適応的に対応できる**、この仕様を用いてGPUを確保します。

DWSには2つのモードがあります。
* Flex Startモード
リソースの取得可能性を高め、最適化された経済性を実現するモードです。
AI / MLジョブのGPUの容量を必要な量、期間、希望のリージョンを指定してリクエストします。
* Calendarモード
ジョブ開始日時の予測性が高い場合に使用します。
正確な開始日時と決まった期間に必要となるトレーニングとテストのワークロードに対応します。

今回はFlex Startモードの使い方について記載します。

Flex StartモードでGPUを利用するためには以下の手順が必要です。
[1. インスタンステンプレートを作成する](#1-インスタンステンプレートを作成する)
[2. インスタンスグループを作成する](#2-インスタンスグループを作成する)
[3. サイズ変更リクエストを行う](#3-サイズ変更リクエストを行う)

### 1. インスタンステンプレートを作成する
**3. サイズ変更リクエストを行う** でリクエストするVMインスタンスの設定を行いテンプレートにします。
Google Cloudのコンソールから、Compute Engine → インスタンス テンプレートと画面を遷移します。
画面上段にある **インスタンス テンプレートを作成** のボタンを選択します。
![instance_template_1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/164163/1c41783f-1483-d0a5-a235-15a4b9fc9a6e.png)

利用したい内容に合わせて適宜設定は変更してください。
今回は、以下のような設定にします。初期設定から変更している部分のみを記載します。
![instance_template_2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/164163/be99b8e9-4ac4-e1ac-4829-04be2bce3bbb.png)
![instance_template_3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/164163/2684196a-d628-aa47-ce65-c180b4752a71.png)

* リージョン：asia-northeast1
* GPUタイプ：NVIDIA H100 80GB
* GPU数：8
* マシンタイプ：a3-highgpu-8g
* 予約：使用しない

:::note warn
DWSの仕様上、予約は使用できません。
:::

### 2. インスタンスグループを作成する
続いては先ほど作成したインスタンステンプレートを使用してインスタンスグループを作成します。
左側のメニューからインスタンス グループを選択してください。
画面上段にある **インスタンス グループの作成** のボタンを選択します。
利用したい内容に合わせて適宜設定してください。
今回は、以下のような設定にします。
![instance_group_1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/164163/24fbb67e-2e34-a8f5-d3d4-27e7645f64ef.png)
![instance_group_2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/164163/c8367afd-61ec-1ba1-012e-e81196962686.png)
![instance_group_3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/164163/93429b4a-9f6c-098d-4a92-8a1527721b3b.png)

初期設定から変更している箇所で重要な部分を箇条書きにします。
* インスタンス数：0
* サイズ変更リクエストを使用してVMを一度に作成する：有効
* 場所：シングルゾーン
* リージョン：asia-northeast1
* ゾーン：asia-northeast1-b
* 自動スケーリング：自動スケーリングの構成を削除
* 障害発生時のデフォルトのアクション：アクションなし

:::warn
・ asia-northeast1リージョンでは、asia-northeast1-bのみがH100を利用できます。各リージョンとゾーンで利用可能なGPUは[こちら](https://cloud.google.com/compute/docs/gpus/gpu-regions-zones?hl=ja&_gl=1*e3ds75*_ga*OTEzMzE5NDQ5LjE2MTU4NzA2MTY.*_ga_WH2QY8WWF5*MTczMjU5OTk3Ny4yNzcuMS4xNzMyNjAwMzc3LjM1LjAuMA..#view-using-table)。
・DWSの仕様上、自動スケーリングは使用できません。
・DWSの仕様上、障害時のアクションは行えません。

:::

### 3. サイズ変更リクエストを行う
続いては先ほど作成したインスタンスグループにサイズ変更リクエストをしてH100のリソースを要求します。
インスタンスグループの一覧に作成したインスタンスグループが表示されているのでそれを選択します。
![instance_group_4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/164163/b00739d4-2a0f-d280-8a4d-ed5c894f8531.png)

概要タブでサイズ変更リクエストのペン🖊️マークを選択します。
![resize_request_1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/164163/8657df83-2f4c-1da0-47fe-c685084bf3f3.png)

画面右側に **サイズ変更リクエスト** のペインが表示されるので、 **＋サイズ変更の新規リクエスト** を選択します。
![resize_request_2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/164163/446b8190-9b19-4e2e-c67b-f0620318ca46.png)

さらに画面右側に **サイズ変更の新規リクエスト** のペインが表示されるので必要なインスタンス数、利用時間を入力してリクエストを作成します。
![resize_request_3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/164163/04b6d2b7-6d1c-985d-93f2-152bb3be686b.png)

リクエストを作成すると **サイズ変更リクエスト** のペインに先ほど作成したリクエストが表示されます。
![resize_request_4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/164163/8d8b6cb9-7795-d951-00b5-3a7d44d574b6.png)

概要タブでは、サイズ変更リクエストが **1 accepted** になっており、VMインスタンスのところにリクエストしているリソースが表示されています。
![resize_request_5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/164163/52634519-208b-10e1-1ab7-0e79768cdea6.png)

このリクエストをGoogle Cloudが承認するとH100が利用できるようになります。

# まとめ
今回はDWSのFlex StartモードでH100を利用するための手順を記載しました。
いつから利用できるのかは不明瞭な点についてはご注意ください。
改めて手順を記載しますと、
[1. インスタンステンプレートを作成する](#1-インスタンステンプレートを作成する)
[2. インスタンスグループを作成する](#2-インスタンスグループを作成する)
[3. サイズ変更リクエストを行う](#3-サイズ変更リクエストを行う)
以上の3ステップです。

次回の記事もお楽しみに！

## おしらせ

弊社X（旧：Twitter）では、Qiita投稿に関する情報や各種セミナー情報をお届けしております。情報収集や学びの場を求める皆さん！ぜひフォローしていただき、最新情報を手に入れてください😄

https://x.com/kccs_digital