1. 株式会社PALTEK
  2. TECHブログ
  3. 製品情報
  4. 業界最安値のGPUaaS「GPUSOROBAN」を実際に試してみた(5)~Dockerコンテナを使用し機械学習プロト環境を作る~【GPUSOROBANのベアメタルの導入編】

TECHブログ

業界最安値のGPUaaS「GPUSOROBAN」を実際に試してみた(5)~Dockerコンテナを使用し機械学習プロト環境を作る~【GPUSOROBANのベアメタルの導入編】

GPU
業界最安値のGPUaaS「GPUSOROBAN」を実際に試してみた(5)~Dockerコンテナを使用し機械学習プロト環境を作る~【GPUSOROBANのベアメタルの導入編】

皆さん、こんにちは。

本ブログは最新のGPUが使える上に、とても安いと噂の「GPUSOROBAN」がどんな感じのものなのか、Dockerコンテナを使用し機械学習プロト環境を作成し、最終的にはオンプレ環境とクラウド環境でリアルタイムに顔検出を行う工程を実際に試してみたブログです。

今回は、GPUSOROBANのベアメタルの導入についてお伝えします。

公開鍵の作成と送付から、Dockerをインストールする様子までをお伝えしていますので、ご参考になれば幸いです。

それでは、始めましょう。

目次

GPUSOROBANのベアメタル導入

業界最安値のGPUAAS「GPUSOROBAN」を実際に試してみた」のブログでは仮想インスタンスの試用手順と仮想インスタンスではDockerが使えないことを書きましたが、今回はDockerを使用するためにベアメタルインスタンスを使用します。

そこでベアメタルインスタンスの試用までの手順を確認しました。

(1)
以下URLまたはメールにて弊社の担当にベアメタルを試用したい旨を伝える
URL: https://www.paltek.co.jp/solution/gpucloud/index.html
(2)
以下URLから会員登録を行う
URL: https://soroban.highreso.jp/
(3)
株式会社ハイレゾにてベアメタルの準備が行われる
(4)
sshの認証用の公開鍵の送付依頼が来るので鍵を作って公開鍵を送る
(5)
株式会社ハイレゾにて公開鍵が登録されてアクセス可能となった通知が来る

標準の試用期間は仮想インスタンスと同じで3日間です。
仮想インスタンスとの大きな違いは以下になると思います。

マシンを完全に専有できる
OSを壊さない限りオンプレ同様に自由に改変できる
Webのコントロールパネルでは管理できない

個人的には障害が発生しない限りコントロールパネルの必要性を感じていないので特に問題はありません。気になるのは間違ってshutdownをしてしまったときにどうやって起動するのかというところですが、まだ確認していません。

(3)までは連絡するだけで進みました。
その後、(4)の公開鍵の送付依頼が来たので、公開鍵を用意するところから書きます。

公開鍵の作成と送付

一般的なRSAの鍵を用意します。手順も特に変わりありません。いつも使っている自分の鍵とは別に新たに作成しました。本格的に使う場合はビット長を4096以上にした方が良いでしょう。

鍵のディレクトリはデフォルトのパスでも問題ありませんが、PCのストレージを頻繁に差し替えて行方不明になったり、どれが何の鍵か分からなくなったりすることがあるのでディレクトリを作成してそこに入れました。

左右にスクロールしてご覧ください
kirin@xeon-e3:~$ mkdir /home/kirin/.ssh/sshkey-bare-20220711

kirin@xeon-e3:~$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/kirin/.ssh/id_rsa): /home/kirin/.ssh/sshkey-bare-20220711/id_rsa_soroban
Enter passphrase (empty for no passphrase):パスフレーズを入力してエンター
Enter same passphrase again: パスフレーズを入力してエンター
Your identification has been saved in /home/kirin/.ssh/sshkey-bare-20220711id_rsa_soroban.
Your public key has been saved in /home/kirin/.ssh/sshkey-bare-20220711/id_rsa_soroban.pub.
The key fingerprint is:
SHA256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx kirin@xeon-e3
The key's randomart image is:
+---[RSA 2048]----+
|o.o==+ .o.**     |
|oo.+*++..+. o    |
|..o==oOo.. o     |
| E+ooB.*  o      |
|  ooo o S        |
|     . *         |
|      . .        |
|                 |
|                 |
+----[SHA256]-----+

