仮想 GPU による高速 Linux ワークステーションの作成

このチュートリアルでは、ディスプレイ対応 GPU を接続して CentOS を実行する仮想 Linux ワークステーションを作成する方法を説明します(Windows ワークステーションを作成するには、仮想 GPU による高速 Windows ワークステーションの作成のチュートリアルをご覧ください)。Google Cloud は、3 つのディスプレイ対応 GPU(NVIDIA T4、NVIDIA Tesla P4、NVIDIA Tesla P100)を提供しています。

仮想ワークステーションを作成した後は、メディアやエンターテイメント業界で広く使用されているリモート デスクトップ プロトコルである Teradici PC-over-IP (PCoIP)を使用して、リモートアクセスする方法を学びます。PCoIP は、色精度やロスレス ディスプレイのサポートなど、メディア制作のワークロードに不可欠な機能を提供します。

目標

  • GPU を使用して Compute Engine インスタンスを作成します。このインスタンスは、仮想ワークステーションの基盤として機能します。
  • 仮想ワークステーションに NVIDIA ドライバをインストールします。
  • Teradici Cloud Access ソフトウェアを仮想ワークステーションにインストールします。
  • PCoIP ソフトウェア クライアントまたはハードウェア エンドポイントの一種である Zero Client を使用して、Mac または Windows パソコンから仮想ワークステーションに接続します。Linux パソコンから仮想ワークステーションにアクセスする場合は、Teradici の担当者にお問い合わせください。

料金

このチュートリアルでは、課金対象である次の Google Cloud コンポーネントを使用します。

料金計算ツールを使用すると、予想使用量に基づいて費用の見積もりを作成できます。本稿の執筆時点では、このチュートリアルで例示している典型的なメディア ワークステーション構成の費用は概算で 1 時間あたり US$1.36 です。

このチュートリアルで、仮想ワークステーションを構成するリソースとコストに影響する要素は次のとおりです。

インターネット下りは、仮想ワークステーションからローカルのディスプレイ クライアントにストリーミングされてインターネット下り(外向き)料金で課金されるデータを表します。PCoIP セッション中の下り(外向き)データに影響を与える変数は、帯域幅、画面解像度、ディスプレイ モニターの台数、使用するアプリケーション、各モニターのアクティビティの種類です。このの費用は、使用量を平均 10 Mbps として計算されています。Teradici の Workflow Planning Guide は、さまざまなワークロード要件を理解するのに役立ちます。

始める前に

このチュートリアルでは、gcloud コマンドと gsutil コマンドを使用します。これらのコマンドは、Cloud Console から起動した Cloud Shell インスタンスから実行できます。ローカルのワークステーションで gcloudgsutil を使用する場合、Cloud SDK をインストールします。このチュートリアルでは、Cloud Shell でコマンドを実行する方法を説明しています。ワークステーション上の Cloud SDK を使用する場合、ここでの説明は環境に合わせて読み替えてください。

  1. Google アカウントにログインします。

    Google アカウントをまだお持ちでない場合は、新しいアカウントを登録します。

  2. Cloud Console のプロジェクト セレクタページで、Cloud プロジェクトを選択または作成します。

    プロジェクト セレクタのページに移動

  3. Google Cloud プロジェクトに対して課金が有効になっていることを確認します。プロジェクトに対して課金が有効になっていることを確認する方法を学習する

  4. Compute Engine API を有効にします。

    API を有効にする

また、次のものが揃っていることを確認してください。

  • 選択したゾーン内に仮想ワークステーションの GPU の割り当てを持つ Google Cloud プロジェクト。gcloud compute accelerator-types list コマンドを使用すると、GPU の可用性リストを取得できます。
  • Cloud Console にアクセスするための Google Chrome ブラウザ。
  • 仮想ワークステーションにアクセスする Teradici ゼロクライアントか、Windows、Mac、または Limux 用の最新の Teradici のソフトウェア クライアント
  • Teradici Cloud Access Software ライセンス。試用版ライセンスに登録するか、Teradici の担当者にお問い合わせください。この仮想ワークステーションに使用する 30 日間の試用登録コードが提供されます。

