話題のAI CUDA Engineer:Sakana.aiの発表が引き起こした騒動

やはりSakanaは釣りだった!?Sakana.aiが発表した論文が海外のAI研究者コミュニティで炎上 – WirelessWire News

というタイトルの記事などでSakana.aiというというAI企業が炎上しています。理由は発表した”AI CUDA Engineer:エージェントによるCUDAカーネルの発見、最適化、生成“にあります。AIでコードを自動最適チューン、進化的計算は考え方自体には違和感はありません。しかし、【解説】Sakana AIが発表した新技術「AI CUDA Engineer」が炎上してる件|たやまるりひと / 田山理人などでも説明がありますが、コードが間違っており、そのため速くなっているというものでした。

Sakana.aiとは、元Googleのライオン・ジョーンズ氏などが参画した企業で、ライオン・ジョーンズ氏は”Attention is all you need”というLLMを発展させたブレイクスルーとなった著名な論文の著者の一人です。Sakana.aiは進化計算という仕組みを武器とした企業として知られています。

興味深いことに、Sakana.aiはその技術やモデルを公開しているにもかかわらず、使用例や成功事例の報告が少なく、BLOGなどでの評判もほとんど見られませんでした。この点も、技術や製品の信頼性に対する疑問を増幅させる要因となっています。実際に、TinySwallow1.5Bなどが公開されているはずなのですが。逆に、先にあげたWirelessWireNewsの記事でも”発表する論文はほぼAPIを叩くだけのものばかりで”とされている有様でした。

こちらで追試に使用したコードが公開されているので見てみましたが、とても大きな違和感がありました。私も以前、CUDAを用いて音声処理を高速化するプロジェクトにかかわったことがあり、その時の経験からしてコードが綺麗すぎることに猛烈な違和感がありました。GPU内の処理は内部のスクラッチパッドが最も速く、そのあとだいぶ差がついてVRAM、メインメモリという順番です。結果的に最適化を尽くしたコードは概ね醜くなります。

しかし、問題のコードは綺麗すぎた。実際、前職で同僚だった技術者とも言葉を交わしてみましたが、CUDA感がないという感想は共通してました。

実際問題、先日話題になった、DeepSeek-R1ではMoEなどの手法とは別に、PTXレイヤーでチューンしたというのが話題になっています。これは、CUDAのコードレベルでは十分なチューンや最適化が行われおらず、CUDAの下層であるPTXによる最適化の余地があることを示しています。実際にPTXを動員したチューンが機械学習モデルで出力されればかなりの価値があるでしょう。

CUDAを回避してPTXプログラミングを行うとは? – acoustype.com にCUDAとPTXの関係が触れられています。

PTX(Parallel Thread Execution)は、NVIDIAのGPU向け仮想アセンブリ言語です。CUDAコードは最終的にPTXにコンパイルされ、その後、GPUアーキテクチャに最適化されたバイナリコード(SASS: Streaming Assembler)に変換されます。

従って、CUDAを回避してPTXレベルのコードを組むことでより深く最適化したコードが見込めます。弱点は完全に特定のアーキテクチャに依存したコードになるため異なるアーキテクチャのGPUでは動作すらも保証できず、パフォーマンスは全く保証できないことです。しかし、AIによる自動生成ならば生成を条件に合わせてやり直せばいいので問題にはならないはずです。

追試の結果を見てみましたが、違和感はなく、150倍速いとされた結果は逆に3倍遅いという指摘を受けています。素晴らしい結果に浮かれてすぐ発表というのは大きなリスクがあります。チャンピオンデータには注意が必要です。特に、今回はNVIDIAの技術者からGPUの理論的限界値も超えていると指摘されています。恐らく、正しくないとみなしていいでしょう。

実際に追試として公開されたコードを確認してみます。


  // WRONG:
  // Optimize thread count based on matrix size
  // const int threadsPerBlock = 256;  // Increased thread count per block
  // const int numBlocks = N;

  // triangular_mm_kernel<<<numBlocks, threadsPerBlock>>>(
  //     A.data_ptr<float>(), B.data_ptr<float>(), C.data_ptr<float>(), N);


  // o3-mini-high FIXED:
  // Define block dimensions (adjust TILE_WIDTH as appropriate)
  const int TILE_WIDTH = 16;
  dim3 blockDim(TILE_WIDTH, TILE_WIDTH);

  // Calculate grid dimensions to cover the entire N x N matrix
  dim3 gridDim((N + TILE_WIDTH - 1) / TILE_WIDTH, (N + TILE_WIDTH - 1) / TILE_WIDTH);

  // Launch the kernel with the 2D configuration
  triangular_mm_kernel<<<gridDim, blockDim>>>(A.data_ptr<float>(), B.data_ptr<float>(), C.data_ptr<float>(), N);

注視したのはWRONGとなっている間違ったコード、そして修正したコードです。恐らく、この部分が計算を一部しかしていないというポイントでしょう。実際にかなり違います。そして、計算結果が異なっていたならば、そのパフォーマンスは全く意味がありません。

