世界を動かす技術を、日本語で。

DeepSeek-V4-Flashは、LLMの操作が再び興味深くなったことを意味します

概要

  • Steering とは、LLMの出力を 内部活性値の操作 で直接制御する手法
  • DeepSeek V4 FlashDwarfStar 4 によるローカル実験が現実的に
  • Steeringは 新しい制御方法 として注目されるが、実用性には疑問も
  • プロンプト操作 との比較や応用可能性についても議論
  • 今後の オープンソースコミュニティ の動向に期待

Steering(ステアリング)とは何か

  • Steering はLLMの 推論中に内部活性値を直接操作 し、出力傾向を制御する技術
  • 例:モデルに「簡潔に答える」概念を抽出・数値ベクトル化し、推論時に加算
  • DeepSeek V4 FlashDwarfStar 4 などのローカルモデルで実験が可能に
  • DwarfStar 4では ステアリング機能 が組み込まれており、今後の発展に期待

ステアリングの仕組み

  • ある概念(例:「簡潔」)を 同一プロンプト+修飾語付き で2回モデルに入力
    • それぞれの 活性値の差分 を計算し、「ステアリングベクトル」として利用
    • このベクトルを他のプロンプト推論時に加算し、同様の効果を再現
  • より高度な方法として、 別モデルで特徴抽出 し、個々の概念にマッピングして強調
    • Anthropicの sparse autoencoders のアプローチが代表例

ステアリングの魅力

  • トレーニングセット構築の手間 を省き、モデルの「賢さ」や「話し方」を直接調整可能
  • 「簡潔さ/冗長さ」「誠実さ/速度」などの スライダー式制御 も理論的には可能
  • Golden Gate Claudeのような ユニークな出力制御例 も興味深い

ステアリングが普及しない理由

  • 大手AIラボ は直接モデルを再学習・微調整できるため、中間的なステアリングは不要
  • 一般ユーザーは API経由 で利用するため、 活性値や重みへのアクセス不可
  • オープンモデル の性能が低かったが、DeepSeek V4 Flash登場で状況が変化
  • プロンプト操作 でも多くの制御が可能なため、手間をかけてステアリングする動機が薄い

プロンプトで表現できない概念への応用

  • 「知性」など、 プロンプトで表現困難な概念 にステアリングが有効か検証が必要
  • ただし、知性のような複雑な概念は モデル全体の重みに分散 している可能性が高い
    • 結果的に「賢いモデルを作る」作業と本質的に同じになる懸念

ステアリングのデータ圧縮的利用

  • 長いプロンプトでしか伝えられない概念を ステアリングベクトル化 し、コンテキスト節約
  • 例:「自分のコードベースの知識」など
  • しかし、これも 本質的にはファインチューニング が必要なケースが多いと予想

ステアリングの今後と課題

  • 現状、多くの効果は プロンプト操作や再学習 で代替可能
  • オープンソースコミュニティによる 新たな応用やツール開発 に期待
  • DwarfStar 4のような モデルごとの「特徴ライブラリ」 が普及する可能性
  • 拒否応答の解除 など、プロンプトでは困難な振る舞い修正にはステアリングが有効
  • 重み改変よりもモデル能力を損なわない 利点も

まとめ

  • ステアリング はLLM制御の新たな可能性を持つが、現状は実験段階
  • 本格的な実用化・普及の鍵は コミュニティの今後の研究と応用事例
  • プロンプト操作・ファインチューニング との使い分けが重要
  • 今後6か月で 有望な応用例 が現れるか注視すべきタイミング

Hackerたちの意見

antirezの最近のプロジェクトDwarfStar 4に触発されてこの投稿を書いてるんだけど、これはllama.cppのバージョンで、DeepSeek-V4-Flashだけを動かすように簡素化されてるって言うのは違うよ。確かにllama.cppには借りてる部分もあるけど、単なる簡素化版じゃないからね。