kirin@xeon-e3:~$ ls -la ~/.ssh/sshkey-bare-20220711
合計 16
drwxrwxr-x 2 kirin kirin 4096  7月 11 15:39 .
drwx------ 4 kirin kirin 4096  7月 11 15:38 ..
-rw------- 1 kirin kirin 1766  7月 11 15:39 id_rsa_soroban
-rw-r--r-- 1 kirin kirin  395  7月 11 15:39 id_rsa_soroban.pub

出来上がった公開鍵のid_rsa_soroban.pubを送付しました。

ベアメタルにログイン

自分の公開鍵を送付すると接続が可能になったとの返信が来て、インスタンスのIPアドレスやポート、アクセスサーバの公開鍵等の情報が送られてきました。

アクセスサーバでインスタンスとローカルPC間にトンネルを掘って、トンネル経由でインスタンスに接続するという仕組みは仮想インスタンスと同じです。

私は以下のようなパラメータを与えてトンネルを掘っています。

左右にスクロールしてご覧ください
ssh -g -L [ローカルのポート]:[インスタンスのIPアドレス]:[インスタンスのsshポート] \
    -l user [アクセスサーバのIPアドレス] -p [アクセスサーバのsshポート] \
    -i [送付されてきたアクセスサーバの公開鍵ファイル]

トンネルを掘ってからインスタンスにsshでログインします。

左右にスクロールしてご覧ください
ssh -i [自分の秘密鍵ファイル] [インスタンスのユーザid]@localhost -p [ローカルのポート]

各IPアドレスやポート、鍵ファイルはクラウド用の環境変数に設定しています。

蛇足になりますが、インスタンスとの接続を切断して処理を継続することや、不慮のネットワークの切断に備えて作業にはscreenを使います。
インストールの途中で切断してパッケージシステムやDockerのデータベースなどが壊れたときの不復旧にかかる時間を考えると通信が切断しても状態を維持できるscreen等のツールを使っておく方が安心できます。

私が太古から使っているscreenの設定ファイルです。

左右にスクロールしてご覧ください
buser@gpu55:~$ cat ~/.screenrc
escape ^t^t
hardstatus alwayslastline "[%02c] %`%-w%{=b bw}%n %t%{-}%+w"
defscrollback 10000

デフォルトの設定だとCTRL-aでscreenのコマンド入力になりますが、bashの行頭に戻るコマンドとダブっているのでCTRL-tに変更しています。その他にもガイダンスの表示とバッファサイズを変更しています。


screenに関しては以下の記事も参考になると思います。

参考:
【GPUSOROBAN】時間のかかるプログラムを「screen」でバックグラウンド実行しよう
サイト EdgeHUB
タイトル 【GPUSOROBAN】時間のかかるプログラムを「screen」でバックグラウンド実行しよう
URL https://soroban.highreso.jp/edgehub/background-execution-with-screen/

ベアメタルインスタンスの確認

ベアメタルインスタンスにログインしたら、いつものごとく現在の環境を確認します。

OS関連の情報を確認します。

左右にスクロールしてご覧ください
buser@gpu55:~/cuda_sample/cuda-samples$ uname -a
Linux gpu55 4.15.0-167-generic #175-Ubuntu SMP Wed Jan 5 01:56:07 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux

buser@gpu55:~/cuda_sample/cuda-samples$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 18.04.4 LTS
Release:        18.04
Codename:       bionic

CUDA関連の情報を確認します。

