こんにちは。クラウドインテグレーション事業部の上原です。
前回の記事では、とりあえず Azure上でバッチ処理を動かすためにシンプルな構成を作ってみました。
しかしシンプルゆえに問題点も多かったので、少しずつ改善していきましょう。
今回は必要なときだけバッチが稼働する構成 、いわゆるサーバレスアーキテクチャを検討してみます。
研究開発室の馮 志聖(マイク)です。
In the era when social media is prevalent, there are various types of content. Some of the content includes location information, such as events, news.... Displaying these location-containing content on the map is convenient for other users to find and read, but they are generally in 2D. Based on flat maps, we will use the latest AR technology combined with 3D maps to present these content including locations, which will bring users a greater experience.
We will develop the Twitter AR map.
Why we choose Twitter?
This chart shows the recent market share of social media in Japan, updated in January 2021.
For details, please refer to the link below.
https://gs.statcounter.com/social-media-stats/all/japan
From this chart, we can see that the ratio of Twitter is 59%, nearly half of the market share, so we choose Twitter.
This information get from statcounter GlobalStats.
続きを読むこんにちは。研究開発室の岡田です。
前回の記事では、Amazon Chime SDK for JS1のVoice Focusを用いてノイズ除去を行う方法をご紹介しました(参照)。今回は、さらに発展させてノイズ除去をした後、BGMやSEを追加する方法をご紹介します。これまでに何度かご紹介してきた仮想背景の音声版といったところでしょうか。
作るものは下の動画のようなものになります。大雨の中で講義をしている動画に対して、雨の音の代わりに宇宙っぽいBGMを追加しています(00:16-)。併せて背景を変えてあげれば、大雨の中にいた人があっという間に宇宙で話をしている状況に変わります。 https://www.youtube.com/watch?v=awfXdqRoC6I
Amazon Chime SDK for Javascript, noise suppression and sound mixing test
なお、今回はAmazon Chime SDKのノイズ除去機能であるVoice Focusの詳細については説明を行いません。前回の記事をご参照ください(参照)。
続きを読む研究開発室の馮 志聖(マイク)です。
The coronavirus is ruthlessly eroding human lives, and many people work from home for safety reasons.
Remote work has become very common, among which video chat tools have become a popular focus. However, video chat tools have limitations and cannot be used for certain types of tasks, such as the inability to effectively point out the location when performing maintenance tasks.
Our goal is to improve this limitation and make remote work more convenient, so we will develop an AR Remote Instructions program.
続きを読むみなさんこんにちは。先端技術室の佐藤です。 今回はクラウドのGPUでLinuxリモート3Dワークステーションを作るお話を紹介したいと思います。
(手順だけが知りたい方は、こちら。紆余曲折にお付き合いいただける方は、そのままお読みください。)
みなさんは、ある日業務要件で「3Dビジュアルワークステーション」が必要になったら、どうやって調達しますか?筆者が昨年遭遇したのはそのような状況でした。大きなCADデータが届き、確認する必要が生じたのです。身の周りには残念ながら、ゲーミングPCの類はありませんでした。会社のラップトップで開こうとした同僚からは「全然開けない。熱くて、ファンの音もすごくて、燃えそう。」という悲鳴が聞こえてきます。
こんな時に便利なのが「Virtual Workstation(以下、仮想ワークステーション)」で、AWSなどのクラウドベンダから各種提供されています。クラウド側でGPUを接続したインスタンスを起動し、仮想デスクトップで接続するものです。画像がネットワーク越しになりますのでゲームなどの動きの激しい用途には向きませんが、動きの少ない緻密な3D表示が求められる用途には向いています。今回もこれで行けそうでした。
しかしマニュアルを読み込んでいた筆者は、ふと疑問に思うことがありました。インスタンス価格はLinuxの方が安い(WindowsはOSの利用料金が上乗せされるため)が、そのLinuxの仮想ワークステーションにどうやったら画面をつなげるのか、どこにも書いてないのです。Google Cloudのマニュアルにかろうじて書いてありましたが、有償の仮想デスクトップソフトを利用するものであり、別途お金がかかります。できるだけ安く済ませる方法はないものでしょうか。
方々ググって見つけたのが、VirtualGLでした。しかしこれが、難しい。いえ、基本的に、仮想ワークステーションは難しいのです。普通は画面に出力する画像(フレームバッファデータ)を回収し、ネットワーク経由で仮想デスクトップクライアントまで送信しているのです。GPUベンダが特別なドライバを用意してしつらえるもので、野良環境のLinuxで組み上げるには相当な知識が求められます。
ギブアップしてWindowsで済ませようと思った筆者でしたが、一方で、Linuxでできたら、おもしろいだろうなぁ、とも思え、VirtualGLの研究を続けていました。
VirtualGLの原理はこうです。実行ファイルが起動する時に、Linux OSが提供する特別な環境変数を設定し、OpenGLの描画命令(システムコール呼び出し)をVirtualGLのライブラリにフックします。フックした先では物理スクリーン(通常は$DISPLAY=:0)に向けてこの命令を実行し、描画結果画像を回収します。そして仮想デスクトップ側のスクリーン($DISPLAY=:1など)に向けてこの画像を送信します。こんな曲芸のような仕組みがうまくいくものなのでしょうか?しかしVirtualGL自体は開発が継続しており、それなりに評価されているように見えます。
ところで、クラウドインスタンスに物理スクリーンはあるのでしょうか?もちろん、ありません。一方で、例えばVirtualBoxなどの仮想化ソフトにUbuntu Linuxなどをインストールし、開いた画面(=仮想化ソフトが用意した仮想ハードウェア)には、物理スクリーンがあります。先ほどの話ですと、物理スクリーンがないと、VirtualGLの仕掛けは成り立ちませんので、クラウドインスタンスでは、VirtualGLは実行できないことになります。
これには本当に困ったのですが、VirtualGLやXOrgに関する巷の文書を読み漁り、また手元環境を方々観察していると、徐々に解決の糸口が見えてきました。
筆者は今回に限らずクラウドインスタンスを仮想デスクトップで利用しているのですが、Ubuntu 18.04の/var/logにあるログを見ると、Xorg.0.log、すなわち物理スクリーンに対応するログが出ており、エラー終了していました。他のログと照らし合わせると、起動時に「LXDE lightDM起動 -> Xorg物理スクリーン初期化 -> デバイスが見つからず終了」となっているようです。それならば、GPUに対応するドライバをインストールすれば、クラウドインスタンスでも物理スクリーンが成立するのではないか?試してみたところ、これがうまく行きました。
方々調査の末にたどり着いた手順の概要は、以下のようなものです。
以下、それぞれの手順をみていきましょう。
筆者が試したのはGoogle CloudのCloud GPUです。小さなインスタンスにもGPUを付けることができ、安価に試せるので私はよく使っています。GPUは各種ありますが、一番安いNVIDIA Tesla T4を選びました。米国リージョンなら時間あたり0.35米ドル(執筆時)。1日8時間でも約300円です。
sudo apt install \ lxde \ build-essential \ pkg-config \ libglvnd-dev \ libglu1-mesa
Google Cloudでは、NVIDIA用のドライバが以下で公開されていますので、gsutilコマンドでローカルにコピーします(バージョンは執筆時点のもの)。
gsutil cp gs://nvidia-drivers-us-public/GRID/GRID12.0/NVIDIA-Linux-x86_64-460.32.03-grid.run .
内容も確認しましょう。
sha256sum ./NVIDIA-Linux-x86_64-460.32.03-grid.run 89d734014555f5cafc606a228d02388c556942b7a56d08aa08fbec4e55afbb6a ./NVIDIA-Linux-x86_64-460.32.03-grid.run gsutil cat gs://nvidia-drivers-us-public/GRID/GRID12.0/NVIDIA-Linux-x86_64-460.32.03-grid.run.sha256 89d734014555f5cafc606a228d02388c556942b7a56d08aa08fbec4e55afbb6a NVIDIA-Linux-x86_64-460.32.03-grid.run sudo bash ./NVIDIA-Linux-x86_64-460.32.03-grid.run nvidia-xconfig
wget -O virtualgl_2.6.5_amd64.deb https://sourceforge.net/projects/virtualgl/files/2.6.5/virtualgl_2.6.5_amd64.deb/download sudo dpkg -i ./virtualgl_2.6.5_amd64.deb apt install -f sudo vglserver_config 1) Configure server for use with VirtualGL 2) Unconfigure server for use with VirtualGL X) Exit Choose: 1 Restrict 3D X server access to vglusers group (recommended)? [Y/n] n Restrict framebuffer device access to vglusers group (recommended)? [Y/n] n Disable XTEST extension (recommended)? [Y/n] Y ... 1) Configure server for use with VirtualGL 2) Unconfigure server for use with VirtualGL X) Exit Choose: X
ここまできたら、リブートします。
sudo apt install tigervnc-standalone-server vncserver (パスワードを設定) vncserver -kill :1 echo "vglrun startlxde" > ~/.vnc/xstartup chmod 755 ~/.vnc/xstartup vnvserver
tivervnc-viewerをインストールしてつないでみましょう。Firefoxを起動してabout:supportを確認すると、「WebGL 2 Driver Renderer: NVIDIA Corporation -- Tesla T4」が確認できました。WebGLのデモページで動作を確認してみると、CPUだけでは決してなし得ないスピードでオブジェクトが動きます。(とは言え、画像がネットワーク越しなので限界はありますが。)
これで時間払いで利用できる3Dワークステーションが手に入りました。魅力はなんと言っても、初期投資がなく、単価もおそらく最低であることです。どんどん活用していきたいと思います。
こんにちは。研究開発室の岡田です。
前回の記事では、Amazon Chime SDK for JS1のVideo Processing APIを使い映像を加工して仮想背景を実現する方法をご紹介しました(参照)。今回は、音声を加工するについてご紹介します。Amazon Chime SDK for JSは、入力された音声からノイズを除去するVoice Focusという機能を提供しています。今回はこの効果を見ていきたいと思います。
こちらの動画は実際にVoice Focusを適用したものです(00:11~)。かなりきれいにノイズを抑えることができてますね。
Amazon Chime SDK for Javascript, noise suppression function(Voice Focus) test