「技術教育の機会を提供する」という歩みを止めてはいけない...ETロボコン2020 はオンライン教育&ヴァーチャル競技会でただいま開催中です。
さて、先日シミュレータ開発環境 (評価版) が公開されました。
参考:シミュレータ開発環境(評価版)を公開しました。 | ETロボコン
参考:GitHub - ETrobocon/etrobo: ETロボコンのEV3/シミュレータ双方に対応する開発環境
この ET ロボコン EV3/シミュレータ開発環境 ( **「etrobo環境」**と呼ぶ ) をお持ちの PC に環境を構築するのも良いですが、ここでは Azure Windows 仮想マシン (VM : Virtual Machines) に構築してみたいと思います。
なお、以下のように 3 つに分けて投稿します。
- Azure VM で ET ロボコン EV3/シミュレータ開発環境を構築しよう (準備編)...この記事
- Azure VM で ET ロボコン EV3/シミュレータ開発環境を構築しよう (NV/NVv3 シリーズ編)
- Azure VM で ET ロボコン EV3/シミュレータ開発環境を構築しよう (NVv4 シリーズ編)
Azure ってなに?
そもそも Azure って何ですか? Azure 仮想マシンって何ですか? Azure 仮想マシンってどうやって作るの?という方は、以下で紹介する Microsoft Learn のラーニング パスやモジュールで学びましょう (無料で学べます)。ハンズオンも含まれています (無料で演習できます) ので、ただドキュメントを読むだけより理解しやすいかと思います。なお、ハンズオンを行うためには、Microsoft アカウントが必要です (無料で作れます)。
Azure の基礎ラーニング パス - Microsoft Learn
Azure Virtual Machines の概要 - Microsoft Learn
Azure で Windows 仮想マシンを作成する - Microsoft Learn
Azure で Linux 仮想マシンを作成する - Microsoft Learn
以下より、Azure や仮想マシンをご理解いただいている前提で説明します。
仮想マシンのタイプとサイズ
Azure にはたくさんの種類の VM イメージをさまざまなサイズで提供しています。
Type | Size | Description |
---|---|---|
汎用 | B, Dsv3, Dv3, Dasv4, Dav4, DSv2, Dv2, Av2, DC, DCv2, Dv4, Dsv4, Ddv4, Ddsv4 | バランスのとれた CPU 対メモリ比。テストと開発、小規模から中規模のデータベース、および低から中程度のトラフィックの Web サーバーに最適。 |
コンピューティング最適化 | Fsv2 | 高い CPU 対メモリ比。中トラフィックの Web サーバー、ネットワークアプライアンス、バッチプロセス、およびアプリケーションサーバーに適している。 |
メモリ最適化 | Esv3, Ev3, Easv4, Eav4, Ev4, Esv4, Edv4, Edsv4, Mv2, M, DSv2, Dv2 | 高いメモリ対 CPU 比。RDB サーバー、中規模から大規模のキャッシュ、インメモリ分析に最適。 |
ストレージ最適化 | Lsv2 | ビッグデータ、SQL、NoSQL DB、データウェアハウジング、および大規模なトランザクション DB に最適な高いディスクスループットと IO。 |
GPU | NC, NCv2, NCv3, ND, NDv2 (Preview), NV, NVv3, NVv4 | 負荷の高いグラフィックレンダリングとビデオ編集、およびディープラーニングによるモデルトレーニングと推論 (ND) を対象とした専用の仮想マシン。単一または複数の GPU で利用できる。 |
ハイ パフォーマンス コンピューティング | HB, HBv2, HC, H | 高スループットネットワークインターフェイス (RDMA) のオプションを備えた、最も高速かつ強力な CPU 仮想マシン。 |
利用可能な VM イメージのタイプおよびサイズについては、以下のページをご参照ください。
参照:Azure の仮想マシンのサイズ - Azure Virtual Machines
etrobo 環境に最適な仮想マシンは?
ETロボコン2020競技規約には、以下のように書かれています。
競技は描画処理が 60 FPS (frames per second)、TimeScale 1 の動作環境で実施される。描画処理が低い PC で競技環境を動作させた結果は当日の競技と結果が変わる場合があることに注意すること。
よって、GPU が搭載されている仮想マシンが望ましいですね。
参照:GPU 最適化済み仮想マシンのサイズ - Azure Virtual Machines
さらにその中でも、「リモートの視覚化、ストリーミング、ゲーム、エンコーディング、および OpenGL や DirectX などのフレームワークを使用する VDI シナリオ用に最適化および設計され」た NV/NVv3/NVv4 シリーズが候補となります。
スペック
各 NV シリーズに搭載される CPU と GPU は以下のとおりです。NV と NVv3 シリーズの仮想マシンには「NVIDIA Tesla M60」、NVv4 シリーズの仮想マシンには「AMD Radeon Instinct MI25」 が搭載されています。
Type | CPU | GPU |
---|---|---|
NV | Intel Xeon E5-2690 v3 (Haswell) 2.60 GHz | NVIDIA Tesla M60 |
NVv3 | Intel E5-2690 v4 (Broadwell) 2.60 GHz | NVIDIA Tesla M60 |
NVv4 | AMD EPYC 7V12 (Rome) 2.25 GHz | AMD Radeon Instinct MI25 |
GPU が搭載された仮想マシンは、高スペックで料金もとってもお高いです。たとえば、Standard_NV6 の Windows VM (東日本) には、「56 GiB」という大容量のメモリが載っています。また、この仮想マシンを 1 か月間 (※1) ずっと起動しっぱなしすると、仮想マシンの料金だけ (※2) でも**「129,181円」くらいかかります!ただ、課金は秒単位で発生するので、節電・節水と同じように使わない時は必ず電源 OFF** するように注意しましょう。
※1 : 料金は「1 か月間 = 730 時間」として算出しています。
※2 : その他に、ディスクにかかる料金やデータ転送にかかる料金などもあります。
以下より、各 NV シリーズのサイズと簡単なスペックを記載します。
また、東日本リージョン (Windows VM) の従量課金制プランの料金も併せて載せてあります。他のリージョンの料金を調べたい場合は、以下の料金ページをご覧ください。
※対象リージョンで対象サービスが利用できるかも確認してください。(すべてのリージョンで利用できるわけではありません)
参考:リージョン別の利用可能な製品
参考:Windows Virtual Machines の料金
参考:Linux Virtual Machines の料金
NV シリーズ
Size | vCPU | RAM(GiB) | GPU | GPU RAM(GiB) | 料金(時間) |
---|---|---|---|---|---|
Standard_NV6 | 6 | 56 | 1 | 8 | ¥176.96 |
Standard_NV12 | 12 | 112 | 2 | 16 | ¥353.92 |
Standard_NV24 | 24 | 224 | 4 | 32 | ¥707.728 |
※ 1 GPU = M60 カードの 1/2 相当 |
なお、NV シリーズと同じ構成で料金がちょっとお安い**「NV Promo シリーズ (期間限定)」**もあります。
※2021/05/25 修正:NV Promo シリーズは 2020年10月31日をもって終了しました。
Size | vCPU | RAM(GiB) | GPU | GPU RAM(GiB) | 料金(時間) |
---|---|---|---|---|---|
※ 1 GPU = M60 カードの 1/2 相当 |
NV シリーズの詳細なスペックは、以下のページをご覧ください。
参考: NV シリーズ - Azure Virtual Machines
NVv3 シリーズ
Size | vCPU | RAM(GiB) | GPU | GPU RAM(GiB) | 料金(時間) |
---|---|---|---|---|---|
Standard_NV12s_v3 | 12 | 112 | 1 | 8 | ¥176.96 |
Standard_NV24s_v3 | 24 | 224 | 2 | 16 | ¥353.92 |
Standard_NV48s_v3 | 48 | 448 | 4 | 32 | ¥707.84 |
※1 GPU = M60 カードの 1/2 相当 |
NVv3 シリーズの詳細なスペックは、以下のページをご覧ください。
NVv3 シリーズ - Azure Virtual Machines
NVv4 シリーズ
Size | vCPU | RAM(GiB) | GPU | GPU RAM(GiB) | 料金(時間) |
---|---|---|---|---|---|
Standard_NV4as_v4 | 4 | 14 | 1/8 | 2 | ¥37.856 |
Standard_NV8as_v4 | 8 | 28 | 1/4 | 4 | ¥75.712 |
Standard_NV16as_v4 | 16 | 56 | 1/2 | 8 | ¥151.312 |
Standard_NV32as_v4 | 32 | 112 | 1 | 16 | ¥302.736 |
※現在 Windows OS のみサポート |
NVv4 シリーズの詳細なスペックは、以下のページをご覧ください。
NVv4 シリーズ - Azure Virtual Machines
Windows 仮想マシンを作ろう
それでは、etrobo 環境を構築するための仮想マシンを構築していきます。
これから作る環境のネットワーク構成は下図のとおりです。
そして上図を実現するために、下図のような Azure リソース構成で環境を構築していきます。
カンタンに手順を説明すると、
- これから作るリソースを保持するリソース グループ (RG) を作成。このリソース グループにすべてのリソースを格納していく。
- 仮想マシンを配置する仮想ネットワーク (VNET) を作成。そしてサブネットをひとつ用意して、そこに対してアクセス制御を施すためのネットワーク セキュリティ グループ (NSG) を関連付ける。
- 仮想マシンに関連付けるパブリック IP アドレスを作成。
- 仮想マシン (Windows 10) を作成。
- 仮想マシンにリモートデスクトップ接続して、ゲスト OS 上のセットアップ (etrobo環境の構築)。
となります。
今回は、可用性や冗長性などシステム構成を深く考えず環境を構築していきます。
本格的に複数の仮想マシンを構成したシステムを構築する場合は、ストレージ、ネットワーク、セキュリティなどを設計してから構築しましょう。(失敗してもすぐに作り直せるので、ガッチガチな設計でなくても良いかな)
以下より、ひとつずつ作成する手順を説明します。
リソース グループを作成
リソース グループ (RG : Resource Group) は、関連するリソース (VM や VNET など) を保持するコンテナーです。グループ管理したい (同じライフサイクルを共有する) リソースを含めます。
RG は、以下のドキュメントの手順に従って作成します。
参考:Azure portal を使用して Azure Resource Manager リソース グループを管理する > リソース グループを作成する
設定項目 | 設定値 |
---|---|
リソース グループ | 適当な名前 |
場所 | 適当なリージョン |
仮想ネットワークを作成
仮想ネットワーク (VNET : Virtual Network) は、Azure 内のユーザー独自のネットワークを表すものです。主に 仮想マシン (VM : Virtual Machines) が他のリソースと安全に通信するために使用します。
VNET は、以下のドキュメントの手順に従って作成します。
参考:仮想ネットワークの作成、変更、削除 > 仮想ネットワークの作成
タブ | 設定項目 | 設定値 |
---|---|---|
基本 | リソース グループ | 先に作成した RG |
基本 | インスタンスの詳細 > 名前 | 「et-sim-vnet」 |
基本 | 地域 | NV/NVv3/NVv4 の VM が利用可能なリージョン |
IPアドレス | IPv4 アドレス空間 | 「10.0.0.0/24」 |
IPアドレス | サブネット名 | 「default-subnet」 |
IPアドレス | サブネットのアドレス範囲 | 「10.0.0.0/27」 |
ネットワーク セキュリティ グループを作成
ネットワーク セキュリティ グループ (NSG : Network Security Group) は、VNET のサブネット間、VM 間のネットワークトラフィックを制御します。送受信されるトラフィックを定義された規則に従って評価し、そのトラフィックを許可または拒否することができます。
NSG は、以下のドキュメントの手順に従って作成します。
参考:ネットワーク セキュリティ グループの作成、変更、削除 > ネットワーク セキュリティ グループを操作する > ネットワーク セキュリティ グループの作成
タブ | 設定項目 | 設定値 |
---|---|---|
基本 | リソース グループ | 先に作成した RG |
基本 | インスタンスの詳細 > 名前 | 適当な名前 |
基本 | インスタンスの詳細 > 地域 | 先に作成した VNET と同じリージョン |
今回は、限定した場所 (自宅など) からのリモートデスクトップ接続を許可するルールを定義します。このルールを「受信セキュリティ規則」に追加します。
受信セキュリティ規則は、以下のドキュメントの手順に従って作成します。
参考:ネットワーク セキュリティ グループの作成、変更、削除 > セキュリティ規則を操作する > セキュリティ規則を作成する
設定項目 | 設定値 |
---|---|
ソース | 「IP Address」 |
ソース IP アドレス/CIDR 範囲 | 接続元 IP アドレス ※確認くんで接続元 IP アドレスを確認しましょう |
ソース ポート範囲 | 「* (アスタリスク)」 |
宛先 | 「Any」 |
宛先ポート範囲 | 「3389」 |
プロトコル | 「TCP」 |
アクション | 「許可」 |
優先度 | 「100」※適当な値 |
名前 | 適当な名前 ※わかりやすい名前 |
説明 | 適当な説明 ※任意 |
最後に、この NSG を先に作成した VNET「et-sim-vnet」のサブネット「default-subnet」に関連付けます。
NSG を VNET のサブネットへの関連付けの手順は、以下のドキュメントをご覧ください。
参考:仮想ネットワーク サブネットの追加、変更、削除 > サブネット設定の変更
設定項目 | 設定値 |
---|---|
ネットワーク セキュリティ グループ | この NSG |
パブリック IP アドレスを作成
パブリック IP アドレスは、Azure リソース (ここでは仮想マシン) がインターネットと通信できるようにするために割り当てる動的または静的な IP アドレスです。
今回は、仮想マシンへのアクセスはインターネット経由で行うので、仮想マシンにパブリック IP アドレスを割り当てる必要があります。
パブリック IP アドレスは、以下のドキュメントの手順に従って作成します。
参考:パブリック IP アドレスの作成、変更、削除 > パブリック IP アドレスの作成
設定項目 | 設定値 |
---|---|
IP バージョン | 「IPv4」 |
SKU | 「Basic」 |
IPv4 IP アドレスの構成 > 名前 | 適当な名前 |
IPv4 IP アドレスの構成 > IP アドレスの割り当て | 「動的」 |
IPv4 IP アドレスの構成 > アイドル タイムアウト | 「4 分」 |
IPv4 IP アドレスの構成 > DNS 名ラベル | 適当な DNS 名ラベル |
リソース グループ | 先に作成した RG |
場所 | 先に作成した VNET と同じリージョン |
仮想マシンを作成
Windows 10 の仮想マシン (VM : Virtual Machines) を以下の手順に従って作成します。
1.Azure ポータルにサインインします。
2.[リソースの作成] をクリックします。
3.[新規作成] にて、[検索テキストボックス] に「Windows 10」と入力して、ドロップダウンリストから「Microsoft Windows 10」を選択します。
4.[プラン選択] にて、[プランを選択する] ドロップダウンリストから、以下の値を選択します。
※間違えないように!
- NV, NVv3 (GPU = NVIDIA) の VM を作成する場合...「Windows 10 Pro, Version 1909」を選択
- NVv4 (GPU = AMD) の VM を作成する場合...「Windows 10 Pro, Version 1809」を選択
5.[仮想マシンの作成] > [基本] タブにて、各設定項目に以下のとおりの値を設定します。
タブ | 設定項目 | 設定値 |
---|---|---|
基本 | リソース グループ | 先に作成した RG |
基本 | インスタンスの詳細 > 仮想マシン名 | 「et-sim01-vm」※適当な名前 |
基本 | インスタンスの詳細 > 地域 | 先に作成した VNET と同じリージョン |
基本 | インスタンスの詳細 > 可用性オプション | 「インフラストラクチャ冗長は必要ありません」 |
基本 | インスタンスの詳細 > イメージ | NV, NVv3 (GPU = NVIDIA) の VM を作成する場合「Windows 10 Pro, Version 1909」を選択、NVv4 (GPU = AMD) の VM を作成する場合「Windows 10 Pro, Version 1809」を選択 |
基本 | インスタンスの詳細 > Azure スポット インスタンス | 「いいえ」 |
基本 | インスタンスの詳細 > サイズ | NV/NV Promo/NVv3/NVv4 のいずれかのサイズ |
基本 | 管理者アカウント > ユーザー名 | 適当なユーザー名 ※「administrator」は NG |
基本 | 管理者アカウント > パスワード (パスワードの確認) | 適当なパスワード |
基本 | 受信ポートの規則 > パブリック受信ポート | 「なし」 |
基本 | 受信ポートの規則 > 受信ポートの選択 | 未選択 |
6.[仮想マシンの作成] > [ネットワーク] タブにて、各設定項目に以下のとおりの値を設定します。
タブ | 設定項目 | 設定値 |
---|---|---|
ネットワーク | ネットワーク インターフェイス > 仮想ネットワーク | 先に作成した VNET「et-sim-vnet」を選択 |
ネットワーク | ネットワーク インターフェイス > サブネット | 先に作成した VNET のサブネット「default-subnet」を選択 |
ネットワーク | ネットワーク インターフェイス > パブリック IP | 先に作成したパブリック IP アドレス「et-sim01-vm-ip」を選択 |
ネットワーク | ネットワーク インターフェイス > NIC ネットワーク セキュリティ グループ | 「なし」※サブネットに関連付けているため不要 |
ネットワーク | ネットワーク インターフェイス > 高速ネットワーク | 「オフ」 |
ネットワーク | 負荷分散 > この仮想マシンを既存の負荷分散ソリューションの後ろに配置しますか? | 「いいえ」 |
入力後、下部にある [確認および作成] をクリックします。
7.[仮想マシンの作成] > [確認および作成] タブにて、「検証が成功しました」というメッセージを確認したら、[作成] をクリックします。
8.デプロイが完了するまで、しばらく待ちます。
9.デプロイが完了しました。
10.リソース グループには、仮想マシンを構成するリソースが入っています。
リモートデスクトップ接続する
以下の手順に従ってリモートデスクトップ接続します。
参考:Windows が実行されている Azure 仮想マシンに接続してサインオンする方法 > 仮想マシンへの接続
ゲスト OS の言語が「英語」、タイムゾーンは「UTC」になっています (どのリージョンでも同じ)。必要に応じて OS を日本語化しましょう。
主な Tips
今後仮想マシンを利用する上で覚えておきたい Tips を紹介します。
リモートデスクトップ接続できるか確認
仮想マシンを開始や再起動した後、リモートデスクトップ接続できる状態になっているかは、Azure ポータルで確認できます。
参考:ブート診断を使用して、Azure 内の仮想マシンをトラブルシューティングする方法
Azure ポータル にサインインして、対象の仮想マシンを開きます。
仮想マシンのメニューから、[サポート + トラブルシューティング] カテゴリにある [ブート診断] をクリックします。
※既定の設定のまま仮想マシンを作成していれば、この「ブート診断」機能は有効になっています。
下図のように、現在のゲスト OS 上の画面 (スクリーンショット) を確認することができます。
このスクリーンショットが「ロック画面」になっていれば、リモートデスクトップ接続できます。
使わない時は必ず電源 OFF
仮想マシン上のゲスト OS からシャットダウンを行う (いつものように Windows のシャットダウンする) と、OS のシャットダウンとともに仮想マシンは停止され、状態が「停止」の表示となりますが、この状態では課金が引き続き発生しています。課金が発生しない状態とは「停止済み (割り当て解除)」です。
仮想マシンの状態を「停止済み (割り当て解除)」にするには、Azure ポータルで対象の仮想マシンを開き、上部にある [停止] をクリックします。
「パブリック IP アドレスを予約しますか」と問われるので、ここにはチェックを付けずに [OK] をクリックします。
しばらくすると、仮想マシンが停止した旨が通知され、仮想マシンの状態が「停止済み (割り当て解除)」となります。この状態で課金は発生しなくなります。
準備は、以上となります。
次回から「etrobo 環境」の事前準備とセットアップを行います。
※当投稿は、ET ロボコン実行委員会による公式コンテンツではありません。