真実はその中間にあるように思う。DwarfStar 4は主にllama.cppのおかげで存在しているし、著者たちは基本的にllama.cppのコードにとてもインスパイアされている。実際にいくつかの部分は文字通りコピーしているけど、ちゃんとクレジットも付けてるし、これが悪いとは言ってないよ。私には問題ないと思うけどね。 > ds4.cはGGMLにリンクしていないけど、llama.cppプロジェクトとそのカーネル、量子化フォーマット、GGUFエコシステム、そこで開発された苦労の結晶のおかげで存在している。私たちはllama.cppとその貢献者に感謝している。彼らの実装、カーネル、テスト、設計選択は、このDeepSeek V4 Flash専用の推論パスを構築する際の重要な参考になった。いくつかのソースレベルの部分は、MITライセンスの下でここに保持または適応されている:GGUF量子レイアウトとテーブル、CPU量子/ドットロジック、特定のカーネル。だからこそ、私たちは本当に感謝しているので、LICENSEファイルにGGMLの著作権表示を残している。- https://github.com/antirez/ds4#acknowledgements-to-llamacpp-... ここで遊ぶのがすごく楽しかったよ。約2日前に、生成速度を47.85 t/sから57.07 t/sに上げることができた :)

そうだね、コードの重複は最小限で、いくつかのカーネルがあるだけ。実装している量子化器のための量子化コードも少し。DwarfStar 4は llama.cpp のフォークじゃないけど、もし llama.cpp がなかったら、プロジェクトはもっと不足してたと思う。大事な詳細をすぐに把握できたからね。でも、これは単なる簡略化された llama.cpp じゃないよ。これは llama.cpp がこのプロジェクトだけじゃなくて、続いているすべてのプロジェクトにとってどれだけ重要かを減少させるものではない。コードの問題じゃなくて、進むべき道や量子フォーマット、学びの教訓、パターンを学ぶために確認できる最適化されたカーネルのことだよ。

記事が操縦ベクトルの最大の利用法、つまりモデルから拒否を取り除く可能性(いわゆるアブリテレーションやアンセンソリング)について触れてないのが意外だよ。以前の論文では「ほとんどの拒否は単一のベクトルにある」と言っていて、そのベクトルを特定して「弱体化」させれば、モデルは拒否をスキップして「どんな」リクエストにも普通に答えるようになるんだ。これは、拒否のためにSFTで訓練された以前のモデルではかなり実現可能だったけど、新しいモデルではちょっと複雑になってるみたい。でも、ある程度はまだできるよ。すでにこのプロセスを自動化して拒否を減らすためのライブラリもいくつかあるけど、通常はモデルを特定して修正して、アンセンソリングされたモデルとしてリリースすることに焦点を当ててる。この操縦技術を使えば、ベクトルを動的に変更できるから、アブリテレーションプロセスが他の無関係なタスクの精度を損なう場合でも、モデルを変更する必要がないんだ。

なんでそんなにセンシングにこだわってるのか分からないな。もし視点を逆にしたら、センシングには「ワクチンは有害だ」という虚偽を報告しないことも含まれるよ。科学や論理はしばしばセンシングを通じてこういう問題に取り組むけど、インターネットを均等にサンプリングしたモデルは、ワクチンが有害だと思うだろう。もっと賢い修正は、この問題のある文脈をセンシングすることだと思う。だから、君が思う「センシングされているバイアスを暴くこと」が一般的な使用ケースの改善につながる理由が分からないんだ。

p-e-wがこの前、Discordでこれについて話してたんだ。どうやら、1ニューロン法はKLDにとってかなり悪いみたいで、それが新しい技術が定着した理由なんだって。

プロンプトの言葉を調整することで、すでに非常に細かい制御ができるよ。もしかしたらプロンプトが下手なのかもしれないけど、訓練データのバイアスを克服するのは不可能だと思う。プロンプトを使って訓練データからパターンを抽出することしかできないし、細かい制御は本当にできないよ。

投稿してくれてありがとう!ちょっとした確認だけど、DwarfStarの操縦機能を使って、DS4から拒否を完全に取り除くことができたよ。これはおもちゃのような例のデータセット(私が提供するプロンプトペア)だけの話で、能力そのものではないんだ。正しいデータセットを考え出せて、よく文書化された操縦機能の使い方を理解している人は、操縦にアクセスできると思ってた。何も知らないでただコピペする人にはどうか分からないけど、拒否のないモデルにアクセスできるのはいいアイデアかもしれないね。疑問に思ったから、操縦ファイルは公開しなかったけど、すごく混乱してるよ。ちなみに最近、サポートが拡張されて、今は操縦ベクトルを異なるタイミングでアクティベーションに適用できるようになったよ:常に、考えた後だけ、ツール呼び出しの外でだけ、... 多くの人が気づいていない重要なことは、推論エンジン内でのベクトル方向の操縦は、GGUFを同じ方法で修正するよりもはるかに優れているってこと。操縦すればするほど、モデルの能力が損なわれるから、実行時に必要最小限の操縦を適用することができる。選択した瞬間だけ適用することもできるし、拒否方向のエネルギーが特定の閾値を超えたときだけ操縦を適用することも可能だよ(まだ実装してないけど、そのアイデアは気に入ってる)。遊べることはたくさんあるよ。