左右にスクロールしてご覧ください
buser@gpu55:~$ nvidia-smi
Tue Jul  5 23:03:11 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      On   | 00000000:C1:00.0 Off |                    0 |
| N/A   43C    P0    34W / 250W |      0MiB / 40536MiB |      0%      Default |
|                               |                      |             Disabled |
+-------------------------------+----------------------+----------------------+

+-----------------------------------------------------------------------------+
| Processes:                                                                  |
|  GPU   GI   CI        PID   Type   Process name                  GPU Memory |
|        ID   ID                                                   Usage      |
|=============================================================================|
|  No running processes found                                                 |
+-----------------------------------------------------------------------------+

buser@gpu55:~$ 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)

buser@gpu55:~$ nvcc -V
Command 'nvcc' not found, but can be installed with:
sudo apt install nvidia-cuda-toolkit

今回用意したコンテナのCUDAのバージョンは11.4.0ですが、インスタンスはnvidia-msiの結果から11.1までしか使えません。よって、CUDAを入れ替えます。

CUDA環境を入れ替える

オンプレであればCUDAの入れ替えに失敗して復旧できなくなっても最悪は自力でOSのインストールからやり直すことができますが、ベアメタルのインスタンスでどうなるのか心配であり、気になるところです。現在も進化中のGPUSOROBANですが、まだOSの初期化機能はないそうです。

心配だったのでGPUSOROBANのサポートに手順を質問したところ、以下のサイトを紹介されました。アンインストールしてからの再インストールがうまくいくのかが最も心配でしたが、たぶん実績のある手順なのでしょう。これを参考に入れ替えてみます。

サイト Qiita
タイトル ubuntuにCUDA、nvidiaドライバをインストールするメモ
URL https://qiita.com/porizou1/items/74d8264d6381ee2941bd

現状インストールされているCUDA nvidiaドライバの削除をします。

左右にスクロールしてご覧ください
buser@gpu55:~$ sudo apt-get --purge remove nvidia-*
Reading package lists... Done
: (省略)
update-initramfs: Generating /boot/initrd.img-4.15.0-167-generic
W: Possible missing firmware /lib/firmware/ast_dp501_fw.bin for module ast
左右にスクロールしてご覧ください
buser@gpu55:~$ sudo apt-get --purge remove cuda-*
Reading package lists... Done
: (省略)
Purging configuration files for cuda-repo-ubuntu1804 (10.1.243-1) ...
Purging configuration files for cuda-keyring (1.0-1) ...

インストールすべきドライバを調べます。

左右にスクロールしてご覧ください
buser@gpu55:~$ sudo apt install ubuntu-drivers-common
Reading package lists... Done
Building dependency tree
Reading state information... Done
: (省略)
Processing triggers for ureadahead (0.100.0-21) ...
ureadahead will be reprofiled on next reboot
Processing triggers for libc-bin (2.27-3ubuntu1.2) ...

buser@gpu55:~$ ubuntu-drivers devices
WARNING:root:_pkg_get_support nvidia-driver-515: package has invalid Support PBheader, cannot determine support level
WARNING:root:_pkg_get_support nvidia-driver-510-server: package has invalid Support PBheader, cannot determine support level
WARNING:root:_pkg_get_support nvidia-driver-510: package has invalid Support PBheader, cannot determine support level
: (省略)
driver   : nvidia-driver-510 - distro non-free
driver   : nvidia-driver-470 - distro non-free recommended
driver   : nvidia-driver-450-server - distro non-free
driver   : nvidia-driver-515-server - distro non-free
driver   : xserver-xorg-video-nouveau - distro free builtin

nvidia-driver-470がrecommendedとなっておすすめされました。
どのドライバがおすすめになるかは使用しているGPUによって異なります。

おすすめされたドライバをインストールします。

左右にスクロールしてご覧ください
buser@gpu55:~$ sudo add-apt-repository ppa:graphics-drivers/ppa
 Fresh drivers from upstream, currently shipping Nvidia.

## Current Status