アーキテクチャについて

次の図は、このチュートリアルで単一の仮想ワークステーションをデプロイするためのコンポーネントを示しています。図に示すオプションのコンポーネントには、仮想ワークステーション、オブジェクト、共有ストレージに接続するさまざまな方法と、サードパーティ ライセンスを提供するための追加のインスタンスが含まれています。

仮想ワークステーション アーキテクチャ

アクセラレータを選択する

仮想ワークステーションをデプロイする際に重要になるのは、デベロッパーのロケーションと作成されたインスタンスとの間のレイテンシです。レイテンシが短いほど、より良いエクスペリエンスが得られます。したがって、可能な限り地理的に近いゾーンを選択する必要があります。リージョンとゾーンについて詳しくは、地域とリージョンをご覧ください。

  1. Cloud Shell を開きます(Cloud SDK を使用している場合、お使いのパソコンでターミナル ウィンドウを開きます)。

    Cloud Shell に移動

  2. 次に、GPU が利用可能なゾーンのリストを取得します。

    gcloud compute accelerator-types list

    物理的に最も近いゾーンをメモしておきます。

  3. 使用するゾーンを設定します。

    gcloud config set compute/zone zone

    zone は、使用しているゾーンの名前(us-west2-b など)に置き換えます。

マシンタイプを選択する

P4 GPU は任意のマシンタイプに接続できますが、仮想ワークステーションに追加する各 GPU と組み合わせる vCPU の数は最小限にする必要があります。こうすることで、リソースの過剰登録を防止します。NVIDIA Tesla P4 では、1 つの GPU に最大 24 個の vCPU を接続できます。24 個を超える vCPU を仮想ワークステーションに追加するには、vCPU 24 個ごとに別の P4 GPU を 1 つ追加する必要があります。たとえば、vCPU 48 個の仮想ワークステーションでは、P4 GPU を 2 つ接続する必要があります。

このチュートリアルの例は、NVIDIA Tesla P4 GPU 1 つあたりの最大 vCPU 数である、vCPU 24 個の仮想ワークステーションで構成されています。

仮想ワークステーションを作成する

Teradici Graphics Agent(このチュートリアルの後半で仮想ワークステーションにインストールする)では、仮想ワークステーションの作成時に IP 転送を有効にし、HTTPS サーバー トラフィックを許可する必要があります。

  1. Cloud Shell で、Compute Engine 仮想ワークステーション インスタンスを作成します。name などのプレースホルダの値を指定する必要があります。

    gcloud compute instances create name \
        --machine-type machine-type \
        --accelerator type=accelerator,count=num-gpus \
        --can-ip-forward \
        --maintenance-policy "TERMINATE" \
        --tags "https-server" \
        --image-project centos-cloud \
        --image-family centos-7 \
        --boot-disk-size size

    例:

    gcloud compute instances create test-vws \
        --machine-type custom-24-32768 \
        --accelerator type=nvidia-tesla-p4-vws,count=1 \
        --can-ip-forward \
        --maintenance-policy "TERMINATE" \
        --tags "https-server" \
        --image-project centos-cloud \
        --image-family centos-7 \
        --boot-disk-size 100

    仮想ワークステーションが作成されると、マシンのステータスが表示されます。出力は次のようになります。

    Created https://www.googleapis.com/compute/v1/projects/project/zones/us-west2-b/instances/test-vws.
    NAME ZONE MACHINE_TYPE PREEMPTIBLE INTERNAL_IP EXTERNAL_IP STATUS test-vws us-west2-b custom (24 vCPU, 32.00 GiB) 10.168.0.3 XX.XXX.XX.XXX RUNNING

    仮想ワークステーションは、プロジェクトのデフォルトの VPC ネットワークに作成されます。仮想ワークステーションを別の VPC ネットワークに作成する場合は、コマンドに次のフラグを追加します。

    --network=network
    

    network は、使用するネットワークの名前に置き換えます。

  2. 仮想ワークステーションの外部 IP アドレスをメモしておきます。これはチュートリアルの後半で使用します。

仮想ワークステーションにログインする

仮想ワークステーションの作成が終わったら、マシンにログインして構成できます。

  1. Cloud Shell で、新しい仮想ワークステーションに接続します。

    gcloud compute ssh test-vws
  2. アカウントのパスワードを設定します。Teradici PCoIP では、ユーザーのパスワードを設定する必要があります。

    sudo passwd `whoami`

    プロンプトが表示されたら、パスワードを入力します。チュートリアルの後半で、このパスワードを使用して Teradici PCoIP クライアントから仮想ワークステーションにログインします。

グラフィック ライブラリとウィンドウ マネージャをインストールする

Google Cloud のデフォルトの CentOS 7 イメージは、CentOS 7.x の最小インストールです。次の手順では、仮想ワークステーションをグラフィック ワークステーションとして実行するために必要なライブラリをインストールします。このチュートリアルでは、KDE ウィンドウ マネージャもインストールします。

  1. 必要なコンポーネントをインストールします。

    sudo yum -y update
    sudo yum -y install kernel-devel
    sudo yum -y groupinstall "KDE desktop" "X Window System" "Fonts"
    sudo yum -y groupinstall "Development Tools"
    sudo yum -y groupinstall "Server with GUI"
  2. ワークステーションを再起動します。

    sudo reboot

    Cloud Shell からの接続が閉じられます。

NVIDIA ドライバをインストールする

NVIDIA T4、NVIDIA Tesla P4、NVIDIA Tesla P100 GPU は、コンピューティングとディスプレイ ワークロードの両方に対応する認定 NVIDIA Quadro Virtual Data Center Workstation(vWS)ドライバをインストールしなければ Google Cloud で動作しません。このドライバは、一般公開ストレージ バケットからダウンロードできます。

  1. 仮想ワークステーションが再起動したら、Cloud Shell で仮想ワークステーションに再接続します。

    gcloud compute ssh test-vws
  2. 仮想ワークステーションで、gsutil を使用して最新のドライバのリストを取得します。

    gsutil ls gs://nvidia-drivers-us-public/GRID

    このチュートリアルでは、執筆時点で入手可能な最新のグラフィック ドライバである、GRID8.0 Linux ドライバ(バージョン 418.70)を使用します。最新の認定ドライバは常に、バージョン番号が最も大きい GRID ディレクトリにあります。この例より新しいドライバがあった場合、そのドライバを使用してください。

  3. ドライバをダウンロードしてインストールします。418.70 より新しいドライバを使用する場合は、それに応じてコマンドを変更してください。

    curl -O \
    https://storage.googleapis.com/nvidia-drivers-us-public/GRID/GRID8.0/NVIDIA-Linux-x86_64-418.70-grid.run
    sudo bash NVIDIA-Linux-x86_64-418.70-grid.run

    ドライバのインストール中に、いくつかのプロンプトが表示されることがあります。

    • 32 ビットバイナリのインストールを求められたら、[Yes] を選択します。
    • x.org ファイルの変更を求められたら、[No] を選択します。
  4. ドライバがインストールされ、動作していることを確認します。

    nvidia-smi

    出力は次のようになります。

    Thu Sep 20 21:58:23 2018
    +-----------------------------------------------------------------------------+
    | NVIDIA-SMI 418.70       Driver Version: 418.70       CUDA Version: 10.1     |
    |-------------------------------+----------------------+----------------------+
    | 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 P4            On   | 00000000:00:04.0 Off |                    0 |
    | N/A   34C    P8     7W /  75W |      0MiB /  7611MiB |      0%      Default |
    +-------------------------------+----------------------+----------------------+
    
    +-----------------------------------------------------------------------------+
    | Processes:                                                       GPU Memory |
    |  GPU       PID   Type   Process name                             Usage      |
    |=============================================================================|
    |  No running processes found                                                 |
    +-----------------------------------------------------------------------------+
    

