はじめに

この文書では、GPUを利用可能なVCノードの作成とGPUを利用するアプリケーションコンテナの実行を行います。

GPU利用について

インスタンスタイプ、VMサイズ

GPUが利用できるEC2インスタンスタイプ(Amazon)、VMサイズ(Microsoft Azure)を指定する必要があります。

Amazon EC2 であれば、以下のものが候補になります。

Microsoft Azure VM であれば、以下のものが候補になります。

ドライバ、ライブラリなど

GPUを利用するためには、GPUドライバ、ライブラリなどを準備する必要があります。

VCPではGPUドライバなどをVCノードの構成に合わせた形でセットアップしたものを事前に用意してあります。そのため通常のVCノードを利用する場合にspec指定を行ったのと同様の手順で、いくつかのパラメータを specに指定するだけでGPUを利用することが出来ます。

GPUを利用しない場合(下図左側)と、GPUを利用する場合(下図右側)のVCノードの構成を以下に示します。

GPUを利用しない場合と比較するとGPUを利用する場合は次の点が追加されています。

nvidia ドライバはカーネルモジュールになっているため、VMのカーネルバージョンに強く依存しています。そのためnvidiaドライバはBaseコンテナではなくOS(マシンイメージ)にインストールしています。

GPUコンテナ

操作手順

以下では次の操作を行います。

  1. GPU用VCノードの起動
  2. GPU用VCノードの稼働確認
  3. GPU利用アプリケーションコンテナの実行

GPU用VCノードの起動

GPUを利用するために必要となるパラメータを specに指定して、VCノードを起動する。

アクセストークンの入力

VCP SDKを利用するにはVCコントローラのアクセストークンが必要となります。次のセルを実行すると入力枠が表示されるのでアクセストークンの値を入力してください。

アクセストークン入力後に Enter キーを押すことで入力が完了します。

In [1]:
from getpass import getpass
vcc_access_token = getpass()
········

VCP SDKの初期化

VCP SDKの初期化を行います。

In [2]:
from common import logsetting
from vcpsdk.vcpsdk import VcpSDK

# VCの管理オブジェクトの作成
vcp = VcpSDK(
    vcc_access_token,  # VCCのアクセストークン
)

上のセルの実行結果がエラーとなり以下のようなメッセージが表示されている場合は、入力されたアクセストークンに誤りがあります。

2018-09-XX XX:XX:XX,XXX - ERROR - config vc failed: http_status(403)
2018-09-XX XX:XX:XX,XXX - ERROR - 2018/XX/XX XX:XX:XX UTC: VCPAuthException: xxxxxxx:token lookup is failed: permission denied

この場合はアクセストークンの入力からやり直してください。

VCノードのspecを指定する

GPUを利用するVCノードのspecを指定します。

specの取得

プロバイダと flavorを指定して specオブジェクトを取得します。ここでは以下の値を指定します。

  • プロバイダ: aws
  • flavor: gpu

flavorgpu を指定することで、GPUが利用できるインスタンスタイプが選択されます。

In [3]:
spec = vcp.get_spec(
    'aws',    # プロバイダ
    'gpu'  # flavor
)