私の理解では、DeepSeek V4は、通常の西洋のAIモデルが無害な入力に対して示す拒否行動がほとんどない(あっても少し)らしい。これは主にソフトウェアセキュリティ評価のケースについてのこと?

モデルがローカルとしてどうやって成立するの? ~192GBのRAMが必要って、ちょっと多すぎる気がする。

96GBのMacBookで動くよ。128GBの方がいいけど。DwarfStarのREADMEをチェックしてみて。

ハードウェアがあれば、ダウンロードして実行できる? そうしたら、必要なハードウェアがあってもなくてもローカルってことになるね。なんか、必要なラジオやアンテナがない人にとって、Zigbeeがローカル/LANと見なせるかどうかを聞いてるみたいだ。

いい記事だけど、一つだけ混乱してることがある。記事では、ステアリングはローカルモデルでしか機能しないって言ってるけど、GitHub Copilotには「メッセージでステアリング」機能があって、実行中にコース修正できるんだ。よく使ってるよ。これは違う種類のステアリングだよね?エージェントステアリングは、ハーネスとLLMの間のピンポンの間に別のユーザーメッセージを挿入するんじゃないかな。 - https://docs.github.com/en/copilot/how-tos/copilot-cli/use-c... - https://docs.github.com/en/copilot/how-tos/copilot-sdk/use-c...

違う種類のステアリングだね。それはモデルの自然言語思考出力にテキストを注入するようなものだよ。だけど、AnthropicのNLAの作業を使って、特定のレイヤーでのモデルのアクティベーションの自然言語表現を見て、テキストを編集して、全く違うアクティベーションに戻すという中間的な方法もできるよ。

実際に使うには、DL研究向けのものに聞こえるね。

いや、拒否防止ベクトルをロードすれば、コンピュータセキュリティに関連することなど、いろんなことを聞けるよ。学びたいなら、「その問題のあるリクエストにはお手伝いできません」ってずっと言うモデルよりも、ずっと良いモデルだよ。

DS4リポジトリの中で本当に面白いと思うのは、フロンティアラボがユーザーから隠している興味深いノブを探求して、それが実際の開発やインタラクションのワークフローにどうフィットするかを考えることだよ。異なるインタラクションのモダリティが探求されているのを見るのは本当にクールだし、例えば、ステアリングがユーザーインターフェースに役立つ形で組み込まれる方法を考えるのも面白い。いったん秘密が明らかになって、ユーザーがこのように内側からひっくり返されたモデルから得られるコントロールやユーティリティのレベルを理解するようになれば、それは彼らのツールベルトの重要な部分になると思うし、モデルやモデルプロバイダーからこのレベルのコントロールが期待されるのは自然なことになるだろうね。

ステアリングを使ってAIをもっと過激にしたよ:記事はこちら: https://www.outcryai.com/research/shift-a-models-political-i... アプリはこちら: https://apps.apple.com/us/app/outcry-activist-ai/id676208676... この技術には大きな可能性があるね。

正直、操縦よりも面白いのはソフトプロンプト(仮想トークン)の使い方だよね。これらの仮想トークンを使うことで、AIの非言語的な意味の領域を見つけて、複雑な方法で挙動を変えることができるんだ。ソフトプロンプトをアクティビストAIに統合した方法についてここに書いたよ: https://micahbornfree.substack.com/p/the-week-outcry-woke-up... https://www.outcryai.com/research/how-to-create-activist-ai

これ、コントロールベクトルを思い出させるな。特に、リンク先のDwarfStarリポジトリのこの行が印象的だよね。

y = y - scale * direction[layer] * dot(direction[layer], y) 「コントロールベクトルは、推論中にモデルの活性化に適用して、追加のプロンプトなしでモデルの挙動を制御できるベクトル(技術的には、レイヤーごとに1つのベクトルのリスト)だよ。」