1. 株式会社PALTEK
  2. TECHブログ
  3. 製品情報
  4. 業界最安値のGPUaaS 「GPUSOROBAN」を実際に試してみた

TECHブログ

業界最安値のGPUaaS 「GPUSOROBAN」を実際に試してみた

GPU
業界最安値のGPUaaS 「GPUSOROBAN」を実際に試してみた

本ブログは最新のGPUが使える上に、とても安いと噂の「GPUSOROBAN」がどんな感じのものなのか、CUDA初心者が3日間の無償評価で会員登録からCUDAのサンプルを動かすまでのレポートです。

「GPUSOROBAN」は株式会社ハイレゾが運営するAI開発や高解像度映像のレンダリング、交通インフラや医療などのシミュレーションなどに活用されるGPUリソースを、低コスト・定額料金で利用できる業界最安値のGPUクラウドサービスです。

本ブログはインスタンスを使い始める入り口までですが、今回はCUDAが使える状態まで進めておき、次回は何か動かしてみたいと思います。

Windowsでのインスタンスの作成から接続までの手順は「GPUSOROBAN」公式Webサイトの「SOROBANで仮想インスタンスを作成するには~WINDOWS10の場合~」にも掲載されています。

目次

1. 利用前の確認

弊社内の「GPUSOROBAN」担当と連絡を取り、無償評価をしたいことを伝えました。インスタンスにインストールされているCUDAのバージョンが分からなかったので、それも聞いてみたのですが、そこでDockerについての説明もありました。
なお、無償評価については、以下問合せ画面から問合せていただくとスムーズかと思います。

URL: https://www.paltek.co.jp/solution/gpucloud/index.html

◆サマリ

・評価開始希望日を伝えると、その日から3日間が無償評価期間になる
・会員登録はいつでもできる
・インスタンスの作成は評価開始日から可能になる
・CUDAのバージョンは11.0
・Dockerを使うには仮想インスタンスではなく、ベアメタルインスタンスでの提供になる

現在の私の開発環境は、CUDAが11.4、環境はDockerで作っています。Dockerを使いたかったのでベアメタルインスタンスを相談中です。ベアメタルインスタンスは仮想インスタンスのように即座に使用可能とはいかないので、今回は仮想インスタンスで進めます。

2. 会員登録

サイトへアクセス
「GPUSOROBAN」のWebサイトにアクセスして「新規申し込み」をクリックします。
URL: https://soroban.highreso.jp/

Webサイト「GPUSOROBAN」新規申し込み画面

※画像クリックで大きな画像が表示されます。


会員登録
会員登録画面が表示されますので、名前、メールアドレス、パスワードを入力し、利用規約に同意をチェックして「登録」ボタンを押します。
次に、登録完了の表示に切り替わり、登録したメールアドレスに登録認証メールが送信されます。
最後に届いたメールに記載されているURLをクリックすると登録完了です。

Webサイト「GPUSOROBAN」会員登録画面

※画像クリックで大きな画像が表示されます。

Webサイト「GPUSOROBAN」登録完了画面

※画像クリックで大きな画像が表示されます。

SOROBAN会員登録のご確認

SOROBAN をご利用いただきありがとうございます。

会員登録を申込みいただきありがとうございます。
URLをタップしてメールアドレスの確認を完了してください。
https://gpu-console.highreso.jp/auth/confirm/xxxxxxxxxxxxxxxxxxxxxxx

URLの有効期限は 30分です。
--
SOROBAN サポート
https://gpu-console.highreso.jp/



Webサイト「GPUSOROBAN」ログイン画面

※画像クリックで大きな画像が表示されます。

ログイン
ログイン下記のURLよりログインします。
ログインURL
https://gpu-console.highreso.jp/auth/login

ログインするとコントロールパネルが表示されます。

Webサイト「GPUSOROBAN」の会員ログイン後のコントロールパネル画面

※画像クリックで大きな画像が表示されます。

3. インスタンスの作成

ここからはインスタンスを作成していきます。
今回は、ウィザードタ形式で進められる「クイック・スタート」で行います。

左のメニューバーより「インスタンス作成」、「クイック・スタート」の順にクリックし、作成するインスタンス名を入力して「NEXT」ボタンをクリックします。

