テックポエマーの10min IT News! - 2020/07/26 - 車田理論をNVIDIAが実現!?

www.youtube.com

今週はベンツがついにアニメやSFのようなフロントガラスに映像を映せるようになったのが感慨深かったです。あと、「Universal Print」は地味だけどコーポレートITにはすごいインパクトがあるので早く一般化して欲しいですね。

最後に、Ampereはハードウェア性能で20倍、プルーニング対応で20倍の合計400倍だぁぁ! という車田理論を実現している可能性が出てきました。

今週のサマリ

  • NVIDIAのAmpereで対応した新技術「プルーニング」
  • マイクロソフト「Universal Print」のパブリックプレビュー開始
  • ついに来た。新型ベンツにARディスプレイと視線追跡が搭載

動画中の引用記事

itnews.org

www.publickey1.jp

www.moguravr.com

www.facebook.com

pc.watch.impress.co.jp

www.moguravr.com

jp.techcrunch.com

速報: Google Cloud Next '20 振り返り!【ついに完了】

Googleクラウドに関するカンファレンスであるCloud Nextが絶賛オンラインで開催中です。 cloud.withgoogle.com

Googleのカンファレンスと言えばGoogle I/Oをイメージする方が多いと思いますが、GCP関連に関しては毎年Cloud Nextとして別途開催されていました。

ただ、今年はコロナの影響で他のイベント同様にオンライン開催となっています。その特徴は何と言っても「9週間連続の怒涛の開催!」です。

毎週、「Industry Insights」「Productivity & Collaboration」「Infrastructure」「Security」「Data Analytics」「Data Management & Databases」「Application Modernization」「Cloud AI」「Business Application Platform」の九つのテーマが一つずつ解放されていきます。

それぞれに関して振り返りの動画を作っていこうと思うので良ければ見てみてください。

Weekly 9: Business Application Platform

今週はBusiness Application Platformです。ついに最終週です! Business Application PlatformはAPI + No Codingを表すGoogleの用語のようです。いわゆるEUC (End User Computing)ですね。 とはいえセッションはほぼほぼAPIに関してです。新サービスAPI Gatewayも出ましたし、今まで通りApigeeも大きな位置を占めます。

基本的にはAPI GatewayはシンプルでよりGCP NativeでApigeeは単独で完結した主にAPI販売やサードパーティに提供する時に有用な機能を含んでいるというのが差分になります。

これでGoogleAPI管理(Apiee)、API Gateway(API Gateway)、サービスメッシュ(Cloud Endpoint)とポートフォリオがそろってきました。

1回目

www.youtube.com

2回目

www.youtube.com

Weekly 8: Cloud AI

今週はCloud AIとなります。Googleの提供するAPI Platform, Document AI, Customer Center AIに関する話でした。GoogleはもちろんAIに関しては元々かなり力を入れていましたが、今年は製品が成熟してきたのか新技術を使った目玉機能の紹介というよりトータルソリューションとしての提案がメインになっていたと思います。

特に、コロナの影響でカスタマーセンターは架電数が増える上にオペレータの数も削減せざる得ないので、CC AIのようなスケールするカスタマーセンターの仕組みが大きな鍵になりそうです。

なお、ちょっとボイスチェンジャーの調子が悪い句て非常にノイジーな状態での配信となってしまいました。

www.youtube.com

Weekly 7: Application Modernization

今回はApplication Modernization という事で、開発や実行環境に運用そしてAnthosによるマルチクラウドと非常に盛沢山な内容となっていました。 まとめ?スライドも今回は最多の120枚です。キーノートも3つありましたしね。

Googleのマルチクラウド戦略、そしてそれを下支えするDockerによるサーバレスのCloud Runの進化が個人的には印象的でした。

発表に使った資料はこちらです。

1回目

キーノートをはじめ全体的なApplication Modernizationのサマリや、Cloud Run, Event for Cloud Run/cloudevent, Cloud Workflowに関して話しました。Cloud Workflowは特に登場を心待ちにしてたものなのでオープンβになる日が楽しみです。

www.youtube.com

2回目

Stackdriver改めCloudOpsやbuildpack、そしてなんといってもAnthos/GKEの話になりました。また最後にメインフレームマイグレーションの話もあります。

www.youtube.com

Weekly 6: Data Management & Database

先週までに比べるとずっと数が少なかったですね。それでもSLAを代表にどんどん機能は強化されているので成熟期なのかな、という印象です。

特にCloudSQLはここ数年でかなり良くなっており、SQLServerのサポートももちろんですが以前はOracleの専売特許であって透過暗号やDR構成も難なくこなすようになりMySQLPostgreSQLでも機能面では十分というのを改めて感じました。

まあ、Googleポートフォリオ的にはCloudSQLはあくまでレガシー互換で、RDBとしての本命はSpannerのようですがw

発表に使った資料はこちらです。

1回目

Spanner/Firesotreの機能および新機能。また、オンプレミスなどから移行する時にシフト&リフトでどのようなDBを選んでいけばいいかのガイドがメインとなります。

www.youtube.com

2回目

SQLServer, PITR, DR機能などCloudSQLに関しての話となります。商用DBというかOracleみたいな事が出来るようになったのは本当に感慨深い。てか、HA構成ってただのPDなのは初めて知りました。

www.youtube.com

Weekly 5: Data Analytics

GCPの本業と言っても過言ではないData Analyticsです。何しろBigQueryの登場はGCEより早いですからね! 感想のサマリとしてはこんな感じ

  • Smart Analytics
  • Break down data silos!
  • BigQuery, BigQuery, BigQuery!
  • BI Engine and Omni
  • Pricing Control
  • 20-30% 性能改善 & 99.99% SLA

配信に使った資料はこちらです。

1回目

今回のキーワードである「Break down data silos!」とBigQuery自体の基本的な動きを軽く解説。そのあと、性能改善や今回の真の目玉であるBI Engineの話をしました。

www.youtube.com

2回目

www.youtube.com

3回目

www.youtube.com

Weekly 4: Security

インフラほどではありませんが、セキュリティにも多くのアップデートがありました。感想のサマリとしては以下の感じ。

  • A Safer normal
  • Security OF the cloudはもちろん、Security IN the cloudのサポートも強化されている
  • Active Assistによるスケールするセキュリティ
  • SCCの強化やChronicleの新規登場でセキュリティは益々強化
  • Confidential Computingは次のHTTPSになるかもしれないが成熟するのはもう少し先