Current long-lived branch release: `nvidia-430` (430.40)
Dropped support for Fermi series (https://nvidia.custhelp.com/app/answers/detail/a_id/4656)

Old long-lived branch release: `nvidia-390` (390.129)
: (省略)
Get:12 http://ppa.launchpad.net/graphics-drivers/ppa/ubuntu bionic/main Translation-en [9,188 B]
Fetched 342 kB in 3s (117 kB/s)
Reading package lists... Done

buser@gpu55:~$ sudo apt update
Hit:1 http://jp.archive.ubuntu.com/ubuntu bionic InRelease
Hit:2 http://jp.archive.ubuntu.com/ubuntu bionic-updates InRelease
Hit:3 http://jp.archive.ubuntu.com/ubuntu bionic-backports InRelease
: (省略)
Building dependency tree
Reading state information... Done
224 packages can be upgraded. Run 'apt list --upgradable' to see them.

buser@gpu55:~$ sudo apt install nvidia-driver-470
Reading package lists... Done
Building dependency tree
Reading state information... Done
: (省略)
Processing triggers for initramfs-tools (0.130ubuntu3.9) ...
update-initramfs: Generating /boot/initrd.img-4.15.0-167-generic
W: Possible missing firmware /lib/firmware/ast_dp501_fw.bin for module ast

インスタンスを再起動します。

左右にスクロールしてご覧ください
sudo reboot

再起動後、インスタンスにログインして確認します。

左右にスクロールしてご覧ください
buser@gpu55:~$ nvidia-smi
Mon Jul 11 11:55:20 2022
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 470.129.06   Driver Version: 470.129.06   CUDA Version: 11.4     |
|-------------------------------+----------------------+----------------------+
| 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   NVIDIA A100-PCI... Off  | 00000000:C1:00.0 Off |                    0 |
| N/A   52C    P0    38W / 250W |      0MiB / 40536MiB |     29%      Default |
|                               |                      |             Disabled |
+-------------------------------+----------------------+----------------------+

+-----------------------------------------------------------------------------+
| Processes:                                                                  |
|  GPU   GI   CI        PID   Type   Process name                  GPU Memory |
|        ID   ID                                                   Usage      |
|=============================================================================|
|  No running processes found                                                 |
+-----------------------------------------------------------------------------+

buser@gpu55:~$ cat /proc/driver/nvidia/version
NVRM version: NVIDIA UNIX x86_64 Kernel Module  470.129.06  Thu May 12 22:52:02 UTC 2022
GCC version:  gcc version 7.5.0 (Ubuntu 7.5.0-3ubuntu1~18.04)

buser@gpu55:~$ nvcc -V

Command 'nvcc' not found, but can be installed with:

sudo apt install nvidia-cuda-toolkit

buser@gpu55:~$ nvidia-container-cli info
NVRM version:   470.129.06
CUDA version:   11.4

Device Index:   0
Device Minor:   0
Model:          NVIDIA A100-PCIE-40GB
Brand:          Nvidia
GPU UUID:       GPU-923c3199-8995-b8c0-06a1-cc4ae4458fcf
Bus Location:   00000000:c1:00.0
Architecture:   8.0

11.4になり、A100も認識しているようです。ホッとしました。

Dockerをインストール

コンテナにとってホストPCとインスタンスは同じものに見えるようにする必要があるので、インスタンスにも「3. 環境構築 その2」の以下の工程を実施します。

Dockerのインストール
CUDAが使えるコンテナの作成準備

インストール前に「2. 環境構築 その1」の共通環境変数とクラウド用環境変数をベアメタルインスタンスの~/.bashrcに追加しておきます。

同じOSなので当たりまえですが、Dockerのインストールも問題なく完了しました。

おわりに

いかがでしたでしょうか。次回は最終回で、やっとクラウドを使ってオンプレと同じものを動かしはじめます。
最後までご覧いただきありがとうございました!
次回もよろしくお願いします。


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

このブログのシリーズ