「会員インスタンス」作成画面

※画像クリックで大きな画像が表示されます。


後々機械学習をやってみたいので、インスタンスにnv4-1dlを選択します。

「会員インスタンス」作成画面

※画像クリックで大きな画像が表示されます。


インスタンスにアクセスするための“SSH秘密鍵の生成”を行います。
ここは「NEXT」をクリックして進めるだけで、OKです。

「会員インスタンス」作成画面

※画像クリックで大きな画像が表示されます。


今回は無償試用なので「従量」のまま「NEXT」をクリックします。

「会員インスタンス」作成画面

※画像クリックで大きな画像が表示されます。


確認画面が表示されますので、内容に問題のないことを確認して「CREATE」をクリックします。従量に金額が表示されていますが、試用中は課金されないのでご安心ください。

「会員インスタンス」作成画面

※画像クリックで大きな画像が表示されます。


以上の設定でインスタンスを作成できました。

4. インスタンスの起動

作成したインスタンスは「会員インスタンス」に表示されます。

「会員インスタンス」より「起動」をクリックしてインスタンスを起動します。

「会員インスタンス」起動画面

※画像クリックで大きな画像が表示されます。


課金に関する確認のダイアログが表示されますのでお読みいただき、「内容を確認しました」をチェックして、「起動する」をクリックします。

「会員インスタンス」起動画面

※画像クリックで大きな画像が表示されます。


「IPアドレス」欄が「停止中」から「Pending」に変わりました。

「会員インスタンス」起動リクエスト完了画面

※画像クリックで大きな画像が表示されます。


インスタンスを作成後、ちょっと離席してから起動しました。その間にインスタンスの作成は終わっていたようで、15秒程度で起動して「IPアドレス」欄にIPアドレスが表示されました。

「会員インスタンス」起動リクエスト完了画面

※画像クリックで大きな画像が表示されます。

5. インスタンスへの接続と環境の確認

「会員インスタンス」の下の方にOS別の「接続方法」が記載されています。今回はLinuxから接続してみます。

「会員インスタンス」の「接続方法」画面

※画像クリックで大きな画像が表示されます。


「アクセス鍵ダウンロード」、「インスタンス鍵ダウンロード」を順にクリックして、接続に使用するLinux PCに秘密鍵をダウンロードします。
今回は、ユーザのホームディレクトリ下の.ssh内にダウンロードして、パーミッションを変更しました。
左右にスクロールしてご覧ください
kirin@xeon-E3:~$ ls -la ~/.ssh/
合計 16
drwxrwxr-x 2 kirin kirin 4096  6月 16 10:36 .
drwxr-xr-x 7 kirin kirin 4096  6月 16 10:28 ..
-rwxr--r-- 1 kirin kirin 3243  6月 16 10:36 ackey.txt
-rwxr--r-- 1 kirin kirin 3243  6月 16 10:36 mykey.txt
kirin@xeon-E3:~$ chmod 600 ~/.ssh/ackey.txt ~/.ssh/mykey.txt

インスタンスへの接続経路は以下のようになっています。

※画像クリックで大きな画像が表示されます。

インスタンスへの接続経路

図1 インスタンスへの接続経路
※ アクセスサーバのIPアドレスは変更されました。利用開始時に通知されるアドレスに置き換えが必要です。


インスタンスに接続するにはアクセスサーバを経由する必要があり、インスタンスに直接sshでログインすることができません。

インスタンスへのアクセス方法」を参考にsshのポートフォワーディングを使ってアクセスサーバとsshで接続し、インスタンスのポート22(ssh用ポート)をローカルのLinux PCのポート20122にフォワードします。
※上記リンク先は会員登録をしていないと開けません。


インスタンスのIPアドレスは、インスタンスを再起動するたびに変化しますので、環境変数に割り当てました。では、sshでトンネルを掘ります。sshの鍵はアクセスサーバ用秘密鍵を使用します。
左右にスクロールしてご覧ください
kirin@xeon-E3:~$ export VM_ADR=10.233.122.16  # インスタンスのIPアドレス
kirin@xeon-E3:~$ export AC_ADR=202.122.50.154 # アクセスサーバのIPアドレス
kirin@xeon-E3:~$ export CONNECT_PORT=20122    # インスタンスのsshポートを割り当てるローカルPCのポート
kirin@xeon-E3:~$ ssh -L $CONNECT_PORT:$VM_ADR:22 -l user $AC_ADR -p 30022 -i ~/.ssh/ackey.txt
Highreso GPU Advance.
This is access server.