内容が多いので以下のカテゴリで話していこうと思います。

  • Compliance & Standard
  • Secure Infrastructure
  • Security Scan & Monitoring
  • Support of Application Security
  • Identity & Access Management

資料はこちらとなります。

1回目

Compliance & Standardから Secure Infrastructureまで。Assured Workloads for Governmentはまだベータですが、政府系だけではなく金融や医療にも広がるとグッと使いやすくなりますね。 www.youtube.com

2回目

Security Scan & MonitoringとDLP APIDLP APIはマスキングに有効なので積極的に活用出来たらと思ってるし、セキュリティスキャン系はGCP単独で運用するならサードパーティのセキュリティ製品無くてももはや良いのではと思ってる。やっぱり利用者のミスで情報流出するという事実にクラウドベンダーも座して見守るだけとはいかんのだろうなぁ。

www.youtube.com

3回目

アプリケーション開発支援とかIAMの話。セキュリティ回はこれで終わりになります。reCAPTCHA Enterpriseは良さそうですよね。あと、IAM周りも最小権限原則をいかに「スケールさせるか」という点に注力したアップデートが多かった印象です。Ownerでの運用、ダメ、ゼッタイ。 www.youtube.com

Weekly 3: Infrastructure

さて、ここからが本番です! インフラの発表です。こちらはかなりいろんな発表がありました。新しいインスタンスやストレージが出来たりVMWare Engineなど50個以上の発表があって話してると長くなり過ぎたので分割しての配信にしました。

全体的な感想としては各種性能やセキュリティが順当に強化されるだけではなく、GCPが「僕の考えた最強のインフラ」から「顧客の声を聴いたいつも通りの事が出来るインフラ」へ変化しようとしているメッセージを強く感じました。あとTrafficDirectorのProxyless gRPCはサイドカーを使わずgRPCの1.3から取り込まれたxDS APIを使って直接サービスメッシュを作るという事で今後の類似のプロダクトにも影響を与えるリリースだと思います。

配信に使ったスライドはこちら。Google Cloud Next '20 Weekly 3の振り返り - Speaker Deck

1回目

Computeからストレージまでの発表に関しての振り返り。順当にスペックやセキュリティがあがりファミリも増えました。VMWare Engineはマイグレーションとしてリフトアプローチを採るためにはかなり良いソリューションだと思います。

www.youtube.com

2回目

ネットワーク周りの発表に関しての振り返り。Googleが閉域IP網GCPを活用してる感。途中凸って頂いたので脱線しながら話しています。ありがとうございました。まあ、脱線はいつもか。

www.youtube.com

3回目

Active Assistなどの運用の話と5Gに関するセッションの振り返り。Active Assistは運用や設計の手間を大分減らしてくれそうなのでこのキーワードで今後も頑張って欲しいです。

www.youtube.com

Weekly 2: Productivity & Collaboration

コラボレーションツールであるG Suiteに関する発表です。技術的な話はあまりありませんが、コロナで始まったリモートワークに適したツールとしてG Suiteの改めての紹介やビデオチャットであるMeetの新機能の話がありました。個人的にはChrome EnterpriseやAndroid EnterpriseといったIT管理者向けの機能がとても気になりました。

配信中に使ったスライドはこちら。 Google Cloud Next '20 Weekly 2の振り返り - Speaker Deck

www.youtube.com

Weekly 1: Industry Insights

キーノートを含めた業界動向に関しての発表でした。詳しくは動画の中で話していますが、AWSやAzureの資産をBigQueryで検索できるBigQuery Omniが特に気になる内容でした。

配信中に使ったスライドはこちら。 Google Cloud Next '20 Weekly 1の振り返り - Speaker Deck

www.youtube.com

テックポエマーの10min IT News! - 2020/07/11 - 「悪の帝国の今とOSS」 を公開しました

www.youtube.com

今回はせっかくなので新しく作った新アバターを配信で使って見ました。

今週はMSにしろOracleにしろOSSと絡めた話が多かったですね。どちらもOSSのイメージなんて10年前は無かったので感慨深いです。かつては悪の帝国とか言われたりOSSは敵だと言ってた会社なんですよねぇ。

あと、なんといっても個人的な驚きと期待のニュースはGoogleによるNorthの買収ですね。

今週のサマリ

動画中の引用記事

Product Update

Helidon 2.0 Release

medium.com

Coherence Community Edition Release

coherence.community

blogs.oracle.com

理化学研究所Oracle Cloudで「富岳」の高度な計算資源の有効活用と研究成果創出を促進

www.oracle.com

active.nikkeibp.co.jp

Announcing Azure Functions extension for Dapr

cloudblogs.microsoft.com

LINE上で自社サービス展開可能な「LINEミニアプリ」、法人向けにエントリー受付を開始

k-tai.watch.impress.co.jp

MRデバイス「HoloLens 2」、マイクロソフトストアで販売開始

www.moguravr.com

Google acquires smart glasses company North

www.moguravr.com

www.bynorth.com

blog.google

世界1位の謎の半導体 アーム (ARM)とは?

TL;DR

  • ARMはx86と同じISA。ライセンス方式なので実装は色々ある
  • 省電力特化というポジションからHPCやサーバにも手を伸ばし始めている
  • A64FX由来のCPUとかが流行ると良いなー

はじめに

先週はARMに関してビックなニュースが立て続けに起こりました。そう、MacAppleシリコン採用のアナウンスとスーパーコンピュータの富岳がTop500で4冠を達成したことです!

www.apple.com pc.watch.impress.co.jp

この2つはどちらもARMというCPUアーキテクチャをベースにしています。

そしてARMはiPhoneをはじめとするほぼ全てのスマホで採用されているため、世界最速のスパコンで使われているCPUであると同時に数百億台以上のデバイスで動作するまさに最強のCPUなのです! MacIntelのCPUから乗り換えても安泰ですね!

と、言う気持ちにもなるかもしれませんが本当にそうでしょうか? 今回はその辺も含めて少しARMに関して語ってみたいと思います。

ARMはCPUそのものでは無く命令セット(ISA)

CPUというとIntelCore i7/XeonAMDRyzen/EPCYが有名ですがARMはそれらとは少し違います。ARM自体はARM社が設計しライセンスしている命令セット・アーキテクチャ (ISA)です。Core i7Ryzenは具体的なCPU製品です。

ISAとはマシン語で利用するCPUのAPIです。つまりISAが同一であればOSやその他のソフトウェアからは同じCPUとして見えます。逆に実際のCPUの実装はマイクロアーキテクチャと呼びます。そのため一口に「ARM CPU」といっても様々な実装があります。これは同じx86命令セットを採用する初代Pentiumと現在のCore i7が全く違う実装なのと同じです。

これが何を意味しているかというと、スマホに使われているA12やSnapdragonと富岳に使われているA64FXは異なるマイクロアーキテクチャを採用しており全然違うCPUだということです。富岳はスマホに使われているチップを大量に乗せてスパコン1位になったわけではないですし、Macに今後採用されるCPU(A12カスタム?)がスパコンに使われているのと同等なものでもないのです。

富岳はSPARCアーキテクチャはすでに廃れていてソフトウェアスタックが貧弱なこと、Macは色々あるでしょうが少なくとも一つの理由としてiPadiPhoneと開発リソースを共有したいということからARMをそれぞれ採用したと思います。

ちなみにARM以外で有名なISAだとx86, RISC-V, Power, MIPSがあります。

ARMとライセンス

ARMの特徴的な点として積極的にライセンス販売をしていることです。通常CPUメーカーは独自のマイクロアーキテクチャとISAをセットで開発して自社か限られた企業のみで展開します。圧倒的シェアのため互換CPUが乱立したx86でさえ現在は本家IntelAMDくらいです。Power系CPUもIBMで開発されます。

一方で、ARMのビジネスモデルは大きく異なりCPUライセンスをCPUを作りたい会社に売ることで利益を得ています。カスタムのSoCを作りたいとか極端な低消費電力や性能が必要で独自のチップを必要とするケースは多くあります。ただ、ここで独自のISAを作ってしまうとコンパイラを始めとしたソフトウェアスタックをすべて独自に開発する必要があり非常に困難になります。そこで既存のISAを使い独自のマイクロアーキテクチャを使う事ができればこの問題が解決できます。ARMはまさにそこに注目してISAをライセンスするビジネスを行っています。

ARMのライセンス方式は大きく分けて以下の2つがあります。

  • Architecture License
  • Cortex License

アーキテクチャライセンスはISAのみを提供して自由にARM互換チップを作れるライセンスです。マイクロアーキテクチャをすべて自前で用意するため難易度は高いですが、自由度も高く技術力による差別化もしやすいので専用チップを作りたい場合に選びます。富士通のA64FXやMacのAシリーズ、QualcommのSnapdragon はアーキテクチャライセンスです。

Cortex ライセンスはARM社が作るリファレンス実装であるCortexをベースにカスタマイズをするライセンスです。手早くSoCを作りたい場合に有効な方式です。多くの企業はこちらを使っていると思います。

この辺りの説明はこちらの図が分かり易かったです。

ちなみにIntelもかつてはXScaleというARMチップを開発していましたし、AMDもサーバCPUブランドのOpteronの名を冠した「Opteron-Aシリース」を持っています。

ARMアーキテクチャの特徴

ARMは低消費電力向けのCPUというイメージが強いですが、それはむしろマイクロアーキテクチャに依存する部分が大きいはずです。

ISAとしては命令セットが少なくシンプルなRISCでありつつ条件実行など頻繁に使われる最低限の高度なCISC風の命令セットを採用したことが、初期段階での低消費電力かつ高性能なという特徴につながってはいたと思います。しかし、それ以上にターゲットが低消費電力だったのでマイクロコードを省いたりキャッシュを小さくしたりアウトオブオーダーやスーパースカラーといった高速化処理を省くといった実装のシンプルさがそのあたりを支えていたと思われます。

現在は様々なマイクロアーキテクチャのARMがあり高性能向けの実装のCPUも多くあります。それらのCPUも現代的なニーズとして高性能と低消費電力を両立したものが多いですが、必ずしもISAがARMだから低消費電力というわけではないと思われます。どちらかというと現在のニーズに最新の技術で1から設計した結果ではないかと。ただ、CISCであり過去のしがらみも多そうなx86よりは...ってのはあるのかもしれないです。IntelAMDが複数の向けの全く異なるマイクロアーキテクチャを同時に運用するのもしんどいので共通的な部分を増やしたいでしょうし。x86にもCrusoe/Efficeonのような例もありますしね。

現在利用されているARMは主にAArch32と呼ばれる32bitのARMv7, AArch64と呼ばれる64bitのARMv8、次世代規格のARMv9です。スマホなどではARMv8が主流だと思います。また、ARMはそれぞれのユースケースマイにプロファイルを用意しており以下のようになります。

AArch32

基本的にはRISCのため以下の特徴を持ちます。

これに加えてCISC風の豊富なアドレッシングモードを持ちます。またThumb/Thumb-2と呼ばれるよりコード効率の良い命令セットやx86のSSEのようなSIMD拡張命令であるNEONを持ちます。

AArch64

AArch32から命令セットを大きく刷新しています。基本的には汎用レジスタが64bitになったことが最も大きいと思います。ただし、命令長は32bitです。また、歴史の積み重ねで不要になった条件付き実行などの命令セットも多くが削除されており効率かつスッキリとした実装に変わったようです。SIMD命令もNEON改ASIMDとして強化されています。

ARMv8は従来の32ビット命令を全てサポートしているので、x86-64と同様に32bit OSや32bit アプリケーションを動作させることができます。また、サーバ用途を見据えているためVT-xのような仮想化支援機能もついています。最近はAI支援()、セキュリティ機能も強化されているようです。

そして、HPC向け限定ですが富士通と共同開発したScalable Vector Extension (SVE)もSIMD命令として追加されました。用途が違うので当面の間ASIMDとは共存していく関係のようです。

ARMv9ではセキュリティの強化、マトリックス演算/ベクタ演算の強化、メニーコアを見えたトランザクショナルメモリ対応、カスタム命令セットなどが予定に上がってるようです。

AArch64の特にAプロファイルはIntel/AMDにも負けないかなり高機能な命令セットであることがわかります。

代表的なARM CPU

代表的というか個人的に気になってるCPUを書いていきます。趣味の問題でサーバ用とが多めです。

Cortex-X1

CortexはArm社のリファレンス実装です。Cortexシリーズは汎用用途とされていますが、実際問題ARMの利用は基本的にスマホなのでサーバ向けというよりはスマホ向けのCPUになります。X1はその中でも最新のCPUとなります。

まず5nmという驚異的なプロセスが目を引きますね。CPUはプロセスを微細化することで小さくできますし結果として同一面積での処理能力を向上させることができます。

マルチコアはヘテロジニア戦略で異なる世代のCortexや性能の違うコアを複数配置することで全体的な性能と消費電力のバランスをとるBigコアとLITTLEコアを採用しています。

また、X1に限らず最近のCortexは分岐予測機構やスーパースカラはもちろん複数の命令を融合させて実行効率をあげるフューズドMicro-OPsもサポートします。この辺はIntelAMDが使ってる高速化技術と同様のものですね。

ref: 5nmプロセス向け。性能が2割向上したArm「Cortex-A78」 ~新フラグシップGPU「Mali-G78」なども - PC Watch

Snapdragon XR2

QualcommのSnapdragon XR2はVR(仮想現実)やAR(拡張現実)などのXRプラットフォームをターゲットにしたSoCです。

XR2はSnapdragon 865をベースにしています。865は7nmのプロセスルールで製造されていて、CPUがKryo 585、GPUがAdreno 650となります。Kryo 585はCortex-A77/Cortex-A55をベースにしていて、big.LITTLEを採用した8コアのCPUです。クロックは2.84GHz、L3キャッシュが4MBとなかなかのスペックです。

Geekbench 5の結果は以下となります。

CPUマルチコアシングルコア
Snapdragon 8653450900
Intel Core i5-8250U3200750

ref: 【6/14最新】Geekbenchスコア、スマホSoC別総まとめ | telektlist

モバイル向けとはいえCore i5TDP 15W、Snapdragon 865はおそらく7WなのでそれでPC向けのCPUよりスペック高いとは恐るべし。

DSPのHexagonはディープラーニングの推論向けの機能も強化していて、さすがにPC向けのRTX 2050には敵わないけど15 TOPSと結構な性能が出るみたいです。

チップINT8(8ビット整数演算)
Hexagon15 TOPS
GeForce RTX 205048 TOPS

Apple A13

Apple A13 Bionicは所謂Appleシリコンですね。天才プロセッサデザイナーのジム・ケラーがA4,A5をデザインした事でも有名ですね。

ARMv8.3-AベースですがマイクロアーキテクチャはCortexとは完全に別物と思われます。CPUは2.65 GHzで、big.LITTLEを採用し2つの高性能コア(Lightning)と4つの高効率コア(Thunder)の合計6コアのCPUとなります。

Geekbench 5の結果は以下となります。シングルコア性能はSnapdragon 865を超えていますね。Macに搭載された場合はTDPの制約も減るでしょうからどこまで性能が伸びるかも気になります。

CPUマルチコアシングルコア
Apple A13 3400 1330
Intel Core i5-8250U3200750

ref: 【6/14最新】Geekbenchスコア、スマホSoC別総まとめ | telektlist

また、DSPとは別にNPUと呼ばれるDP推論用のチップも積んでいます。でもその割には1 TOPSしか性能がなくてだいぶしょぼく感じるのだけど、整数演算とは別の部分を強化してるかもしれない

チップINT8(8ビット整数演算)
Apple A131 TOPS
GeForce RTX 205048 TOPS

A64FX

富岳に乗ってる富士通製のSoCです。CPUは1.8GHz の48コアです。一気にコア数が増えましたね。

スパコン向けだけあってモバイル向けのCortex等とは根本的にマイクロアーキテクチャが違います。というか、ほぼほぼ京でも使われているSPARC64と同様のようです。

f:id:pascal256:20200628114658p:plain

というのも富士通ではメインフレーム、UNIX サーバ、スーパーコンピュータでマイクロアーキテクチャを共通化させています。UNIX サーバ及び京などのスパコンはSPAC、メインフレームは独自のISAです。別のISAやチップ自体のカスタムはしつつもベースのマイクロアーキテクチャは共通化することで品質の安定とコストダウンをはかっているようです。今回もその戦略にのっとり富岳はARMのISAを使いつつも既存のSPARC64やGS21と同様のマイクロアーキテクチャを採用していることになります。x86系CPUがすでにCISCでも何でもないように現代ではISAは飾りという印象が強いとはいえ、単一のマイクロアーキテクチャで複数のISAをサポートするのはなかなかユニークな戦略だと思います。今後、RISC-Vとかが仮に普及してもそのまま対応できますしね。

f:id:pascal256:20200627234740p:plain ref: 富士通ではメインフレームUNIX サーバ、スーパーコンピュータでマイクロアーキテクチャを共通化

なので、A64FXは完全に富士通設計なので他のスパコンIntelAMDのCPUを使ってるのとはわけが違います。賛否はあるにしてもそこは大事です。

続いて性能をみていきましょう。

このサイトを見る限りだと富岳の2.7 TFlopsはEPYC 7451が0.9 TFlopsなのでCPUとしては桁違いに速いけど、V100の7.8TFlopsよりは遅いからGPU程ではないって感じです。ただし、A64FXというか富岳の真骨頂は15万8976個のCPU、コア数にして730万コアという意味のわからない数を使った超並列処理です。これは2位のSumitが240万コアのPower 9を使ってるのと比較しても極端に多い数字に見えます。そして他のスパコンと違ってGPUなどのアクセレラレータを使ってないのが最大の特徴になります。そのため、OpenMPなどで普通に並列化できます。SIMDへの最適化はもちろん必要でしょうけど、CUDAなどの特殊なプログラミングはいらないのです。

f:id:pascal256:20200628114801p:plain

これが「プログラミングが簡単」と散々言われてる理由ですね。単純にそれなりに速いCPUがものすごくたくさんあるだけという構成なんです。そしてこの構成を支えるためにTofu-Dという超低遅延のインターコネクトと1TB/sというメモリバンドを実装しています。

また、ベクトル演算のために512bitのSIMDであるScalable Vector Extension (SVE)も実装しています。SVEはArm社と共同開発した標準仕様なのでJEP 338: Vector API (Incubator)とかGCCにも取り込まれているのがポイントです。仮に富士通の独自仕様としていたらこの辺のアップストリームへの取り込みは難しかったかもしれません。

A64FXや富岳についてはいろんなところで情報が出ているので見てるとなかなか楽しいです!

ちなみにA64FXを搭載したマシンですが、実は1ノード400万円くらいから買えるようですw www.hpc.co.jp

スペックシートを見ると空冷で2Uの普通のラックのようなので、メニーコアでメモリ帯域が極太なArmサーバとしても買えるお値段な気はします。Dellですら48コアとか160万円くらいはするわけで。最低4ノードでログインノードも追加でいるみたいなので2000万円くらいは実際かかるにしても考えれるお値段。Javaとか普通に動くみたいだからSparkとかCoherenceとか無駄に入れてみたいw

富士通は国内では数少ない世界レベルのHPC/ハイエンドサーバ向けCPUを開発できる会社なので、今のARMブームと富岳の実績で是非世界展開して欲しいです。メガクラウドに売れればワンチャンなんだけど、商売下手だからな。。。この会社。

AWS Graviton

GravitonはAWSのEC2で利用できるサーバ向けARM CPUです。CortexではなくNeoverse N1というサーバ向けのIPをベースにしています。

v1は低スペック向けとして登場させましたが、Graviton 2は性能を大幅に強化しデータベースのような重たいワークロードも含めてArm v8.2準拠で開発されています。int8/fp16もサポートしているためAI分野のCPUとしてもそれなりに期待が持てます。

f:id:pascal256:20200628115401p:plain

EC2で選べる構成は以下の通りです。

  • 汎用 (M6gおよびM6gd):仮想CPU数最大64、メモリは最大256GB
  • コンピューティング最適化 (C6gおよびC6gd):仮想CPU数最大64、メモリは最大128GB
  • メモリ最適化 (R6gおよびR6gd):仮想CPU数最大64、メモリは最大512GB

最大の特徴はSMT、つまりハイパースレッディングが無いことです。そのためこの64コアは全て物理コアとなります。SMTは完全なコア分離では無いので適切なパフォーマンスが出ないこともあります。それが全て物理でこのコア数というのは中々面白い作りですよね。また、8.2準拠なのでセキュリティ機能のTrustZoneも備えます。これによりデータを暗号化したままメモリに保持することができます。

クラウドで動くことの多いWebアプリケーションなどはCPUを気にした実装をしていることはほぼ無いでしょう。そういったニーズに低消費電力で高性能なARM CPUがいい感じにマッチする訳ですね。

ちなみに一番恐ろしいのは「彼らはGravitonをどこにも出荷していない」ということです。これは自分たちで消費するだけでCPUの開発コストはペイするという意味です。GoogleをはじめとしたメガクラウドがDC内で使うチップを自作しているのは有名な話ですが、その辺を改めて意識させられるエピソードでした。ユーザに提供するI/Fさえ変えなければクラウドベンダーは膨大なコンピュートリソースを好きに組み替えれるので、今後は彼らが市場のプレイヤーになってきます。他の企業の動向も気になりますね。

Ampere Altra

ARMベースのメニーコアのAmpere Altraです。大変ややこしいですがNvidiaの新GPUのAmpereとは何の関係もありません。紛らわしい。。。

www.youtube.com

gigazine.net

AmpereはAltraを世界初のクラウドネイティブプロセッサと呼んでいます。クラウドネイティブプロセッサはクラウドのワークロードに合わせて「予測可能な性能」「ハイパースケール」「低消費電力」を上げています。確かにどれもクラウドでは重要な要件です。

まず予測可能な性能とハイパースケールを実現するためにAltraは3GHzの80コアのCPUです。Gravitonと同じくSMTを使わずに実現しています。AMD EPYCですら64コアなのでヤバイですね⭐︎

Garvition同様にARMv8.2準拠です。AltraもNeoverse N1をベースにしているので基本的な設計は似ているのだと思います。

2基の128bitのSIMD、各コアに1MB大きなL2キャッシュメモリとチップあたり32MBのL3キャッシュ、AI向けに8bit整数と16bit浮動小数の強化、メニーコアに強いインターコネクトのメッシュ構造、セキュリティ機能とサーバ向けとして十分なスペックを持っています。

f:id:pascal256:20200628115119p:plain

そして、このコアではシングルスレッドのみが動作することを強調して説明しています。SMTを使わないのでクラウドや仮想環境で起こりやすいノイジーネイバー問題を極力減らすことができますし、Spectre/Meltdownのようなサイドチャネル攻撃にも強くなります。また、性能面でもクラウドのようなマルチテナンシなワークロードではキャッシュの効果も薄いためHTは性能劣化に繋がるという点を強調しています。また、HTを持たない分IO Waitを減らすためにキャッシュ周りを強化していると思われます。これは確かにクラウド環境を意識したCPUと言えるでしょう。

現段階でもEPYC 7742に匹敵、あるいは部分的には超える性能を発揮します。消費電力周りもいろいろ考えられていて、2020Q4か2020の早くには Ampere Altra Maxという128コアのCPUも予定されています。ヤバイですね⭐︎

Marvell ThunderX3

MarvellはThunderXというARM CPUを作っている会社です。元々、Caviumという会社で開発されていましたがMarvellに買収されました。現在の最新版はThunderX2です。

jp.marvell.com

ThunderX2は既に出荷されているサーバ向けARMなので最も入手しやすいでしょう。クロックは 2.5 GHz から 3.0 GHz。1コア4スレッド、最大32コア搭載可能ということでワンチップで128スレッドが動作します。スレッド数でみれば EPYC 7742と同じですね。発売日はもっと前ですが。ARMv3.1準拠となります。ちなみにHPEの次世代メモリドリブン型コンピュータ、所謂 the Machineのデモ機にも使われています

また、第三世代としてThunderX3もアナウンスがされました。

www.anandtech.com

これは96コア、384スレッドという他社の追従を許さない圧倒的なメニーコアを実現します。またアーキテクチャバージョンもARMv8.3+になります。サンプル出荷は2020Q4頃と言われています。 現時点ではあまり詳細はあまりありませんが、ThunderX2の方向性を正統進化させたものになるようです。特にSIMDの強化で浮動小数計算が向上していてHPCやAIをある程度見据えた結果かもしれません。

f:id:pascal256:20200628102036p:plain ref: Marvell ThunderX3 Arm Server CPU with 768 Threads Per Node in 2020

ThunderXシリーズの最大の特徴は先ほど紹介した2つのCPUとは異なりNeoverse N1では無いので、SMTが可能なことです。これはむしろNeoverse E1に近い構成です。

ハイパースレッディングのメリットはI/O待ちで発生するストールと呼ばれる空き時間を削減することです。見かけ上の数を増やして待ち時間でパイプラインの空いてるところを埋めてコアの効率性を高めることが基本的な目的になります。

ThunderXでは現在のワークロードはI/Oヘビーのものが多くCPU律速になることは少ないのでHTを4つ持つことで性能を上げるという戦略をとっています。クラウドネイティブなアプリケーションは小さなワークロードの集合なのでCPU性能を上げるより数をこなせることがスループットの向上になるというコンセプトです。

これはNeoverse N1を選択した先の2つのCPUが述べるようにマルチてナンシーのワークロードではセキュリティや性能の面で不利になるケースもあります。なので、ThunderXは単純にIaaSの基盤というよりはある程度上で動くワークロードが占有される大規模アプリケーション、例えばHPCやビックデータ処理、あるいはSDN/NFVなどのネットワーク基盤をターゲットにしてるのでは無いかと予想されます。

ちなみに2020/06のTop500にはA64FX以外では唯一のノミネートとなります。

Astra - Apollo 70, Marvell ThunderX2 ARM CN9975-2000 28C 2GHz, 4xEDR Infiniband | TOP500

HPEにより開発されたAstraは1.8 PFlopsと上位陣に比べると100倍以上性能が低く見えますが、それでも244位と真ん中くらいの性能は維持しています。この辺りのレンジのHPCは構成要素がサーバとも近いので、立ち位置としては悪く無いのでは無いかと思います。

Opteron(K12)

Opteron(K12)はAMDの次世代ARM CPU(2017年当時)です。2017年には出る予定でしたが未だ姿を見たものはいません。

既に、Opteron A1100としてサーバ向けチップは持っていますが、これはCortex-A57をカスタマイズしたものです。K12はマイクロアーキテクチャを刷新すると言われておりRyzenやEPCYにも利用されているZenアーキテクチャが使われる予定だったという噂です。

つまり、x86とARMのISAで同じマイクロアーキテクチャを使う見込みだったわけですね。実現していれば富士通の戦略とも似て居てとても面白いと思います。

歴史の結果としてはRyzenとそのサーバブランドであるEPYCが馬鹿売れしたので、リソースの選択と集中の観点からもK12は無くなってしまったようです。他のARMチップとはマイクロアーキテクチャが大きく異なる可能性があったので、ちょっと残念ですが、また構想が復活してくれる事を祈ります。

ARMの今後とサーバ向け需要

ARMはスマホ市場は既に制しており、ここには大きな成長は無いと言われています。そのため、サーバ市場やHPC市場、あるいはノートパソコンやPCに可能性を見出しています。

歴史に的にこの挑戦は何度かされましたが、結果としては大きな成功は得られていません。ノートパソコンもChromebookNetbookで多少の市場はあるもののChromebookですらハイエンドはIntel CPUです。

ただ、ソフトウェアスタックの進化やクラウドの推進によりCPU ISAの価値は大きく変わりました。いまはItaniumが出た時代とは違います。AWSという巨大市場で性能の高いサーバ向けARMがサポートされた事も大きなターニングポイントです。Macのアップルシリコンや実はこっそり出てるSnapdragon対応のWindowsマシンがハイエンドでもARMという事を後押ししてくれます。富岳のスパコンランキング世界一という実績も低スペックへの懸念を払拭してくれるでしょう。

というわけで、今はかつて無いほど流れは来ているので、このままPC及びサーバ向けの市場に広がるかが今後の分水嶺になるかと思います。

今後、サーバ用途にも少なからず入ってくればARMの未来も明るいですが、RISC-VやオープンソースとなったMIPSも控えています。x86からARMに切り替える事ができたらば、その他のCPUに切り替えることも出来てしまうので今後がどうなっていくか本当に楽しみです。特に富士通のA64FXは日本発のCPUということもあるし、スペックは高そうに見えるのでHPC以外にも売れてくれないかなーと個人的には興味津々です。

まとめ

ARMがスパコン市場でもPC市場でもIntelの牙城を崩しつつあるのはは本当にすごい事だと思います。特に富岳が1位を取れたのが嬉しくて勢いで記事をまとめて見たのですが、結構調べながら書く事が多くて思いの外時間を使ってしまいました。結果的にARMの勉強になったので良かったです。

ちなみに、組み込みからスパコンまで使われてるARMアーキテクチャですが、他にも同じように広範囲に使われてるCPUアーキテクチャはあるでしょうか? 実はあるんです。それはx86MIPSとPowerです。有名どころって大体そうなんですよね。みんな同じアーキテクチャでどこまで行けるかという勝負になるので、シェアの大小はあっっても実績だけは少なからずあったりします。

それではHappy Hacking!

参考:

IPAのデータサイエンティスト スキルチェックリストを読んでみたらとても良かった

はじめに

Twitterにも呟きましたが、IPAITSS+にあるデータサイエンティスト スキルチェックリストを読んでみたら思いの外よかったので紹介記事を書いてみます。

なお、私自身はデータサイエンティストでもデータエンジニアでも特に無いので中の人から見たら現実と相違してるとかはあるかも。

何が良いの?

そもそもこのチェックリストの何を私がそんなに称賛してるかなのですが、みなさん「データサイエンティスト」ってどんな職種だと思いますか?

AIを使いこなして会社の課題を解決する人ですか? データを分析してダッシュボードにする人ですか? データを集計したりビックデータ処理基盤を作る人ですか? あるいはアルゴリズムの研究者ですか?

たぶん、どれも正解です。今の所データサイエンティストはAI/ML/BIに関わる全てを含んで使われることが多いと感じるので、実際の定義はお「そう思うならそうだろ、おまんなかではな」状態です。

そこが曖昧なせいで、周りにもデータサイエンティストになりたいとか雇いたいと言う話もあり、それが叶ったのも見たことがあるのですが求める実際のスキルや働き方が違い不幸になった結果も知っています。

