2024年まとめと2025年について
2024年もいつの間にか終わりです
毎年恒例の「今年のまとめ」の時期がいよいよやってきました
年末なのでやっていこうと思います
今年のベストバイ
2023年にPCを新調したおかげで今年はたいして大きな買い物をしていないのですが、27インチWQHDな近代的なPCモニタをようやく買いました。
これを買う前は21インチワイドのモニタでした。FHDも出ないのでコードを書くのも結構厳しかったです…
あと机も狭くモニタを2つ置くには厳しかったので机も買い直しました
特に27インチモニタを置いた効果はてきめんで、家でコードを書く効率が大幅に上がりました
別のソースを同じモニタで開く場合にも別ソースファイルを横並びに余裕で開けて並行に閲覧出来るのが本当に本当に良いですね
机はサンワサプライのこれ買いました
ゲーミングデスク ワークデスク テレワーク ブラック×レッド ケーブル通し付き モニターアーム取付対応 幅120cm 奥行60cm
実はモニタを検討していたときに32インチと27インチとどっちにしようか悩んだものの最終的にHPのこれにしました
OMEN 27q 165Hz QHD ゲーミングディスプレイ
使ってみた感じとしては、色域も問題なく、144Hz出るし27インチQHDで充分で、なんならもう一枚欲しいくらいですね。
という感じで机周りがだいぶ整理されて作業しやすくなったので、来年はAmazonのモニタアーム(どこか有名なところがOEMしているらしい)がほしいと思いつつ、2025年といえば次世代のGPUであるRTX50XXが販売される年でもあるので、なかなか悩ましいなぁといった感じです。
RTX5090は来年早々に発表/発売されるそうでおまけにVRAM32GBモデルもあるのでほしいなぁと思いつつ、円安の影響も相まって恐らく高すぎる、消費電力MAX600wの初物は色々危なそうということでとりあえずしばらくは見送る可能性高いです
RTX5080は…VRAM24GBと16GBモデルの2モデルが出るっぽいのですが、まぁボクが買うとしたらVRAM24GBモデルだろうなぁという感じで、5090の人柱の様子も見つつ最終的判断を下す…みたいな感じですね
他の選択肢としてはかなりしばらくやりたいゲームも出てこないし、どちらかといえばAIをもっとガッツリやりたいわけで、そうなるとRTX A6000(VRAM 48GB)を買ってもいいといえばいいんですが…とはいえこれはもう業務用でかつあまりに高すぎ&世代がAmpereということで今これ買うならBlackwell世代が出回って価格が落ちてくるのを待つか、5090のほうがまだいいのではというのもありますね…
今年やったこと
ボクはいろんな趣味があるわけですが、去年AIについて何かしないといけないなぁという焦燥感から発展して、今年はちょっと10年ぶりに本業に力をいれないとやばいなぁとなんか本能的に感じて…つまりそれはプログラミングでありコードを書くことに力を入れないといけないなぁと思って、他の趣味は一旦トーンダウンというか泣く泣く絞って、コードについて真剣に向き合おうと色々足掻いた一年でもありました
具体的には、一日一コミットじゃないですが今年一年は毎日何かしらのコードを書いてこのアカウントで毎日GithubにPushするということを心がけておりました
おかげさまで以下のように草が覆い茂る状態となりました
あとC++をかなり真面目にやったおかげでちょっとはマシなモダンC++を書けるようになったのと、実業でもアルゴリズムとコードがパッと頭の中にすぐに出てきたりなど、これはなかなか収穫がありました
ボクのpythonぢからはまだまだですが、去年よりは読めるようになったかなぁと…
何のコードを書いていたのかといえば、とりあえず今流行りの生成AIの勉強と言うかコードを書こうかなとしていたのですが、ボクのAIの知識は数十年前のバックプロパゲーション(誤差逆伝播法)あたりからの知識がほぼ無くて、そこからの学び直しで今もなお学び直し最中になるので畏れ多くてまだ具体的にAIについて何かしているわけではないです
その代わりといってはなんですが、AIの中でも比較的とっつきやすいStable Diffusion周りのあたりを使ってこう何か…ということで、自分が主に使っている環境がUbuntuということもありWindowsにはありそうだけどUbuntuにはなさそうなツール類を作ってました。
こんな感じで画像ビューアを1から作って、画像を表示しつつ添付されているプロンプトを表示させる機能を追加したりとか(→キーとかで同じディレクトリの別の画像を順繰りに表示とか出来ます)
その画像ビューアから画像解析して構成要素を割り出すGUIとか作っていました。
(これは前に書いた「wd-taggerをC++から使う方法(onnxruntime事始め)」の応用で、AIを使った何かをしているといえば使っているになりますね)
他にも単に技術的興味からA1111(A1111 webui)のAPIに接続してブラウザ経由ではなく自分で作ったGUI経由で画像生成できるようなGUIを作ったりとかしてました
wxWidgetsの標準では語句補完機能なんてのは無いのですが、プロンプト補完機能をwxWidgetsで自力実装するのが大変であり面白い部分でした
(画面は載せませんが、AdetailerとかHiresFixなんかもここから操作できるようにしている)
で、これらはほとんど自分用なので公開することはしないと思います
(そもそも家ではほぼUbuntuしか使わないのでwindows対応するのが面倒というのが大きい)
ただこれらのGUIは全てwxWidgetsで作っており、wxWidgetsはLinuxなどのXwindows系はgnomeに直結、WindowsではWin32APIに直結しておりまして、ほぼOSネイティブ動作するので早くて軽く、Windowsで動かすときもそんなに困ること無く移植は可能そうではあります。
今までUbuntuでGUIアプリは作ってこなくて作ってもCUIアプリ(コマンドラインだけで動くもの)が大半だったのですが、今年はwxWidgetsにガッツリ触れたことでwxWidgetsの知見が貯まりまくって、もはやUbuntuで動くGUIソフトだったらwxWidgetsで結構なんでも作れそうだなぁというのはあります。
(※:一応WindowsではMFCを使ってGUIアプリは公私通して今まで結構作ってきたので、MFCっぽいところが少し残っているwxWidgetsはとっつきやすかったというのがありますね)
あと、最近あることをしようと思って巨大データセットを扱うときに「parquetファイル」を読まないといけなくなり(AIを勉強しているとこれに必ずぶつかりますね)、調べてみるとこれはApache Arrowという巨大テーブル(データセット)を扱うライブラリの一部であることがわかり、またこれにはC++のライブラリがあるとのことで、これは使えないといけない→実際使ってみると巨大なデータセットの読み込みが異様に早くてビビる→列要素に構造体が内包されていて、これ別にAI用途じゃなくてもよろずのことに使えそう→これは面白そうなので何か出来ないかな…ということでまぁそんな感じです。
近年では巨大データセットをparquetファイルで保存しているいうことが多いようで、huggingfaceもデータセットにはparquetファイルを推奨しているような感じでAIへの学習を深めようと思ったらやはりApache Arrowとの和解が必要。。。ということでこの流れはもはや必然だったのかもしれません。
https://huggingface.co/docs/dataset-viewer/parquet
https://huggingface.co/docs/datasets/about_arrow
Arrowは速度に重点を置いて実装されてるので巨大なデータであっても処理が早くてなかなか良いライブラリでWindowsでもUbuntuでも動くライブラリは用意されておりその点でも非常に良さげなのですが…、C++のサンプルはあまりない、APIマニュアルも充分とはいえないので初学者にArrowはとっつきにくいなぁというのはあります…というか実際とっつきにくさを感じまくっています。
C++のサンプルがネット上にあまりないが故に、ChatGPTやClaudeなどのAIもApache Arrowで何かをするコードを生成させると結構な確率で存在しないメソッドを使い出すとか間違った答えを出してしまい、よくわからない部分は最終的にArrowのソースコードを読んで理解みたいな感じになってます…
まあいつものようにPythonのサンプルは結構あったりするというより、Arrow自体を直接扱うんじゃなくて、ArrowはPandasから扱うみたいな感じっぽいですね。
pythonでArrowを扱うコードを読むと簡単そうに出来るんですが、C++だと一々色々しないといけないというのもまぁいつもの感じですねぇ…
あと、AI周りの勉強について主によく見てた動画がデータサイエンティスト系VtuberのAIcia(アリシア)さんのこのシリーズでした。かなりわかりやすかったです。
Deep Learning の世界(全編再生リスト)
動画はこんな感じ
この動画を見てから他のTransformerやMulti head attentionなどの解説された文章なり動画を見ると「ああそういうことだったのか」という学びがありました
AIとは何ぞや?のインストラクションとしてもとても良かったです。
2025年に思うこと。今後のAI展望などなど
トランプ氏が当選したり韓国の某大統領が狂ってしまい(あれは狂ってるとしか思えない)戒厳令を「突然オラァ!」じゃないけど出して罷免されそうなど年末から本当にいろんなことが起こっていますが、2025年は本当に読めないなぁというのが率直な気持ちです。
AI周りについてもずっとみなさんが待ち焦がれている「GPT-5」は結局出ず(この文章を書いた後で出たりして?)、もうAIバブルは弾けるだのなんだので、いつAGI/ASIは実現するんだい??という感じで2025年は今まで以上に色々読めないです本当に。
ということで、今からAI今後どうなるかなんて自分は門外漢なので思いっきり外しそうですが敢えて言うと、AGI/ASIとも言われるいわゆる「超知能」を目指すにはもうさすがにハードウェア的にも電力的にも限界来そうじゃない?と
これはもう人類があれこれ工夫するより、今のAI達がAIの肝となるモデル構造(Attention機構やTransfomrerなどああいうAIを形作るモデル構造のことを指す。パラメータ調整ではない)を自力で生成し改良し壁を超えてゆくしか無いのではとSF脳をフル回転させて思っています。
というかAIが自力で自己改良できれば、これすなわち「真のシンギュラリティ」なわけでやっぱりAIが自身でモデル構造の生成と改良に至れる自体にならないとボクは「これはシンギュラリティが来た!」とは言えないなぁと思う次第でして…
(凡なボクですらその考えに至れるわけで、ボクよりも頭の賢い人たちによってすでにそのような先行研究が色々ありそうですが…)
それが叶わず、今後スケール則が「やっぱり色々無理でした」となって裏切られ、AGI/ASIに至るには人類まだまだ色々足りないことが思い知らされた…としても今のAIの精度のままであったとしても充分便利に使えそうな分野は色々出てきつつあるので、昔のような「今のAIのレベルのままじゃ使えそうな分野なんて無いわ…」みたいな「AI冬の時代」は来なくて、少しつづAIが一般社会へと浸透して何らかのAI載せてるのが当たり前…むしろ普遍化しすぎてAI搭載とは一々言わないみたいな世界になるんじゃないかなと。
自動運転なんかボクは「何を言ってんだこんなんむこう100年はムリだろう」と最初懐疑的でしたが、最近の目覚ましい発展(やはりここでもTransformerが活躍している…)を見たり近年の自動運転を調べてみると環境要件さえクリアできればLV4→LV5は案外行けるんではみたいに楽観派になりました。
で、普遍化に必要なのはやはり省力化ということで今後は比較的小規模デバイス、スマホじゃなくてもっと小規模で環境要件…特に通信環境なども厳しそうなデバイス…たとえばカメラやありとあらゆる家電、車などなどで動く小規模で高性能なAIの需要が高まるんじゃないかなと。
比較的重たいと言われているTransformerやAttention機構の軽量化、モデルもINT8や4なんかの量子化をしたとしてもまぁ許せる精度が出る研究など、省力化に対する取り組みを色々進めて行けば新しい道も開けるんじゃないかなというところです。
(実際R社とかいろんなI社とかS社とか主要なSoCメーカもAIアクセラレータを載せてきていますし、この流れは今後来そうな感じはしています)
それと今の近代的AIの中核を支える「Transformer(Attention機構)」はいろんなことが出来ることが分かったので、今後はAIとロボットをつなげる技術…この辺が発達しないかなぁという感じです
AIとロボットがつながれば今までネットに引きこもってたAIが現実世界へのダイレクトな干渉が可能=これはもう「受肉」といっても差し支えがないというわけで、AI搭載ロボットに軽作業をやらせる…だけではくAIが様々な事象をデータ化しそれをデータセット化しそれを元手に学習出来る…まるで生物や人間のようなことが出来るようになります。
いやむしろ、今のAIがAGI/ASIといった「超知能」に至るためにはヒトが介在すること無く現実世界から自力でデータを取って加工し学習しモデルを生成して事象に対して推論してゆく…この一連のサイクルが必要なんじゃないか?とさえ…
そのためにはまずは現実世界にあるありとあらゆるデータ…ほんの些細なデータすらも漏らさず収集する能力が必要…センシング技術…MEMSに代表されるような技術が伸びる…ということでこの辺にも注目してゆきたいです。
(Transformerは元々翻訳をなんとかしたいというモチベーションで作られたわけですが、本当に応用範囲広すぎてですね…世紀の大発明だなぁ考えついた人は本物の天才だなあといつも思います)
ということで乱文になってしまいましたが、2025年もAI周りがやっぱりホットスポットなのでついていけるよう頑張ろうということで…