DeepSeek-V4-FlashでLLMステアリングが再び面白くなってきた
(seangoedecke.com)- DwarfStar 4はllama.cppをDeepSeek-V4-Flash専用に絞り込み、ローカルモデルでLLMステアリングを実験しやすくした
- ステアリングは、「短く答える」のような概念の活性化の差分をベクトルとして取り出し、推論中に同じ層へ加えて挙動を変える方式
- ステアリングには重みや活性化へのアクセスが必要なため、前提となるのはローカル実行であり、API利用者にとってはOpenAIのような提供者だけが扱える領域
- 多くの基本的な調整はプロンプトのほうが簡単だが、拒否の除去のようにプロンプトでは頼みにくい学習済みの挙動を変えられる可能性は残っている
- DeepSeek-V4-FlashとDwarfStar 4によってオープンソースでの実験が増える可能性があり、実際の応用は今後6か月以内に見えてくるかもしれない
DeepSeek-V4-FlashとDwarfStar 4
- DwarfStar 4は、llama.cppをDeepSeek-V4-Flash実行専用に絞り込んだプロジェクトで、ローカルモデル上でLLMステアリングを実験しやすくしている
- DeepSeek-V4-Flashは、フロンティアモデルの低レベルなエージェント型コーディングと競えるほど十分に優れたローカルモデルである可能性がある
- ステアリングではモデルの重みや活性化にアクセスする必要があるためローカル実行が必要であり、DeepSeek-V4-Flashのようなモデルの登場によって、より多くのエンジニアが自ら実験できる条件が整いつつある
- antirezはDwarfStar 4にステアリングを第一級の機能として組み込んだが、現時点の例はプロンプトでも再現できる、玩具的な**「verbosity」調整**に近い
- DwarfStar 4の初回リリースは8日前で、今後このステアリング機能がどう発展するかが注目される
ステアリングの仕組み
- ステアリングの基本的なアイデアは、「短く答える」のような概念をモデル内部の状態から取り出し、推論中にその概念を構成する数値的な活性化を強めること
-
単純なステアリングベクトルの抽出
- 同じ100個のプロンプト集合をモデルに2回入力し、1回は通常のプロンプトで、もう1回は「respond tersely」を付けて実行できる
- 各プロンプト対についてモデルの活性化差分を測定し、ある活性化行列から別の活性化行列を引くとステアリングベクトルになる
- 任意のプロンプトに対して同じ活性化層へこのベクトルを加えると、モデルがより簡潔に応答する効果が期待できる
- 測定できる活性化は、attentionの後や各層の間など複数の地点にあり、1つを選ぶことも複数を試して最もうまく機能する場所を探すこともできる
-
より精巧な特徴抽出
- 別のモデルを学習させて、元のモデルの活性化から共起する挙動パターンである**特徴(feature)**を抽出することもできる
- 抽出した特徴を個別の概念に再マッピングし、同じ方法で活性化を強めるアプローチが可能
- Anthropicのsparse autoencodersは、この原理に近い方式として紹介されている
- この方式は単純な差分ベクトルより深いパターンを捉えられるが、時間・計算・専門性のコストははるかに大きい
- オープンなLLaMAモデルでこの方式を扱った詳細分析があり、自分で試した結果は評価が分かれるものに近かった
ステアリングが興味深い理由
- ステアリングは、学習データセットを苦労して構成してモデルをより**「smart」な分布へ押しやる代わりに、モデル内部の「smart」ダイヤル**を見つけて右端まで回す可能性のように見える
- 文体調整の面でも、プロンプトに「you MUST」のような修飾を足したり引いたりする代わりに、簡潔さ/冗長さや誠実さ/速度のようなスライダーを直接動かす操作盤を想像できる
- Golden Gate Claudeは、あらゆる文をGolden Gate Bridgeへ引き寄せてしまい、ステアリングがモデルの挙動をどれほど強く変えられるかを示す、興味深くも不穏な例になっている
ステアリングが広く使われてこなかった理由
- ステアリングはAI研究における一種の**「中間層」的なアイデア**に位置しており、大手AI研究所にも一般ユーザーにもやや噛み合わない
-
大手研究所には必要性が低い
- 大手AI研究所は、推論中にぎこちない「脳手術」をしなくてもモデルを直接操作できる
- Anthropicはこの領域を扱っているが、主に解釈可能性と安全性の観点から取り組んでいる
- 大手研究所が特定の挙動を欲する場合、通常はステアリングよりモデルを学習させるほうを選ぶ
-
一般ユーザーにはアクセス権がない
- APIでLLMを使う一般ユーザーは、モデルの重みや活性化にアクセスできないため、ステアリングに必要な情報を得にくい
- たとえばGPT-5.5のステアリングベクトルを特定したり公開したりできるのはOpenAIだけだ
- オープンウェイトモデルなら可能だが、最近まではステアリングを試すに足るほど十分に強力なオープンモデルがなかったという見方がある
-
多くの基本用途ではプロンプトのほうが効率的
- モデルの「脳」を直接操作するという表現は印象的だが、プロンプトトークンもまたモデルの内部状態を直接変えている
- ステアリングなら活性化をかなり細かく制御できるが、プロンプト文言を変えるだけでも非常に細かな制御は可能
- モデルをより冗長にするためにステアリングを使うより、そうしてほしいと依頼するほうがはるかに簡単だ
プロンプトでは難しい対象をステアリングできるか
- ステアリングが本当に有用になる可能性の1つは、プロンプトでは要求できない概念を見つけてステアリングする場合
- **「知能」**は候補に見えるが、現世代のモデルはすでにその性質を内蔵しており、「you are an expert」のような4o時代のプロンプティングは、もはや意味のある効果を出しにくい
- **「知能」**のステアリングベクトルが存在するかは経験的な問題だが、そうしたベクトルが存在するという点には懐疑的だ
- 「知能」のような難しい概念を構成するステアリングベクトルは、モデル全体の重み集合とほぼ同じ範囲にまたがっている可能性があり、その場合ベクトルを見つける問題は結局賢いモデルを学習する問題へ還元される
- GPT-2の各層の活性化を、同じ構造を持つはるかに強力なモデルの活性化に置き換えれば、より良い結果が出るだろうが、この場合はGPT-2を賢くしたというより、実質的にはより強いモデルと対話しているのに近い
- 十分に高度なステアリングは実際のモデルを置き換えることになり、知能は元のモデルではなくステアリングそのものに宿ることになる
データ圧縮としてのステアリング
- ステアリングの別の可能性は、多くのトークンを必要とする概念を1つのステアリングベクトルに詰め込んでコンテキストウィンドウを節約すること
- これは概念をモデルの作業記憶から暗黙記憶へ移す方法のように見ることができる
- たとえばGPT-5.5が特定のコードベースを高速に読んで得た知識の一部が活性化に埋もれているなら、それを非常に大きなステアリングベクトルとして取り出せるかもしれない、と考えることはできる
- **「自分のコードベースを知っている状態」という概念も「知能」**と同じように十分複雑で、完全なファインチューニングが必要になる可能性が高い
- 産業界で**「コードベースでモデルをファインチューニングする」**試みの結果も、概して成功していない
- ただし、この種のステアリングが可能である余地を完全に否定することはできない
展望とコミュニティ実験
- ステアリングには魅力があるが、その利益の大半はプロンプトでより効率よく再現でき、より野心的な目標は学習やファインチューニングでより効率的に再現できるのではないか、という懐疑がある
- オープンソースコミュニティはまだステアリングをあまり扱ってこなかったが、DeepSeek-V4-FlashやDwarfStar 4のような流れによって状況が変わり始めるかもしれない
- ステアリングに実用的な応用があるなら、今後6か月以内に見えてくる可能性がある
- DwarfStar 4のようなモデル別ツールが、ブースト可能な特徴のライブラリを含むようになるかもしれない点も注目に値する
- 人気のあるオープンウェイトモデルが出るとコミュニティがラッパーや量子化版をすぐに出すように、モデル内でブースト可能な特徴を抽出しようとする動きも生まれるかもしれない
追加の議論: 拒否の除去とランタイムステアリング
- その後のHacker Newsのコメントで、複数のコメント投稿者とantirezは、ステアリングによってプロンプトでは変えにくい学習済みの挙動を変えられると見ている
- 代表例はモデルの**拒否(refusal)**の除去
- あるコメント投稿者によれば、オープンモデルにおける検閲解除やabliterationは、すでにこの方法で行われている
- antirezによれば、重みを書き換えるとモデル能力をより損なう可能性がある一方で、より軽量なランタイムステアリングなら必要なときだけ適用できる
1件のコメント
Hacker Newsの意見
投稿ありがとう。1点だけ訂正すると、DwarfStarのステアリング機能でDS4の拒否応答は完全に除去できた。
おもちゃレベルなのはサンプル用データセット、つまり私が提供したプロンプト対であって、機能そのものではない。
適切なデータセットを作れて、文書化されたステアリング機能の使い方を理解している人なら、ステアリングを活用できると思う。
何の理解もなくコピー&ペーストしかしない人たちまで拒否のないモデルにアクセスできるのが良いことかは分からず、そのためステアリングファイルは公開しなかったが、今でもかなり複雑な気持ちだ。
最近はサポートが拡張されて、ステアリングベクトルを常時、思考後のみ、ツール呼び出しの外側のみ、といった異なるタイミングの活性値に適用できるようになった。
多くの人があまり知らない重要な点は、推論エンジン内部でベクトル方向のステアリングを行う方法は、同じやり方で修正したGGUFを使うよりはるかに優れているということだ。
ステアリングを強くかけるほどモデル能力は損なわれるので、実行時に適用すれば、望む目標に必要な最小限だけを適用でき、選んだ瞬間にだけ適用することもできる。
まだ実装してはいないが、拒否方向のエネルギーが特定の閾値を超えたときだけステアリングを適用することもできそうで、試す余地は大きい。
これは主にソフトウェアセキュリティ評価のユースケースを指しているのか?
この投稿が、ステアリングベクトルの最大の用途、つまりモデルの拒否を取り除く可能性(abliteration または uncensoring)に触れていないのは驚きだ。
以前、「大半の拒否は単一ベクトル上にある」という論文があり、そのベクトルを見つけて弱めることで、モデルが拒否を飛ばして「どんな」要求にも概ね答えるようにできた。
拒否を教師ありファインチューニング(SFT)で学習した初期のモデルではかなり可能で、最新モデルではやや複雑になっているようだが、ある程度は今でも可能だ。
すでにこのプロセスを自動化して拒否を減らすライブラリもあり、たいていはモデルを特定・修正したうえで検閲解除モデルとして配布することに重点を置いている。
ステアリング方式ならこのベクトル変更を動的にオンにできるので、abliterationの処理が無関係なタスクの精度を損ねても、モデル自体を変える必要がない。
単一ニューロン方式はKLDの面でかなり悪いようで、そのため最近の手法が定着してきたのだと思う。
見方を変えれば、「ワクチンは有害だ」といった虚偽を言わないことも検閲に含まれる。
科学や論理はこうしたテーマをしばしば検閲として扱うが、インターネットを均等にサンプリングしたモデルはワクチンが有害だと考えるかもしれない。
もう少し洗練された調整なら、このような問題のある文脈を検閲するはずだ。
だから、どのバイアスが検閲されていると見なしてそれを剥がせば一般的な使いやすさが向上すると考えるのか、よく分からない。
DS4リポジトリで本当に興味深いのは、フロンティア研究所がユーザーに隠している調整ノブを探り、それが実際の開発・対話フローにどう組み込めるかを考えている部分だと思う。
さまざまな対話方法を探り、たとえばステアリングをユーザーインターフェースに有用な形で溶け込ませる方法を考えるのは本当に素晴らしい。
いったん秘密が解かれ、ユーザーがこのように内部が露出したモデルから得られる制御レベルと有用性を理解すれば、ステアリングはツールボックスの中核要素になるだろう。
モデルやモデル提供者にこのレベルの制御を期待するのが自然になっていきそうだ。
「llama.cppを削ぎ落としてDeepSeek-V4-Flashだけを動かすようにした版がDwarfStar 4」という説明は事実ではない。
DwarfStar 4は独自のプロジェクトだ。
llama.cppに負っているのは確かだが、縮小版ではない。
実装した量子化器用の一部の量子化コードはあるが、DwarfStar 4はllama.cppのフォークではない。
ただしllama.cppがなければ重要な細部を素早く確認できなかっただろうから、プロジェクトはずっと貧弱なものになっていたはずだ。
それでも縮小版のllama.cppではない。
これは、llama.cppがこのプロジェクトだけでなく、その後に続いたすべてのプロジェクトにとってどれほど重要だったかを小さく見せるものではない。
核心はコードそのものではなく、たどるべき道筋、量子化形式、教訓、学ぶために確認できる最適化カーネル群、そしてパターンにある。
DwarfStar 4は主にllama.cppのおかげで存在しているように見え、作者たちもllama.cppのコードから大きな着想を得ており、一部は適切な著作権表示付きで実際に取り込んでもいる。
悪い意味ではなく、問題ないと思う。
ds4.cはGGMLにリンクしていないが、llama.cppプロジェクトが切り開いた道、そこで開発されたカーネル、量子化形式、GGUFエコシステム、そして苦労して得られたエンジニアリング知識のおかげで存在している。DeepSeek V4 Flash専用の推論パスを作る際、実装、カーネル、テスト、設計上の選択が重要な参考資料となり、MITライセンスの下でGGUFの量子化レイアウトや表、CPU量子化・内積ロジック、一部のカーネルのようなソースレベルの断片が保持または適用されている。
そのため、心からの感謝を込めてLICENSEファイルにGGML作者の著作権表示を維持しているということだ - https://github.com/antirez/ds4#acknowledgements-to-llamacpp-...
https://news.ycombinator.com/item?id=48142885 以降、この約2日間かなり楽しくいじっていて、今のところ生成速度を47.85 t/sから57.07 t/sまで上げた。
ステアリングで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
良い記事だが、1点だけ混乱した。
記事ではステアリングはローカルモデルでしか動かないとしているが、GitHub Copilotには「steer with message」機能があり、実行中に方向修正できてよく使っている。
おそらく別種類のステアリングなのだろう。
エージェントのステアリングは、ハーネスとLLMの間を往復する流れの途中に別のユーザーメッセージを差し込む方式である可能性が高い。
それはモデルの自然言語による思考出力にテキストを注入すること、あるいはそれにかなり近いやり方だ。
ただしAnthropicのNLA作業を使って、特定層でのモデル活性値の自然言語表現を見て、そのテキストを編集し、それをまったく別の活性値へ再変換する中間的な手法もあり得る。
どうしてこれをローカルと言えるのか? RAM約192GBが必要なら、ローカルというには少し大げさに見える。
128GBあるともっと良い。DwarfStarのREADMEを見ればいい。
必要な無線機器やアンテナを持っていない人に、Zigbeeをローカル/LANと見なせるかと尋ねるのと似ている。
リンク先のDwarfStarリポジトリにあるこの行を見ると、制御ベクトルを思い出す。
y = y - scale * direction[layer] * dot(direction[layer], y)https://vgel.me/posts/representation-engineering/ では、制御ベクトルを「追加プロンプトなしで推論中のモデル活性値に適用してモデルの挙動を制御できるベクトル。厳密には各層に1つずつあるベクトルのリスト」と説明している。
実際に使いたいものというより、ディープラーニング研究向けに近いように見える。
学びたいときに「その問題のある要求には協力できません」と言い続けるモデルより、はるかに良い。
「プロンプト文言を調整するだけでもすでに非常に細かい制御ができる」という部分はよく分からない。
私がプロンプトを書くのが下手なのかもしれないが、学習データや後処理学習に由来するバイアスを乗り越えるのは不可能に感じる。
プロンプトでできるのは学習データからパターンを引き出す程度で、実際には細かい制御などほとんどない。