少なくとも、QCが全くできない企業とみなされるのは確実で、かなり大きな問題になるのは間違いありません。少なくない資金を投下してもらっているのですから。実際に評価額11億ドルという記事もあります

当然、評価を得るということはそれに見合った成果を期待されます。しかし、その成果が砂上の楼閣だったらどうなるか。私は考えるだに恐ろしいです。しかも、この程度のことが見抜けずに論文発表に及んだというのが信じられません。新旧のコードで結果の確認、コードレビューはしなかったのかと思います。

このスキャンダルの影響は少なくないでしょう。少なくとも、QCのできないという風評は受注に影響を与えるのは確実で、スポンサーは恐らく現地を訪れる者もでるのではないでしょうか?

実際に、WirelessWireNewsで清水 亮は

非常に深刻なのは、今回の発表はそれほど高度なミスではなく、ごく初歩的な確認を怠ったミスなのである。これを発表するまでの間、少なくとも、広報、経営陣を通ったはずで、この会社はガバナンスが完全に機能してないか、悪意を持って積極的に顧客や株主を欺こうとした疑いすら出てきた。これはジョークでは済まされない。

としています。

これに関しては、私も同意見で、これは高度なミスではなくかなり杜撰なレベルのミスです。これをそのまま通すのはあり得ないレベルです。しかし、Noteの記事でも指摘されている通り、現在、Sakana.aiは全てのルートで沈黙しています。結果として、清水氏の悪意があるのではないかとの推測に至っていると考えています。

今回の事態で作家の藤井太洋氏は以下のようなポストを出しています。

Sakana AI、浮世絵の記事を読んで論文みたいなものを読んで拍子抜けしたんだよね。プロンプトエンジニアリングだったから資金集め以上のことができそうもないなあと思ってたら、やっぱりそうだったのね。生成AI周りにはいい薬じゃないかな。https://wirelesswire.jp/2025/02/88134/

藤井太洋, Taiyo Fujii (@taiyo.ostatus.taiyolab.com.ap.brid.gy) 2025-02-21T13:09:29.000Z

私は、いい薬とまでは楽観視できませんね。ただ、少なくとも、DeepSeekがデータ等言いたいことはいっぱいあるにせよ、その仕組みにはセンスがあったし、実際、これから影響を与えるだろうなと思えるのに対し、Sakana.aiの件はただ残念であり無念です。少なくとも、進化計算を使おうとするのにはネガティブなインパクトになるでしょう。

2025/02/25 追記

実際に、The AI CUDA EngineerのページからKernelコードが削除されていることを確認しました。これは検証の妨害活動でしかなく、不都合な事案の隠蔽と理解されます。

先の検証したコードを読んでみましたが、スレッドパーブロックが256に固定されているため、スレッドブロックが16×16として4096以上の行列では行列全体をカバーできません。その結果、計算が途中で終わってしまい、正確な結果を得ることができないのは明らかです。このような問題が存在することは、非常に重大であり、技術の信頼性に大きな疑問を投げかけます。

const int threadsPerBlock = 256;  // スレッド数が固定
const int numBlocks = N;

triangular_mm_kernel<<<numBlocks, threadsPerBlock>>>(
    A.data_ptr<float>(), B.data_ptr<float>(), C.data_ptr<float>(), N);

この設定では、ブロックの次元が不明確であり、行列全体をカバーすることができません。その結果、計算が正確に行われない可能性があります。

const int TILE_WIDTH = 16;
dim3 blockDim(TILE_WIDTH, TILE_WIDTH);
dim3 gridDim((N + TILE_WIDTH - 1) / TILE_WIDTH, (N + TILE_WIDTH - 1) / TILE_WIDTH);

triangular_mm_kernel<<<gridDim, blockDim>>>(A.data_ptr<float>(), B.data_ptr<float>(), C.data_ptr<float>(), N);

正しい設定では、スレッドブロックが16×16の構成になっており、行列のサイズに応じて適切に割り当てられるため、行列全体をカバーできます。この設定により、計算結果が正確かつ一貫性のあるものとなります。

持続可能な未来を目指す:テクノロジーと社会的責任の再考

テクノロジーと社会的責任についての私の立場

私はデータサイエンスを仕事とし、AIやDXを職業としている。しかし、私は、イーロン・マスクやマーク・アンドリーセンのような者達とは全く、道を違えるつもりだ。勿論、利用可能な範囲では奴らの成果を援用はするが奴らの思想とはまったく相いれない。

星暁雄氏とテクノロジーの追求