このリストのような出力が表示されない場合は、このチュートリアル後半のトラブル シューティングをご覧ください。

Teradici Cloud Access Software をインストールする

Teradici Cloud Access Software は、仮想ワークステーション上で動作するグラフィック エージェントを提供し、ハードウェアまたはソフトウェア クライアントにデスクトップを提供します。

  1. 仮想ワークステーションに、Teradici ソフトウェアを追加します。

    sudo rpm --import https://downloads.teradici.com/rhel/teradici.pub.gpg
    sudo yum -y install wget
    sudo wget -O /etc/yum.repos.d/pcoip.repo \
        https://downloads.teradici.com/rhel/pcoip.repo
  2. ソフトウェア リポジトリを更新します。

    sudo yum -y update
  3. Teradci Cloud Access Software をインストールします。

    sudo yum -y install pcoip-agent-graphics
  4. 表示状態を graphical に設定します。

    sudo systemctl set-default graphical.target
  5. 仮想ワークステーションを再起動します。

    sudo reboot

Teradici Graphics Agent を登録する

前述のとおり、Teradici Graphics Agent を使用するにはライセンスが必要です。

  1. Cloud Shell で、仮想ワークステーションに再接続します。

    gcloud compute ssh test-vws
  2. 仮想ワークステーションで、Teradici Cloud Access Software ライセンスを有効にします。

    pcoip-register-host --registration-code=registration-code

ファイアウォール ルールを作成する

PCoIP クライアントは、複数のポートを使用して仮想ワークステーションと通信します。仮想ワークステーションとの間のトラフィックを許可するようにファイアウォール ルールを設定する必要があります。

  • Cloud Shell で、必要なポートを開くファイアウォール ルールを作成します。

    gcloud compute firewall-rules create allow-teradici \
        --allow tcp:443,tcp:4172,udp:4172,tcp:60443

PCoIP クライアントを使用して仮想ワークステーションにログインする

  1. ローカル PC で、Teradici サポートページの [PCoIP Clients] セクションに移動します。使用中のオペレーティング システムに対応する PCoIP Client アプリケーションをダウンロードしてインストールし、起動します。

  2. [New Connection] を選択します。

  3. [Host Address] フィールドに、仮想ワークステーションの外部 IP アドレスを入力します。必要に応じて、接続の名前を入力できます。

    仮想ワークステーションへの外部 IP アドレスの割り当て。

  4. 接続されたら、仮想ワークステーション用に作成したユーザー名とパスワードを入力して認証します。

    仮想ワークステーションでの認証

  5. 実行するデスクトップを選択し、[Connect] をクリックします。

    接続するデスクトップの選択

    数秒後に Linux のデスクトップが表示されます。

    仮想ワークステーション内の Linux デスクトップ

仮想ワークステーションをテストする

仮想ワークステーションをデプロイした後、さまざまなツールを使用してパフォーマンスとインタラクティビティをテストできます。

  • glxgearsglmark2 などの GPU ベンチマーク ツールを実行します。これは、Linux ワークステーションでグラフィックのパフォーマンスをテストする簡単なプログラムです。
  • オープンソースの 3D ソフトウェア パッケージである Blender をインストールします。
  • V-RayOctaneMaxon など一般的なレンダラのレンダリング ベンチマーク ツールを実行します。
  • Google Chrome を使用して、お気に入りのサイトの閲覧や、YouTube 動画の再生を行います。

トラブルシューティング

ここでは、ワークステーションをセットアップまたは接続する際に発生する可能性のある問題を示します。

NVIDIA-SMI が失敗した

問題: NVIDIA-SMI が NVIDIA ドライバと通信できなかったために失敗した。

解決策: ドライバを再インストールして、nvidia-smi を再度実行してみてください。コマンドが引き続き失敗する場合は、NVIDIA ドライバをアンインストールし、dkms モジュールをインストールしてから、ドライバを再インストールしてください。これにより dkms モジュールがカーネルに登録されるため、カーネルの更新でグラフィック ドライバの再インストールが不要になります。

X11 が起動しない

問題: X11 が意図したとおりに起動しない。

解決策: Nouveau グラフィック ドライバがインストール環境に存在しないことを確認します。Nouveau ドライバは、一部の Linux バージョンに含まれるオープンソースのグラフィック ドライバです。Nouveau ドライバが存在するかどうかを確認するには、仮想ワークステーションのシェルで次のコマンドを実行します。

lsmod | grep nouveau

結果が表示されたら、認定 NVIDIA グラフィック ドライバをインストールする前に、次の手順に従って Nouveau ドライバの読み込みを無効にしてください。

  1. 仮想ワークステーションのシェルで、スーパーユーザーとしてテキスト エディタを開き、/etc/modprobe.d/blacklist.conf ファイルの最後に次の行を追加します。

    blacklist nouveau
  2. 仮想ワークステーションを再起動します。

    sudo reboot
  3. 仮想ワークステーションが再起動したら、Cloud Shell から再接続します。

    gcloud compute ssh test-vws
  4. スーパーユーザーとして、/etc/default/grub ファイルを編集します。

  5. GRUB_CMDLINE_LINUX という名前のエントリを探します。存在しない場合は追加し、そのエントリに次の値を追加します。

    rd.driver.blacklist=nouveau nouveau.modeset=0

    この値が引用符で囲まれていることを確認してください。例:

    GRUB_CMDLINE_LINUX="crashkernel=auto console=ttyS0,38400n8 rd.driver.blacklist=nouveau nouveau.modeset=0"
  6. 変更を反映するために新しい GRUB 構成を生成します。

    sudo grub2-mkconfig -o /boot/grub2/grub.cfg
  7. 仮想ワークステーションを再起動します。

    sudo reboot
  8. 仮想ワークステーションが再起動したら、Cloud Shell から再接続します。

    gcloud compute ssh test-vws
  9. Nouveau ドライバが存在しないことを確認します。

    lsmod | grep nouveau

    空の文字列は、Nouveau ドライバがインストールされていないことを意味します。Nouveau ドライバの詳細については、NVIDIA のドキュメントの Common Problems をご覧ください。

仮想ワークステーションに接続できない

問題: PCoIP ゼロクライアントを使用して仮想ワークステーションに接続できない。

解決策: 仮想ワークステーションに接続する前に、ゼロクライアントにファームウェアのバージョン 6.1 以降がインストールされていることを確認します。詳細については、Teradici の担当者にお問い合わせください。

クリーンアップ

このチュートリアルで使用したリソースについて、Google Cloud Platform アカウントに課金されないようにする手順は次のとおりです。

チュートリアルが終了したら、Google Cloud で作成したリソースをクリーンアップして今後料金が発生しないようにします。

仮想ワークステーションを停止する

仮想ワークステーションを停止すると、永続ディスクの費用が発生しますが、いつでも再起動できます。仮想ワークステーションを停止するには、Cloud Shell で次のコマンドを実行します。

gcloud compute instances stop test-vws

プロジェクトを削除する

  1. Cloud Console で [リソースの管理] ページに移動します。

    [リソースの管理] ページに移動

  2. プロジェクト リストで、削除するプロジェクトを選択し、[削除] をクリックします。
  3. ダイアログでプロジェクト ID を入力し、[シャットダウン] をクリックしてプロジェクトを削除します。

すべてのコンポーネントの削除

  1. 仮想ワークステーションを削除します
  2. ファイアウォール ルールを削除します

次のステップ