次の2点をspec の設定に追加します。これらがGPU用を利用するVCノードに必要なパラメータになります。

  • GPUコンテナを実行するためのランタイム((nvidia-docker2)をセットアップしたBaseコンテナイメージ
  • GPUを利用するための nvidiaドライバをインストールしたVMイメージ
In [4]:
# Baseコンテナイメージの設定
spec.image = 'vcp/gpu:1.6.2-gpusopt'
# VMイメージの設定
spec.cloud_image = 'niivcp-gpu-a-21.04.0-r0'

sshの鍵ファイルを設定する

VCノードにsshでログインするためには事前に公開鍵認証の鍵を登録する必要があります。そのための設定をここで行います。

VCノードに登録する公開鍵認証の公開鍵のパスを次のセルで指定してください。

In [5]:
import os
ssh_public_key = os.path.expanduser('~/.ssh/id_rsa.pub')

指定した公開鍵を spec に設定します。

In [6]:
spec.set_ssh_pubkey(ssh_public_key)

後でVCノードにSSHでログインする際に秘密鍵も必要になるので、ここで設定しておきます。次のセルで秘密鍵のパスを指定してください。

In [7]:
ssh_private_key = os.path.expanduser('~/.ssh/id_rsa')

公開鍵と秘密鍵が正しいペアであることをチェックします。次のセルを実行してエラーにならないことを確認してください。

In [8]:
!grep -q "$(ssh-keygen -y -f {ssh_private_key})" {ssh_public_key}

specの設定内容の確認

ここまで spec に設定した内容を確認してみます。

In [9]:
print(spec)
========================
aws
------------------------

    cci_version: "1.1"
    name: 
    description: 
    private_network: default
    num_nodes: 1
    image: vcp/gpu:1.6.2-gpusopt
    recovery_mode: none
    docker_opt: {}
    params:
        {'v': [], 'e': ['AUTHORIZED_KEYS=c3NoLXJzYSBBQUFBQjNOemFDMXljMkVBQUFBREFRQUJBQUFCZ1FEWjZ4bElJSVZtclZmMTg3TlhqSDlSNytiWURNZlYzODluNnkySlVBajRPWTdsajFBR1gzd3pDbEczcjNUYlJrY05oakQ3Q0NjalAyaHVlUVlPazhzbXd4UjFWWDgvRlRoU21VSTh3MERJWEc1ZExsTW1JWWdYVVRZZ2U4bjU1YTdHRGcwV0hCdG1JeWh2Q0lEeXNGVm1QWGg0clozNVFEalprVWM5VUxTQTVHK2Vya1lWUHZNVHhXRjczdGZHc05yTm14eHM0YzNvVjQ3aEhpVzU0VnNvWXNyZk9GK1BSZVFBSHpzY0tJUTcrVHlmUEpPbjh5MHcwRElrZGdhd2J1WDdWbU1FT05MbVoyTkhaRys2eWlyclF4TitzRE9nQnhGV3RNUzZlazVwWG8vT0VydzZhemFNcmcwRU1RdCtwSnRUR2UzdWI1L0JmQXM1ckY5d1RBWXp1cG4vUE91d0Jnak1uWUFkemY5dXZWYkNVck13QUxNQjREYzdkQXU2bHU5UGljakdFaEE5d1pLcWgxWm9uZFBqdWt5RzhNOTFvRUdEMTZoaXpZY3JKYVBGeHJxRTB1Y3grZGZ6bFhSall2OUlwYVNTa01IMDZaclc2SnJLcGNGMHE4UnBSNTgveWhPclJWbHNWM0hRUXgxd1N6WDdybGpCUVBVSW5FMGhqcU09IGpvdnlhbkBlY2ZmNTkyODNmOTYK']}

    instance_type: g3.4xlarge
    volume_size: 40
    volume_type: gp2
    volume_id: []
    cloud_image: niivcp-gpu-a-21.04.0-r0
    ip_address_list: []
    tags: {}
========================

VCノードの起動

VCノードの起動と、VCノードを操作するためのAnsible設定を行います。

Unitの作成とVCノードの起動

Unitの作成とVCノードの起動を行います。

まずはUnitGroupを作成します。UnitGroupの名前は handson201とします。

In [10]:
unit_group = vcp.create_ugroup(
    'handson201'                   # UnitGroupの名前
)

VCノードを起動する前のUnitとVCノードの状態を確認しておきます。

In [11]:
from IPython.display import display

# Unitの一覧を DataFrame で表示する
display(unit_group.df_units())

# VCノードの一覧を DataFrame で表示する
display(unit_group.df_nodes())
vctype vcno vcname vc_state vcid cdate unit_name unit_state
[]

Unitの作成とVCノードの起動を行います。

処理が完了するまで2分~7分程度かかります。

In [12]:
# Unitの作成(同時に VCノードが作成される)
unit_group.create_unit(
    'gpu1',         # Unit名
    spec
)
2022-09-28 00:41:44,922 - INFO - BOOTING ... 0 sec
2022-09-28 00:41:50,039 - INFO - BOOTING ... 5 sec
2022-09-28 00:41:55,161 - INFO - BOOTING ... 10 sec
2022-09-28 00:42:00,286 - INFO - BOOTING ... 15 sec
2022-09-28 00:42:05,408 - INFO - BOOTING ... 20 sec
2022-09-28 00:42:10,533 - INFO - BOOTING ... 25 sec
2022-09-28 00:42:15,652 - INFO - BOOTING ... 30 sec
2022-09-28 00:42:20,775 - INFO - BOOTING ... 35 sec
2022-09-28 00:42:25,891 - INFO - BOOTING ... 40 sec
2022-09-28 00:42:31,013 - INFO - BOOTING ... 45 sec
2022-09-28 00:42:36,145 - INFO - BOOTING ... 50 sec
2022-09-28 00:42:41,275 - INFO - BOOTING ... 55 sec
2022-09-28 00:42:46,396 - INFO - BOOTING ... 60 sec
2022-09-28 00:42:51,519 - INFO - BOOTING ... 65 sec
2022-09-28 00:42:56,648 - INFO - BOOTING ... 70 sec
2022-09-28 00:43:01,770 - INFO - BOOTING ... 75 sec
2022-09-28 00:43:06,896 - INFO - BOOTING ... 80 sec
2022-09-28 00:43:12,040 - INFO - BOOTING ... 85 sec
2022-09-28 00:43:17,214 - INFO - BOOTING ... 90 sec
2022-09-28 00:43:22,334 - INFO - BOOTING ... 95 sec
2022-09-28 00:43:27,457 - INFO - BOOTING ... 100 sec
2022-09-28 00:43:32,568 - INFO - BOOTING ... 105 sec
2022-09-28 00:43:37,691 - INFO - BOOTING ... 110 sec
2022-09-28 00:43:42,807 - INFO - BOOTING ... 115 sec
2022-09-28 00:43:47,922 - INFO - BOOTING ... 120 sec
2022-09-28 00:43:53,035 - INFO - BOOTING ... 125 sec
2022-09-28 00:43:58,154 - INFO - BOOTING ... 130 sec
2022-09-28 00:44:03,272 - INFO - BOOTING ... 135 sec
2022-09-28 00:44:08,393 - INFO - BOOTING ... 140 sec
2022-09-28 00:44:13,565 - INFO - BOOTING ... 145 sec
2022-09-28 00:44:18,845 - INFO - BOOTING ... 150 sec
2022-09-28 00:44:24,043 - INFO - BOOTING ... 155 sec
2022-09-28 00:44:29,338 - INFO - BOOTING ... 160 sec
2022-09-28 00:44:34,606 - INFO - BOOTING ... 165 sec
2022-09-28 00:44:39,775 - INFO - BOOTING ... 170 sec
2022-09-28 00:44:44,900 - INFO - BOOTING ... 175 sec
2022-09-28 00:44:50,017 - INFO - BOOTING ... 180 sec
2022-09-28 00:44:55,129 - INFO - BOOTING ... 185 sec
2022-09-28 00:45:00,243 - INFO - BOOTING ... 190 sec
2022-09-28 00:45:05,362 - INFO - BOOTING ... 195 sec
2022-09-28 00:45:10,489 - INFO - BOOTING ... 200 sec
2022-09-28 00:45:15,628 - INFO - BOOTING ... 205 sec
2022-09-28 00:45:20,760 - INFO - BOOTING ... 210 sec
2022-09-28 00:45:25,880 - INFO - BOOTING ... 215 sec
2022-09-28 00:45:31,020 - INFO - BOOTING ... 220 sec
2022-09-28 00:45:36,144 - INFO - BOOTING ... 225 sec
2022-09-28 00:45:41,266 - INFO - BOOTING ... 230 sec
2022-09-28 00:45:52,399 - INFO - unit gpu1 is RUNNING
Out[12]:
<vcpsdk.vcpsdk.VcpUnitClass at 0x7f4fea5e1220>

起動したUnit, VCノードの一覧を表示します。

In [13]:
# Unitの一覧を DataFrame で表示する
display(unit_group.df_units())

# VCノードの一覧を DataFrame で表示する
display(unit_group.df_nodes())
vctype vcno vcname vc_state vcid cdate unit_name unit_state
0 compute 9 handson201 RUNNING 970c177f... 2022/09/27 15:41:43 UTC gpu1 RUNNING
vcno vcname unit_name unit_state node_no node_id node_state cloud_instance_address cloud_instance_id cloud_instance_name volumes
0 9 handson201 gpu1 RUNNING 1 f62958f1... RUNNING 172.30.2.242 i-0b014f7bf9c232f13 VCP-c80e43c2-970c177f none

疎通確認

起動した VC ノードに SSHでログイン出来ることを確認します。

まず、VCノードのIPアドレスを確認します。

In [14]:
ip_address = unit_group.find_ip_addresses(node_state='RUNNING').pop()
print(ip_address)
172.30.2.242

VCノードにSSHでログインする準備としてVCノードのホストキーを ~/.ssh/known_hosts に登録します。

In [16]:
!touch ~/.ssh/known_hosts
# ~/.ssh/known_hosts から古いホストキーを削除する
!ssh-keygen -R {ip_address}
# ~/.ssh/known_hostsにVCノードを登録する
!ssh-keyscan -H {ip_address} >> ~/.ssh/known_hosts
Host 172.30.2.242 not found in /home/jovyan/.ssh/known_hosts
# 172.30.2.242:22 SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.2
# 172.30.2.242:22 SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.2
# 172.30.2.242:22 SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.2
# 172.30.2.242:22 SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.2
# 172.30.2.242:22 SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.2

VCノードにSSHでログインをしてコマンドを実行してみます。

In [17]:
!ssh root@{ip_address} ls -la
total 28
drwx------ 1 root root 4096 Mar 22  2021 .
drwxr-xr-x 1 root root 4096 Sep 27 15:45 ..
-rw-r--r-- 1 root root 3106 Dec  5  2019 .bashrc
drwxr-xr-x 1 root root 4096 Sep 27 15:58 .cache
drwxr-xr-x 1 root root 4096 Mar 22  2021 go
-rw-r--r-- 1 root root  161 Dec  5  2019 .profile
drwx------ 1 root root 4096 Sep 27 15:45 .ssh

GPU用VCノードの稼働確認

NVIDIA GPUではGPUデバイスを管理、監視するためのコマンドnvidia-smiが提供されています。ここでは、起動したVCノードのGPUに関する状態を取得するためにnvidia-smiコマンドを実行します。

nvidia-smi コマンドを利用するとGPU名やドライババージョン、GPUメモリ使用量、GPU使用率、GPUの温度などのGPUに関する情報を取得することができます。nvidia-smiコマンドが表示するサマリ情報の例を以下に示します。

+-----------------------------------------------------------------------------+
| NVIDIA-SMI 384.130                Driver Version: 384.130                   |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|===============================+======================+======================|
|   0  Tesla K80           Off  | 00000000:00:1E.0 Off |                    0 |
| N/A   51C    P0    59W / 149W |      0MiB / 11439MiB |     96%      Default |
+-------------------------------+----------------------+----------------------+

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

nvidia-smiコマンドはCUDAコンテナの中で実行するので、まずコンテナイメージの取得を行います。(CUDAコンテナはVCノード上のアプリケーションコンテナとして実行されます)

コンテナイメージの取得に1~3分程度かかります。

In [18]:
!ssh root@{ip_address} docker pull nvidia/cuda:8.0-cudnn5-runtime-ubuntu16.04
8.0-cudnn5-runtime-ubuntu16.04: Pulling from nvidia/cuda
58690f9b18fc: Pulling fs layer
b51569e7c507: Pulling fs layer
da8ef40b9eca: Pulling fs layer
fb15d46c38dc: Pulling fs layer
847af351305b: Pulling fs layer
a6146334b4d9: Pulling fs layer
454777287352: Pulling fs layer
5a4223015407: Pulling fs layer
5b99f4bc2c3b: Pulling fs layer
091a1cb66752: Pulling fs layer
a6146334b4d9: Waiting
5b99f4bc2c3b: Waiting
091a1cb66752: Waiting
454777287352: Waiting
5a4223015407: Waiting
fb15d46c38dc: Waiting
847af351305b: Waiting
b51569e7c507: Verifying Checksum
b51569e7c507: Download complete
da8ef40b9eca: Verifying Checksum
da8ef40b9eca: Download complete
fb15d46c38dc: Verifying Checksum
fb15d46c38dc: Download complete
58690f9b18fc: Verifying Checksum
58690f9b18fc: Download complete
847af351305b: Verifying Checksum
847af351305b: Download complete
5a4223015407: Download complete
454777287352: Verifying Checksum
454777287352: Download complete
5b99f4bc2c3b: Download complete
58690f9b18fc: Pull complete
b51569e7c507: Pull complete
da8ef40b9eca: Pull complete
fb15d46c38dc: Pull complete
847af351305b: Pull complete
091a1cb66752: Verifying Checksum
091a1cb66752: Download complete
a6146334b4d9: Verifying Checksum
a6146334b4d9: Download complete
a6146334b4d9: Pull complete
454777287352: Pull complete
5a4223015407: Pull complete
5b99f4bc2c3b: Pull complete
091a1cb66752: Pull complete
Digest: sha256:7e083f4a3b8cfcb609e380f5cea6d075ffd84755d820a8c19184064fccd55d81
Status: Downloaded newer image for nvidia/cuda:8.0-cudnn5-runtime-ubuntu16.04
docker.io/nvidia/cuda:8.0-cudnn5-runtime-ubuntu16.04

CUDAコンテナからnvidia-smi コマンドを実行してGPUに関するサマリ情報を表示させます。

コンテナを実行する際にdocker runコマンドの引数に--gpus allオプションを追加しています。このオプションを指定することで、コンテナ内からGPUを利用するための処理が nvidia-container-runtime によって実行されています。

In [19]:
!ssh root@{ip_address} docker run --gpus all --rm \
    nvidia/cuda:8.0-cudnn5-runtime-ubuntu16.04 nvidia-smi
Tue Sep 27 15:58:35 2022       
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 455.45.01    Driver Version: 455.45.01    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  Tesla M60           Off  | 00000000:00:1E.0 Off |                    0 |
| N/A   39C    P8    14W / 150W |      0MiB /  7618MiB |      0%      Default |
|                               |                      |                  N/A |
+-------------------------------+----------------------+----------------------+
                                                                               
+-----------------------------------------------------------------------------+
| Processes:                                                                  |
|  GPU   GI   CI        PID   Type   Process name                  GPU Memory |
|        ID   ID                                                   Usage      |
|=============================================================================|
|  No running processes found                                                 |
+-----------------------------------------------------------------------------+

次に、GPUに関する詳細情報を取得するために --queryオプションを指定して nvidia-smi コマンドを実行します。

nvidia-smiコマンドの他のオプションについては nvidia-smi documentationを参照してください。

In [20]:
!ssh root@{ip_address} docker run --gpus all --rm \
    nvidia/cuda:8.0-cudnn5-runtime-ubuntu16.04 nvidia-smi --query
==============NVSMI LOG==============

Timestamp                                 : Tue Sep 27 15:58:37 2022
Driver Version                            : 455.45.01
CUDA Version                              : 11.1

Attached GPUs                             : 1
GPU 00000000:00:1E.0
    Product Name                          : Tesla M60
    Product Brand                         : Tesla
    Display Mode                          : Enabled
    Display Active                        : Disabled
    Persistence Mode                      : Disabled
    MIG Mode
        Current                           : N/A
        Pending                           : N/A
    Accounting Mode                       : Disabled
    Accounting Mode Buffer Size           : 4000
    Driver Model
        Current                           : N/A
        Pending                           : N/A
    Serial Number                         : 0324716142777
    GPU UUID                              : GPU-7d8d70e2-b53a-fc8e-5bbc-5b6f9c137be7
    Minor Number                          : 0
    VBIOS Version                         : 84.04.9F.00.12
    MultiGPU Board                        : No
    Board ID                              : 0x1e
    GPU Part Number                       : 900-2G402-0000-000
    Inforom Version
        Image Version                     : G402.0040.00.04
        OEM Object                        : 1.1
        ECC Object                        : 3.0
        Power Management Object           : N/A
    GPU Operation Mode
        Current                           : N/A
        Pending                           : N/A
    GPU Virtualization Mode
        Virtualization Mode               : Pass-Through
        Host VGPU Mode                    : N/A
    IBMNPU
        Relaxed Ordering Mode             : N/A
    PCI
        Bus                               : 0x00
        Device                            : 0x1E
        Domain                            : 0x0000
        Device Id                         : 0x13F210DE
        Bus Id                            : 00000000:00:1E.0
        Sub System Id                     : 0x113A10DE
        GPU Link Info
            PCIe Generation
                Max                       : 3
                Current                   : 1
            Link Width
                Max                       : 16x
                Current                   : 16x
        Bridge Chip
            Type                          : N/A
            Firmware                      : N/A
        Replays Since Reset               : 0
        Replay Number Rollovers           : 0
        Tx Throughput                     : 0 KB/s
        Rx Throughput                     : 0 KB/s
    Fan Speed                             : N/A
    Performance State                     : P8
    Clocks Throttle Reasons
        Idle                              : Active
        Applications Clocks Setting       : Not Active
        SW Power Cap                      : Not Active
        HW Slowdown                       : Not Active
            HW Thermal Slowdown           : N/A
            HW Power Brake Slowdown       : N/A
        Sync Boost                        : Not Active
        SW Thermal Slowdown               : Not Active
        Display Clock Setting             : Not Active
    FB Memory Usage
        Total                             : 7618 MiB
        Used                              : 0 MiB
        Free                              : 7618 MiB
    BAR1 Memory Usage
        Total                             : 256 MiB
        Used                              : 2 MiB
        Free                              : 254 MiB
    Compute Mode                          : Default
    Utilization
        Gpu                               : 0 %
        Memory                            : 0 %
        Encoder                           : 0 %
        Decoder                           : 0 %
    Encoder Stats
        Active Sessions                   : 0
        Average FPS                       : 0
        Average Latency                   : 0
    FBC Stats
        Active Sessions                   : 0
        Average FPS                       : 0
        Average Latency                   : 0
    Ecc Mode
        Current                           : Enabled
        Pending                           : Enabled
    ECC Errors
        Volatile
            Single Bit            
                Device Memory             : 0
                Register File             : N/A
                L1 Cache                  : N/A
                L2 Cache                  : N/A
                Texture Memory            : N/A
                Texture Shared            : N/A
                CBU                       : N/A
                Total                     : 0
            Double Bit            
                Device Memory             : 0
                Register File             : N/A
                L1 Cache                  : N/A
                L2 Cache                  : N/A
                Texture Memory            : N/A
                Texture Shared            : N/A
                CBU                       : N/A
                Total                     : 0
        Aggregate
            Single Bit            
                Device Memory             : 8
                Register File             : N/A
                L1 Cache                  : N/A
                L2 Cache                  : N/A
                Texture Memory            : N/A
                Texture Shared            : N/A
                CBU                       : N/A
                Total                     : 8
            Double Bit            
                Device Memory             : 0
                Register File             : N/A
                L1 Cache                  : N/A
                L2 Cache                  : N/A
                Texture Memory            : N/A
                Texture Shared            : N/A
                CBU                       : N/A
                Total                     : 0
    Retired Pages
        Single Bit ECC                    : 2
        Double Bit ECC                    : 0
        Pending Page Blacklist            : No
    Remapped Rows                         : N/A
    Temperature
        GPU Current Temp                  : 39 C
        GPU Shutdown Temp                 : 91 C
        GPU Slowdown Temp                 : 88 C
        GPU Max Operating Temp            : N/A
        Memory Current Temp               : N/A
        Memory Max Operating Temp         : N/A
    Power Readings
        Power Management                  : Supported
        Power Draw                        : 14.92 W
        Power Limit                       : 150.00 W
        Default Power Limit               : 150.00 W
        Enforced Power Limit              : 150.00 W
        Min Power Limit                   : 112.50 W
        Max Power Limit                   : 162.00 W
    Clocks
        Graphics                          : 405 MHz
        SM                                : 405 MHz
        Memory                            : 324 MHz
        Video                             : 405 MHz
    Applications Clocks
        Graphics                          : 557 MHz
        Memory                            : 2505 MHz
    Default Applications Clocks
        Graphics                          : 557 MHz
        Memory                            : 2505 MHz
    Max Clocks
        Graphics                          : 1177 MHz
        SM                                : 1177 MHz
        Memory                            : 2505 MHz
        Video                             : 1083 MHz
    Max Customer Boost Clocks
        Graphics                          : N/A
    Clock Policy
        Auto Boost                        : On
        Auto Boost Default                : On
    Processes                             : None

GPU利用アプリケーションコンテナの実行

構築したGPU環境で OpenPose を実行します。OpenPoseは深層学習を使用し画像、動画から人の体、手、顔、および足のキーポイントを検出するシステムです。人が重なり合っているような複雑な姿勢でも解析し推定して検出します。

準備

OpenPoseのコンテナイメージを作成するためのDockerfileとコンテナを起動する際のオプションなどを記述した run.sh をGPU環境に配置します。

次のセルではこれらのファイルがopenposeフォルダに置かれていることを前提としています。

In [21]:
!scp -r openpose/ root@{ip_address}:.
docker-compose.yml                            100%  253   213.6KB/s   00:00    
Dockerfile                                    100% 1142     1.0MB/s   00:00    
run.sh                                        100%  460   440.7KB/s   00:00    

OpenPoseコンテナのビルド(取得)と実行

OpenPoseをアプリケーションコンテナとして実行します。

In [22]:
!ssh root@{ip_address} 'cat openpose/run.sh'
#! /bin/bash
# docker-composeで--gpusオプションが指定できず動作確認がしにくい。そのためシェルスクリプトにした。
# ポータブル版、サービス版でAppコンテナイメージを共通化するためharborにあるイメージを使用する
docker run -td --gpus all --name openpose -v $PWD/data:/root/data -v $PWD/result:/root/result -v $PWD/result2:/root/result2 harbor.vcloud.nii.ac.jp/vcp/openpose:handson_20.11
In [23]:
!ssh root@{ip_address} 'cd openpose && sh run.sh'
Unable to find image 'harbor.vcloud.nii.ac.jp/vcp/openpose:handson_20.11' locally
handson_20.11: Pulling from vcp/openpose
22dc81ace0ea: Pulling fs layer
1a8b3c87dba3: Pulling fs layer
91390a1c435a: Pulling fs layer
07844b14977e: Pulling fs layer
b78396653dae: Pulling fs layer
60e8c8e60650: Pulling fs layer
60bcdd4a44b0: Pulling fs layer
58b3ae962738: Pulling fs layer
5217d046ef8d: Pulling fs layer
8e4decdc2422: Pulling fs layer
79b877e2a35a: Pulling fs layer
c2a456d945c3: Pulling fs layer
3653aff6554b: Pulling fs layer
fd29b77c710b: Pulling fs layer
9c27713c696a: Pulling fs layer
db5d7c50228c: Pulling fs layer
d0563f0dd871: Pulling fs layer
b78396653dae: Waiting
58b3ae962738: Waiting
60e8c8e60650: Waiting
07844b14977e: Waiting
5217d046ef8d: Waiting
8e4decdc2422: Waiting
c2a456d945c3: Waiting
fd29b77c710b: Waiting
d0563f0dd871: Waiting
79b877e2a35a: Waiting
60bcdd4a44b0: Waiting
9c27713c696a: Waiting
db5d7c50228c: Waiting
3653aff6554b: Waiting
1a8b3c87dba3: Verifying Checksum
1a8b3c87dba3: Download complete
91390a1c435a: Download complete
07844b14977e: Verifying Checksum
07844b14977e: Download complete
b78396653dae: Verifying Checksum
b78396653dae: Download complete
60e8c8e60650: Download complete
58b3ae962738: Download complete
22dc81ace0ea: Verifying Checksum
22dc81ace0ea: Download complete
8e4decdc2422: Download complete
22dc81ace0ea: Pull complete
1a8b3c87dba3: Pull complete
91390a1c435a: Pull complete
07844b14977e: Pull complete
b78396653dae: Pull complete
60e8c8e60650: Pull complete
79b877e2a35a: Verifying Checksum
79b877e2a35a: Download complete
60bcdd4a44b0: Verifying Checksum
60bcdd4a44b0: Download complete
3653aff6554b: Verifying Checksum
3653aff6554b: Download complete
5217d046ef8d: Verifying Checksum
5217d046ef8d: Download complete
9c27713c696a: Verifying Checksum
9c27713c696a: Download complete
db5d7c50228c: Verifying Checksum
db5d7c50228c: Download complete
fd29b77c710b: Verifying Checksum
fd29b77c710b: Download complete
60bcdd4a44b0: Pull complete
58b3ae962738: Pull complete
c2a456d945c3: Verifying Checksum
c2a456d945c3: Download complete
d0563f0dd871: Verifying Checksum
d0563f0dd871: Download complete
5217d046ef8d: Pull complete
8e4decdc2422: Pull complete
79b877e2a35a: Pull complete
c2a456d945c3: Pull complete
3653aff6554b: Pull complete
fd29b77c710b: Pull complete
9c27713c696a: Pull complete
db5d7c50228c: Pull complete
d0563f0dd871: Pull complete
Digest: sha256:745552bf5a1ced9b8f399007c617c2c834e14e23ade93b0b112c3a11d8164307
Status: Downloaded newer image for harbor.vcloud.nii.ac.jp/vcp/openpose:handson_20.11
ce8eb91e9cde2063d909c63d2938d041629c8a47a92b66ad8b7ddf2256f235b8

コンテナが起動されたことを確認します。次のセルを実行してStateUp と表示されていればコンテナの起動に成功しています。

In [24]:
!ssh root@{ip_address} 'docker ps'
CONTAINER ID   IMAGE                                                COMMAND       CREATED        STATUS                  PORTS     NAMES
ce8eb91e9cde   harbor.vcloud.nii.ac.jp/vcp/openpose:handson_20.11   "/bin/bash"   1 second ago   Up Less than a second             openpose

OpenPoseの利用

サンプルの画像を処理する

OpenPoseのサンプル画像を処理してみます。

まず処理するファイルを格納するディレクトリを作成します。

In [25]:
result_dir = './openpose_result'
!mkdir -p {result_dir}

処理前のファイルをOpoenPoseコンテナからresult_dir配下に取得します。

In [26]:
!ssh root@{ip_address} \
    'cd openpose && docker cp openpose:/root/openpose/examples/media .'
!scp -r root@{ip_address}:openpose/media {result_dir}
COCO_val2014_000000000459.jpg                 100%  190KB  72.2MB/s   00:00    
COCO_val2014_000000000415.jpg                 100%  115KB  71.8MB/s   00:00    
COCO_val2014_000000000589.jpg                 100%   95KB  69.1MB/s   00:00    
COCO_val2014_000000000192.jpg                 100%  225KB  66.5MB/s   00:00    
COCO_val2014_000000000360.jpg                 100%  116KB  62.8MB/s   00:00    
COCO_val2014_000000000257.jpg                 100%  204KB  72.6MB/s   00:00    
COCO_val2014_000000000488.jpg                 100%  103KB  78.1MB/s   00:00    
COCO_val2014_000000000328.jpg                 100%  156KB  85.1MB/s   00:00    
COCO_val2014_000000000623.jpg                 100%  110KB  75.3MB/s   00:00    
COCO_val2014_000000000294.jpg                 100%   74KB  65.2MB/s   00:00    
COCO_val2014_000000000357.jpg                 100%  128KB  80.1MB/s   00:00    
COCO_val2014_000000000395.jpg                 100%  241KB 108.1MB/s   00:00    
COCO_val2014_000000000564.jpg                 100%  127KB  76.7MB/s   00:00    
COCO_val2014_000000000536.jpg                 100%   22KB  27.8MB/s   00:00    
COCO_val2014_000000000428.jpg                 100%  100KB  75.7MB/s   00:00    
COCO_val2014_000000000474.jpg                 100%  128KB  75.0MB/s   00:00    
COCO_val2014_000000000569.jpg                 100%  127KB  79.0MB/s   00:00    
COCO_val2014_000000000338.jpg                 100%   80KB  70.3MB/s   00:00    
COCO_val2014_000000000544.jpg                 100%  184KB  90.4MB/s   00:00    
video.avi                                     100% 1362KB  90.3MB/s   00:00    
COCO_val2014_000000000241.jpg                 100%  105KB  90.8MB/s   00:00    

処理前の画像を1つ表示させてみます。

In [27]:
from IPython.display import Image
Image(filename='openpose_result/media/COCO_val2014_000000000192.jpg')
Out[27]:

処理前の画像のリンクから他の画像を確認することもできます。

OpenPoseで画像の処理を行います。 実行オプション等についてはOpenPoseのドキュメントを参照ください。

In [28]:
!ssh root@{ip_address} 'docker exec -t openpose \
    build/examples/openpose/openpose.bin --display 0 \
    --image_dir examples/media --write_images /root/result \
    --write_images_format jpg'
Starting OpenPose demo...
Configuring OpenPose...
Starting thread(s)...
Auto-detecting all available GPUs... Detected 1 GPU(s), using 1 of them starting at GPU 0.
OpenPose demo successfully finished. Total time: 5.556955 seconds.

処理後のファイルをVCノード上からresult_dir配下に取得します。

In [29]:
!scp -r root@{ip_address}:openpose/result {result_dir}
COCO_val2014_000000000294_rendered.jpg        100%  165KB  64.5MB/s   00:00    
COCO_val2014_000000000395_rendered.jpg        100%  315KB  97.8MB/s   00:00    
COCO_val2014_000000000338_rendered.jpg        100%  154KB  89.1MB/s   00:00    
COCO_val2014_000000000569_rendered.jpg        100%  244KB  57.3MB/s   00:00    
COCO_val2014_000000000459_rendered.jpg        100%  247KB  91.3MB/s   00:00    
COCO_val2014_000000000328_rendered.jpg        100%  273KB 112.5MB/s   00:00    
COCO_val2014_000000000564_rendered.jpg        100%  234KB  88.7MB/s   00:00    
COCO_val2014_000000000544_rendered.jpg        100%  353KB 122.5MB/s   00:00    
COCO_val2014_000000000415_rendered.jpg        100%  166KB  84.2MB/s   00:00    
COCO_val2014_000000000474_rendered.jpg        100%  174KB  90.7MB/s   00:00    
COCO_val2014_000000000192_rendered.jpg        100%  308KB  71.8MB/s   00:00    
COCO_val2014_000000000536_rendered.jpg        100%   76KB  57.3MB/s   00:00    
COCO_val2014_000000000357_rendered.jpg        100%  127KB  80.4MB/s   00:00    
COCO_val2014_000000000428_rendered.jpg        100%  138KB  81.8MB/s   00:00    
COCO_val2014_000000000589_rendered.jpg        100%  208KB  82.4MB/s   00:00    
COCO_val2014_000000000241_rendered.jpg        100%  241KB 100.7MB/s   00:00    
COCO_val2014_000000000623_rendered.jpg        100%  166KB  93.1MB/s   00:00    
COCO_val2014_000000000360_rendered.jpg        100%  150KB  81.0MB/s   00:00    
COCO_val2014_000000000488_rendered.jpg        100%  224KB  87.4MB/s   00:00    
COCO_val2014_000000000257_rendered.jpg        100%  279KB  89.3MB/s   00:00    

OpenPoseで処理した画像を1枚表示させてみます。

In [30]:
Image(filename='openpose_result/result/COCO_val2014_000000000192_rendered.jpg')
Out[30]:

処理結果のリンクから他の処理結果の画像を確認することもできます。

サンプルの動画を処理する

処理前の動画を確認します。

In [31]:
from IPython.display import HTML

HTML("""<video style="max-width: 100%;" controls>
  <source src="openpose_result/media/video.avi" />
</video>
""")
Out[31]:

OpenPoseのサンプル動画を処理してみます。

処理には30秒程度かかります。

In [32]:
!ssh root@{ip_address} 'docker exec -t openpose \
    build/examples/openpose/openpose.bin --display 0 \
    --video /root/openpose/examples/media/video.avi --write_video /root/result/result.avi'
Starting OpenPose demo...
Configuring OpenPose...
Starting thread(s)...
Auto-detecting all available GPUs... Detected 1 GPU(s), using 1 of them starting at GPU 0.
OpenPose demo successfully finished. Total time: 24.261410 seconds.

処理結果のファイルを取得します。

In [33]:
!scp -r root@{ip_address}:openpose/result {result_dir}
COCO_val2014_000000000294_rendered.jpg        100%  165KB  63.1MB/s   00:00    
COCO_val2014_000000000395_rendered.jpg        100%  315KB  84.5MB/s   00:00    
COCO_val2014_000000000338_rendered.jpg        100%  154KB  87.1MB/s   00:00    
result.avi                                    100%   17MB 128.5MB/s   00:00    
COCO_val2014_000000000569_rendered.jpg        100%  244KB  91.2MB/s   00:00    
COCO_val2014_000000000459_rendered.jpg        100%  247KB  92.3MB/s   00:00    
COCO_val2014_000000000328_rendered.jpg        100%  273KB  93.6MB/s   00:00    
COCO_val2014_000000000564_rendered.jpg        100%  234KB  90.9MB/s   00:00    
COCO_val2014_000000000544_rendered.jpg        100%  353KB  59.7MB/s   00:00    
COCO_val2014_000000000415_rendered.jpg        100%  166KB  84.0MB/s   00:00    
COCO_val2014_000000000474_rendered.jpg        100%  174KB  87.3MB/s   00:00    
COCO_val2014_000000000192_rendered.jpg        100%  308KB  96.9MB/s   00:00    
COCO_val2014_000000000536_rendered.jpg        100%   76KB  62.3MB/s   00:00    
COCO_val2014_000000000357_rendered.jpg        100%  127KB  82.3MB/s   00:00    
COCO_val2014_000000000428_rendered.jpg        100%  138KB  78.9MB/s   00:00    
COCO_val2014_000000000589_rendered.jpg        100%  208KB  92.8MB/s   00:00    
COCO_val2014_000000000241_rendered.jpg        100%  241KB  92.3MB/s   00:00    
COCO_val2014_000000000623_rendered.jpg        100%  166KB  85.4MB/s   00:00    
COCO_val2014_000000000360_rendered.jpg        100%  150KB  83.2MB/s   00:00    
COCO_val2014_000000000488_rendered.jpg        100%  224KB  87.6MB/s   00:00    
COCO_val2014_000000000257_rendered.jpg        100%  279KB  78.7MB/s   00:00    

処理後の動画を確認します。

In [34]:
# Notebookに埋め込んで再生する場合に、aviだと再生に失敗するが、mp4に変換すると再生できる。
# mp4に変換
!ffmpeg -i openpose_result/result/result.avi openpose_result/result/result.mp4
ffmpeg version 4.2.4-1ubuntu0.1 Copyright (c) 2000-2020 the FFmpeg developers
  built with gcc 9 (Ubuntu 9.3.0-10ubuntu2)
  configuration: --prefix=/usr --extra-version=1ubuntu0.1 --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --arch=amd64 --enable-gpl --disable-stripping --enable-avresample --disable-filter=resample --enable-avisynth --enable-gnutls --enable-ladspa --enable-libaom --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libcodec2 --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libjack --enable-libmp3lame --enable-libmysofa --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-libpulse --enable-librsvg --enable-librubberband --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libssh --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx265 --enable-libxml2 --enable-libxvid --enable-libzmq --enable-libzvbi --enable-lv2 --enable-omx --enable-openal --enable-opencl --enable-opengl --enable-sdl2 --enable-libdc1394 --enable-libdrm --enable-libiec61883 --enable-nvenc --enable-chromaprint --enable-frei0r --enable-libx264 --enable-shared
  libavutil      56. 31.100 / 56. 31.100
  libavcodec     58. 54.100 / 58. 54.100
  libavformat    58. 29.100 / 58. 29.100
  libavdevice    58.  8.100 / 58.  8.100
  libavfilter     7. 57.100 /  7. 57.100
  libavresample   4.  0.  0 /  4.  0.  0
  libswscale      5.  5.100 /  5.  5.100
  libswresample   3.  5.100 /  3.  5.100
  libpostproc    55.  5.100 / 55.  5.100
Input #0, avi, from 'openpose_result/result/result.avi':
  Metadata:
    encoder         : Lavf56.40.101
  Duration: 00:00:04.10, start: 0.000000, bitrate: 35799 kb/s
    Stream #0:0: Video: mjpeg (Baseline) (MJPG / 0x47504A4D), yuvj420p(pc, bt470bg/unknown/unknown), 1280x720, 35954 kb/s, 50 fps, 50 tbr, 50 tbn, 50 tbc
Stream mapping:
  Stream #0:0 -> #0:0 (mjpeg (native) -> h264 (libx264))
Press [q] to stop, [?] for help
[libx264 @ 0x55a572d5e6c0] using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2 AVX FMA3 BMI2 AVX2
[libx264 @ 0x55a572d5e6c0] profile High, level 3.2
[libx264 @ 0x55a572d5e6c0] 264 - core 155 r2917 0a84d98 - H.264/MPEG-4 AVC codec - Copyleft 2003-2018 - http://www.videolan.org/x264.html - options: cabac=1 ref=3 deblock=1:0:0 analyse=0x3:0x113 me=hex subme=7 psy=1 psy_rd=1.00:0.00 mixed_ref=1 me_range=16 chroma_me=1 trellis=1 8x8dct=1 cqm=0 deadzone=21,11 fast_pskip=1 chroma_qp_offset=-2 threads=3 lookahead_threads=1 sliced_threads=0 nr=0 decimate=1 interlaced=0 bluray_compat=0 constrained_intra=0 bframes=3 b_pyramid=2 b_adapt=1 b_bias=0 direct=1 weightb=1 open_gop=0 weightp=2 keyint=250 keyint_min=25 scenecut=40 intra_refresh=0 rc_lookahead=40 rc=crf mbtree=1 crf=23.0 qcomp=0.60 qpmin=0 qpmax=69 qpstep=4 ip_ratio=1.40 aq=1:1.00
Output #0, mp4, to 'openpose_result/result/result.mp4':
  Metadata:
    encoder         : Lavf58.29.100
    Stream #0:0: Video: h264 (libx264) (avc1 / 0x31637661), yuvj420p(pc), 1280x720, q=-1--1, 50 fps, 12800 tbn, 50 tbc
    Metadata:
      encoder         : Lavc58.54.100 libx264
    Side data:
      cpb: bitrate max/min/avg: 0/0/0 buffer size: 0 vbv_delay: -1
frame=  205 fps= 21 q=-1.0 Lsize=    2308kB time=00:00:04.04 bitrate=4679.1kbits/s speed=0.413x    
video:2304kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.140655%
[libx264 @ 0x55a572d5e6c0] frame I:1     Avg QP:24.58  size: 28919
[libx264 @ 0x55a572d5e6c0] frame P:52    Avg QP:25.48  size: 21760
[libx264 @ 0x55a572d5e6c0] frame B:152   Avg QP:28.34  size:  7885
[libx264 @ 0x55a572d5e6c0] consecutive B-frames:  1.0%  0.0%  1.5% 97.6%
[libx264 @ 0x55a572d5e6c0] mb I  I16..4: 36.8% 61.6%  1.6%
[libx264 @ 0x55a572d5e6c0] mb P  I16..4:  8.7% 25.7%  1.4%  P16..4: 31.7% 12.1%  6.5%  0.0%  0.0%    skip:14.0%
[libx264 @ 0x55a572d5e6c0] mb B  I16..4:  2.7%  5.2%  0.3%  B16..8: 30.7%  6.0%  1.9%  direct: 2.1%  skip:51.1%  L0:43.6% L1:50.4% BI: 6.0%
[libx264 @ 0x55a572d5e6c0] 8x8 transform intra:68.6% inter:78.0%
[libx264 @ 0x55a572d5e6c0] coded y,uvDC,uvAC intra: 37.8% 62.0% 8.5% inter: 11.8% 19.4% 6.1%
[libx264 @ 0x55a572d5e6c0] i16 v,h,dc,p: 30% 38% 25%  7%
[libx264 @ 0x55a572d5e6c0] i8 v,h,dc,ddl,ddr,vr,hd,vl,hu: 25% 26% 41%  1%  1%  2%  1%  1%  2%
[libx264 @ 0x55a572d5e6c0] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 36% 11% 14%  4%  6% 11%  5%  8%  4%
[libx264 @ 0x55a572d5e6c0] i8c dc,h,v,p: 46% 25% 26%  2%
[libx264 @ 0x55a572d5e6c0] Weighted P-Frames: Y:11.5% UV:1.9%
[libx264 @ 0x55a572d5e6c0] ref P L0: 58.6% 19.1% 14.8%  6.9%  0.5%
[libx264 @ 0x55a572d5e6c0] ref B L0: 86.3% 10.3%  3.4%
[libx264 @ 0x55a572d5e6c0] ref B L1: 94.3%  5.7%
[libx264 @ 0x55a572d5e6c0] kb/s:4602.89
In [35]:
from IPython.display import HTML

HTML("""<video style="width: 100%;" controls>
  <source src="openpose_result/result/result.mp4" />
</video>
""")
Out[35]:

上記で見られない場合は、処理後の動画 (result.avi)をダウンロードして確認します。

GrafanaでVCノードの利用状況を確認する

GrafanaでVCノードの利用状況を確認してみます。

In [36]:
vcc_ctr = vcp.vcc_info()['host']
http_host = vcc_ctr.split(':')[0]
grafana_url = "https://{}/grafana/d/vcp/vcp-metrics?refresh=5s".format(http_host)
print(grafana_url)
https://10.0.0.1/grafana/d/vcp/vcp-metrics?refresh=5s

ログインするためのユーザ、パスワードは admin/admin です。

インターネット上の画像を処理する

インターネット上の画像を処理してみます。

処理対象となる画像の URL のリストを設定してください。

In [37]:
image_urls = [
# (例)
#    'http://www.example.com/sample.jpg',
]

処理対象の画像ファイルをOpenPoseコンテナに配置します。

In [38]:
for url in image_urls:
    !ssh root@{ip_address} 'cd openpose/data && curl -O {url}'

OpenPoseの処理を実行します。

In [39]:
if len(image_urls) > 0:
    !ssh root@{ip_address} 'docker exec -t openpose \
        build/examples/openpose/openpose.bin --display 0 \
        --image_dir /root/data/ --write_images /root/result2'

処理結果のファイルを取得します。

In [40]:
!scp -r root@{ip_address}:openpose/result2 {result_dir}

処理結果を確認します。

後始末

ビルドしたOpenPoseのイメージをプライベートレジストリに格納する場合は、次のセルのコメントを削除して実行してください。

完了するまで2分程度かかります。

In [41]:
# !ssh root@{ip_address} 'cd openpose && docker-compose push'

全てのリソースを削除します。

処理が完了するまで1分~2分程度かかります。

In [42]:
unit_group.cleanup()
2022-09-28 01:01:29,741 - INFO - gpu1 is DELETING ... 0 sec
2022-09-28 01:01:34,862 - INFO - gpu1 is DELETING ... 5 sec
2022-09-28 01:01:39,978 - INFO - gpu1 is DELETING ... 10 sec
2022-09-28 01:01:45,100 - INFO - gpu1 is DELETING ... 15 sec
2022-09-28 01:01:50,221 - INFO - gpu1 is DELETING ... 20 sec
2022-09-28 01:01:55,353 - INFO - gpu1 is DELETING ... 25 sec
2022-09-28 01:02:00,470 - INFO - gpu1 is DELETING ... 30 sec
2022-09-28 01:02:05,603 - INFO - gpu1 is DELETING ... 35 sec
2022-09-28 01:02:10,726 - INFO - gpu1 is DELETING ... 40 sec
2022-09-28 01:02:15,856 - INFO - gpu1 is DELETING ... 45 sec
2022-09-28 01:02:20,976 - INFO - gpu1 is DELETING ... 50 sec
2022-09-28 01:02:26,096 - INFO - gpu1 is DELETING ... 55 sec
2022-09-28 01:02:31,208 - INFO - gpu1 is DELETING ... 60 sec
2022-09-28 01:02:36,331 - INFO - gpu1 is DELETING ... 65 sec
2022-09-28 01:02:41,447 - INFO - gpu1 is DELETING ... 70 sec
2022-09-28 01:02:46,566 - INFO - gpu1 is DELETING ... 75 sec
2022-09-28 01:02:51,684 - INFO - gpu1 is DELETING ... 80 sec
2022-09-28 01:02:56,808 - INFO - gpu1 is DELETING ... 85 sec
2022-09-28 01:03:01,922 - INFO - gpu1 is DELETING ... 90 sec
2022-09-28 01:03:07,039 - INFO - gpu1 is DELETING ... 95 sec
2022-09-28 01:03:12,154 - INFO - gpu1 is DELETING ... 100 sec
2022-09-28 01:03:17,279 - INFO - gpu1 is DELETING ... 105 sec
2022-09-28 01:03:22,396 - INFO - gpu1 is DELETING ... 110 sec
2022-09-28 01:03:27,518 - INFO - gpu1 is DELETING ... 115 sec
2022-09-28 01:03:32,636 - INFO - gpu1 is DELETING ... 120 sec
2022-09-28 01:03:37,764 - INFO - gpu1 is DELETING ... 125 sec
2022-09-28 01:03:42,889 - INFO - gpu1 is DELETING ... 130 sec
2022-09-28 01:03:48,015 - INFO - gpu1 is DELETING ... 135 sec
2022-09-28 01:03:53,136 - INFO - gpu1 is DELETING ... 140 sec
2022-09-28 01:03:58,259 - INFO - gpu1 is DELETING ... 145 sec
2022-09-28 01:04:03,383 - INFO - gpu1 is DELETING ... 150 sec
2022-09-28 01:04:08,501 - INFO - gpu1 is DELETING ... 155 sec
2022-09-28 01:04:13,617 - INFO - gpu1 is DELETING ... 160 sec
2022-09-28 01:04:18,743 - INFO - gpu1 is DELETING ... 165 sec
2022-09-28 01:04:23,859 - INFO - gpu1 is DELETING ... 170 sec
2022-09-28 01:04:28,980 - INFO - gpu1 is DELETING ... 175 sec
2022-09-28 01:04:34,103 - INFO - gpu1 is DELETING ... 180 sec
2022-09-28 01:04:39,220 - INFO - gpu1 is DELETING ... 185 sec
2022-09-28 01:04:44,339 - INFO - gpu1 is DELETING ... 190 sec
2022-09-28 01:04:49,461 - INFO - gpu1 is DELETING ... 195 sec
2022-09-28 01:04:54,582 - INFO - gpu1 is DELETING ... 200 sec
2022-09-28 01:04:59,701 - INFO - gpu1 is DELETING ... 205 sec
2022-09-28 01:05:04,820 - INFO - gpu1 is DELETING ... 210 sec
2022-09-28 01:05:09,936 - INFO - gpu1 is DELETING ... 215 sec
2022-09-28 01:05:15,057 - INFO - gpu1 is DELETING ... 220 sec
2022-09-28 01:05:20,184 - INFO - gpu1 is DELETING ... 225 sec
2022-09-28 01:05:25,312 - INFO - gpu1 is DELETING ... 230 sec
2022-09-28 01:05:30,434 - INFO - gpu1 is DELETING ... 235 sec
2022-09-28 01:05:35,552 - INFO - gpu1 is DELETING ... 240 sec
2022-09-28 01:05:40,671 - INFO - gpu1 is DELETING ... 245 sec
2022-09-28 01:05:45,783 - INFO - gpu1 is DELETING ... 250 sec
2022-09-28 01:05:50,899 - INFO - gpu1 is DELETING ... 255 sec
2022-09-28 01:05:56,016 - INFO - gpu1 is DELETING ... 260 sec
2022-09-28 01:06:01,133 - INFO - gpu1 is DELETING ... 265 sec
2022-09-28 01:06:06,255 - INFO - gpu1 is DELETING ... 270 sec
2022-09-28 01:06:11,376 - INFO - gpu1 is DELETING ... 275 sec
2022-09-28 01:06:16,496 - INFO - gpu1 is DELETING ... 280 sec
2022-09-28 01:06:21,618 - INFO - gpu1 is DELETING ... 285 sec
2022-09-28 01:06:26,732 - INFO - gpu1 is DELETING ... 290 sec
2022-09-28 01:06:31,853 - INFO - gpu1 is DELETING ... 295 sec
2022-09-28 01:06:36,975 - INFO - gpu1 is DELETING ... 300 sec
2022-09-28 01:06:42,096 - INFO - gpu1 is DELETING ... 305 sec
2022-09-28 01:06:47,218 - INFO - gpu1 is DELETING ... 310 sec
2022-09-28 01:06:52,338 - INFO - gpu1 is DELETING ... 315 sec
2022-09-28 01:06:57,456 - INFO - gpu1 is DELETING ... 320 sec
2022-09-28 01:07:02,577 - INFO - gpu1 is DELETING ... 325 sec
2022-09-28 01:07:07,707 - INFO - gpu1 is DELETING ... 330 sec
2022-09-28 01:07:12,833 - INFO - gpu1 is DELETING ... 335 sec
2022-09-28 01:07:17,952 - INFO - gpu1 is DELETING ... 340 sec
2022-09-28 01:07:23,076 - INFO - gpu1 is DELETING ... 345 sec
2022-09-28 01:07:28,196 - INFO - gpu1 is DELETING ... 350 sec
2022-09-28 01:07:33,320 - INFO - gpu1 is DELETING ... 355 sec
2022-09-28 01:07:38,441 - INFO - gpu1 is DELETING ... 360 sec
2022-09-28 01:07:43,575 - INFO - gpu1 is DELETING ... 365 sec
2022-09-28 01:07:48,660 - INFO - cleanup completed. vc handson201 is cleanup(no unit)

ビルドのログがある場合は削除します。

In [43]:
if 'log_file' in locals():
    !rm -f {log_file[1]}

取得した画像ファイルなどを削除します。

In [44]:
!rm -rf {result_dir}
In [ ]: