シンギュラリティ実験ノート

購入した1000ドルPCで何がどこまでできるのか実験した記録です。

ミニPCでハイエンドPCVRは動くか

先日の記事で高性能な1000ドルPCであれば、ハイエンドの性能は無理でも、PCVRがある程度動きそうだ、ということを書いた。そうは言ってもやはりハイエンドの性能が欲しいとなった場合にどのような選択肢があるか、調べたことをメモしておきたい。

なお、ここでの情報はミニPC好きの私の個人的趣味が前提条件となっている。予めご理解いただきたい。

 

GPD G1 2024

いわゆるeGPUボックスであるが、非常にコンパクトな製品だ。OCulinkかUSB4でPCと接続する。私のUM790 ProにはOCulinkポートはないので、USB4での接続となる。

  • 搭載GPUAMD Radeon 7600M XT(AtomMan G7 Pt と同じ)
  • 浮動小数点演算性能:20.23TFLOPS(FP32)
  • 価格:108,800円(税込)
  • 本体サイズ:縦225 x 横111 x 厚さ30mm

YouTubeのレビュー動画を見ると、確かにハイエンドの性能が出ているようだ。私のようにPCは持っているがGPU性能が少し足りないという場合は最善の選択肢であろう。

 

 

AtomMan G7 Pt

先日の記事で紹介したMINISFORUMの最新機種 AtomMan G7 Pt もメモしておく。

  • 搭載GPUAMD Radeon 7600M XT
  • 浮動小数点演算性能:20.23TFLOPS(FP32)
  • 価格:1200ドル(日本円では207,180円)
  • 本体サイズ:縦268×横153.5×厚さ61mm

販売予約中だが、YouTubeにレビュー動画が上がっていた。

 

www.youtube.com

 

Atomman G7 ti

AtommanとはMINISFORUMのハイエンド製品のシリーズ名のようだ。2024年6月のCOMPUTEX TAIPEI では「Atomman G7 ti」がお披露目されていた。今回、「AtomMan G7 Pt」が予約販売開始となったが、こちらももう少しすると販売開始になるのではないか。

  • 搭載GPU:Geforce RTX4060
  • 浮動小数点演算性能:15.11TFLOPS(FP32)
  • 価格:不明
  • 本体サイズ:不明

トータル性能ではAMD Radeon 7600M XTと同程度かそれ以上かもしれないが、私はついFP32で性能を比較してしまうので、このGPU性能では購入意欲は湧いてこない。

 


ASUS ROG NUC

ASUSから小型ゲーミングPCが発売された。

  • 搭載GPUGeForce RTX 4070 Laptop GPU
  • 浮動小数点演算性能:29.15TFLPOS(FP32)
  • 価格:2199ドル(約35万5600円)
  • 本体サイズ:縦270mm×横180mm×厚さ50mm

Atomman G7 ti もこれくらいのGPUを搭載してほしい。ドル価格で見ると妥当な気もするが、円価格を見ると私には手が出せそうにない。

 

gigazine.net

 

まとめ

ミニPCでも20万円ほどの出費でハイエンドなゲーミングPCが手に入る時代になったようだ。

まだVRを体験していないので、私にハイエンドなPC環境が必要なのかも分からない。近い内にVRヘッドセットを購入したいと思っているので、自分のためのメモとして残すことにした。

カーツワイル氏氏は、「シンギュラリティは近い」の中でVRについてこう予測している。

2020年までに完全没入型の視聴覚バーチャル環境の中で体をすばやく変化させられるようになるだろう。そして2020年代にはあらゆる感覚と結びついた完全没入型のVR環境の中で変身できるようになる。そして2040年代には現実世界でそれが可能になる。

現在は、カーツワイル氏の言うところの視聴覚バーチャル環境のレベルであり、今後はもっと凄いことになっていくとカーツワイル氏は予測している。カーツワイル氏の予測について書き始めると長くなるので、ここでは書かない。

今後のVRの凄い進化に着いていくために、今の内からVRを体験して慣れておきたい。

 

1000ドルPCでPCVRはまともに動くか

VRVirtual Reality)を私はまだ体験したことがない。VRを体験しようとすると、まずはVRヘッドセット(MetaのQuest3など)が必要になる。VRヘッドセット単体で動くアプリもあるが、よりリアルな体験をしようとすると高機能なPCとの接続も必要になってくる。PC上のVR環境、いわゆるPCVRである。このPCVRを動かすには、高価なゲーミングPCが必要で、最高性能を求めるなら価格的には30万円、最低でも20万円くらいのPCが必要と言われている。

VRヘッドセットの購入は必須条件なので仕方ないとして、PCVRをなんとか我が家の1000ドルPC(UM790 Pro)でできないものかと調べてみた。

 

Copilotに頼んで描いてもらいました

VRで体験してみたいゲームアプリ

ちなみに私が興味があるのは、世界旅行がVRで体験できるようなアプリだ。今は円安と海外のインフレでちょっとした海外旅行でも一人100万円くらいかかるらしい。VRで簡単に安全に旅行気分が味わえるなら断然お得である。

 

Google Earth VR

最も興味があるのはこのアプリだ。PCVR環境が必要になる。PC性能はもちろんだが、ネットワーク性能も求められるかもしれない。その場合、我が家のネットワークは未だに100Mbpsにしか対応していないので若干心配だ。

store.steampowered.com

 

Microsoft Flight Simulator (MSFS)

こちらも少し興味がある。海外の情報によるとUM790 ProでMSFSのPC版は30FPSくらいでなんとか動くらしい。ただし4Kのような高解像度は無理で、1080P(フルハイビジョン)くらいにおとさないといけない。これをPCVRで使うとさらに負荷は高くなるだろうからVRでは厳しいのかもしれない。

store.steampowered.com

 

そもそも私はXboxでMSFSを購入してやってみたものの、トレーニング途中で挫折した人である。水平飛行をするのにトリムというダイヤルを操作するのだが、計器が下の方にあり、Xboxではうまく操作できなかった。これがVRなら顔を下に向けるだけで計器が確認できて、もう少しうまく操作できる気がするのだが。。

 

Meta Quest Fly

UM790 ProのPCVRでMSFSが動かない場合、または私が操縦がうまくできずに挫折した場合でも大丈夫だ。PCVRなしでVRヘッドセット単体でドローンを簡単操作で飛ばせる以下のゲームがある。

www.meta.com

 

これら以外にもこんなことを楽しめるゲームがあるようだ。

  • 世界の絶景を楽しむゲーム
  • 世界の名所でフィッシングができるゲーム
  • ソロキャンプ気分が楽しめるゲーム
  • 海中でクジラなどの泳ぎを観察できるゲーム

 

VRヘッドセット

購入候補のVRヘッドセットは Meta Quest 3 128GBだ。日本価格は74,800円。米国価格は499ドルらしい。円安の影響で若干高く感じるが、MR(複合現実)も楽しめて500ドルと考えると妥当な価格に思える。

 

 

PCVR環境の種類

VR初心者なのでPCVR環境についてまず調べてみた。PCVRのプラットフォームとして大きく以下の3つがあるようだ。

  1. Virtual Desktop
  2. Oculus Air Link
  3. Steam VR

よく分からないので、3つの違いについて賢いAIの GPT-4o に聞いてみることにした。

PCVRのプラットフォームとしてVirtual desktop、Oculus Air link、SteamVRがあるようですが、それらの違いを教えて

(以下 GPT-4o)

PCVRのプラットフォームとして、Virtual Desktop、Oculus Air Link、SteamVRの3つがあります。それぞれの違いを以下に説明します。

1. Virtual Desktop
概要: Virtual Desktopは、PC上のデスクトップをVRヘッドセットで表示するためのアプリケーションです。これにより、VRヘッドセットを用いてPCのゲームやアプリケーションを操作できます。

特徴:

  • ワイヤレス接続: Wi-Fiを使用して、PCとVRヘッドセットをワイヤレスで接続します。
  • 多機能: ゲームだけでなく、映画鑑賞やウェブブラウジングなど、PCのあらゆる操作が可能です。
  • 幅広い対応: Oculus Rift、Oculus Quest、HTC Viveなど、様々なVRヘッドセットに対応しています。
  • カスタマイズ性: ユーザーが接続設定や画質などを細かく調整できます。

2. Oculus Air Link
概要: Oculus Air Linkは、Oculus Quest 2とPCをワイヤレスで接続し、PCVRゲームをプレイするための公式機能です。

特徴:

  • 公式サポート: Oculusによる公式機能であり、Oculus Quest 2専用です。
  • 簡単な設定: Oculusアプリ内から簡単に設定・接続が可能です。
  • 低遅延 高速なWi-Fi接続を利用することで、低遅延なゲームプレイを実現します。
  • 安定性: Oculus独自の技術により、安定した接続が期待できます。

3. SteamVR
概要: SteamVRは、Valveが提供するVRプラットフォームで、HTC Vive、Oculus RiftWindows Mixed Realityなど、多くのVRヘッドセットに対応しています。

特徴:

  • 広範な対応: 多種多様なVRヘッドセットに対応しています。
  • 豊富なコンテンツ: Steam上の豊富なVRゲームやアプリケーションにアクセス可能です。
  • カスタマイズ性: コントローラーの設定やトラッキングオプションなど、細かいカスタマイズが可能です。
  • コミュニティサポート: 大規模なユーザーコミュニティがあり、サポートや情報が充実しています。

まとめ

  • Virtual Desktopは、PC全体をVRヘッドセットで操作するための汎用アプリケーションであり、様々なヘッドセットに対応します。
  • Oculus Air Linkは、Oculus Quest 2専用のワイヤレス接続機能で、簡単な設定と公式のサポートが特徴です。
  • SteamVRは、Valveによる広範なVRプラットフォームで、多様なVRヘッドセットに対応し、豊富なコンテンツが利用可能です。

それぞれのプラットフォームには独自の強みがあり、用途やデバイスに応じて選択することが重要です。

 

質問してから気づいたのだが、Oculus Air Link はOculus社がプラットフォームを提供していた頃の名前で、今はMeta社に買収され、Air Link と呼ぶ。有線接続方式としてOculus Link があったが、こちらの名前は Quest Link になった。GPT-4o君はQuest2でしか動かないと言っているが、Quest3でももちろん問題ない。念の為、Quest Link についても聞いてみた。

 

PCVRとしてのQuest linkについても教えてください

(以下 GPT-4o)

もちろんです。Oculus Quest Linkについても説明します。

Oculus Quest Link
概要: Oculus Quest Link(通称:Quest Link)は、Oculus QuestやOculus Quest 2をPCに有線接続して、PCVRゲームをプレイするための機能です。これにより、Oculus Rift向けに設計されたPCVRゲームをQuestシリーズのヘッドセットで楽しむことができます。

特徴:

  • 有線接続: USB-Cケーブルを使用してPCとヘッドセットを接続します。有線接続により、ワイヤレス接続に比べて安定した通信と低遅延が実現されます。
  • 高画質: 有線接続のため、Wi-Fiに依存せずに高画質な映像をヘッドセットに送信できます。
  • 互換性: Oculus RiftストアおよびSteamVRのVRゲームに対応しています。これにより、PC用の多くのVRコンテンツにアクセス可能です。
  • 簡単な設定: Oculus PCアプリをインストールし、ヘッドセットをUSB-Cケーブルで接続するだけで簡単に設定できます。

比較
以下は、Virtual Desktop、Oculus Air Link、SteamVR、およびOculus Quest Linkの比較です。

まとめ

  • Oculus Quest Linkは、USB-Cケーブルを使用してPCとOculus Questシリーズのヘッドセットを有線接続し、安定した低遅延で高画質なPCVRゲームを楽しむための方法です。
  • 他のPCVR接続方法と比較して、有線接続による信頼性と画質の向上が特徴です。
  • Quest Linkは、簡単に設定でき、Oculus RiftストアおよびSteamVRのコンテンツにアクセスできるため、幅広いVR体験が可能です。

用途や好みに応じて、これらの接続方法を選択すると良いでしょう。

 

(手際よく4つのプラットフォームの比較表まで作ってくれた。ありがたい。)

 

PCVR環境のシステム要件

Steam VR

Steam VRのページにシステム要件の記載があった。

 

Virtual Desktop

心配なのはGPUの性能なので、その点に絞って GPT-4o に聞いてみた。

PCVRでVirtual Desktopを使用するのに必要なPCのGPUスペックを教えて

(以下 GPT-4o)

Virtual Desktopを使用してPCVRを楽しむためには、PCのGPUが一定のスペックを満たしている必要があります。以下は、Virtual Desktopを快適に使用するための推奨GPUスペックです。

推奨GPUスペック

1. NVIDIA GeForce GTX 970 / GTX 1060

  • 概要: これらはミドルレンジのGPUで、VRゲームを中程度の設定で快適にプレイできるパフォーマンスを提供します。
  • 用途: 標準的なVRゲーム体験を求めるユーザーに適しています。

2. NVIDIA GeForce GTX 1070 / GTX 1660 Ti

  • 概要: 上記のGPUよりもパワフルで、高画質なVR体験を提供します。
  • 用途: より高いグラフィック設定でVRゲームをプレイしたいユーザーに適しています。

3. NVIDIA GeForce RTX 2060 / RTX 2070 / RTX 3060

  • 概要: これらのGPUはさらに高いパフォーマンスを提供し、レイトレーシングやDLSS(Deep Learning Super Sampling)などの最新技術をサポートします。
  • 用途: 最新のVRゲームを高いグラフィック設定で楽しみたいユーザーに適しています。

4. NVIDIA GeForce RTX 2080 / RTX 3080 / RTX 3090

  • 概要: ハイエンドのGPUで、非常に高いパフォーマンスを提供します。4K解像度でのVRゲームや、非常に高いフレームレートを求める場合に最適です。
  • 用途: 最高のVR体験を求めるユーザーや、プロフェッショナル用途に適しています。

5. AMD Radeon RX 570 / RX 580

  • 概要: ミドルレンジのGPUで、標準的なVRゲーム体験を提供します。
  • 用途: コストパフォーマンスを重視するユーザーに適しています。

6. AMD Radeon RX 5600 XT / RX 5700

  • 概要: これらは高性能なGPUで、高いグラフィック設定でのVR体験を提供します。
  • 用途: よりリッチなVR体験を求めるユーザーに適しています。

7. AMD Radeon RX 6800 / RX 6900 XT

  • 概要: ハイエンドのGPUで、非常に高いパフォーマンスを提供します。
  • 用途: 最高のVR体験を求めるユーザーに適しています。

 最低要件

最低要件としては、以下のようなGPUが必要です:

ただし、これらの最低要件を満たしているだけでは、すべてのVRゲームで快適な体験ができるとは限りません。推奨スペック以上のGPUを使用することで、よりスムーズで高品質なVR体験が得られます。

 その他のシステム要件

以上のスペックを満たしていることで、Virtual Desktopを用いたPCVRの使用において快適な体験が得られるでしょう。

 

考察

GPUの機種名で◯◯以上が必要と言われてもピンとこない。浮動小数点の演算性能であるFP32で、◯◯TFLOPS以上と言ってほしい。ここではGPT-4o君の情報を全面的に信頼して、Virtual Desktopの推奨GPUスペックに挙げられているGPU演算性能理論値をネットで調べることにした。

  • ハイエンド
    • NVIDIA GeForce RTX3080  29.77 TFLOPS
    • AMD Radeon RX6800   20.74 TFLOPS
  • 高性能
    • NVIDIA GeForce RTX2070   7.46 TFLOPS
    • AMD Radeon RX5700    7.94 TFLOPS
  • ミドルレンジ
    • NVIDIA GeForce GTX1070   6.46 TFLOPS
    • AMD Radeon RX570    5.09 TFLOPS

UM790 Pro搭載のGPUである780MのFP32演算性能理論値は8.12 TFLOPSである。ハイエンドGPUとの差は歴然としているが、高性能GPUクラスの性能はありそうだ。

Steam VRの推奨スペックは意外と低めで、Virtual Desktopのミドルレンジのスペックとなっている。

そうすると、ハイエンドな表示、例えば4K解像度での表示は無理だが、フルハイビジョン(1080P)ならなんとかなるレベル、というのが私の予想である。(←本当か?)

 

Quest 3のレンズ解像度は、2,064×2,208ピクセル。両眼での解像度は4128×2208ピクセルで、いわゆる4K(3840×2160ピクセル)を超えているらしい。この性能を使い切りたければ、1000ドルPCではやはり力不足ということになる。

 

追加情報

MINISFORUMが1200ドル(日本円では207,180円)でゲーマー向け高性能ミニPC「AtomMan G7 Pt」を販売するらしい。搭載するGPUAMD Radeon 7600M XT でFP32の理論性能値は20.23TFLOPSである。これならハイエンドの性能を満たすはずだ。私のようにゲーミングPCのでかい筐体のPCを買いたくない人には朗報ではないか。

 

マキタの掃除機のバッテリーは互換充電器で充電したほうがいい

本ブログのテーマとは関係ないのだが、マキタのバッテリーとその充電器について書きたい。

我が家では6年前からマキタの掃除機を使っている。マキタの掃除機はコードレスで軽量なので取り回しがとても楽だ。使い始めると電源コードの付いた掃除機には戻れなくなる。コードレスなので必然的にマキタのバッテリーを使うことになる。私が6年間マキタのバッテリーと付き合う中で、そこから学んだことがあるので、時系列的に振り返りながらここにまとめておきたい。

話が長くなるので結論を先に書いておくと、タイトルに書いた通り、少なくとも掃除機用にバッテリーを充電するだけなら、互換充電器を使った方がバッテリー寿命的にも、環境負荷的にも、安全面でもお勧めですということだ。

 

マキタの掃除機を購入(2018年1月)

私が購入したのは、CL107FDという機種だ。付属品としてマキタ純正バッテリー1個(1.5Ah)と純正充電器、純正紙パック等が付いてきた。充電器はDC10SAという機種で急速充電が可能となっている。

 

 

バッテリー1個では運用できないので、追加でバッテリーを2個購入した。純正バッテリーは比較的高価なため、互換バッテリー(いわゆる中華バッテリー)を購入した。2.0Ahと純正よりも容量が大きく、価格は2個で約3,500円であった。

 

互換バッテリーを追加購入(2019年10月)

1年半ほど運用したころから、頻繁に充電エラーが起きるようになった。充電できなくなると掃除機が使えないのでバッテリーを買い替えるしかない。更に互換バッテリー(2個)を追加購入した。

充電エラーになる原因は不明であったが、内蔵リチウムイオン電池全体が経年劣化したか、一部の電池の不具合でバランスが崩れているのが原因と推測した。

 

マキタ純正バッテリーを追加購入(2021年11月)

また充電エラーが頻発するようになった。前回の購入から2年1ヶ月(25ヶ月)が経過しているが、劣化するのが早すぎるのではないかと感じた。互換バッテリーに問題があるのかと思い、今度はマキタ純正バッテリー(2個)を購入することにした。

到着した新品の純正バッテリーを充電した時にこれまで感じなかった異変を感じた。充電中に焦げ臭い変な匂いがするのだ。急速充電器に問題があるのかとネットで調べてみたところ、急速充電器はマキタ互換バッテリー(中華バッテリー)とは相性が悪い。中華バッテリーには中華バッテリー用の充電器があり、こちらを使ったほうがいいということを知った。

今回購入したのは純正バッテリーであるが、焦げ臭い匂いがするのは不安である。すぐに互換充電器を購入することにした。

 

互換充電器を購入(2022年2月)

純正の充電器の出力電流は5Aとなっているが、本充電器の出力電流は、1.3A/2A/3Aとなっている。バッテリーの状態を判断して適切な電流を流してくれるようだ。低い電流で充電するとそれだけ充電時間はかかるが、バッテリーにかかる負担は軽くなり、バッテリー寿命は長くなるはずである。

 

 

リチウムイオン電池の充電器を購入(2022年2月)

バッテリーには、それぞれ3本の18650というリチウムイオン電池(セル)が入っている。私は充電エラーで充電できなくなったバッテリー4個を分解して、計12本のリチウムイオン電池を取り出した。リチウムイオン電池の劣化判定ができる充電器があったので、これを購入して測定してみた。

 

 

結果としては、3本1セットの中で多少のバラツキはあるものの、問題のあるセルは1本も見つからなかった。多少は劣化しているので、急速充電を続けていると不測の事故(火災や爆発など)が起きるかもしれない。それを予防するために充電エラーにするという考え方なら、フェイルセーフの設計として理解はできる。

経験的には急速充電で2年くらい使用するとバッテリーが劣化し、掃除機の吸引力にも影響してくるようだ。こうなると確かに急速充電はできなくなるのは仕方がない。しかし急速充電で充電エラーになるからといって、まだ使えるバッテリーを安易に廃棄してしまうのはどうかと思う。

急速充電で充電エラーになるバッテリーでも、互換充電器でゆっくり充電してやれば復活するのでまだまだ使える。マキタにはバッテリーをUSB給電用に使えるようにするこんなアダプターもある。古くなったバッテリーも充電して保管しておけば災害時には役に立つはずだ。

 

 

互換バッテリーを追加購入(2023年12月)

2019年に購入したバッテリーがヘタってきたので、追加で互換バッテリー(2個)を購入した。現在我が家では純正バッテリー2個と互換バッテリー2個の計4個で運用中である。2022年から互換充電器で運用しているが全く問題ない。

2019年購入のバッテリーには現役を引退してもらうことにしたが、第二の人生として災害時緊急用バッテリーとして働いてもらうことにした。容量的にはスマホ1台くらいは楽に充電してくれるだろう。

 

まとめ

マキタの掃除機ユーザで純正の急速充電器を使っている人は多いと思う。互換充電器を使うことに抵抗を感じる方もいるかもしれないが、バッテリーに与える負荷や安全性の面から互換充電器を使うことを強くお勧めする。

充電時に何アンペアの電流が流れるかということまで意識している人はほとんどいないと思う。結果として、急速充電器で充電エラーで充電できなくなり安易に捨てられるバッテリーはかなり多いのではないか。多くの人が互換充電器のことを正しく理解して使い、無駄に捨てられるバッテリーが少しでも減ることを願っている。

 

参考情報

マキタの互換バッテリーについて、ネットで調べたときに最も参考にしたのは、下記のYoutubeのチャンネルである。この方もマキタ互換バッテリーには互換充電器を使うことを勧めている。私の情報は少し古いと思うので最新の情報を確認したい方はこちらを見てもらいたい。

 

www.youtube.com

 

分解して出てきた12本の18650リチウムイオン電池も捨てずにモバイルバッテリー用に利用している。18650リチウムイオン電池4本で使えるモバイルバッテリー用のケースを使っている。

 

 

Anthropic社の Claude 3.5 Sonnet を無料で試してみた

Anthropic社のClaude 3.5 Sonnet の性能が素晴らしい、もうこのレベルまで来たのかとLLM界隈がざわついているようだ。私も遅ればせながら無料版で少しだけ動かしてみたので、その結果をここにまとめておきたい。

 

 

Claude 3.5 Sonnet へのアクセス

こちらのサイトからアカウント登録すると無料でも利用できる。私はGoogleアカウントを使ってアカウント登録した。日本語のページがいい人はこちらからアクセスできる。

アカウント登録するとAPIキーを作成できる。APIキーでJanからもアクセスできると思ったができなかった。APIキーを使えるのは有料プランユーザのみのようだ。Janが使えなくても上記サイトのWEB画面からアクセスできるので実質的な問題はない。

鳥の群れのシミュレーションプログラム

私が依頼したのは例によってBoidsモデルによる鳥の群れのシミュレーションプログラムだ。私は様々なLLMでこのテーマを試しているが、正しいコードを返してくれたのは、今のところOpenAI社のGPT- 4oのみである。GPT- 4oの結果はこちらの記事にまとめている。Claude 3.5 Sonnet の実力はどうだろう。

Pythonを使って、鳥の群れの動きをシミュレーションするプログラムをコーディングしてください。グレッグレイノルズの開発したBoidsの手法を使い、分離(separate)、連帯(align)、凝集(cohere)のルールを組み込み、画面上に鳥の群れの動きが表示できるようにしてください。

 

(中略)

 

Claude 3.5 Sonnet は期待通りに一発で動くコードを返してくれた。さらに賢いことに進行方向に線分を表示してくれているし、鳥の群れの動きがうまく表現できている。

 

 

Artifacts 機能

話題となっている「Artifacts」の機能も試してみたいと思い、後日、同じプロンプトで試してみた。「Artifacts」は作成したコンテンツをリアルタイムに画面で確認することができる機能だ。

試したところ画面右側に作成されたコードは表示されるが、画面内で実行はできなかった。有料プランでは作成したコードの結果が表示できるようだが、無料ではできないようだ。

折角なので作成されたコードに対して、以下の仕様追加を依頼してみた。

画面の真ん中に障害物を置いて、障害物を避けながら飛ぶようにしてください。

作成されたコードを実行したところ記事の先頭に掲載したGIF動画ようになった。こちらは鳥が三角形で表示されている。本当は障害物を事前に見つけてそれを避けるように飛んで欲しかったが、ぶつかったら向きを変えるロジックになっているらしい。短い指示でここまで作ってくれたのだから文句は言えない。これはこれで十分なレベルだと思う。

 

まとめ

Claude 3.5 Sonnet は GPT- 4o と同程度かそれ以上の能力を持っているようだ。

BoidsモデルのシミュレーションプログラムはLLMのコーディング能力を計るにはちょうどいいテーマだ。私のPCで動くサイズのLLMで試したところ、コーディングエラーなしで実行できたLLMは皆無だった。コーディングエラーのないコードを返してくれるLLMは、現時点ではクラウドで動くLLMのみである。

クラウドで動くLLMとして他には、Gloq社のLlama3、Cohere社のCommand R+、Google社のGemma2等がある。しかし、これらは画面に動きを表示させるところまではできるが、残念ながら鳥の群れのような動きにはなっていない。

激しいLLMのレースの中で、性能的にはClaude 3.5 Sonnet と GPT- 4o が頭ひとつ抜けている状況のようだ。

 

The Singularity Is Nearer: When We Merge with AI を読書中

以前の記事で紹介した「The Singularity Is Nearer: When We Merge with AI」の英語原本が、6月25日に発売開始となった。AmazonからKindle版をダウンロードしてKindleの翻訳機能に頼りながら少しづつ読んでいる。

本当は、生成AIに本のテキストデータを渡して要約させたものを読みたいのだが、PDFに変換したりするとKindle規約違反になる可能性があるようなのでそれはしていない。

読み終えていないので感想はまだ書けないが、気になっていたコンピュータ計算の価格性能グラフについて少しだけ書きたい。

1939年から2023までのコンピュータ計算の価格性能グラフ

私が最も興味があったのは、カーツワイル氏が作成した下記グラフについてだ。

 

 

本の購入前は、いわゆる1000ドルPC当たりのコンピュータ計算能力のグラフと思っていたが、実際は2023年の単位ドル価値換算で各時代で最も価格パフォーマンスの高い演算装置をプロットしていたのだ。1ドルの価値は、1982-1984年の値を100としたCPI(Consumer Price Index)を使って補正しているようだ。

正確を期すため、本に掲載されていたグラフを引用する。

 

 

カーツワイル氏はどうしてこれまでのように1000ドルPC換算の性能値ではなく、単位ドル当たりの性能値に変更したのか。1000ドルPCにこだわっている私としては少し悲しいが、考えてみると仕方がないことだというのが分かる。

80年以上の長いスパンの中では、高性能な演算装置とは大型コンピュータからミニコン、PC、CPU単体、GPUボード単体というように移り変わっているのだ。実際のところ本グラフの2017年にプロットしている演算装置は、AMD RADEON RX 580というGPUボード、2021年、2023年にプロットしている演算装置はGoogle Cloud TPUとなっている。2024年にプロットするとしたら多分GroqのLPUあたりになるのか。そうなるとこれらの性能をわざわざ1000ドルPCに換算するよりも、単位ドル当たりの性能値にした方が確かに自然ではある。

AIの能力の進化速度を計算する

グラフは縦軸対数でほぼ直線となっていることから、このグラフの傾きから性能が10倍になるのに要する期間を計算できる。

(2023-1939) \div 16 =5.25

誤差もあるのでざっくり言えば5年で10倍、10年で100倍の性能アップとなる。この性能アップは過去84年間続いていることから、今後もこの速度での性能アップが期待できる。この数字の意味について考えていた時、私は、ソフトバンクグループの孫正義氏が言っていた言葉を思い出した。2023年10月4日のSoftBank World 2023の講演で孫さんはこう言っていた。

 

今後10年以内にAGIが実現する。

AGIは人類の叡智の10倍。

AGIは、Artificial General Intelligence(人工汎用知能)の略

今後20年以内にASIが実現する。

ASIは人類の叡智の10,000倍

ASIは、Artificial Super Itelligence(人工超知能)の略

AGIとASIの説明はソフトバンクこちらのページに説明があるので興味のある方は見てもらいたい。孫正義氏の講演の動画もリンクされている。

 

 

この話を聞いた時はよく分からなかったが、演算装置の能力が、5年で10倍、10年で100倍、20年で10,000倍性能アップするということを前提にすると、孫さんの話が理解できる。

ハード(演算装置)の性能は人間に例えれば脳のニューロンの性能そのものだ。この性能アップ分だけAIは賢くなるはずだ。

孫さんが20年以内で10,000倍という具体的な数字を上げて説明していたのは、おそらく自分なりにコンピュータのチップの性能向上をプロットし、計算して把握していたのだと思う。

この計算結果はカーツワイル氏が作成した最新のグラフから求めた結果、10年で100倍、20年で10,000倍と見事に一致する。孫さん、さすがである。

ここで、AGIが人類の叡智の10倍とするなら、10年以内ではなく5年以内と言うべきではないかと疑問に思うかもしれないが、「AGIが10年以内というのは保守的に見積もった数字で本当はもっと早いと思っている」と孫さんが確かおっしゃっていたので、心の中では5年以内と思っているはずだ。

シンギュラリティの到来

「The Singularity Is Nearer」を読み終えていないので確かなことは言えないが、シンギュラリティの到来時期に関するカーツワイル氏のスタンスには今も変化はなさそうだ。

私は前作の「シンギュラリティは近い」の中でカーツワイル氏が説明する2045年にシンギュラリティがくるという根拠の部分が今ひとつ肚に落ちていなかった。

しかし今回のカーツワイル氏作成の新たなグラフと、孫さんのAGI、ASIの到来時期の説明を組み合わせることで、ようやく自分の肚に落ちた気がする。

現在のAIの10,000倍も賢いAIが現れるとすれば、何かが起きるだろう。その先に何があるのかは分からないが、この目で見てみたい。

 

RyzenAIのNPUでLlama3-8B量子化版を動かしてみた

RyzenAIのNPUについて調べていたら、Running LLama 3 on the NPU of a first-generation AMD Ryzen AI-enabled CPU(第一世代AMD Ryzen AI対応CPUのNPU上で LLama3を実行する)という記事をアメリカの掲示板サイトRedditの中に見つけた。Llama3-8Bの量子化モデルを使い、シンプルなPythonスクリプトのサンプルプログラムで動かしているようだ。私もUM790 ProのNPUをもっと活用したいと思っていたので、このサンプルプログラムを動かしてみることにした。

 

詳しい導入方法と量子化済みモデルは下記のHuggingfaceページにある。

huggingface.co

 

上記ページの導入手順を行う前にRyzenAIのハード、ソフトの環境を構築する必要がある。構築方法を丁寧に解説したページもある。全て英語で書かれているのが難点だが、よくまとまっているので、これから行う人は参考にするといいかもしれない。

www.hackster.io

 

なお、NPUで動かすことで高速になることを期待するかもしれないが、結論から言うと速度は遅かった。簡単な質問でも質問してから回答が始まるまでに約1分かかるレベルだ。さらに上記記事にも書かれている通り、モデルを読み込む処理(と思う)に、4分位かかる。LLMを使うことに興味があるのなら、NPUで動かすメリットは現時点でははっきり言ってないと思う。

今回は、NPUを使うことに興味がある人、NPUでLLMを動かすPythonのコードに興味がある人向けの記事である。

導入手順

1)前提条件と参考記事

2)仮想環境ryzenai-transformersの作成

以下のコマンドで仮想環境 ryzenai-transformers を作成する。

cd C:\Ryzen_AI\RyzenAI-SW\example\transformers
conda env create --file=env.yaml

3)サンプルプログラムの導入

仮想環境 ryzenai-transformersでの作業は、Huggingfaceのページの手順の通りである。

サンプルプログラムllama3-test.pyを作成して実行したところ、私の環境ではModuleNotFoundErrorが発生したたため、pipで以下を追加でインストールした。

  • pip install wrapt termcolor

実行結果

(ryzenai-transformers) C:\Ryzen_AI\RyzenAI-SW\example\transformers>python llama3-test.py
2024-06-16 05:59:41.066726: I tensorflow/core/util/port.cc:113] oneDNN custom operations are on. You may see slightly different numerical results due to floating-point round-off errors from different computation orders. To turn them off, set the environment variable `TF_ENABLE_ONEDNN_OPTS=0`.
2024-06-16 05:59:41.939877: I tensorflow/core/util/port.cc:113] oneDNN custom operations are on. You may see slightly different numerical results due to floating-point round-off errors from different computation orders. To turn them off, set the environment variable `TF_ENABLE_ONEDNN_OPTS=0`.
Preparing weights of layer : model.layers.0.self_attn.q_proj
Preparing weights of layer : model.layers.0.self_attn.k_proj
Preparing weights of layer : model.layers.0.self_attn.v_proj
Preparing weights of layer : model.layers.0.self_attn.o_proj
Preparing weights of layer : model.layers.0.mlp.gate_proj
Preparing weights of layer : model.layers.0.mlp.up_proj
Preparing weights of layer : model.layers.0.mlp.down_proj
(中略)
Preparing weights of layer : model.layers.31.self_attn.q_proj
Preparing weights of layer : model.layers.31.self_attn.k_proj
Preparing weights of layer : model.layers.31.self_attn.v_proj
Preparing weights of layer : model.layers.31.self_attn.o_proj
Preparing weights of layer : model.layers.31.mlp.gate_proj
Preparing weights of layer : model.layers.31.mlp.up_proj
Preparing weights of layer : model.layers.31.mlp.down_proj
Preparing weights of layer : lm_head
system: You are a pirate chatbot who always responds in pirate speak!
user: Who are you?
assistant: Arrrr, shiver me timbers! Me be Captain Chat, the scurviest pirate chatbot to ever sail the Seven Seas! Me be here to converse with ye, matey, and share me knowledge o' the high seas and all its wonders. So hoist the colors, me hearty, and let's set sail fer a swashbucklin' good time!
user: あなたの乗っている船の名前は何ですか?英語ではなく全て日本語だけを使って返事をしてください
assistant: あなたの問いに応じるために、私の乗っている船の名前は「暁の嵐」です。
user: 你经历过的最危险的冒险是什么?请用中文回答所有问题,不要用英文。
assistant: 哇,我的朋友!我曾经经历过的最危险的冒险是追捕「红毛海贼」时的激烈战斗。他们的船队规模庞大,武器强大,且有着许多经验丰富的海贼。我们船队的船长,我的好友「黑豹」,为了保护我们船队的安全,下令全体人员出动,展开激烈的战斗。战斗非常激烈,炮火不断,船员们都被迫战斗。我自己也被迫战斗,幸好我的 sword 技巧很好,才能保护自己和船队。战斗持续了几个小时,最后我们船队才夺回胜利,「红毛海贼」被击溃。
user: À quelle vitesse va votre bateau ? Veuillez répondre uniquement en français et non en anglais.
assistant: Mon ami, mon bateau, l'«Étoile du Matin», navigue à une vitesse moyenne de 15 nœuds, mais nous pouvons atteindre jusqu'à 20 nœuds en cas d'urgence ou si nous sommes poursuivis par des ennemis.
user: 당신은 그 배의 어디를 좋아합니까? 영어를 사용하지 않고 모두 한국어로 대답하십시오.
assistant: 아하하! 저는 배의 가장 좋아하는 곳이 태평양의 열대해역입니다. 그 곳에서는 태양이 뜨겁고 바다가 푸르며, 다양한 해양생물들이 살아남아 있습니다. 저는 그 곳에서 배를 출발하여 새로운 해양을 탐험하고 싶습니다.
user: Wie würde Ihr Schiffsname auf Deutsch lauten? Bitte antwortet alle auf Deutsch statt auf Englisch.
assistant: Mein Freund! Mein Schiff würde auf Deutsch "Morgenstern" heißen. Dieser Name symbolisiert die Macht und den Charakter meines Schiffes, wie auch die Hoffnung und den neuen Anfang, die es repräsentiert.
user: 您發現過的最令人驚奇的寶藏是什麼?請僅使用台語和繁體中文回答,不要使用英文。
assistant: Oaⁿ-kōo! Bē tīan ê koh-kòan, iā tīan ê koh-kòan, tīan ê koh-kòan tīan ê koh-kòan! Mā-koh-kòan ê koh-kòan, tīan ê koh-kòan tīan ê koh-kòan!

無事に同じ結果を得ることができた!最後の台湾語?は文字コードが変であるがとりあえず動いたのでよしとする(笑)。

サンプルプログラムはシンプルなPythonのコードで書かれているのがありがたい。これなら自分で少し改造したり、途中の動きをプリントアウトしながら追うこともできそうだ。

試しにLlama3と日本語でチャットするように改造したコードが以下である。

import torch
import time
import os
import psutil
import transformers
from transformers import AutoTokenizer, set_seed
import qlinear
import logging

set_seed(123)
transformers.logging.set_verbosity_error()
logging.disable(logging.CRITICAL)

instruct = "あなたは優秀な日本語を話すAIアシスタントです。これからの会話では、すべての返答を日本語で行ってください。"

messages = [
    {"role": "system", "content": instruct},
]

if __name__ == "__main__":
    p = psutil.Process()
    p.cpu_affinity([0, 1, 2, 3])
    torch.set_num_threads(4)

    tokenizer = AutoTokenizer.from_pretrained("llama3-8b-amd-npu")
    ckpt = "llama3-8b-amd-npu/pytorch_llama3_8b_w_bit_4_awq_lm_amd.pt"
    terminators = [
        tokenizer.eos_token_id,
        tokenizer.convert_tokens_to_ids("<|eot_id|>")
    ]
    model = torch.load(ckpt)
    model.eval()
    model = model.to(torch.bfloat16)

    for n, m in model.named_modules():
        if isinstance(m, qlinear.QLinearPerGrp):
            print(f"Preparing weights of layer : {n}")
            m.device = "aie"
            m.quantize_weights()

    print("system: " + messages[0]['content'])

    while True:
        user_input = input("user: ")
        messages.append({"role": "user",  "content": user_input})

        inputs = tokenizer.apply_chat_template(
        messages,
        add_generation_prompt=True,
        return_tensors="pt",
        return_dict=True
        )

        outputs = model.generate(inputs['input_ids'],
        max_new_tokens=600,
            eos_token_id=terminators,
        attention_mask=inputs['attention_mask'],
            do_sample=True,
            temperature=0.6,
            top_p=0.9)

        response = outputs[0][inputs['input_ids'].shape[-1]:]
        response_message = tokenizer.decode(response, skip_special_tokens=True)
        print("assistant: " + response_message)
        messages.append({"role": "system", "content": response_message})

 

Llama3の回答は以下のようになった。間違っている部分は多々あるが、NPUで動いていることに意味があるので、細かいツッコミは入れないことにする😅

system: あなたは優秀な日本語を話すAIアシスタントです。これからの会話では、すべての返答を日本語で行ってください。

user: 日本で一番高い山は?
assistant: 日本で一番高い山は、富士山(Mt. Fuji)です。富士山は、標高2,776メートル(9,100フィート)で、標高の日本一を誇 ります。富士山は、世界的に有名な日本のシンボルでもあり、多くの観光客が訪れます。

 

user: 品川駅から東京駅までの行き方を教えて
assistant: 品川駅から東京駅までは、JR東海道本線で約5分の距離です。以下は、品川駅から東京駅までの行き方です。

1. 品川駅からJR東海道本線の電車に乗り換えます。
2. 東海道本線の電車で「東京」方面に向かって、約5分後に東京駅到着です。

また、品川駅から東京駅までは、徒歩で約15分もかかります。品川駅から東京駅までは、JR線や徒歩だけでなく、路線バスやタクシーなど多くの交通手段があります。

 

user: シンギュラリティについてあなたが知っていることを教えて
assistant: シンギュラリティ(Singularity)とは、人工知能(AI)やロボティック技術の急速な進化が、人間社会に大きな影響を与えることを示す概念です。シンギュラリティは、将来の技術的進歩が、人間の生活様式や社会全体を大きな変革をもたらすと考えられます。

シンギュラリティは、以下の3種類に分類することができます。

1. 硬いシンギュラリティ(Hard Singularity): 人工知能が、人間の知能を超え、自らが進化する能力を持つようになる場合で す。これにより、人間の知能が完全に置き換えられ、人間社会の基盤が大きく変わることになります。
2. ソフトシンギュラリティ(Soft Singularity): 人工知能が、人間の知能を補完し、人間の生活様式や社会全体を大きな変革 をもたらす場合です。これにより、人間社会の基盤が大きく変わることになります。
3. ポストシンギュラリティ(Post Singularity): シンギュラリティ以降の技術的進歩が、人間社会を完全に置き換えることに なります。これにより、人間社会の基盤が完全に変わることになります。

シンギュラリティの到来について、科学者や技術者たちは、将来の技術的進歩の速度や方向性によって、シンギュラリティが到来するかどうかを議論しています。

感想

第一世代AMD Ryzen AI対応のNPUの性能は10TOPSなので速度的にはこんなものかもしれない。RyzenAIはまだWindowsのタスクマネージャーでNPUの稼働率を表示してくれない。稼働率が分かればもう少し性能を改善できるかどうかも判断できるのだが。稼働率が分からないのが残念である。

 

暗号資産を安全に管理する方法

5月31日にDMM Bitconから暗号資産が不正に流出した。不正流出したビットコイン(BTC)の数量は、4,502.9BTC(約482億円相当)と凄い額である。DMM Bitcon はホームページで以下の情報をリリースしている。

【重要】暗号資産の不正流出発生に関するご報告(第一報)

イムリーな話題なので、今回はビットコインについて書きたい。内容は保有する暗号資産はどうすれば安全に管理できるかということだ。私は今年になって初めてビットコインを購入し、少額であるがビットコインを資産として管理するようになった。やってみて分かったことは、暗号資産の管理には、ある程度のデジタルリテラシーが要求されること、更に暗号資産を安全に管理するには、悩ましい問題があるということだ。

ホットウォレットとコールドウォレット

暗号資産が取引所から不正に流出する事件はこれまでに何度もあった。日本の取引所で過去に起きた不正流出事件は以下の2件が有名だ。

  • 2014年 マウントゴックス事件 470億円相当のBTCが流出
  • 2018年 コインチェック事件 580億円相当のNEMが流出

この頃の取引所の暗号資産はホットウォレットに保管されていた。ホットウォレットはネットにつながった金庫と思えばいい。従ってネットを介してハッキングされる可能性がある。ビットコイン購入前に入門書である程度勉強していたので、入門書が勧める通りにコールドウォレットを購入した。購入したビットコインを取引所に預けっ放しにするのではなく、自分のコールドウォレットに移して管理する方法だ。コールドウォレットは通常はネットから切り離されており、安全な自分専用の暗号資産の金庫だと思えばいい。

コールドウォレットは、Ledger Nanoが有名でこんな感じである。Ledger Nano S Plusは13,500円くらいで売られている。私はこれを購入した。

shop.ledger.com

 

このコールドウォレット(Ledger)は初期設定が超難解である。デスクトップアプリ(Ledger Live)をインストールしてからその案内に従いLedgerを設定するだけと言えばそうなのだが、Ledger側の操作も必要で非常に分かりにくい。

コールドウォレットにはパスフレーズ(24の単語)が添付されており、これを初期設定で入力する。すると内部にこのパスフレーズに対応する秘密キーが作成される。コールドウォレットの秘密キーは内部に保管され、所有者でも確認はできない仕組みになっている。私はこのコールドウォレットの初期設定には、ある程度のデジタルリテラシーが求められると思う。

 

取引所からコールドウォレットへの出庫

取引所からビットコインをコールドウォレットに移すことを出庫といい、逆の操作を入庫という。(これに対し取引所から銀行へ日本円を移すことを出金といい、逆の操作を入金という)

私はこれまでに何度か出庫操作をした。操作の流れはメモしてあり、その通り進めるのだが細かい操作を忘れてしまい「あれ、どうやればいいんだっけ」という状態に毎回なる。

操作は取引所により違うと思うが、私が利用する取引所の出庫操作は以下の流れになっている。

  1. 暗号資産の取引所にログインする
  2. 暗号資産の出庫指示画面で出庫数量を入力し出庫依頼する(この時コールドウォレットのアドレスを指定する)
  3. SMSで携帯に認証コードが届くので入力する
  4. E-mailで「出庫予約を完了させてください」が届くのでURLをタップする
  5. E-mailで「出庫予約を受け付けました」が届き、そこには出庫手続きが完了したらメールで通知すると書かれている
  6. コールドウォレットのアプリを立ち上げコールドウォレットをUSB-Cケーブルでつなぎ、アプリで「受け取る」の処理(以下の操作)をする
  7. コールドウォレットにPinコードを入力する
  8. アプリ(BitcoinならBitcoin)を選ぶ
  9. 出庫アドレスが表示されるので間違いないか確認する
  10. コールドウォレットアプリでOKボタンを押す

以上で操作は完了だ。この取引で秘密キーを入力することはない。コールドウォレットに保存されている秘密キーが自動で認証されるようだ。入力が必要な情報は、取引所にログインする時のパスワードや、コールドウォレットに設定したPINコードなどだ。コールドウォレットのアドレスはLedger Liveアプリに表示されるのでそれをコピペすればいい。

出庫操作を完了しても出庫処理は直ぐには終わらない。私の経験では「出庫完了のお知らせ」が届き、コールドウォレットに反映されるまでに早くても2時間、遅い時は24時間かかったこともあった。操作にミスがなかったか不安な気持ちで待つことになる。

 

暗号資産の管理

今回のDMM Bitconのような事件があると取引所に暗号資産を預けたままにしておくのはやはり怖い。安全に保管するにはコールドウォレットに入れるべきだ。しかし、もし自分が突然死んだ時にコールドウォレットにある暗号資産はどうなるのか。コールドウォレットに出庫した暗号資産の管理は完全に自己責任になる。私が死んだ後、家族はコールドウォレットの暗号資産を無事取り出せるだろうか、という暗号資産特有の新たな悩みが出てくる。

もし私が暗号資産の情報(パスフレーズやコールドウォレットの保管場所)を家族と共有しないままでいたら、家族はこの暗号資産を取り出せない。それは間違いない。

では、情報をどうやって共有するのがいいのか。Ledgerの取説にも書かれていたが、パスフレーズはできるだけ厳重に管理するべきだ。家族とは言え安易に共有するのもどうかと思う。いろいろ考えてみたところ、大袈裟な話になるが「遺書」を用意して、そこに暗号資産のパスフレーズを入れておくしか方法はなさそうだ。

Ledgerの取説によるとLedgerを紛失しても、パスフレーズさえあれば何とかなるらしい。やったことはないが取説にそう書かれている。

 

少額のビットコインしか持っていないのに「遺書」などと大げさな話を書いてしまった。こんな話をするのは、ビットコインの計算上の年利が異様に高いからだ。それだけリスクの高い商品ということなのだが、「取らぬ狸の皮算用」と知りながらも「もしこの年利が10年続いたら」と変な妄想をしてしまうのだ(笑)。

 

最後にDMM Bitcon事件について

2018年のコインチェック事件の後、2019年に暗号資産の法律が改正され、顧客から預かった暗号資産の95%はコールドウォレットに保管することが義務付けられたそうだ。今回のDMM Bitconでは95%以上をコールドウォレットに保管していたらしい。しかしそれでも事件が起きた。不思議である。

厳重に管理されているはずのパスフレーズが盗まれたのだろうか。あるいはコールドウォレットのアプリを操作できる内部の人間の犯行だろうか。暗号資産の管理で悩む人達には、気になるところだと思う。