なので、自分が話すときにはせめてアナリスト(ビジネス分析)なのかサイエンティスト(アルゴリズム系)なのかエンジニア(基盤系)なのかは分けて話してましたがオレオレ定義なので定義から説明が必要なことも当然しばしば。

で、たまたまこう言うのあるよと言われて見つけたのがITSS+データサイエンティスト スキルチェックリストです。

このチェックシートの良いところは図のようにデータサイエンティストの領域をフェーズ分けして可視化した上で、チェックシートではデータサイエンス力、データエンジニアリング力、ビジネス力 を大項目としてカテゴライズしていることです。

f:id:pascal256:20200524163645p:plain ref: ITSS+/「データサイエンス領域」 タスク構造図(中分類)

これによってフワッとしてた「データサイエンティスト」の人物像を明確にし、どのフェーズを動かす人間が必要でそれにはどのスキルセットが必要かがクリアになります。

スキルレベル判定基準

スキルセットは以下のような方法で評価していくようです。判定方法は各項目を何%満たしてるかでチェックするようなので機械的で良いですね。各領域に求められる詳細な説明もPDFにはきちんと載ってますので要参照。

  1. Senior Data Scientist(業界を代表するレベル)
  2. Full Data Scientist  (棟梁レベル) 
  3. Associate Data Scientist(独り立ちレベル)
  4. Assistant Data Scientist (見習いレベル)

スキルカテゴリ一覧

データスキルチェックリスト自体はこちらにありますが、PDFにあるカテゴリの一覧だけ参考に転載しておきます。 チェックリストは膨大なので読むの大変ですが、そもそもどんなこと書いてあるかはこちらのカテゴリ一覧で雰囲気掴めるかと。

カテゴリ ID サプカテゴリ 項目数
データサイエンンス力 1 基礎数学 24
2 予測 23
3 検定/判断 7
4 グルービング 12
5 性質・関係性の把握 15
6 サンプリング 5
7 データ加工 15
8 データ可視化 38
9 分析プロセス 4
10 データの理解・検証 23
11 意咲合いの抽出、洞察 4
12 機械学習技法ー 39
13 時系列分析 9
14 言語処理 16
15 画像・動画処理 10
16 音声/音楽処理 6
17 パターン発見 3
18 グラフィカルモデル 4
19 シミュレーション/データ同化 5
20 最適化 9
デークサイエンスカ項目数 271
データエンジニア力 1 環境構 28
2 デーク収集 18
3 データ構造 11
4 データ蓄積 18
5 データ加工 14
6 データ共有 15
7 プログラミング 24
8 ITセキュリティ 16
データエンジニア力項目数 144
ビジネスカ 1 行動規範 15
2 契約・権利保護 9
3 論理的思考
4 着想・デザイン 7
5 課題の定義 17
3 データ入手 3
7 ビジネス観点のデータ理解 6
8 分析評価 3
9 事業への実装 7
10 活動マネジメント 30
ビジネスカ項目数 113
スキル項目数合計 52S

使い方

個人的にはまず自社が必要としているデータサイエンティストのスキルを自分たち自身が理解するために利用することが第一でしょう。時間と予算が無限にあるならば全てを100%満たせる超人を揃えることも夢では無いかもしれませんが、時間と予算には限りがあるので大抵は夢です。

なので、そもそもどう言うスキルセットの人間が必要なのか? どのタイプのスキルは社内人材で転用できそうなのか? どのスキルは外部から新規雇用をするのか? どのスキルは外注するのか? など人事/採用的には考える必要がありますよね。

特に「最初の一人目」は薄くても良いので全領域、特にビジネス力が必要です。プラットフォームが「あれば」データが分析できる人間も、エンジニアリングだけができる人間も最初の一人目としては厳しくて、それらが見よう見まねで良いからできてビジネス側と会話してソリューションに落とし込める人間が必要です。もちろん、最初からチームを組んで分担できればなお良いですね。

だいたい不幸になるケースは最初の一人目にそもそも自社にデータ分析基盤が無いのにサイエンティストを雇うとか、データエンジニアだけ雇って基盤は作ったけどこのあとどうしよう? となるパターンです。こういったフレームワークを活用すればそのような不幸なミスマッチを避けやすくなります。

こうして採用戦略/育成戦略を立てやすくなるのが企業側のメリットですね。

もちろん、被雇用者側にもメリットはあって自分のスキルを可視化する事でどこを伸ばしていくのか、どこを強みとして押していくのかを整理してキャリアパスを作りやすくなります。

こう言ったみんなで共通の認識を作るという点に関してはIPAのような公の機関が出してる「標準」あるいは業界団体やベンダー/コンサルが作ったフレームワークが役立ちます。

まとめ

「標準」と聞くとやっぱりプロセスが重いとか古臭いとかで軽視しがちな所もありますが、IPAITSSにしろ共通フレームワークにしろカスタマイズするにしても軸として採用しとくと色々便利だったりはします。

特に、スキル分類とかは自社や自分自身で組み上げたオレオレ定義を使うよりは、ある程度大きな団体が作り普及した標準ないしはデファクトスタンダートを採用する事でスキルの可視化やコンバートがしやすくなり評価や採用/転職に活用しやすくなるので積極的に使いたいですよね。

とはいえ、ITSSv3 個人的にはちょっとだけ古いとやはり思うのでITSS+に書かかれてる内容やDEVOPS, クラウドインフラ, スマホアプリ開発などある程度トレンドを反映したv4をそろそろ作ってくれないかなと期待する今日この頃です。

それではHappy Hacking!

参考

Microsoft Build 2020に参加してきた

実は去年に引き続き、なのですがMicrosoft Build 2020に参加してきました。 と言っても今年はコロナの影響でオンライン開催。

f:id:pascal256:20200521153350p:plain f:id:pascal256:20200521153313p:plain f:id:pascal256:20200521153210p:plain

初の大きなオンラインイベントということもあり、48時間耐久レースということもあり、なかなか楽しめました。とりあえず自分のツイート+αをまとめてみました。 togetter.com

今回は大手のオンライカンファレンスという事でTeamsやSkypeを駆使ししたセッションになってるのが印象的でした。MSだからZoomではないのですw

Hanselmanとゆかいな仲間たちのデベロッパーキーノートは内容ももちろんですがWFHのネタがいっぱい散りばめられてて面白かったですね。キーノートの最中に子供が映り込んだり、自分をバーチャル背景に写してこっそり休憩したりw

キーノートに関しては下記のブログが爆速でまとめられています。

blog.azure.moe

個人的にはWSL2が思った以上にマイクロソフトの中で基本的な開発ツールチェインとして組み込まれたことですね。Visual Studioとかともきっちり統合されています。

あと、Windows Terminalの正式リリースやパッケージマネージャであるwingetも大きいですよね。最近気になってるPowerAppの話も聞けてよかったです。

Daprを今までIstio的なものと思ってたのですが、それとも少し違いそうなので少し触ってみたいとも思いました。

JavaGCPがメインなのであまりMicrosoft製品をガッツリ使うことは少ないのですが、やはりこういうセッションを聞くと楽しくなりますねー。情報盛り沢山でBuildは良い。。。

コロナの影響下でみんな大変ですが、こうしてカンファレンスにオンラインでも参加しやすくなったのはメリットですね。次はGCPNext OnAir2020かな。

それではHappy Hacking!

参考:

DockerでCucumberのQuickstart環境を作ってみた

はじめに

BDDなe2eテストと言えばやはりCucumberですよね。

Gherkinを使って自然言語のようにテストケースが書け、具体的なステップをRubyJavaで書けるので非常に便利です。

今回、久方ぶりにCucumberを使う必要がありそうなので便利そうな設定をいくつか入れてDocker化しておきました。これでRubyとかが入ってない環境でも問題なく利用できます。

今回実施してる設定は以下の通り

  • ChromeのHeadlessモードを使ったテスト
  • デバッグ用にオプションで指定したらChromeGUIモードで起動するように設定
  • テストに失敗したら自動的にスクリーンショットをとってテストレポートに含めるように設定
  • Dockerコマンドのラッパースクリプトとしてqcmbコマンドの作成

以下のGitHubリポジトリに置いてあるのでCloneすれば使えます。Chromeを使ってるのでJSやCSSを実際と違う形で解釈したりレンダリングしないので安心感がありますよね。

github.com

使い方

テストの実行

とりあえずcucumberを実行するなら以下のコマンド。featuresディレクトリ配下のテストを実行.

qcmdは単にDockerのラッパーコマンドで実際はdocker run -it --rm -vpwd:/usr/src/app koduki/cucumber cucumberを実行しています。

$ ./qcmb

標準出力ではなくHTMLでレポートが欲しい時は下記のようにCucumberのコマンドを実行。出力先はreportを前提にいくつかの設定がされているので注意。

$ ./qcmb --format html --out report/index.html 

テストが失敗した時のスクリーンショットも上記のreportディレクトリに出力されます。

ディレクトリを削除したい時はcleanを実行

$ ./qcmb clean

GUI mode で起動

CI/CDで利用することを考えるとヘッドレスモードがベストなのですが、たまにデバッグGUIモードでChromeを立ち上げたい事もあります。

DockerはCLIベースの環境ではありますが、LinuxなのでX11をホスト側に飛ばすのは簡単にできます。

Macでの準備

MacX11とProxyをインストールします。

$ brew install socat
$ brew cask install xquartz

Xquartzを起動してXteam を xquartz上で開きます。

open -a XQuartz 

パーミッションを許可してProxyをXteam上で起動します。

$ xhost + 
$ socat TCP-LISTEN:6000,reuseaddr,fork UNIX-CLIENT:/tmp/.X11-unix/X0

qcmbコマンドの--Xheadless=falseオプションを指定して起動します。スクリプトの中で環境変数DISPLAYにホストマシンのIPアドレスなどを連携しています。

$ qcmb --Xheadless=false

設定の解説

support/env.rb

Docker内だとChromeを実行しようとするとDevToolsActivePort file doesn't existが出ます。そのため--no-sandbox を有効にする必要があります。 また、環境変数に応じてHEADLESSモードとGUIモードのそれぞれが選べるようにしています。

require 'capybara/cucumber'
require 'webdrivers'

Capybara.register_driver :docker_chrome_headless do |app|
  browser_options = ::Selenium::WebDriver::Chrome::Options.new
  browser_options.args << '--headless'
  browser_options.args << '--no-sandbox'
  browser_options.args << '--disable-gpu'
  browser_options.args << '--window-size=1920,1080'
  Capybara::Selenium::Driver.new(
    app,
    browser: :chrome,
    options: browser_options
  )
end

Capybara.register_driver :docker_chrome do |app|
  browser_options = ::Selenium::WebDriver::Chrome::Options.new
  browser_options.args << '--no-sandbox'
  browser_options.args << '--disable-gpu'
  browser_options.args << '--window-size=1920,1080'
  Capybara::Selenium::Driver.new(
    app,
    browser: :chrome,
    options: browser_options
  )
end

def driver
  is_no_headless = ENV["CHROME_NO_HEADLESS"]
  if is_no_headless then :docker_chrome else :docker_chrome_headless end 
end

Capybara.configure do |config|
  config.default_driver    = driver()
  config.javascript_driver = driver()

  config.app               = nil   
  config.run_server        = false
end

support/screenshot.rb

Cucumberのテストが失敗したときに自動でスクリーンショットをとってテストレポートに埋め込むようにしています。

そもそもsupport配下にあるRubyスクリプトは名前に関係なく読み込まれます。これを利用してこの中にフックポイントであるAfterを追加してシナリオ終了後の動作を記述します。 あとは見た通りですがシナリオが失敗したときに、スクリーンショットをとってレポートに埋め込んでいます。

After do |scenario| 
    if scenario.failed? 
        path = "report/#{scenario.__id__}.html"
        page.driver.browser.save_screenshot(path)
        embed(path, "image/png")
    end 
end%

例: テストレポートとスクリーンショット

f:id:pascal256:20200507092702p:plain

まとめ

かなり久しぶりのCucumberだったので結構調べながら作りました。

Cucumberは10年経ってもやはり現役で多少は競合はあるものの圧倒的なシェアは流石ですね。Gherkinは仕様記述言語とまでは言えないもののログインとかの動作の意味が厳密に定義されるので自動テストをしなくてすら有用な文法だと思います。この手のツールを使ってテストケースと実際の自動テストの実行の解離が小さくなることがやはり良いですよね。

それではHappy Hacking!

参考リンク