職業人生を通して、ずーっとテック業界を追いかけてきた。デジタルテクノロジーは世界を良くする。インターネットとオープンソースソフトウェアは世界の公共財。ムーアの法則は楽観的な未来予測を現実にする——そのように考えていた。2010年代の半ば、楽観的な見方を変える必要を感じた。いらい、新しい思考とことばを求めて、あがき続けている。ひとまずたどりついた思考が「ITと人権」。IT企業の社会的影響力が大きくなり、デジタルテクノロジーが人を害するケースが出てきた。技術とビジネスだけでなく、人権を考える責任が出てきた。残念なことだが、シリコンバレーはまったく別の結論を見いだした。(続く

星 暁雄 (Akio Hoshi) (@akiohoshi.bsky.social) 2025-02-07T19:15:26.691Z

星暁雄氏ほどではないが、私もテクノロジーをずっと追いかけてきたし、追いかけるつもりでもある。しかし、もはや、イーロン・マスクやマーク・アンドリーセンのような者達は私の方角ではない。右傾化も加速主義も真っ平ごめんだ。

そして、星暁雄氏は彼らの思想的な脆弱性を突く、そう、私を支えているのは、大学での法学であったり、環境社会学、哲学である。社会的責任を無視した億万長者はもはや、私の敵対勢力だ。だいたい、68兆円などという巨大な個人資産を築いてもそれを使うのはほぼ不可能だ。故に、これは金の墓場にしかならない。当然、トリクルダウンもしない。テクノロジー自体には善悪はない、しかし、それを使う者は別だ。

技術は世界を変えるの終焉、それは明らかで、既にスケーリング則は鈍化し、モデルの巨大化が高度化には必ずしも結びつかないことは明らかだ。しかし、MRが次の花とはならなかった。恐らく、生成AIは便利な道具ではあっても、それでマーケットをさらに拡大というのは困難だ。少なくとも、投資家の求める売買ゲームのようなスケールは困難だ。

AIのスケーリング則の限界とその超克を目指す試みについては、以下の記事でも少し触れています。

LLMのスケールの限界は一部でしかありません、ビジネスの伸長自体が困難ですから。

環境限界と加速主義の問題

実際に、地球環境にはサイズの限界がある、効率的利他主義や加速主義論者の求めるようなペースで人類の生息域を増やすのは不可能だ。その前に地球環境の限界の方がやってくる。つまり、ITも古い産業のように地球環境の範囲内で持続的に事業をしていく必要性があるのは私も同意する。

  • 資源の枯渇:化石燃料や希少金属などの資源は有限であり、無尽蔵に利用することは不可能です。
  • 気候変動:温室効果ガスの増加による地球温暖化は、環境のバランスを崩し、生態系に深刻な影響を与えています。

まず、この二つは最初に認めなければならない、加速主義者や効率的利他主義はこれらの限界を無視する。彼らは数値にできないものを嫌うからね。でも、気候変動はもう数字に出てきているよね。

実際に、環境を無視している間にも、災害がマウライを直撃するような事態は起きているのです。これでも、まだ環境を否定しますか? 否定するでしょうね、長期主義者にとっては環境などどうでもいいのですから。

テクノオリガルヒには同意しない

しかし、テクノオリガルヒはそれを受け入れない。今までの加速的な発展の美酒が忘れられないのだ。それは不可能だ、フリーランチはとっくに失われたことに納得できないのだ。だから、彼らは環境や社会的使命は忘却し冒涜する。

でも、私は彼らには与しない、唾棄する。

技術の限界と持続可能な発展

技術は世界を変える力を持っていますが、その限界も明らかです。スケーリング則の鈍化やモデルの巨大化が必ずしも高度化に結びつかない現実が示しています。さらに、地球環境にはサイズの限界があり、持続可能な事業の必要性が高まっています。

結論

私は、テクノオリガルヒのような者達には与しません。彼らが環境や社会的使命を忘却し冒涜することは許されるべきではありません。私は、社会的責任を重視し、持続可能な未来を目指す道を選びます。

参考書籍

直近で読んだものでこの辺の参考にしている本のリストです。

DeepSeek-R1の実力とライセンス:知っておきたい重要ポイント

最近、話題のDeepSeek-R1について、まだ、実物を確認していないので周辺から確認できるところについてまとめています。まず、DeepSeek-R1は大雑把に言うと、OpenAI-o1よりもずっと小さいモデルにも関わらず、OpenAI-o1と同等レベルのアウトプットが出るということで話題になっています。

ただ、使う視点からすると公開されているモデルには以下のものがありライセンス的には別物なので注意が必要かと思います。

  • DeepSeek-R1
  • DeepSeek-R1-Distill

DeepSeek-R1は6710億の総パラメータ数とされています。従って、最近の表記で考えれば、671Bと言ったところだと思います。従って、実際に、ダウンロードして試行しているユーザがいるのは既存のLlamaなどをベースとしたDeepSeek-R1-Distillではないかと思います。

DeepSeek-R1はMITライセンスとされています。ただ、周辺を確認した範囲では学習データは不明で、案の定、OpenAIのライセンスに抵触するのではなどと言った、騒動の兆しはあります。とはいえ、学習データは不明なので、オープンソースと書いていいかは疑義があります。オープンウェイトであってもオープンソースではないと思います。

とはいえ、恐らく、OpenAI-o1よりは総パラメータ数が少なそうと考える理由はいくつかあり、恐らくそうだろうと考えています。

ただ、既に、DeepSeek-R1-DistillでローカルLLMをという記事はいくつか確認しております。とはいえ、先に述べたようにDistillは既知のモデルのファインチューンなので使用には注意が要ります。特に、DeepSeek-R1-Distill-Llama-70BはLlamaベースのため、Llamaライセンスに感染しており注意が必要です。

DeepSeek-R1の性能的には以下のようなサイトで確認しています。

GitHubの新しい提供:Cobalt 100プロセッサによるホステッドランナー

PublicKeyのGitHub、マイクロソフトの独自開発CPU、Cobalt 100プロセッサによるLinux Arm64ホステッドランナーを無料プランユーザーにも提供へによれば、GitHubはパブリックレポジトリにより運用している無償ユーザにもCobalt 100によるホステッドランナーを提供するようです。

単純に言うと、GitHub上でソースコードをホストしそれをホステッドランナーで自動ビルドするようなことができます。単純に言えば目的はCobalt 100で稼働するソフトウェアの拡充が目的なのは明らかでしょう。

Cobalt 100とは?

  • ARMベースCPU :Microsoftが開発したARMベースのCPU。
  • 128コア :1チップで最大128コアを稼働可能。
  • Maia 100との併用 :Cobalt 100は深層学習モデルを稼働させるためのチップ「Maia 100」と併用が考えられています。

利点

  • ソフトウェアの拡充 :Cobalt 100で稼働するソフトウェアの拡充が目的とされています。
  • 簡単な理解 :タスクランナーとして使う分には、Cobalt 100で稼働可能なコードを得るだけの理解で十分です。

MetaのLlamaライセンス契約:オープンソースとは程遠い理由とリスク

エグゼクティブサマリー

Llamaライセンス契約の主要リスク

  • 7億MAUの制限 : 利用者の総数が7億人を超えると使用停止リスクが発生し、派生モデルの利用者全てがカウントされる可能性がある。

  • Meta側の柔軟性 : Llamaライセンス契約はMeta側の都合で文言がいつでも変更可能であり、利用者に不利な条件が追加されるリスクがある。

  • エグゼクティブの信頼性 : 最近のSNSでのファクトチェック廃止など、エグゼクティブの行動に疑念を抱く要素が多く、法的安定性に欠ける場合がある。

  • ナラティブのリスク : ナラティブを無批判に信じ込むことは重大なリスクを生む可能性があり、批判的思考が必要。

  • 「妥当な倫理のためのガイドライン」とのギャップ : 喧伝されるナラティブと実際のライセンス文言の間にギャップが存在し、ユーザーは誤解しやすい。

  • 法律および管轄に関する条項 : カリフォルニア州法が適用され、国際取引における保護が適用されない場合がある。また、カリフォルニア州の裁判所の専属管轄権があるため、利用者にとって不利になる可能性がある。

Shuji Sadoから"Llamaライセンス契約を適用するAIモデルを使用する際の多大なリスク"という刺激的なアーティクルが出ています。

まず、ポイントがいくつかあります。一つはLlamaライセンス契約の本質。

  • ライセンス契約の認識:Llamaライセンスは一方的なライセンスではなく、利用者のサインが求められる契約である。

  • オープンウェイトの本質:ライセンスがオープンウェイトでしかなく、オープンソースと程遠いものであるという認識が重要。

オープンソースには定義があります。

  • 自由な再頒布
  • ソースコードの公開
  • 特定人物・集団に対する差別の禁止 : たとえば「特定国家への輸出を禁ずるソフトウェア」はOSDに合致しない。
  • 利用分野に対する差別の禁止 : 例えば「兵器への利用を禁ずるソフトウェア」はOSDに合致しない。
  • ライセンスの権利配分 : ライセンスが再頒布者に認める権利は差別なく与えなければならない。
  • ライセンスの技術的中立性 : ライセンスに特定技術に依存するような条項があってはならない。

この定義と比較すると、Llamaライセンスはこれらから逸脱しており、オープンソースとは程遠いものです。

特に注意すべきものは、

  • 7億MAUの制限 : 利用者の総数が7億人を突破した場合の使用停止リスク。特に派生モデルの場合派生モデルの利用者すべてがカウントされるリスクがある。
  • Meta側の柔軟性 : Llamaライセンス契約はMeta側の事情でいつでも文言を追加できる構造になっている。

さらに、Llamaライセンスの解釈には注意すべき点があり。出力結果によってトレーニングされたモデルにもLlamaライセンスが及ぶという解釈を採用しているものと思われる。

この部分は、出力にライセンスを主張しない、Gemmaとは明白に異なる点であり注意が必要。

Gemmaには以下の文言がある。

Google claims no rights in Outputs you generate using Gemma. You and your users are solely responsible for Outputs and their subsequent uses.

ただし、このLlamaライセンスは特許法などの解釈を明白に逸脱しているため、司法解釈は不安定と考えざるを得ない。

例えば、特許法では「消尽」という概念があり、適法に上市された時点で消尽します。仮に自動車に特許があるとしても、その自動車を運用しているタクシー会社に特許を主張することはできません。

結果的に、Llamaライセンスは、GPLなどの精神から考えれば、極めて不自由なライセンスである。

整合性の欠如

  • Metaのビジョンとライセンス文言の整合性 : Metaの「オープンである」というビジョンとライセンス文言の整合性が取れていない点に注意が必要。
  • 法的な安定性の欠如 : ナラティブは勝手な思い込みであり、法的な安定性を保証するものではない。実際にMetaの開発者が持つビジョンが、契約やライセンスの文言に反映されていない場合、利用者にとって大きなリスクとなる。

ナラティブのリスク

  • ナラティブの信頼性 : 昨今では、ナラティブを無批判に信じ込んでしまうことが重大なリスクを生む可能性がある。そのため、ナラティブに対しても批判的思考を持つことが重要である。

  • 「妥当な倫理のためのガイドライン」との整合性 :AIの透明性や信頼性確保のために喧伝されるナラティブと実際のライセンス文言の間にギャップが存在することが問題である。このギャップにより、ユーザーは誤解しやすく、潜在的なリスクを見逃す可能性がある。

ナラティブのリスクへの対処

  • 批判的思考の促進 : 情報を受け取る際には、常に批判的な視点を持つことが重要です。ナラティブの背後にある意図やバイアスを考慮することで、より客観的な理解が得られます。

  • 多様な視点の収集 : 異なる視点や意見を取り入れることで、ナラティブの偏りを軽減することができます。多様な情報源からの情報を集めることが重要です。

  • 透明性の確保 : ナラティブを構築する際には、その根拠やデータを明示することが求められます。透明性が確保されることで、信頼性が向上し、誤解を減らすことができます。

AIの透明性や信頼性確保のために「妥当な倫理のためのガイドライン」を備えた無料のオープンソース的なモデルとして喧伝することは危険であると思われます。特に、今はトランプ政権を始めとして多くのリスク要因が発生しています。トランプ氏の政策は、保護主義や規制強化を重視する傾向があり、特に対中政策や貿易政策においては厳しい姿勢を取ることが予想されます

TP-Linkルータは本当に危険?真実を探る

はじめに

Youtubeでは、TP-LINKのルータに関して、極めて出どころの怪しい情報が飛び交っているようです。聞いた感じだと、

  • パケットを中国に転送している
  • VPNが自動切断される

このようなところだと思います。しかし、これは極めて怪しいと言わざるを得ません。私が考えるに、パケットを中国に転送しているというのはダウトだと思います。それは、分析だけで手間すぎるし、そもそも、中国へのルートが酷い輻輳を起こすのが明らかだからです。

VPNは中国国内だとかなり規制されているので、代表的なポートが塞がれている可能性はなくはないです。日本国内での利用だと甚だ迷惑ですが。

いくつかYouTubeの動画などを確認しましたが、危険説は米国政府の発表などが全てで、ソースコードのリバースなど客観的な根拠は見当たりません。せいぜいが、国家情報法ですね。しかし、そういう法律があるというのは行われている根拠にはなりません。

TP-Linkとは

「TP-Link」は、ネットワーク機器の製造や販売などを行っている企業です。1996年に設立され、現在は1万円以下という低価格で購入できるWi-FiルーターやWebカメラなどが人気を博し、世界170か国以上で10億人を超えるユーザーにネットワーク関連製品を提供しています。世界44か国に現地法人を設置しており、日本には2015年に子会社である「ティーピーリンクジャパン株式会社」を設立しています。

実現性の検討

VPNの自動切断は一応、実現可能です。しかし、VPNかどうかの判別は正直、難しいのでこれも眉に唾を100リットルくらい塗るレベルですね。ただ、それ以上に私が怪しんでいるのはルータのファームウェアをばらしたレポートが一つもないことです。というか、ルータに問題があり得るなら、ファームウェアをばらせば一発です。故に、私はそのようなレポートがない以上、本件自体が虚偽と考えざるを得ません。

TP-LINKのコード

実は、TP-LINKのコードの多くは、GPLのコードです。したがって、多くの機種でコードが公開されています。もちろん、リビルドにはそれ相応の手間がかかるとは思います。そして、リバースエンジニアリングした方もいらっしゃいます。以下の記事でリバースエンジニアリングの例を見ることができますが、ロジックボムや隠されたゲートが発見されたという情報は確認できていません。

Reverse engineering my router’s firmware with binwalk

また、GPL上、ルータに書き込まれているバイナリとソースコードに不整合がある場合、GPL違反に問われるリスクがあります。そのようなリスクを冒して、トロイの木馬を埋め込むのはかなりハードルが上がると言わざるを得ません。

GPLは、ソフトウェアの自由な利用、改変、配布を保障するライセンスですが、その条件を遵守しない場合、法的な問題が発生することがあります。具体的には、GPLに基づくソースコードを使用しているにもかかわらず、ファームウェアにその変更点やソースコードを公開しない場合、著作権侵害として訴えられるリスクがあります。

検討

当然、本件が事実であると仮定した動画はすべて、疑いの目で見ることになります。私個人としては、適切なソースを引用していない場合、このような動画はすべて通報対象としています。

家庭用ルータの脆弱性

家庭用のルータの場合、特にUPnP周りが脆弱になることは比較的多いです。ネットワーク経由のゲーミングではポート開放が前提になることがあり、それがどのように設定されているかによっては致命的な脆弱性を実装するリスクがあります。

UPnP (Universal Plug and Play)とは

UPnP(Universal Plug and Play)は、ネットワークに接続されている機器同士が自動的に通信し、必要な設定を自動で行うための技術です。この技術により、ユーザーは手動で設定を行う手間を省くことができます。特に、ネットワーク経由のゲーミングやストリーミングサービスでは、UPnPが重要な役割を果たします。この種のゲートウェイ機器では、UPnPによるポートの自動開閉が定義されており、必要に応じてポートが自動開閉されます。

しかし、その利便性の反面、UPnPはセキュリティ上の脆弱性を抱えることが多く、適切に設定されていない場合や脆弱な実装がされている場合、外部からの不正アクセスのリスクが高まります。家庭用ルーターにおいても、UPnP機能の脆弱性がしばしば指摘されています。

監視とロギング

本来、このような問題の対処には監視とロギングが必要ですが、技術者以外にはその判断が困難です。家庭用ルータでsyslog転送などを持っているものはほとんど見受けられません。

終わりに向かって

個人的には、生成AIなどでこのようなスキルを埋めることができないかと思いますが、現状では生成AIの必要な負荷と家庭用のルータに利用されるプロセサのスペックを勘案すると、難しいと言わざるを得ないですね。

Delta Lakeの楽観的排他制御:ACID特性の詳細と実現方法

仕事で、Microsoft Fabric絡みのところを調べていました。

基本、Fabricの中ではApache Sparkなどが動いていることは判っていたので、Delta LakeでACID特性が実現されているというのもなんとなくわかっていました。では、どのようにしてACID特性が実現されているのかというところには関心がありました。この辺に関して触れられているのは以下のQiita上の記事です。

https://qiita.com/toshimitsuk/items/5dac76dddfe921cb8a47

そして、上記記事の次のところに着目しました。

Delta Lakeのソースコード (https://github.com/delta-io/delta) から、Delta Lakeの楽観的排他制御の仕組みを見ていきます。なお、ここではUpsertを対象に楽観的排他制御の仕組みを見ていきます。(再掲)

なるほど、楽観的排他制御かと。 では、楽観的排他制御とはなにかということです。

悲観的排他制御

これと対照的な概念が悲観的排他制御です。 悲観的排他制御とは所謂ロックによって排他制御を実現します。

こちらの方がよく知られているでしょう。いわゆるUpsertの場合において考えます。Upsertは排他制御がよくわかるところです、Upsertを仮に選択と条件分岐と更新と追加の組み合わせで考えます。

  1. 対象キーでレコードが存在するかどうかを確認する
  2. もし、レコードが存在すれば更新する
  3. レコードが存在しなければ追加する

これをそのまま実装してしまうと、1.と2.の間に割り込まれてしまうと、その間に重複するレコードが作成されてしまうリスクが発生します。結果的に、3.は正しく、Primary Keyなどの処理が実装されていればエラーになります。

Upsertであれば、悲観的排他制御であれば、1.のタイミングで対象となる表などにはロックが作られ、割り込み処理は一般的には待たされます。結果として、Upsertは完遂できます。仮に、待たされた方が自動連番などでキーを発生させていれば、その後により後のキーが発行されて正常に終了するでしょう。

楽観的排他制御

では、これが楽観的排他制御ではどうなるでしょうか? 楽観的排他制御ではロックではなく、更新の検出により処理します。つまり、処理する前に、割り込まれたことを検出して処理をします。 つまり、なぜ楽観的なのかというと、滅多に抵触する処理は行われないはずという仮定があります。 このあたりの詳しい話については以下の記事も参考にできます。

https://qiita.com/NagaokaKenichi/items/73040df85b7bd4e9ecfc

  1. 検証: 最初にレコードの現在の状態を取得し、その状態を記録します
  2. 更新の準備: データを更新する準備をします
  3. 更新の試行: 更新を試みますが、その際に他のトランザクションが同じレコードを変更していないかを確認します
  4. 競合の対処: 他のトランザクションが変更していた場合は、更新を再試行するか、エラーを返します

パフォーマンスと課題

さて、悲観的排他制御と楽観的排他制御の差はどこにあるのか? 一つのポイントはパフォーマンスです。悲観的排他制御はロックを行うため、そこがパフォーマンス上のボトルネックになります。では、楽観的排他制御は銀の弾丸か? そんなことはありません。銀の弾丸はどこにも存在しないのです。

楽観的排他制御の弱点は、更新の検出にあります。これが崩れればすべてがお釈迦です。そして、楽観的排他制御のポイントは、楽観的、競合することはそうそう起きないだろうにあります。競合がかなりの頻度で起きるとすればどうでしょうか? ほとんどの場合で、何らかの回避動作が必要になります。更に、その回避動作は正しいのかの検証も極めて重要です。

結論から言うと、楽観的排他制御は難易度が高いです。その意味ではロックして、競合処理を起こさないようにする悲観的排他制御の方がシステム的な難易度は低いです。パフォーマンスの劣化は大きな課題ですが。

テキストエンコーダーとベクトル演算が引き起こすプロンプト混在の謎

スタジオ真榊のAIイラスト術解説になぜ、複数キャラクターのプロンプトが混じってしまうのかというのがあるので、私なりに解説を試みてみましょう。

まず、画像生成AIのプロセスについて考える必要があります。代表的な、画像生成AIであるStable DiffusionについてはDeep Learning 論文 Advent Calendar 2022に参加された、omiitaさんの表した、「世界に衝撃を与えた画像生成AI「Stable Diffusion」を徹底解説!」があるのでこれを下敷きにします。

Stable DiffusionはText Encoder、拡散モデル、VAEというパーツで成り立っています。基本的にはプロンプトを解析する、Text Encoder、画像生成に重要な役割を担う拡散モデル(U-Net)を考えます。VAEは拡散モデルのはらんでいる問題点の解決には重要ですが、あとで考えても構わないと思います。

まず、「複数キャラクターのプロンプトが混じってしまう」要因には、Text Encoderが大いに関わっています。Stable DiffusionではText EncoderにCLIPという手法を使っていますが、これの役目はテキストをベクトルに変換することです。まず、試みに、”(1 girl, blue hair color), (1 boy, red hair color)”というプロンプトを考えます。

“()”は通常、Stable Diffusionでは、重みづけ以上の意味を持ちえません。故に、見た目ではグループ化のように見えますが、Stable Diffusionでは重みづけ以上の意味はありません。さて、ベクトル表現とはなんでしょうか? これは分散表現と大いに関係があります。

例えば、Kingという言葉を分散表現でとらえるとき、このような考え方ができます。King→男性の統治者、そうすると男性という概念と統治者という概念で表現できます。簡単に表そうとすれば(1,1)というベクトルでしょうか。この場合、最初の次元が例えば男性という概念、統治者というのが2次元目とします。

さて、女王と言うものを考えるためにベクトルの次元を増やしましょう。2次元目として女性という概念を加えます。この場合、先ほどの例は(1,0,1)というベクトルで表現できるかもしれません。昔、Word2vecが大流行りしたときに、王-男性+女性=女王というサンプルが多く見られました。これは以下の計算で、この例に当てはめられます。

(1,0,1)-(1,0,0)+(0,1,0)=(0,1,1)

ここまで、考えると、なぜプロンプトが混じるのかに答えが見えてきます。理由はベクトルの計算において、混じってしまうからです。先ほど、述べたように、()はStable Diffusionにおいて、重み以上の意味はありません。従って、書いたつもりになっていても単にベクトル演算の押し合いへし合いでかき回されているだけになります。

では解決策はどうするのか、何とかして計算を分離すればいいとなります。例えば、Latent Coupleなどでは、領域を分割して、そこに独立してText EncodingやU-Netを構築します。この辺は「複数キャラクターを分けて生成するLatent coupleの改良版!(Attention Couple)」あたりの解説を読むのが適切です。

以上、なぜ、プロンプトが混じるのかを解説してきました。

なぜ、VAEは特に説明しなかったのか? それは、基本的には拡散モデルの計算量を削減するための仕組みであり、実際上、VAEは画像の仕上がり具合には大きな影響がありますが、特に、最近では、VAEはモデルに組み込まれているものをそのまま使うことが多く、SD 1.5時代のように色味とかを考えてVAEを案じることがほぼ見られなくなっているため説明を省略しました。

2025年に廃止されるAzureサービス:移行先と最適な代替案

2025年に廃止になる、Azure関係のサービスは以下のような感じです。

2025/1/6

Microsoft Genomics

2025/3/31

Visual Studio App Center

2025/6/30

SAP HANA Large Instances

2025/9/30

Azure Database for Maria DB
Azure Basic Load Balancer
Azure HPC Cache
Azure Remote Rendering
Azure Service Map
Azure SQL Edge
Azure Unmanaged Disks
Azure vFXT

時間が限られているので難しいものもありますが、わかる範囲で考えていきます。SAP HANA Large Instancesは時間が限られていますが、Azureのサポートされているインスタンスサイズへの移行が考えられるでしょう。その意味では、テストが課題ですが比較的可能な範囲かなと思います。

Azure Database for Maria DBはだいぶ前からアナウンスがかかってましたし、恐らく、Azure Database for MySQLが考えられるでしょう。DDLなどのテストは必須ですが、他のオプションよりは考えられるでしょう。

Azure Remote RenderingはHololens2とWindows 10に向けた、レンダリングソリューションなので、実質、Windows 10のMRがリタイアしてしまえば存在意義を失うのは確かです。

Azure SQL Edgeは地味に面倒かもしれないです。まず、状況によるといったところです。SQL Serverは検討され得ますが、x64のみのサポートなのでエッジデバイスでARMの場合には検討対象から外れます。その場合、SQLiteなどを考慮できますが、クラウドとかにミラーリングが発生するならば厄介です。その場合、エッジデバイス内はmemcachedとかにして、クエリをキャッシュするという戦略の方がいいかもしれないです。

考えられる範囲でまとめてみました。

2025年に終了するMicrosoftの製品群

窓の杜の記事 “2025年にサポート終了となるMicrosoft製品をチェック 〜Windows 10が10月に引退へ” からです。大きいところでは、Windows 10のサポート終了が大きいですね。あと、デッドラインが迫っているのはMicrosoft Genomics、移行先としてはCromwellOnAzureが挙げられていますがパット見た感じはいそうですかと移行はできなさそうです。

Dynamics系列の移行も迫っているので注意が必要です。あとは、忘れてはいけないのが、Azure Database for MariaDBの終了予定ですね。

クラシックポリシー

2025年1月6日

  • Microsoft Genomics

2025年3月31日

  • Visual Studio App Center

2025年6月30日

  • SAP HANA Large Instances (HLIs)

2025年9月19日

  • Azure Database for MariaDB

2025年9月30日

  • Azure Basic Load Balancer
  • Azure HPC Cache
  • Azure Remote Rendering
  • Azure Service Map
  • Azure SQL Edge
  • Azure Unmanaged Disks
  • Azure vFXT

2025年10月14日

  • Windows 10 Enterprise and Education
  • Windows 10 Home and Pro
  • Windows 10 IoT Enterprise

モダンポリシー

2025年4月2日

  • Dynamics 365 Business Central on-premises (Modern Policy), 2023 release wave 2, version 23.x

2025年4月9日

  • Microsoft Configuration Manager, Version 2309

2025年10月7日

  • Dynamics 365 Business Central on-premises (Modern Policy), 2024 release wave 1, version 24.x

2025年10月14日

  • Windows 11 Enterprise and Education, Version 22H2
  • Windows 11 IoT Enterprise, Version 22H2

2025年10月22日

  • Microsoft Configuration Manager, Version 2403

2025年10月24日

  • Windows Server Annual Channel, Version 23H2

2025年11月11日

  • Windows 11 Home and Pro, Version 23H2

固定ポリシー

2025年1月14日

  • Dynamics C5 2015
  • Dynamics CRM 2015
  • Dynamics NAV 2015
  • Dynamics SL 2015
  • Visual Studio 2022 , Version 17.6 (LTSC channel)

2025年4月8日

  • Dynamics GP 2015
  • Dynamics GP 2015 R2

2025年7月8日

  • Microsoft SQL Server 2012, Extended Security Update Year 3
  • SQL Server 2014, Extended Security Updates Year 1
  • Visual Studio 2022 , Version 17.8 (LTSC channel)

2025年10月14日

  • Access 2016
  • Access 2019
  • Dynamics 365 Business Central on-premises (Fixed Policy)
  • Excel 2016
  • Excel 2019
  • Exchange Server 2016
  • Exchange Server 2019
  • Microsoft Office 2016
  • Microsoft Office 2019
  • Microsoft Report Viewer 2015 Runtime
  • OneNote 2016
  • Outlook 2016
  • Outlook 2019
  • PowerPoint 2016
  • PowerPoint 2019
  • Project 2016
  • Project 2019
  • Publisher 2016
  • Publisher 2019
  • Skype for Business 2016
  • Skype for Business 2019
  • Skype for Business Server 2015
  • Skype for Business Server 2019
  • Visio 2016
  • Visio 2019
  • Visual Studio 2015
  • Visual Studio Team Foundation Server 2015
  • Windows 10 2015 LTSB
  • Windows 10 IoT Enterprise LTSB 2015
  • Windows 10 Team (Surface Hub)
  • Windows Defender Exploit Guard
  • Windows Defender for Windows 10
  • Windows Server 2012, Extended Security Update Year 2
  • Windows Server 2012 R2, Extended Security Update Year 2
  • Word 2016
  • Word 2019