これでローカルのLinux PCからインスタンスにsshで接続できるようになりました。ローカルPCのポート20122にアクセスするとインスタンスのポート22にフォワードされます。このターミナルは、このままにしておきます。


インスタンスにsshでログインします。sshの鍵はインスタンス用秘密鍵を使用します。
インスタンスに作られているアカウントは「user」です。
左右にスクロールしてご覧ください
kirin@xeon-E3:~$ ssh user@localhost -p 20122 -i ~/.ssh/mykey.txt
The authenticity of host '[localhost]:20122 ([127.0.0.1]:20122)' can't be established.
ECDSA key fingerprint is SHA256:FDO/Kab5WuIJF44iXFiVfdeaNz18XMOT2nH5m8FuA+k.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '[localhost]:20122' (ECDSA) to the list of known hosts.
Welcome to Ubuntu 18.04.5 LTS (GNU/Linux 4.15.0-167-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/advantage

The programs included with the Ubuntu system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Ubuntu comes with ABSOLUTELY NO WARRANTY, to the extent permitted by
applicable law.

ログインに成功しました。


※下記のエラーが発生した場合はインスタンスのIPアドレスの指定に間違いがないかご確認ください。

左右にスクロールしてご覧ください
kirin@xeon-E3:~$ ssh user@localhost -p 20122 -i ~/.ssh/mykey.txt
ssh_exchange_identification: read: Connection reset by peer

# sshトンネルを掘ったターミナルには下記のエラーが表示されている
# channel 3: open failed: connect failed: Host is unreachable

CUDA関連の情報を見てみます。窓口から聞いた通り11.0で使用可能なバージョンの上限は11.1ですね。

左右にスクロールしてご覧ください
(base) user@test01:~$ nvidia-smi
Thu Jun 16 02:44:21 2022
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 455.23.05    Driver Version: 455.23.05    CUDA Version: 11.1     |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|                               |                      |               MIG M. |
|===============================+======================+======================|
|   0 A100-PCIE-40GB     Off  | 00000000:C1:00.0 Off |                    0 |
| N/A   44C    P0    38W / 250W |     0MiB / 40536MiB |      0%      Default |
|                               |                      |             Disabled |
+-------------------------------+----------------------+----------------------+

+-----------------------------------------------------------------------------+
| Processes:                                                                  |
|  GPU   GI   CI        PID   Type   Process name                  GPU Memory |
|        ID   ID                                                   Usage      |
|=============================================================================|
|  No running processes found                                                 |
+-----------------------------------------------------------------------------+
(base) user@test01:~$ cat /proc/driver/nvidia/version
NVRM version: NVIDIA UNIX x86_64 Kernel Module  455.23.05  Fri Sep 18 19:37:12 UTC 2020
GCC version:  gcc version 7.5.0 (Ubuntu 7.5.0-3ubuntu1~18.04)
(base) user@test01:~$ cat /usr/local/cuda/version.txt
CUDA Version 11.0.228
(base) user@test01:~$ nvcc -V
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2020 NVIDIA Corporation
Built on Wed_Jul_22_19:09:09_PDT_2020
Cuda compilation tools, release 11.0, V11.0.221
Build cuda_11.0_bu.TC445_37.28845127_0

他にも気になるgcc、Python、Anaconda、Dockerの状態を見てみます。

左右にスクロールしてご覧ください
(base) user@test01:~$ gcc --version
gcc (Ubuntu 7.5.0-3ubuntu1~18.04) 7.5.0
Copyright (C) 2017 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 
(base) user@test01:~$ python -V
Python 3.7.6
(base) user@test01:~$ python3 -V
Python 3.7.6
(base) user@test01:~$ pip list | egrep "(tensor|cv)"
(base) user@test01:~$
(base) user@test01:~$ conda -V
conda 4.9.2
(base) user@test01:~$ docker
-bash: docker: コマンドが見つかりません

事前に聞いていた通りDockerはないですね。仮想インスタンスの構成上、現時点はDockerはインストールしても使えないそうです。

6. CUDAのサンプルでベンチマークを実行

CUDAのサンプルをビルドします。
サンプルのソースは/usr/local/cuda-11.0にあるのでこちらを使用します。

左右にスクロールしてご覧ください
(base) user@test01:~$ cd /usr/local/cuda-11.0/bin 
(base) user@test01:/usr/local/cuda-11.0/bin$ ./cuda-install-samples-11.0.sh ~/cuda_sample
Copying samples to /home/user/cuda_sample/NVIDIA_CUDA-11.0_Samples now...
Finished copying samples.
(base) user@test01:/usr/local/cuda-11.0/bin$ cd ~/cuda_sample/NVIDIA_CUDA-11.0_Samples/
(base) user@test01:~/cuda_sample/NVIDIA_CUDA-11.0_Samples$ time make -j16
make[1]: ディレクトリ '/home/user/cuda_sample/NVIDIA_CUDA-11.0_Samples/0_Simple/cppOverload' に入ります
:省略
Finished building CUDA samples

無事、ビルドに成功しました。


サンプルのベンチマークを実行して動作確認をします。今回はnbodyを使用し、パラメータのnumbodiesは4194304にします。

左右にスクロールしてご覧ください
(base) user@test01:~$ cd ~/cuda_sample/NVIDIA_CUDA-11.0_Samples
(base) user@test01:~/cuda_sample/NVIDIA_CUDA-11.0_Samples$ ./bin/x86_64/linux/release/nbody \ -benchmark -numbodies=4194304
Run "nbody -benchmark [-numbodies=<numBodies>]" to measure performance.
        -fullscreen       (run n-body simulation in fullscreen mode)
        -fp64             (use double precision floating point values for simulation)
        -hostmem          (stores simulation data in host memory)
        -benchmark        (run benchmark to measure performance)
        -numbodies=<N>   (number of bodies (>= 1) to run in simulation)
        -device=<d>       (where d=0,1,2.... for the CUDA device to use)
        -numdevices=<i>   (where i=(number of CUDA devices > 0) to use for simulation)
        -compare          (compares simulation results running once on the default GPU and once on the CPU)
        -cpu              (run n-body simulation on the CPU)
        -tipsy=<file.bin> (load a tipsy model file for simulation)

NOTE: The CUDA Samples are not meant for performance measurements. Results may vary when GPU Boost is enabled.

> Windowed mode
> Simulation data stored in video memory
> Single precision floating point simulation
> 1 Devices used for simulation
GPU Device 0: "Ampere" with compute capability 8.0

> Compute 8.0 CUDA device: [A100-PCIE-40GB]
number of bodies = 4194304
4194304 bodies, total time for 10 iterations: 541977.688 ms
= 324.592 billion interactions per second
= 6491.849 single-precision GFLOP/s at 20 flops per interaction 

10分近くかかりました。

A100、GTX 1080Ti、GTX 745で同じベンチマークを走らせた結果の棒グラフ

※画像クリックで大きな画像が表示されます。

A100、GTX 1080Ti、GTX 745で同じベンチマークを走らせてみました。A100の得意なところを引き出せるベンチマークではないのかなという印象です。ベンチマークはよく考えなければいけませんね。

7. まとめ

会員登録の開始から5分位でインスタンスを起動できました。
起動したインスタンスへの接続には踏み台(アクセスサーバ)を経由する必要があり、ローカルのPC、踏み台、インスタンスそれぞれのポートを整理するために絵を描いたり、インスタンスのIPアドレスを打ち間違えてエラーが発生したりして10分位かかってしまいました。そのようなことをしなければインスタンスへの接続は数分で終了すると思います。
CUDAのドライバやtoolkitはインストールされていたので、CUDAのサンプルはビルドするだけで動かすことができました。ベンチマークの実行中の待ちが10分位かかりましたが、それを除けば5分位で終了します。

登録開始からサンプルを動かすまで、特に急ぐことなく進めて30分あれば十分でした。Dockerは不要であれば、今回作成したインスタンスを使って始められそうです。
では、次回お会いしましょう。


見積もり・無償評価などに関するお問い合わせはこちら

このブログのシリーズ